Outreach drafts in your voice, from one engine and swappable campaign packs.
GTM Engine is a command-line tool that drafts personalized outreach emails from a true fact about the recipient, your positioning, and a profile of how you actually write. It stages every draft in Gmail for you to read and send yourself. It never sends on its own.
Early open-source project, written in Python. The core loop works today: drafts, Gmail drafts, and a follow-up cadence. Metrics and the review step are on the roadmap. Try the live demo or read the code.
How it fits together
One engine, many packs
The engine is the part that never changes. A campaign pack is a small YAML file holding only what is specific to one audience: who you are targeting, your positioning for them, the message angles to try, and the cadence. Starting a new campaign means copying a pack and editing values. The engine code stays the same.
Everything about you stays out of the repository. Your real packs, your voice profile, and your contacts live in git-ignored folders, so the code can be public while the data stays private.
Live demo
Draft an email with the real engine
This runs the same code as the command-line tool, pointed at a demo pack and a demo voice profile. The sender, Sam Rivera, is a fictional GTM operator. The five contacts and their companies are fictional too, with example.com addresses. The research notes about them are the facts the drafter is allowed to use.
Nothing you draft here is sent to anyone. The demo returns the draft to this page and stops. It is rate limited to a few drafts per hour per visitor.
Why I built this
AI kept forgetting how I write
I was messaging a lot of people on LinkedIn and using AI to brainstorm. It never remembered my tone or what I'd already decided I liked, so every draft started from zero. I wanted one place that keeps my voice, my pitch, and my follow-up rhythm, and drafts from those every time.
I made everything customizable, so it fits more than one situation. Looking for a job. Hiring. Doing investor outreach at a startup. If you reach out to people one at a time and want each message to sound like you, this is for you.
It's a simple system, and it's early. If you try it, tell me what worked and what didn't: leave feedback on GitHub.

About
Louise Eriksson
I work in GTM and partnerships at SACC, the Swedish-American Chamber of Commerce in San Francisco, where I connect startups and investors. I'm also the COO at Blue Grid Energy, and I studied business economics at the Stockholm School of Economics. A lot of my week is reaching out to people I haven't met yet, which is where this tool came from.
Install and run
Run it on your own machine
You need Python 3 and git. The tool runs from a terminal.
- Clone the repository and create a virtual environment.
- Install the pinned dependencies.
- Copy
.env.exampleto.envand add your Anthropic API key. The file is git-ignored. - Copy a template pack into
campaigns/private/, fill in the placeholders, and point it at your voice profile inprofiles/private/.
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
--dry-run prints the prompts without calling the API. --gmail creates the email as a draft in your Gmail after a one-time python run.py gmail-auth sign-in. A test in the repository fails the build if a send call is ever added.
What works today
- Drafting in your voice from a pack, a voice profile, and a contact
- Gmail drafts for your approval
- A per-pack cadence with a due list and touch logging
- Contacts and touches in SQLite, with opt-out
On the roadmap, not built
- Reply and meeting metrics by angle, channel, and pack
- An automated review every two weeks
- More template packs
The code is on GitHub. It is an early project and the roadmap lives in the repository's CLAUDE.md.