Ninety days from empty repo to twelve teams on a private beta is not a story about heroics. It is a story about constraints — what we refused to build, what we measured before we polished, and what we would repeat.
The three decisions we'd repeat
GitHub OAuth and Slack delivery from day one. No custom auth, no email parsing, no SMTP rabbit holes. Every integration we skipped bought a week of product focus.
One hero metric per week — usually time to first insight after install. Everything else stayed secondary until that number was under five minutes.
A closed beta with twelve teams, not hundreds. Twelve gave us calls; hundreds would have given us a ticket queue and a false sense of product-market fit.
The mistakes we paid for
We over-invested in onboarding before ten teams used the product end-to-end. The flow was beautiful and wrong — real friction was repo selection, not animation.
We under-invested in instrumentation. By the time we asked 'how often does this view open?' we were guessing. Wire analytics before you wire the feature.
What we'd do differently next time
Write the README first. It forces clarity the codebase never will — and it is the script for your first ten sales calls.
Pick boring infrastructure. Next.js, Postgres, one managed queue. Nothing surprised us at 2am. Boring is a feature at ninety days.
Key takeaways
- OAuth + Slack early; skip custom auth and email plumbing.
- One hero metric per week beats a roadmap of equal priorities.
- Twelve design partners beat a hundred silent signups.


