Skip to content

Automation is the easy part. Making it fit how you actually work is the real job.

I’m an AI and automation engineer. Some of it really is just connecting two tools, and that’s genuinely all it needs to be. The rest is shaping the data and infrastructure underneath, so the workflow fits how you actually run instead of how the software assumed you would.

For the last stretch I’ve been at a recruitment agency, moving work off people and into systems. I designed the data their tools had to agree on, pulled every lead source into one pipeline, built an AI search tool over their own records, and implemented client billing and contractor payment systems wired into their infrastructure.

The pattern was the same every time. Something started as a person maintaining a spreadsheet, and ended as a system that keeps its own records and can tell you why it did what it did.

n8nAirtableSupabaseAPI integrationsVector searchStripeWiseLLM pipelines

Inbound message

An illustration of the live demo further down the page. A messy message is read by a model, its details are checked and routed by ordinary code, and a drafted reply waits for a person to approve it.

Illustration. Never sent.

Run it for real

Watch a messy message become a structured record

This runs for real. A model reads the message; validation and routing are ordinary code. Nothing is sent to anyone — the reply is drafted and waits for a person, which is how I build these.

398/2000

Runs live against a real endpoint. Don’t paste anything confidential — it’s a public demo.

  1. ExtractAI
  2. Validatecode
  3. Routecode
  4. DraftAI

Pick a sample or paste your own, then run it.

One model call reads the message. Validation and routing are ordinary code.

Systems that are live and running

All built for a recruitment agency, but none of it is specific to recruiting. The same machinery moves to any business running recurring work across several tools.

Embeddings · Vector search · LLM

AI candidate shortlisting

A job request is matched by meaning against every candidate summary in a vector database, and an LLM then judges each hit against the full request, so what comes back is a ranked shortlist with a reason attached. A second workflow keeps the index current as people join and leave.

Turned a couple of hours of manual shortlisting into a few minutes.

Vector searchLLM evaluationRAG

Ads · CRM · Lifecycle email

One pipeline for every inbound lead

Leads from ads and the website land in one database, get deduplicated and standardized on arrival, sync to the CRM with their source attached, and start the follow-up sequence that matches what they asked about. Leads parked for a reason come back to the call list automatically.

SDRs reach every lead within minutes, and the company can see which sources actually produce.

Meta lead adsWebhooksCRM syncLifecycle rules

Stripe · Wise · Approval gates

Client billing and talent payouts

One engine runs both cycles. Clients are invoiced upfront and trued up at the end of the cycle for proration, rate changes and overtime; talent timesheets are pooled a day after their cycle ends and paid out. Charge results post to chat, and an already-paid invoice cannot be charged twice.

Billing and payouts are calculated every cycle without anyone doing the arithmetic.

Stripe APIWise APICustom calculationSafe re-runs

Ahrefs · AI agents · WordPress

Pages that write themselves

Competitor keywords are filtered to high volume and low difficulty, an LLM decides whether each one is worth a page, and three agents then plan, research and write it. The result is mapped straight into WordPress custom fields and rendered by a template, with no manual layout work.

Over 100 SEO and blog pages generated without anyone writing them by hand.

Keyword researchMulti-agent LLMWordPress + ACFElementor

Scheduled reminders and approvals

The chasing nobody wants to do

Six reminders that fire off dates and events rather than someone's memory: missing timesheets found and emailed before the cycle closes, billing heads-ups five days out, overtime and time-off requests to the client, the decision back to the talent, and outstanding internal tasks straight to chat.

Follow-up stopped depending on someone remembering to do it.

Scheduled jobsTransactional emailChat notifications

RAG · MCP · Slack bot

Company knowledge, one message away

Documents are managed in a portal that flags anything not yet synced, then chunked and embedded into a vector database. A chat bot answers from the relevant chunks with its sources cited, and because it can also read live records through MCP, its answers reflect what is actually in the database.

The team gets SOP answers in chat, with the source cited.

Vector databaseRAG agentMCPSlack

In development

Pursuit, a product I’m developing

A job search tracker with AI that scores your fit and drafts tailored resumes, cover letters and form answers. Everything it writes traces back to your own profile.

Show me your setup. I’ll tell you what I could fix.

No call required. Tell me what you run and what your team does by hand, and I’ll write back with what I’d look at first.

What you get back

  • Whether your tools can be integrated, and how
  • The manual work that's cheapest to remove first, and roughly what it takes
  • Anything I think you shouldn't automate yet, and why
  • An honest answer if there's nothing here worth paying for
Based inRemote

Free systems audit

Written reply, no call

Please don’t include sensitive data here. Describe your tools and your process, not anyone’s information.