Quota
Agents that earn the conversation.
- Client
- Tandem
- Role
- Design & Engineering
- Year
- 2026 · open source
- Disciplines
- Agentic EngineeringProduct DesignSales SystemsOpen Source
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.
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.
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.
- CRO7am daily
Reviews the OKRs, dispatches the team, posts the day's plan to Slack.
- ScoutOn demand
Researches companies, then finds and verifies the right contacts.
- OutreachOn demand
Runs three-touch sequences. Tier 1 lands as a Gmail draft for you.
- EnablementBefore meetings
Writes call-prep briefs from the CRM.
- ChannelsOn demand
Reports on partner and referral opportunities.
- InboxEvery 15 min
Reads replies, classifies them, updates the CRM.
- Digest8am daily
Posts the morning pipeline summary.
- Follow-Up10am daily
Drafts responses and queues the important ones for approval.
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.
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.
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.
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.
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.
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.
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.
- 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.
- Weekdays 9amMorning briefWhat happened in the last day, with links and red flags. Data or silence: empty sections are left out.
- FridaysOutcome loopCompares reply rates by angle over four weeks and proposes a prompt change when one clearly wins.
- TuesdaysSignalsWatches public hiring signals at target companies and hands the writer a reason to reach out now.
- Every sweepBouncesDisqualifies dead addresses, notes the CRM and flags domains that keep bouncing.
- MondaysDeliverabilityReads the domain's DMARC reports and says when it's safe to tighten.
- On visitMicrosites and intentUnlisted pages per account. A second visit within two weeks pings the team as a hot lead, with no tracking scripts.
$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.
Quota is on GitHub at darrellwhitelaw/quota.
The thinking behind it: Meet Quota.