← Work

Product

Spindle

Spindle runs B2B cold outreach end to end, with an AI sales rep governed by code — not vibes.

Spindle.chat landing page — 'Autonomous Marketing, Personalized Touch.'

Problem

Most outreach tools hand the conversation to a language model and hope it behaves. That’s how you get an AI that “agrees” to a refund, ignores an opt-out, or gets talked out of its own rules.

Approach

Spindle — a desktop cockpit (Tauri) over a Rust core — discovers and scores leads, then runs email and SMS cadences with an embedded AI SDR that replies to prospects, books meetings, and escalates to me on Discord when a human is needed. The same core sits behind a portable contract, so it runs as a desktop app today and a web service tomorrow without a rewrite.

The hard part

The AI never gets to be the authority. Every conversation moves through a nine-state machine whose transitions are validated before anything is written — so a “just mark me as booked” injection literally cannot reach the booked state. A deterministic check scans each inbound message for crisis, legal, and opt-out signals before the model is called, and a consent gate enforces DNC and CAN-SPAM rules at send time. The model proposes; the code disposes. All of it is tested offline with fakes — no API keys, zero spend.

Spindle technical landing page explaining the safety architecture
The technical page — how the safety model is explained to engineers.

Outcome

Roughly 85,000 lines of Rust across a multi-crate workspace, 176+ offline tests, and a CI gate that fails on a single warning. In active daily development.

Spindle's design system — color palette, type specimens, and UI components
The Spindle design system — palette, type, and components.