Work
Tandem · 2026

Quota

Agents that earn the conversation.

Client
Tandem
Role
Design & Engineering
Year
2026 · open source
Disciplines
Agentic EngineeringProduct DesignSales SystemsOpen Source
01
Overview

At Tandem we back early-stage companies, and part of that work is helping them actually sell: understanding the buyer, writing the outreach, working the sequence. Quota is a team of AI agents, built on Claude, that handles everything in sales that doesn't need human judgment (the research, the enrichment, the first drafts) and hands the rest back. I designed and built it, open-sourced the framework, and grew it into the system that now runs outbound for more than one company.

Great outreach is personal. Personal doesn't scale like a spreadsheet.

Quota does the legwork overnight, so every morning starts with a short list, a brief and a draft.

02
The problem

The firehose, or no time at all.

Every team that tries to scale outreach lands in one of two places. Either a firehose of templated messages that burns the list, or a team that knows the generic approach is wrong but never has time to do the research to do it right.

The best deals start with someone showing up with real context: the prospect's business, their likely pain, their competitive landscape. I wanted a third option, where that research happens on its own and the human time goes to the conversations worth having.

03
The team

Eight agents, one org chart.

Quota is organized like a sales team. A CRO agent reads the current OKRs each morning, decides what the day should focus on and dispatches the rest: research, sequences, call prep, partner reports, inbox triage, the digest and follow-ups. Scroll through a day to watch it run.

6am7am8am9am10am11am12pm1pm2pm3pm4pm5pm6pm
CROSonnet
ScoutSonnet
OutreachSonnet
DigestHaiku
Follow-UpSonnet
EnablementHaiku
InboxHaiku

Scheduled agents run at their real times. On-demand runs are placed for illustration.

The agents do the legwork. You do the craft.

A Tier 1 email never sends without a person in the loop.

04
How it works

One shared state. Nothing in a silo.

Claude does the reasoning, and the CRM is the shared memory: every agent reads from and writes to Attio, so Scout's research is waiting when Outreach writes and Inbox's classification is there when Follow-Up drafts. Everything surfaces through a dashboard and Slack, so approvals come to you instead of asking you to open one more app.

ClaudeAll of the reasoning. Sonnet for drafting and research, Haiku for triage.
AttioThe CRM, and the shared state every agent reads from and writes to.
PostgresAgent configs, OKRs and run history.
GmailSend, draft and inbox.
Apollo + FullEnrichContact discovery and verification.
SlackPlans, digests and approvals, where the team already works.
The Quota dashboard: runs, errors and tokens today, the pipeline by status, and every agent with its model and last run
The dashboard. Runs, tokens and errors for the day, the pipeline by status, and every agent with its model and last run.

Two decisions shaped the build.

The judgment lives in plain Markdown. Every agent's prompt is a Markdown file, hot-reloadable from the dashboard with no redeploy. What good outreach looks like, what to research, how to write a brief: the layer that holds the judgment had to be the easiest thing in the system to change.

Everything degrades gracefully. Skip an optional integration and the server still starts; the agents that need it skip those steps and log a warning. A system that runs unattended every morning can't be brittle.

05
Open source, with a line drawn

A system you own, not a SaaS you rent.

I open-sourced the whole framework: the agent architecture, the React dashboard, the Gmail and Slack integrations and the approval flow. The prompts in the repo are instructional templates that teach you to write your own, with a Claude prompt that generates a business-specific version from your context. It's built to run in Claude Code and deploys in a couple of hours.

06
What it became

From a framework to a system you can trust unattended.

Quota went on to run outbound for more than one company, each deployment with its own voice, sending identity and playbook. Running it for real every morning raised the bar: the agents now number ten, with more than a hundred tests behind them, and each deployment's guard blocks the brand language of the others so nothing ever crosses over.

The model writes. Code decides.

The original Outreach agent ran a long tool loop per contact and had to remember every step: save the draft, advance the sequence, post the approval. I rebuilt it as a deterministic engine. Code assembles the day's worklist, one contact per company with every gate checked; the model makes a single structured call to write the email from a packet of research, signals and its own last twenty openers; and the draft, the sequence step, the approval card and the log are written together or not at all. It uses about a tenth of the tokens per contact.

Nothing ships on the model's word.

Every draft passes a content guard of 52 rules in nine categories before it can be saved, and a failing draft goes back to the writer once with the exact violations to fix. A golden set of twenty scenarios, eight of them traps built to bait the writer into breaking a rule, runs through the real writer and guard whenever a prompt or the engine changes. A doctor script checks the rest of the system, from email authentication to config drift, before anything is trusted.

52Guard rules
9Rule categories
20Golden scenarios
8Of them traps

Autonomy is earned, not configured.

Every email that goes out is compared with the draft Quota wrote. Sends you didn't touch build a streak; any edit resets it. Twenty untouched sends in a row, plus at least one positive reply, earns autopilot, and even then Quota only proposes it. A person still turns it on. Try it.

AutopilotEarning

0 of 20 untouched sends

Verbatim
0
Light edits
0
Heavy edits
0
Positive replies
0

Send Quota's drafts as written to build the streak.

You send a draft
A prospect writes back
  • Edit ratio Each sent email is diffed against the draft. Up to 5% changed counts as verbatim, up to 25% as a light edit.
  • Any edit resets the streak. Trust is rebuilt from zero.
  • A streak alone isn't enough. Bland emails nobody bothers to edit don't earn autonomy, so a positive reply is required too.

It learns from what happens next.

A set of small loops feeds the system without adding noise. Most of them make no model calls at all.

07
What it costs

$90 to $180 a month, all in.

That covers the Claude API, a CRM, contact tooling, and about $10 for hosting and Postgres. Exact token spend for every run shows up in the dashboard.

I expected it to save time. It made the outreach better.

With a researched brief in front of you, you don't start from a blank page. You start from a better one.

8Agents on a daily schedule
15 minBetween inbox sweeps
$90–180A month to run, all in
~2 hrsFrom clone to running
Open source

Quota is on GitHub at darrellwhitelaw/quota.

The thinking behind it: Meet Quota.

Next projectClarity Core2025 · Clarity · Clarity