Guy Stevens// portfolio · the systems behind the resume

AI Automations Engineer.
I build agent systems that run in production.

I'm the solo architect and engineer behind Dually: a multi-agent appointment-booking platform for a regulated industry. LLM conversational agents, n8n orchestration, multi-tenant CRM, compliance guardrails written in code, not prompts. Sold to paying clients and backed by a guaranteed-appointment SLA.

open to remote (US) · San Diego onsite / hybrid
ai_ops · monthly usage telemetry
240,800,000
TOKENS · LAST 30 DAYS · ≈8M A DAY
10,379
RETURNS / MO · ≈346 A DAY
[funding] self-funded · my own money on my own conviction
[loop] the system learns as I go · every session feeds the next
[uptime] keep building · keep learning · don't stop until it's done
REAL MONTHLY USAGE · MY OWN SYSTEM · MY OWN MONEY
$5M+
agency revenue overseen
$100K+/mo
ad spend managed
teams of 6
built & led
1 platform
designed, built & run solo
01Origin

I was a licensed life insurance agent. I paid a lead vendor $11,000 and got almost nothing back. They had no skin in the game.

So I built my own pipeline.
Ads. Funnel. CRM. Automated follow-up.
My production went from $10K to $48K a month in annual premium.

Same me. Same carriers. Same work ethic. Different system.

Then I looked around and realized every independent agent in the industry was stuck in the same broken loop: buy leads, chase them, get ghosted, repeat. So I productized the fix. That product is Dually, and this page is a tour of what's under its hood.

the pattern, eight years running
finda business bleeding leads & appointments
buildthe machine that fixes it
scalewith a team, or with agents
repeatnew industry, better tools, every time
currentlyagents instead of headcount
02The system

One lead's journey, end to end. No humans until the sales call.

Cold Meta ad to booked calendar slot, fully automated. Every node below is live and running. Scroll on for the deep dives.

dually · production architecture
CAPTURE DATA CONVERSATION META ADS client-funded · lead forms NEXT.JS FUNNEL Vercel · live in prod n8n ORCHESTRATION 11 workflows · deployed by one command ATTIO CRM multi-tenant · schema-as-code per-client isolation CLIENT SHEET mirror · WON / LOST sync COMPLIANCE RAIL · ENFORCED IN CODE, NOT PROMPT RAIL·IN opt-out intercept LLM AGENT gpt-4o-mini versioned playbook RAIL·OUT claims filter iMESSAGE 2-way qualify quiet hours 9a–8p CAL.COM real slots offered in lead's timezone BOOKED on the client's calendar stage sync → BOOKED LEARNING LOOP · HUMAN-REVIEW GATED transcripts → score → propose → approve → playbook vN+1
live automated path review-gated loop data sync stack: Meta · Next.js/Vercel · n8n · Attio · OpenAI · SendBlue · Cal.com · Resend
WHY IT MATTERS This isn't a chatbot bolted onto a form. It's a distributed system: capture, data, and conversation lanes with per-client isolation, timezone-aware scheduling, and a compliance boundary the model physically cannot cross. Clients never log into any of it. They just get booked appointments.
03Deep dive · conversational agent

A 6-stage lifecycle agent with a compliance rail it can't cross.

qualify → book → confirm → remind → rebook → recycle. Six n8n workflows running one agent through the entire lead lifecycle over iMessage, in a regulated industry where one bad sentence is a legal problem.

iMessage · lead-side view
new lead · "Marcus" · self-employed · WA · demo persona
Hey Marcus, saw you requested info on retirement options that don't ride the market. Two quick questions so I don't waste your time.
sure
Are you self-employed or W2? And are you putting anything toward retirement right now?
self employed. maxing a SEP but want something more flexible
qualified: income ✓ industry ✓ strategy ✓
Got it, that's exactly what this call covers. I have tomorrow at 2:15 or Thursday at 10:30, your time. Which works?
tomorrow works
Locked in for 2:15pm Tuesday. Confirmation text incoming. It's a 20-minute call, nothing to prepare.
cal.com: booking created · attio: stage → BOOKED · reminders queued 24h + 1h
SIMULATED CONVERSATION · DEMO DATA · REAL SYSTEM BEHAVIOR
message path · every single turn
RAIL·INopt-out / STOP / legal-freeze intercepted before the model ever runs
MODELgpt-4o-mini + versioned playbook + conversation memory keyed to phone #
RAIL·OUTbanned-claims filter: "guaranteed", "tax-free", return percentages
SENDquiet hours 9am–8pm lead-local · 20h frequency cap
▲ the learning loop has no write path to the rail. Deterministic code, not a system prompt asking nicely.
coach/ · review-gated learning loop
transcripts score propose HUMAN REVIEW playbook vN+1
agent behavior improves weekly from real conversations. every change human-approved, versioned, one-command rollback. no retraining.
6 workflows 6 data tables 10 scripted test personas simulator: full engine, zero texts sent no-show rebooks + 30/60/90d recycle inference ~$5–15/mo
WHY IT MATTERS Anyone can prompt a model to sound helpful. Production means the failure modes are handled: compliance in deterministic code, a simulator to test against 10 personas before a real phone is touched, and a feedback loop where humans gate every behavior change. This is context engineering as much as prompt engineering: versioned playbooks, conversation memory keyed to the lead, rails the model can't cross.
04Deep dive · orchestration & tooling

I don't migrate workflows. I build the tool that migrates workflows.

When Make.com stopped being the right home for the pipeline, I wrote a converter that ingests Make blueprint exports and rebuilds them as native n8n workflows, then a deployer that stands up the entire stack in one command.

zsh · make-to-n8n
$ node deploy-all.mjs
credentials created ............ 5
data tables created ........... 6
workflows deployed ............ 11
webhooks bound ................ sendblue · cal.com
seed client loaded ............ TEST-CLIENT
report written ................ DEPLOY_REPORT.md
 
done. idempotent · re-runnable · legacy twins kept inactive for instant rollback
$

what the tooling actually does

Parses Make blueprint JSON, maps modules to n8n nodes, rebuilds the Make Data Store + OpenAI pattern as a native n8n AI Agent with chat memory keyed to the lead's phone number. It even fixed a latent quote-injection bug the Make version had by JSON-encoding dynamic bodies.

Tested end-to-end against an offline mock of the n8n public API before it ever touched the real instance. Cutover repoints SendBlue and Cal.com webhooks with a --cutover --go flag; rollback is instant.

11 workflows in one run 5 blueprints validated on n8n 2.28.6 offline mock API for E2E tests zero npm installs · Node 18+
WHY IT MATTERS Migration by hand is labor. Migration by tool is leverage. This is the difference between an operator who uses automation platforms and an engineer who builds meta-tooling on top of them.
05Deep dive · Claude Code, the operating layer

The whole operation ships through Claude Code. A human gate guards the door.

The platform, the business, and this page were all built and are run in Claude Code: CLAUDE.md rules files, custom skills and slash commands, MCP servers wired into the CRM, calendar, SMS, and n8n stack, persistent memory across sessions, and this scoped subagent team — content, outreach, client delivery, incident triage — orchestrated in parallel with least-privilege tool access.

claude code · .claude/agents/ · scoped subagent team
content-studio weekly short-form + LinkedIn drafts pipeline-outreach reactivation · pre-call prep · debriefs client-delivery weekly reports · SLA pace math ops-triage incident-only · zero idle cost HUMAN APPROVAL every external action CLIENT COMMS · sent by a human reports, remediation drafts, install messages PUBLISHED CONTENT · human posts it scripts, captions, LinkedIn set, outreach DMs MONEY & INFRA · never agent-touched ad spend, billing, live workflows, credentials REPO ARTIFACTS · agents write here freely drafts land in versioned files, reviewable diffs
CLAUDE.md rules files · persistent memory custom skills · slash commands MCP servers: CRM · calendar · SMS · n8n parallel subagent orchestration least-privilege tool scopes per agent agents answer BLOCKED: rather than fabricate a contractual number
WHY IT MATTERS Autonomy is an engineering budget, not a vibe. I decide per action class what an agent may do alone, what needs review, and what it must never touch. That's the exact discipline agent platforms need at scale. Claude Code isn't a tool I tried once. It's the operating layer I run a company on.
06Deep dive · Dually OS

Most people build agents. I also built the layer that manages the fleet.

Dually OS is a local control panel that rescans the entire repo on boot and indexes every skill, agent, automation, SOP, and funnel into a structured graph. It knows what exists, what's missing, and it can generate the missing piece in the correct schema.

dually-os · 127.0.0.1:4711
BOARDGRAPHGAPSCHAINS
lead-pipelinesms-agentdelivery growthcontentops billinginfrastrategy
GAP · capability: post-call testimonial chase ▸ scaffold artifact
CHAIN · friday-ops: pace check → report → distill ▸ write slash command

an internal developer platform, for a company of one

Zero-dependency Node service (node:http + vanilla JS, localhost-only). A scanner extracts metadata from each file's own structure and auto-assigns it to one of 9 clusters. Four views answer four questions: what exists, how it connects, what's missing, what should run as one chain.

The generation engine closes the loop: click a gap, get the missing skill, agent, or automation scaffolded in the repo's exact conventions, including runnable slash commands.

rescans repo on every boot 4 views · 9 clusters 4 artifact generator kinds zero npm dependencies
WHY IT MATTERS This is platform thinking applied to agents: inventory, observability, gap analysis, and code generation over the whole system, not just one more workflow. It's the part of the job most candidates have never even seen.
07Deep dive · the model router

One model is a tool. A fleet, routed well, is a system.

I don't push everything through one LLM. Tasks route to the most capable tool for the job, and the token budget follows: heavyweight reasoning only where it earns its cost, fast cheap models for volume, media models for media, research models for facts. That's how 2.1 billion tokens in my first seven and a half weeks got spent like a budget, not a bar tab.

route by capability · dispense tokens by task value
ROUTER right tool · right task right cost claude code engineering core hermes custom agent runs gpt generalist + code cursor in-IDE builds gemini multimodal + research perplexity live web research nano banana image generation veo 3 video generation
8 tools in daily rotation route by capability, not habit token spend weighted to task value 2.1B tokens dispatched · first 7.5 weeks
WHY IT MATTERS Model choice is a cost and capability decision, made per task. It's the same discipline that keeps the SMS agent on gpt-4o-mini at $5–15 a month while the hard engineering runs on frontier models. Cheap where cheap wins, heavy where heavy earns it.
08Deep dive · the second brain

Nothing I think gets lost. Nothing I learn gets learned twice.

Every voice note, brain dump, meeting recording, and chat history becomes a markdown file, linked into an Obsidian knowledge graph, and backed up daily to a private GitHub archive. The system I log into tomorrow already knows what I figured out today.

obsidian brain · neural memory map · every thought is a neuron
voice note brain dump meeting rec chat history .md obsidian brain daily git push private GitHub
every thought captured to markdown linked, searchable, versioned backed up daily · private repo feeds the next session's context
WHY IT MATTERS Compound interest applies to context. No time wasted, no thought ignored, no idea lost in a notepad. Every session starts where the last one actually ended, so the system gets smarter every single day I use it.
09Deep dive · the 6:00am briefing

Staying current isn't a habit. It's a Python service.

Every morning at 6:00am, a pipeline I wrote scrapes the AI labs, Hacker News, reddit, and arXiv, dedupes against everything it has ever shown me, ranks what actually matters, and has Claude write me a briefing that lands in my inbox with an audio version for the drive.

zsh · ai_brief
$ python -m ai_brief
[scrape] lab blogs · hacker news · reddit · arXiv · newsletters
[dedup] canonical URL → seen.db · fuzzy title merge · 7-day window
[rank] watch-terms + source weights → top 24 items
[write] claude → 2,200-word brief
[deliver] md + html + mp3 → inbox · 6:00am pacific
 
done. nothing marked "seen" until a real brief is written
$
RUNS EVERY MORNING · MY ACTUAL INBOX · ~$0.15/DAY ALL-IN

plain Python, end to end

Scraping and RSS ingestion, canonical-URL dedup against a permanent seen-DB with fuzzy title matching across a 7-day window, weighted ranking with watch-terms, an LLM summarization pass sized to 1,200 / 2,200 / 3,200 words, multi-provider text-to-speech, and email delivery.

Scheduled with launchd instead of cron so it fires on wake. Failed runs cost nothing: an item only counts as "seen" once a brief was actually written.

Python 3.11 · production, daily ~$0.15/day all-in md + html + mp3 output permanent dedup DB
WHY IT MATTERS The field moves daily, so I engineered the habit instead of relying on willpower: a real Python service — scraping, data pipeline, LLM integration, TTS, scheduling — running in production every single morning. That's how I stay current, and it's what my Python looks like.
10Deep dive · the home lab

Before buying a new machine, I turned an old laptop into an AI server.

An always-on home lab on hardware I already owned: an old laptop, wiped and rebuilt on Ubuntu, running Hermes, my personal agent, as a system service that survives reboots. A model switcher flips it between nine LLMs through a single OpenRouter key, and Ollama is wired in as a provider for local models: free, private, on my own metal. I drive all of it from Telegram on my phone, from anywhere.

home lab · phone → laptop → local or cloud
TELEGRAM my phone · anywhere REPURPOSED LAPTOP · UBUNTU · ALWAYS-ON HOME SERVER HERMES the agent · runs 24/7 MODEL SWITCHER one command, any model OLLAMA local models · wired in as a provider $0/token · stays on my hardware OPENROUTER one key · one bill 9 LLMs cloud models picked per job
repurposed laptop · wiped to Ubuntu runs as a system service · survives reboots 9 LLMs · one OpenRouter key Ollama · local models, $0/token pairing-gated Telegram bot · driven from anywhere
WHY IT MATTERS Same routing discipline as the fleet, scaled down to hardware I already owned: local models for the free, private, always-on work; cloud models only when a job earns the spend. And it runs on an old laptop for a reason — prove the need before buying the machine.
11Capability matrix

The skills behind the systems.

Same matrix as the resume, one scroll away from the proof.

skills.matrix · six domains
AI & Agents
LLM application design · Claude, GPT-4o, Codex, Cursor Claude Code · rules files, custom skills, MCPs, parallel subagents multi-agent architecture model routing & multi-model orchestration local LLM deployment · Ollama prompt engineering context engineering · playbooks, memory, guardrails conversational AI agent evaluation & simulation testing human-in-the-loop review systems compliance-safe agent guardrails MCP tool integration
Automation & Integration
n8n Make.com workflow migration & orchestration REST API & webhook integration Telegram bot control surface GoHighLevel (GHL)
Data & CRM
Attio multi-tenant schema-as-code CRM data architecture Google Sheets automation
Web & Product
Next.js Vercel JavaScript / Node.js Python landing page & funnel engineering
Growth & Media Buying
Meta Ads Google Ads funnel design & CRO six-figure monthly campaign management
Leadership & Ops
P&L and budget ownership team building & management · up to 6 direct reports cross-functional program rollout nationwide process replication solo full-stack execution
Certifications
Anthropic · Claude 101 Anthropic · AI Fluency Anthropic · Claude Code Anthropic · Claude Code Architect Anthropic · Claude Code for Developers n8n Academy Google Ads Certified Meta Ads Certified
Shipped & Live
● duallymkt.com · B2B site ● apply.protectplanning.com · funnel designed, written, built & deployed solo · Next.js on Vercel
12Eight years · five chapters
One move, repeated:
find the broken lead process.
Build the machine that fixes it.
This time with agents instead of headcount.
CH.01 · 2018–2022

Founder, freelance agency

Solo digital marketing for home-service businesses. Lead gen, websites, hosted CRM sub-accounts. Owned the whole client lifecycle alone.

▸ first business, zero employees
CH.02 · MAR 2022–NOV 2023

Dept head, Pool Builder Marketing Pros

Joined as the sole media buyer. Built and led a team of 5 as the department scaled. Directed every client account at a $5M+/yr agency.

▸ $100K+/mo spend owned
CH.03 · 2024–2025

Closer & funnel architect, Freedom Forever

In-home solar closer. Trained and ran 6 door-to-door setters on a standardized pitch and closed 100% of the appointments they set. Built the lead funnel that became the statewide standard, then went nationwide.

▸ nationwide funnel replication
CH.04 · DEC 2024–DEC 2025

Licensed life insurance agent

Sold IUL and retirement-positioned products. Built my own lead-gen and qualification automation instead of buying leads. That system became the blueprint.

▸ $10K → $48K/mo AP
CH.05 · OCT 2025–PRESENT

Founder & lead engineer, Dually

The blueprint, productized: a multi-agent booking platform sold as a paid B2B service to independent agents, with a guaranteed-appointment SLA.

▸ everything on this page
13Transparency

Everything above is the highlight reel. Here's the rest.

I'm not perfect. My failures outnumber my wins, by a long shot. A laundry list of dead domains in GoDaddy. Businesses that folded. Ideas that never made it off the drawing board. Mistakes that cost real money and real time.

But I never stopped. I never quit.
I pivoted, or I asked for help.

I've learned more from the failures than from any success on this page. Eight years of that is what built these systems. Not talent. Reps.

So here's what I'm actually looking for: stability. One team, one mission. Something I can give all my energy and focus to, something I'm proud of, stand behind, and support wholeheartedly. If that's what you're building, the buttons below are for you.

transparency.log
failuresmore than the wins · every one survived
dead domainsa laundry list, still in GoDaddy
drawing boardideas that never shipped · lessons that did
responsepivot, or ask for help · never quit
resulteverything on this page
failed more than I've won learned more from the failures never quit · pivoted or asked for help
14Contact

Hiring for AI engineering, automation, or agent platforms?

I'm looking for a team building something I can stand behind, where the energy I put in compounds into something real. I bring the full loop: find the broken process, design the system, build it, ship it, run it in production, own the result. Remote (US), or San Diego onsite or hybrid.

You can hire someone who can whiteboard an agentic architecture.
Or someone who runs one in production, with revenue on the line.