Al Emadian

The systems I build run while I sleep.

I build production AI for the teams that run a business. I spent 20 years as one of them.

Sales. Marketing. Customer success. Operations.

The output of a team. The overhead of none.

SYSTEMS ACTIVE

The architecture behind the output.

7
PRODUCTION SYSTEMS
Solo
BUILT AND RUN, END TO END
Live
RUNNING IN PRODUCTION TODAY
2
COUNTRIES
BUILT AN ENTERPRISE-GRADE OPENCLAW

Everyone scales with headcount.
I scaled with architecture.

Systems running sales, marketing, operations, and customer support, end to end. Nothing irreversible ships without a human.

I didn't hire a team. I engineered one.

THE ARC // 4 CHAPTERS
Three years.
First every time.
I built the systems that run the work while I carried the number.
Amazon
Canadian National Partnerships, Amazon Key
2024 — PRESENT
3 for 3
GOAL CYCLES OVER TARGET
187%, 158%, 2026 already over target at 133%
$2.7M
A YEAR IN MODELED DELIVERY SAVINGS
Modeled across the installed customer base
1st
IN NORTH AMERICA TO GOAL
Within months of starting
GREENFIELD
A young market, still proving the product, no repeatable way into enterprise.
So I built the motion to do it, and hit 187% of the first-year goal.
ENTERPRISE
One of the country's largest property groups, won from a standing start and kept by speed.
When their deliveries started failing, I cleared every defect in days, not weeks. That earned the full portfolio: over 200 buildings, the largest single-account expansion.
CHANNEL
I built the channel the team still runs on.
Originated the two-channel motion and the preferred-vendor install pattern, now standard practice.
VELOCITY
Year three: a full year's target, cleared with the year still running.
Fitness ConnectionVice President of Sales2023 — 2024
TechnogymRegional Sales Manager2018 — 2023
GoodLife FitnessOperations Divisional Manager2000 — 2017
THE PROOF

Built, shipped, running.

Production AI I built and still run, most of it for the teams that run the business. Open any one for the architecture and the calls behind it.

01/THE PROOF·UNIFIED OPERATIONS

One surface the business runs on.

Ask in plain English; it reasons across six sources and cites every answer.

Operations Center. Representative interface. Figures illustrative.

Across two countries, the people who run this business used to start the same way, stitching six tools together to answer one question. I built one internal surface that pulls all six into a single view, then put a plain-English search on top of it.

Now anyone asks the way they would say it out loud: which accounts are slipping, where the open territory is, what is ready to install. The answer comes back reasoned, with every source cited. A rep checks a territory, a leader preps for a meeting, and the weekly review that used to run two hours now takes minutes. It runs across more than 100,000 properties in two countries and saves an estimated $320,000 a year. Another org adopted it on its own, and a third asked for it.

Architecture
Next.js 16·React 19·TypeScript·Bedrock·MapLibre GL·CloudFront

A pre-aggregated data layer behind access control, a runtime API, maps in MapLibre, charts and 3D where they earn their place. Under the plain-English search sits a model with tool access across all six approved sources, so one answer can pull from each and cite where every number came from.

Built modular, so a second country was a configuration change, not a rebuild. One person designed it, built it, and owns it, down to the security tickets. It is the daily driver for the business, not a tool that gets opened once and forgotten.

Design callI chose one consistent auth model over hardening a single route. Security that only covers one door is not security.
02/THE PROOF·AUTONOMOUS DEPLOY

The Self-Shipping Loop

A bug report becomes a reviewed production deploy, with the first patch written by an agent and the final call held by a person.

  1. Feedbackin the dashboard

    Someone clicks a button and describes the bug in plain language.

  2. ClassifyBedrock

    The report is scoped into a known fix shape.

  3. PatchClaude Code · EC2

    A coding agent branches the repo and writes the fix.

  4. Prove it5 gates

    Type-check, lint, a browser test diff, a model critique that has to pass a quality floor, and an idempotency check.

  5. Shipthe only human step

    A Slack card shows the diff and waits. You click ship, or you throw it away.

  6. Deployrelease path

    An approval-gated release from the machine authorized for that environment.

  7. Live~5s rollback

    11 alarms watch the run. One command reverts it in about five seconds.

AI assists. Human commits.

Someone on the team clicks a feedback button and describes a bug in plain language. Minutes later the fix is live, and no engineer hand-wrote the patch. The report gets classified and scoped. A coding agent branches the repo and writes the patch. The change then runs a gauntlet: type-checking, linting, a full browser test pass, a separate model whose only job is to tear the diff apart, and an idempotency check so the same fix never ships twice.

Only then does it reach a person. A Slack card shows the change and waits. One click ships it. One click throws it away. If anything looks wrong in production, a single command rolls it back in about five seconds. This is the same shape as the autonomous-coding demos that raised venture rounds in 2024. I built and run mine on my own.

Architecture
Claude Code·Bedrock·Lambda·EC2·DynamoDB·Playwright·CloudWatch

Five serverless functions feed a queue. A worker on an always-on box runs the coding agent headless to branch the repo and write the fix. Five gates run before anything ships: type-checking, linting, a browser test diff across the routes, a model critique with a quality floor, and an idempotency precheck.

The final deploy runs through an approval-gated release path on the machine authorized for that environment. Every run is watched by 11 alarms. The trust boundaries live in code, where the model cannot talk its way past them. Scope is deliberately bounded to a known class of fixes today, and widens as trust in the gauntlet grows.

The card the loop posts to Slack after every gate passes. One click ships, one click discards. Representative interface. Figures illustrative.
The hardest decisionThe classifier once carried a trusted-override instruction in its prompt. The model refused it, reading the override as a possible injection. It was right to. I moved the contract into deterministic code, so it holds whether the model cooperates or not. Fix the contract, do not fight the model.
03/THE PROOF·MULTI-AGENT OUTREACH

It does the homework. A person hits send.

Six sources researched, every line cited, and a person sends every draft.

The Outreach Engine. Representative interface. Figures illustrative.

A lead goes quiet, or a follow-up is overdue, and most outreach answers with a template. Mine answers with research. Before it writes a word, the system reads approved account context, public sources, delivery signals, and my own notes on the last time we spoke.

Then it writes one email in my voice, tuned to who they are. A property manager hears about residents, an owner-operator hears about yield. Every claim traces to a source, 15 compliance checks and a hallucination scan run before I see it, and I send the final word myself. It drafts only for the accounts I choose to work. It has never sent one on its own.

Architecture
Claude Opus·AWS Lambda·DynamoDB·EventBridge·Slack API·Outlook / Graph

A five-stage pipeline runs for every contact: research across approved sources, context from the threads I'm permitted to use, generation in my voice with extended thinking, 15 compliance checks, and delivery to a Slack card for my review.

The compliance stage is the point. CASL consent, colleague dedup so two reps never hit the same contact, brand rules, and a hallucination scan that kills any claim it cannot trace to a source. The system drafts and cites. I read every word and send. That boundary lives in code, where a prompt cannot loosen it.

The hardest decisionI built it to send on its own, then took that away. A system that emails people unsupervised is a liability, not a feature. The value was never the sending. It was the research no human has time to do, every time.
04/THE PROOF·AUTONOMOUS PROSPECTING

Qualified while I slept.

It works the territory overnight, assumes every lead is wrong, and by morning only the ones that survived the argument reach me.

The Nightly Lead Hunter. Representative interface. Figures illustrative.

Every weekday at 3:15 in the morning, on a box that never sleeps, four agents go to work. A researcher scans every account in the territory. A briefer writes the case for each one. A critic attacks that case. A handoff pushes only the survivors to a review queue, ranked, with the reasoning attached.

The critic is the point. Most lead tools rank what they find and call it qualified. Mine assumes every lead is wrong until it can argue otherwise, then shows me the argument it had with itself. By 6 AM I have a short, honest brief, and the accounts that did not hold up never reach my morning at all.

Architecture
Claude Opus·EC2·systemd timers·MCP tools·Salesforce API·Extended thinking

An always-on box runs eight systemd timers through the night. Four agents work in sequence, each on extended thinking with no cheaper model in the chain: researcher, briefer, adversarial critic, handoff. They reach across the data with 18 tools. The whole run finishes in about 24 minutes.

The adversarial critic is what makes the brief trustworthy. It exists only to disagree, to find the reason each lead is not really a lead. What clears it reaches me with the challenge it survived. 1,508 tests keep the chain honest, because an autonomous system I do not watch overnight has to be one I can trust by morning. It only ever qualifies and hands off, and never contacts anyone itself.

The hardest decisionI gave it the power to score leads and almost stopped there. Then I built an agent whose only job is to disagree with the others. The score was never the hard part. Earning the right to act on a score I did not personally check was. The critic is how I sleep through the run.
05/THE PROOF·AGENT MEMORY

Memory my agents can actually search.

A persistent memory layer I wrote from scratch, so an agent recalls the right thing, not the most recent thing.

The Semantic Memory Engine. Representative interface. Figures illustrative.

Most agents forget between sessions, or dump their whole history back in and hope. Mine keeps real memory: plain text files, one fact each, read at the start of a session, searched while we work, and added to on the way out. When it needs something, it pulls only the few memories that bear on the question, answers from those, and names each one. Choosing the five that matter over the 700 that do not is the whole game.

A second pass runs overnight, the dream pass. It groups the day’s new memories and writes a short summary so the bigger picture is easy to find later. It never edits or deletes the originals.

Architecture
Markdown + YAML·Embeddings (1024-dim)·RRF hybrid search·Cross-encoder rerank·MMR·SQLite WAL·Nightly dream pass

Each memory is a markdown file with YAML frontmatter, linked to others with a wiki-style graph syntax, and a curated index loads at startup. Recall runs four stages: embed the question, then fuse a vector and a keyword search with reciprocal-rank fusion. A cross-encoder reranks the top results, and an MMR pass diversifies them, so the five memories that reach the answer are relevant without repeating each other.

Every answer is grounded. It can only draw on what was retrieved, and each line carries the memory it came from, so there is a file behind every claim. The store is one SQLite database in write-ahead mode, cosine similarity computed in numpy, about 1,170 lines with no framework underneath. It is deliberately boring: plain files I can read and edit by hand, no database I cannot open, no service I cannot restart.

The dream pass runs nightly, and it is purely additive. It groups the day's new memories by what they are about, then writes a short three-sentence summary for each group into a separate consolidated folder, so recall gets a high-level entry point next to the detail. It never rewrites or removes the source files. A separate check can flag likely duplicates, but only to surface them for me to review. Nothing is merged automatically.

The hardest decisionThe easy version stuffs everything into the context window and lets the model sort it out. That gets slower and more expensive as the history grows, and the answers get worse, not better. So I put the work into retrieval, and into the nightly pass that keeps the store legible. I built this before there was an official memory primitive to reach for. The shape it took has held up since.
06/THE PROOF·ORG NAVIGATION

Find who owns it, and who they answer to.

I search the directory in plain English, and the graph traces the reporting line and the team behind any name.

Org Explorer. Representative interface. Figures illustrative.

In a company this size, the hard part of getting something done across teams is not the work. It is finding the one person who actually owns the thing. The org chart is buried, search hands back job titles, and you lose days asking around. I built the surface that just answers it.

I ask in plain language, who owns install scheduling, and the right people come back ranked, with their level, role, team, and tenure. Pick one and the graph draws their world: the reporting line up to a leader, the team around them, and where they sit among everyone else. I know the structure before I send a message.

It only ever shows what the company already publishes about itself, titles, teams, and who reports to whom. Nothing private, nothing inferred. The point is to find the right door faster, not to learn more about people than they have chosen to share.

Architecture
Next.js 16·React 19·TypeScript·Force-directed graph·Directory + reporting data·CloudFront

It sits inside the Operations Center as one of a family of internal tools. Approved directory data loads as one in-memory graph behind access control, so search returns instantly. A ranking pass scores every person against the query, by role, by team, and by how close they sit to what I asked about.

The graph is a force-directed layout of the entire company. Selecting a person walks the reporting edges to trace their chain up to a leader and pulls in their direct team, so one click turns a flat list into a map. Every node is a real directory record, nothing scraped, nothing guessed.

Design callA search box over an employee table would have been a weekend. The graph took the real work, because the answer I needed was never just a name. It was the structure around it: who they report to, who reports to them, where they sit. That is the difference between a directory and a map.
07/THE PROOF·AGENT INFRASTRUCTURE

Autonomous until it has to commit.

The infrastructure several of these systems run on. It works end to end on its own, and still cannot reach the world without me.

The Agent Harness. Representative architecture. Figures illustrative.

Some of the systems on this page are not separate builds. They run on one chassis I wrote: an orchestration, review, and trust layer for agents that work against live business workflows where mistakes have real-world consequences. A mistake here is not a bad demo. It is an action you do not get to take back.

A request from the operator surface starts an agent run. A line of single-purpose agents researches, drafts, and scores the work, and a separate critic tears each result apart before it counts. Anything with a claim it cannot trace goes back to be redone. The system separates reasoning from irreversible actions so approvals stay explicit.

What makes it safe to leave running is where it stops. Six gates stand between the agents and anything they cannot take back, and the final gate is a human decision recorded in state. Autonomy lives in the runtime. Safety lives in the approval boundary. Keeping them apart is the whole design.

Architecture
Claude Agent SDK·Bedrock·EC2·Slack (Bolt)·DynamoDB·Object-store queue·systemd·MCP·Business-system APIs·CloudWatch

The operator surface is Slack, not a bespoke UI. A mention spawns a real agent session, streams the work back into the thread, and persists the session so a follow-up resumes it. One run holds per thread, the rest queue, and three separate paths can kill a run. Underneath sit typed tool interfaces into approved systems, memory, and Slack, and a 1024-dim vector store the agents search for past context.

Reasoning and action are deliberately separated. The system can prepare, critique, and queue work, but irreversible steps wait behind an explicit human approval state. Every agent runs on the top model at full effort, with no cheaper tier anywhere. Because the gateway can quietly serve a smaller model, a detector reads the model id off each response and raises an alarm when what was served does not match what was asked.

Over all of it sits one supervisor: a single brain that wraps every producer behind one execute() interface, so the whole fleet runs as one orchestrated system instead of a set of independent scripts. It was built test-first and hardened through three adversarial review rounds, with a kill switch on the whole thing. All of it carries 1,508 tests behind 352 single-author commits.

The hardest decisionAutomation has to move without waiting on me at every step, but anything irreversible needs my approval. Those two look like they contradict until approval becomes a state in the system, not a prompt an agent can route around. The send path stays blocked at the harness until that state changes.
THE PROOF·OFF THE CLOCK

I run my own life on the same stack.

Off the clock, the same watchers, schedulers, and approval gates point at my house: the family schedule, the home, the bills, each action staged for me to approve. The truest test of a system is whether you would trust it with your family. I do.

Al’s Command Center. Representative interface. Figures illustrative.
THE PROOF·MORE

The rest of the work.

A shorter list, same bar. More systems I built and still run, across work, family, and the toolchain itself.

  • Work
    Signal
    Built for the entire enterprise team in Canada: it turns raw delivery data into cited evidence about any property, from a single building up to a whole account, so a claim is backed before anyone makes it.
  • Network
    Nexus
    A map of my professional network. It indexes my own contact history and relationship notes, locally, into one graph of people and companies, then shows me who I actually know, how we are connected, and the context behind every relationship.
  • Family
    A learning agent for my daughter
    My daughter was losing to quadratics, so I built her a tutor on the always-on Mac mini at home. It watches her Google Classroom read-only, sees the exact questions she got wrong, and builds practice for those gaps, never just handing over the answer. It keeps no score, no grades, no streaks, just unlimited retries and a first line that reads 'no rush, no judgment.' Her grades have come up.
  • Toolchain
    A weekend content pipeline
    It trims a long video, transcribes it, picks an approved image, and writes five captions. I choose one, it ships. The taste stays mine.
  • Toolchain
    A cross-model review harness
    Before I call any change done, a second model reviews the first model's work for bugs and bad calls. The disagreements between them are where the real fixes hide.

Let's talk.

The best conversations happen when the right signal reaches the right person.

I build the systems. And I've spent 20 years in the room with the people who use them.

LocationToronto, Canada · Eastern Time