Ayoub Hammoudi
Ayoub Hammoudi
Software engineer, full-stack and AI platforms
I build data and LLM systems end to end, and my fixes land in Apache and Microsoft codebases.
Available for full-time roles from February 2027. Paris, open to relocation in Europe.
ayoub.hammoudi05@gmail.com · GitHub · LinkedIn
Everything on this site as plain text: experience, projects, merged pull requests, education. Every figure links to its source.
Departures
Taintrace: Bitcoin sanctions screening that follows the money past the list
Live demo · Jun 2026 - Jul 2026 · Solo
An address on no list received 512.25 BTC. Three hops back, 11.07% of it came from a sanctioned wallet.
OFAC and OpenSanctions lists streamed in by Airflow without touching disk, live transactions screened over WebSocket and Kafka, contamination propagated through a Neo4j graph with the haircut rule over n hops.
Stack: Python, Airflow, Kafka, MongoDB, Neo4j, Docker Compose. Code
Aftershock: A real-time data lake that watches earthquake magnitudes get revised
Live demo · Jul 2026 - Aug 2026 · Solo
7,939 archived versions of 2,128 earthquakes. One first published at 3.6 was revised to 5.2.
Three USGS sources into a Bronze, Silver and Gold lake on HDFS: Kafka in KRaft mode, Spark Structured Streaming with Delta Lake, four Airflow DAGs chained by Datasets, replay after a hard kill proven free of duplicates.
- 7,939, archived magnitude versions (Source: committed data bundle, generated 27 Aug 2026)
- +1.60, largest magnitude revision (Source: committed data bundle, generated 27 Aug 2026)
- 1,151, earthquakes that changed ID between versions (Source: committed data bundle, generated 27 Aug 2026)
- 0.83, ROC AUC, should the first magnitude be trusted (Source: Spark MLlib GBT classifier, notebook output)
Stack: Kafka, Spark Structured Streaming, Delta Lake, Airflow, HDFS, Spark MLlib. Code
Nucleus: A Rust chemistry engine compiled to WebAssembly, running in your browser
Runs here · Jul 2026 - Jul 2026 · Solo
31.7 KB of WebAssembly screens 13,577 EGFR molecules by Tanimoto similarity, here, on your machine.
ChEMBL EGFR data, Morgan fingerprints and Tanimoto screening in a Rust crate with a JavaScript fallback, benchmarked against itself live. Part of AI for Molecular Design, with RDKit notebooks behind it.
Stack: Rust, WebAssembly, TypeScript, Next.js, RDKit, ChEMBL. Code Live
Phantera: An LLM outbound platform, built solo, before its first customer
Pre-launch · Jan 2026 - Oct 2026 · Solo
Durable pipelines that never send twice, usage-based billing, and a guard that reads every reply for prompt injection in English and French.
Next.js and TypeScript on PostgreSQL. Orchestration on Inngest with deduplication by event key in Redis, Stripe usage metering, an evaluation harness in CI scoring F1 and accuracy on a golden set. Pre-launch, no customers yet.
- 16, prompt-injection patterns, English and French (Source: lib/security/prompt-guard.ts, private repository, not publicly verifiable)
- 12, golden replies scored in CI (Source: evaluation golden set, private repository, not publicly verifiable)
Stack: Next.js, TypeScript, PostgreSQL, Prisma, Inngest, Redis, Stripe. Live
Arrivals: merged upstream
- apache/kafka#23786 (13 Oct 2026, +0 -3): Duplicate test dependencies, removed with the dependency graph proven identical.
- microsoft/agent-framework#9139 (13 Oct 2026, +78 -3): Streamed Gemini calls lost their model name, so token metrics belonged to no model.
- microsoft/PyRIT#3075 (11 Oct 2026, +38 -0): Two scorers with different settings shared one identity, so cached results crossed over.
- microsoft/PyRIT#3014 (9 Oct 2026, +71 -1): Score categories came out mangled in the printed score.
- apache/beam#40430 (6 Oct 2026, +0 -1): A debug log printed in production for five years, removed.
- tobymao/sqlglot#8519 (5 Oct 2026, +3 -1): DuckDB output dropped the UNIFORM seed, so every seed gave the same SQL.
- PrefectHQ/prefect#23281 (5 Oct 2026, +16 -0): The configured Mattermost botname was silently ignored.
Proposed, in review
Route
- Full-stack developer, E-KIGAI (Freelance, Sep 2026 - present, Remote)
- Founder and software engineer, Phantera (Founder, Jan 2026 - present, Paris). Solo-built LLM outbound platform, pre-launch.
- Full-stack engineer, FCT (Freelance, May 2026 - Sep 2026, Remote). SEO and AEO refactor on Next.js 15, React 19 and TypeScript. Every build gated by Lighthouse CI budgets across 9 pages, plus Playwright specs.
- Full-stack developer, work-study, Cash Flow Positif (Work-study, Jan 2026 - Aug 2026, Paris). Scraping robots and AI agents collecting from 51 real-estate sources over Kafka. Built the Scheduler Command on Fastify and TypeScript microservices, balancing tasks by per-source quotas. Docker, Grafana, Loki.
- Full-stack engineer, FirstDown Tech (Freelance, Dec 2025 - Feb 2026, Remote). Delivered the FirstDown Tech website end to end on Next.js 15 App Router, strict TypeScript and Tailwind CSS v4, with JSON-LD for answer engines.
- Full-stack developer intern, Cash Flow Positif (Internship, Aug 2025 - Jan 2026, Paris). Fastify and TypeScript microservices and React front end on the CFP Hub real-estate platform.
- Full-stack developer, SweetcHome (Freelance, Jun 2024 - Nov 2024, Dubai, remote). Property and client matching algorithm and price predictions over scraped listings. A CNN image classifier served through a Flask API.
- Software engineer intern, Elyadata (Internship, Jun 2023 - Sep 2023, Tunis). CV generator on Angular, Spring Boot, LaTeX, Kafka and Docker.
- Software engineer intern, Elyadata (Internship, Jun 2022 - Jul 2022, Tunis). Keycloak authentication service on Spring Cloud behind an API gateway.
Education
- IPSSI, Paris: Master's programme, AI and Big Data development (Feb 2026 - Mar 2027)
- ESPRIT, Tunis: Engineering degree, software engineering (Sep 2019 - Jun 2025)
Languages
- Arabic, native
- French, full professional
- English, full professional