AI Automation / Backend Engineer

I build automation systems that run in production, not in demos.

Data pipelines, LLM integration, and n8n workflows with real error handling. I take a messy internal process and turn it into something that runs every day without you watching it.

outbound-engine · production
statusrunning
throughput1,500 leads / day
enrichment3-provider cascade
llm outputschema-validated
on failureretry, never drop
stackn8n · postgres · railway
Selected Work / 01

A client outbound engine, rebuilt for reliability

An anonymized production system I built and still maintain. It turns a raw list of target companies into personalized, verified outreach, and keeps running on its own.

The system ingests target companies, then enriches each contact through a cascade of enrichment providers (Prospeo, Apify) so it always has the best available email before spending a cent on the model. Every contact runs through an LLM personalization step with strict schema validation, so nothing hallucinated ever reaches a real prospect.

Failed lookups are caught and retried instead of silently dropping. The whole flow is orchestrated in n8n over a Postgres backend on Railway, feeding clean records into the sending layer. It was engineered to run at 1,500 leads a day on a lean, predictable tooling budget.

System architecture · anonymized
01 · SOURCE
Ingestion
Target companies pulled into the pipeline
02 · ENRICH
Provider cascade
Prospeo, Apify, best email wins
03 · REASON
LLM step
Personalization per contact
04 · VALIDATE
Schema guard
Reject anything off-shape
05 · DELIVER
Sending layer
Clean records handed off
Error handling rail: every stage retries with backoff and logs. A failed enrichment or a bad model output loops back, it does not vanish.
1,500/d
Leads processed per day
3
Chained enrichment providers
0
Unvalidated fields shipped
100%
Built and run solo
What I Build

The parts of a system that decide whether it lasts

LLM & RAG integration

Retrieval grounded in your own data, tool calling, and schema validation on every output. The model answers from what it retrieved, so it stays factual instead of confident and wrong.

Workflow automation (n8n)

Ingestion, webhooks, retries, and error branches wired into flows you can actually read. I clean up brittle workflows and make them recover on their own.

Backend & APIs

Python and Node services, Postgres, and third-party API integration with queueing and retry logic. The plumbing that holds when traffic and edge cases show up.

Deploy & operate

Shipping to Railway or Vercel, environment config, logging, and staying on after launch. Systems drift, so I keep them running instead of handing off and vanishing.

Tooling

Stack I reach for

Languages
PythonNode.jsTypeScriptSQL
AI / LLM
OpenAI APIAnthropic APIRAG / vector searchEmbeddingsTool calling
Automation
n8nWebhooksREST APIsCron / queues
Data / Infra
PostgresSupabaseRailwayVercelDocker
How I Work

Four rules I do not bend

01

Fail loud, then recover. If something can break silently, it eventually will. I make failures visible and give the system a way back.

02

Validate before you trust. No LLM output moves downstream until it passes a schema check. That is what keeps hallucinations out of real operations.

03

Documentation you can read. You get a short, clear explanation of what runs, why, and how to change it. Not just a repo you cannot touch.

04

I stay after launch. APIs change, data shifts, edge cases appear. I keep the system alive instead of disappearing at handoff.

Let's Talk

Have a process that should run itself?

Based in France · working with US and global teams Response within a few hours