- Brain
- The one place a model is called: headless Claude Code CLI by default, or OpenAI, DeepSeek, or any OpenAI-compatible endpoint. Retries, timeouts and skill injection.
- Reading pages
- Three tiers by cost: httpx + BeautifulSoup (included) → Crawl4AI (renders JS, returns Markdown) → Browser Use (a real browser). The upper two are optional; with neither installed it still reads the web.
- Sending
- Your own Gmail (OAuth; only a refresh token is stored, locally), a sending platform, or nothing at all — draft and export. Scheduling, substitution, the footer and stop-on-reply all happen on your machine.
- Shape
- A local Python heartbeat loop: quiet hours → CRM sync → usage budget → decide → act → log → sleep. Or run it always-on under Docker.
- Decisions
- Deterministic rules, not model calls. What to do next falls out of the pipeline counts — and a campaign awaiting review is not an action, because it is waiting on a person.
- Data
- SQLite in WAL mode with linear schema migrations. Stage history is its own event table, not a field that gets overwritten.
- Interface
- A desktop app in a window of its own, drawn by the system web view rather than a bundled browser engine. Bilingual. The sidebar is grouped in the order the work happens, and a banner at the top names the one thing to do next.
- What you can change
- Prompts and the sales knowledge base are plain Markdown — including the prompt that turns a sentence into an ICP. Changing how it sells needs no code.
- Licence
- MIT. Rename it, sell it, close it.