CRM AND LEAD-FLOW AUTOMATION
Leads land in one place, deduped, bucketed, and never emailed twice.
Lead flow breaks in boring ways. The same company arrives from a form and a scraper and becomes two records. A stage gets set by hand and nobody updates it. Someone who asked not to be contacted gets a campaign anyway. None of that is an AI problem — it is a data model problem, and it has to be fixed before any agent is allowed near the pipeline.
I built and run my own CRM: leads, contacts, threads, templates, campaigns, sending aliases on a single inbox, and an email engine that sends through it. Importing fourteen hundred leads taught me the lesson I now design against — a single NULL in a bucket column silently hid a hundred and fifty-two leads from every view, and nothing errored. Counts get reconciled on every import now.
Work here is either plumbing into the CRM you already pay for, or building the thin one you actually need. Capture, dedupe on a real key, enrichment that leaves gaps visible, mutually exclusive buckets, stage transitions driven by events rather than memory, and a suppression list checked at send time — not at list-build time, which is when people get emailed by mistake.

WHAT I DO
- Lead intake from forms, scrapers and spreadsheets into one table with a defined dedupe key and a visible reject pile
- Mutually exclusive buckets and stage rules, with a reconciliation count after every import so hidden records surface immediately
- Enrichment passes that leave missing fields visibly empty instead of guessing a plausible value
- Suppression and unsubscribe checks enforced inside the sending code at send time, not in the query that builds the list
- Email engine wiring — templates with merge fields, per-lead personalisation, sending aliases on one mailbox, bounce and reply handling
- Pipeline reporting as queries you can run yourself: stage counts, reply rates, dead-lead ageing
- Database work where it is needed, including migrating a growing SQLite file to Postgres without losing rows
HOW I WORK
- 01
MODEL
I fix the data model first: what a lead is, what makes two records the same, and which states one can be in.
- 02
PLUMB
Every source gets wired into that model with dedupe, validation, and a visible pile for rows that fail it.
- 03
SEND
Templates, personalisation and the suppression check go in, then a test send to a controlled list before anything real.
- 04
PROVE
I reconcile counts end to end — captured, deduped, bucketed, sent — and hand over the queries so you can repeat it.
BEST FOR
- Leads arriving from three or four places with no single trustworthy count
- A CRM whose reports nobody believes because duplicates and blanks are everywhere
- Outbound that needs real suppression discipline rather than a hopeful spreadsheet column
- Small operations who need one thin custom system instead of a seat licence per person
NOT THIS
- Not calls or SMS. There is no dialling, voice broadcast or messaging-network integration in this work — it was researched and costed, never built
- Not lead buying or list rental. I automate flow and sending; where the leads come from is your decision and your legal exposure
- Not deliverability magic. I can set up sending records and a slow warm-up, but a bought list on a cold domain lands in spam no matter how good the plumbing is
THE PROOF
Published case studies from ai orchestration work. Each one names the client and shows what was delivered.
STRAIGHT ANSWERS
REST OF AI ORCHESTRATION
MAKE A
WISH.
Tell me what you're building. I'll tell you how loud it can get.
- /01
YOU WRITE
Tell me what you're building and what's in the way. Two lines is enough.
- /02
WE TALK
A 30-minute call, booked within 7 days. Real questions, no pitch theatre.
- /03
YOU GET A PLAN
Scope, timeline and an honest number, usually within a week.

