A sales-training platform where reps practice live voice calls against AI prospects built from their own real calls.
Jonathan brings the sales methodology; I build everything else. Two Next.js apps and a shared UI package in one monorepo, a 61-model Postgres schema, and the pipelines between them: recordings arrive from Zoom, Fathom, Fireflies, or upload, AssemblyAI diarizes them, language models pull out objections and each rep's winning formula, and scores flow back out to HubSpot, Slack, and customers' own signed webhooks.
- Real-time voice sessions over WebRTC against OpenAI's Realtime API, with interruptions, dual-track recording, and in-call coaching.
- Stripe billing with metered overage, seat sync, trials, and a partner program, tested across all eight user types.
- CI that type-checks, lints, and runs Vitest with coverage on every PR; staging-to-production promotion; migrations that survive a retry; Sentry monitors on eight crons.
- The style guide and design tokens both apps are held to, and the shared primitives that enforce them.
173,000 lines of TypeScript. 198 API routes. 123 migrations. 149 users in 127 organizations. 1,200 practice sessions.