Outreach emails in your voice. Just hit send.
Give it a true fact, your pitch, and how you write. It drafts the email into Gmail. You hit send.
Early and open source. Every email is tagged by angle and ask, so reply rates are a query, not a guess.
Try the beta, free or see the live demo first
Public beta. Sign up with your email, paste how you write, and it drafts in your voice. Nothing is ever sent for you.
Tap a guava, or shake the tree.
How it fits together
One engine, many packs
The engine never changes. A pack is one YAML file: who you're writing to, your pitch, which angles and asks, when to follow up.
Your packs, voice profile, and contacts stay in git-ignored folders. Public code, private data.
Works with Clay

Bring your Clay account.
We don't sell data. You already pay for Clay, so we just plug into it. Search for people or companies, pull in a table, or run one of your enrichment routines. The results go straight into your contacts, and the drafter writes from them.
clay-searchfinds people or companies and adds them to a packclay-import-tablebrings a Clay table inclay-enrichruns a routine on one contact and keeps the result
Your key stays in your .env. The free plan is enough to try it.
Live demo
Try it
Real engine, fictional sender, fictional contacts. The notes about each contact are the only facts it may use. Draft a few with different angles or asks, mark what came back, and the reply-rate table below fills in.
Reply rate by tag
| Angle | Touches | Replies | Reply rate | Positive |
|---|
Every draft you make here is a touch, tagged with its angle and ask. Mark what came back under the draft and this table updates. It lives only in your browser. In the CLI this is log-reply and stats.
Why I built this
AI kept forgetting how I write
AI helped me message people on LinkedIn, but it forgot my tone every time. I wanted one place that keeps my voice, my pitch, and my follow-up rhythm.
Job hunting, hiring, investor outreach. It's early. If you try it, give me your feedback.

Who built it?
Louise Eriksson
GTM and partnerships at SACC, the Swedish-American Chamber of Commerce, in San Francisco. COO at Blue Grid Energy. Stockholm School of Economics grad.
Install and run
Run it yourself
Needs Python 3 and git.
- Clone the repo and make a virtual environment.
- Install the dependencies.
- Copy
.env.exampleto.envand add your Anthropic key. - Copy a template pack into
campaigns/private/and fill it in.
git clone https://github.com/erikssonlouise/gtm-engine.git
cd gtm-engine
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python run.py show-pack job-hunt
python run.py init-db
python run.py import-contacts data/contacts.csv
python run.py draft --pack job-hunt --contact person@example.com --dry-run
python run.py draft --pack job-hunt --contact person@example.com --gmail
python run.py due --pack job-hunt
python run.py log-reply --contact person@example.com --outcome positive
python run.py stats --pack job-hunt --by angle
--dry-run skips the API. --gmail needs a one-time gmail-auth sign-in. A test blocks any send call.
What works today
- Drafts in your voice
- Gmail drafts, you send them
- Follow-up schedule with a due list
- Every email tagged with its angle and ask
- Reply rate per tag, from the log
- Contacts and touches in SQLite, opt-out included
Not built yet
- A review every two weeks
- A dashboard; today the numbers are a table in the terminal
- More template packs