Chicago, IL — AI Automation & GTM Engineering

AI is powerful. I make it useful for the work in front of you.

There's a gap between a demo that wows a room and a system someone trusts on a Tuesday morning. I work in that gap. I build automation that keeps running on real data long after the flashy version would have fallen over.

150+ systems shipped to production Linguist by training Builder by practice

The premise

The model was never the hard part. The hard part is figuring out what one person does all day, then building something that does it for them and keeps doing it when nobody's watching. I came to this through linguistics: the study of how meaning gets built and how it quietly falls apart. That's the same problem as making an AI system behave. Precise language in, predictable behavior out. Which is why the scarce skill isn't writing code. Plenty of people write code. The scarce skill is taste: knowing what to build, what to keep boring and deterministic, and what to leave alone. Most of my best decisions were things I talked someone out of.


What I work on

Three currents, often running at once

01

AI Automation

Workflows that triage, enrich, decide, and act on real data. I build deterministic systems where reliability is the point, and agentic ones where genuine reasoning earns its cost. Choosing correctly between the two is most of the work.

n8nLangGraphPythonClaude / OpenRouterRAGSupabase
02

Marketing & RevOps

I close the distance between marketing activity and revenue. I wire the GTM stack end to end and report on what moves the number, not just what's easy to count. Direct-response instincts in the Halbert/Kennedy tradition, applied to systems instead of single letters.

SalesforceActiveCampaignApolloInstantlyDirect response
03

Language & Structure

Trained in linguistics with a phonetics specialization. Fluent in German, grinding toward C1 Arabic, conversational Spanish. People treat this as a fun fact. It's the actual edge: the difference between real work and confident-sounding nonsense is how precisely you can say what you mean.

LinguisticsPhonetics / IPAPrompt architecture
العربية
Arabic→ C1
/ˈʕarabiː/
Deutsch
Germanfluent
/dɔʏtʃ/
Español
Spanishconversational
/espaˈɲol/
Patterns, not promises

What "production-grade" actually means

A demo runs once, on stage. A system runs every day, on real data, when no one's watching. The difference is in the details: dedup logic, hallucination checks, brand-voice enforcement, false-positive reduction.

Time to live
~60s
From a free-text customer description to a live, deduplicated outbound campaign
Pipeline depth
20+
Discrete nodes in a single pipeline — parse, enrich, generate, validate, dedup, launch
Volume shipped
150+
Automations shipped to production, not prototypes left in a sandbox
The stack I build with
How I think about it

Principles I build by

Specificity beats generality

General-purpose AI rollouts look impressive and quietly fail. Systems built around one real workflow get used. I'd rather solve one person's task completely than gesture at solving everyone's.

The boring parts are the product

Deduplication, validation, error handling, voice enforcement. Nobody demos these. They're the entire reason a system survives contact with reality.

Deterministic until proven otherwise

Agentic architecture is a tool, not a default. Most problems want a reliable pipeline. Knowing when not to reach for autonomy is a senior signal.

Language is the interface

The quality of what comes out of an AI system is bounded by the precision of what goes in. That's a linguistics problem before it's an engineering one.

Selected systems

A few things I've built, described by what they decide

Anonymized on purpose. No clients, no numbers. The logo behind a system is the least interesting thing about it. What's worth your time is the architecture and the decisions inside it.

Free-text → live campaign engine

A sentence becomes a deduplicated outbound sequence in about a minute

Multi-stage n8n pipeline
Web frontend
LLM for language
Enrichment + CRM dedup

You type a plain-English description of who you want to reach. The system parses it into structured targeting, pulls and enriches matching prospects, writes a multi-step sequence in a defined brand voice, checks its own output for hallucinations, dedupes against the CRM, and pushes it live. Sentence in, campaign out.

What I'm proud of isn't the speed. It's that it's not an agent. The LLM does the language; the orchestration does the thinking. Autonomy would have demoed better and broken more. Choosing boring-and-reliable on purpose is the whole job.

Sales-signal triage

An LLM-augmented pipeline that surfaces upsell signals buried in correspondence

n8n + LLM classification
CRM-integrated
Tuned for false-positive reduction

Reads inbound correspondence and flags genuine expansion signals before anyone has to go looking for them. The hard part isn't detection, it's restraint. A classifier that fires on everything is noise wearing a useful costume, and a team learns to ignore it within a week. So the whole system is tuned around what it chooses not to surface.

The temptation was to let a model "read everything and decide." I built it deterministic instead, classification with tight thresholds, not an agent with opinions. A flag a human trusts is worth more than ten the model finds interesting. Precision is the product; the cleverness is invisible on purpose.

Retrieval & content

RAG assistant + AEO/GEO content pipeline

Retrieval-augmented generation
Web frontend
Answer-engine-optimized output

Two halves of the same problem: getting grounded answers out of a body of source material, and structuring published material so answer engines surface and cite it correctly. One faces inward, one faces the open web, but both come down to the same discipline, making sure the words map cleanly to something real.

Retrieval is where most RAG quietly fails: the model sounds confident over the wrong chunk. I spent the effort on grounding and citation rather than the generation layer, because a fluent answer to the wrong question is the most expensive kind of wrong. Boring retrieval beats clever generation every time.

The newsletter

Weekly Signal,
Zero Noise

One email a week: a system I'm building, the decision behind it, and what broke. Written for people who build, not a recap of this week's AI headlines.

Your information is protected. Unsubscribe at any time.