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.
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.
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.
Cold Meta ad to booked calendar slot, fully automated. Every node below is live and running. Scroll on for the deep dives.
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.
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.
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.
The business itself is staffed by a scoped internal agent team: content, outreach, client delivery, incident triage. Each agent has least-privilege tool access, drafts into the repo, and nothing external ships without sign-off.
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.
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.
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 a month get spent like a budget, not a bar tab.
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.
The entire multi-tenant CRM schema builds from one config file. Idempotent by api_slug: re-runs only create what's missing, with a --dry-run that prints would-create / exists / error per line. Select values are contract-locked to the funnel's config so data maps 1:1 with zero transforms.
The B2B marketing site and the consumer funnel are both mine end to end: copy, design, build, deploy. Next.js on Vercel. The funnel feeds the pipeline you scrolled past; the site sells the service it powers.
● duallymkt.com · ● apply.protectplanning.com
A slide deck JSON becomes a finished 1080p sales video: cloned-voice narration, burned captions, demo splices. Captions are word-aligned by transcribing the actual voiceover with faster-whisper, so every line fires exactly when spoken.
A Python service that scrapes AI labs, HN, reddit, and arXiv, dedupes against a permanent seen-DB, ranks, and has Claude write me a briefing that lands in my inbox at 6:00am with an audio version. It's how I stay current, automated like everything else.
Solo digital marketing for home-service businesses. Lead gen, websites, hosted CRM sub-accounts. Owned the whole client lifecycle alone.
▸ first business, zero employeesJoined 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 ownedIn-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 replicationSold 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 APThe blueprint, productized: a multi-agent booking platform sold as a paid B2B service to independent agents, with a guaranteed-appointment SLA.
▸ everything on this pageI'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.
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.