Bridge the gap between user research and shipped features.
80% of shipped features are rarely or never used. Companies run interviews, synthesize insights, then watch them disappear into Slack threads. Meanwhile, AI can write code at superhuman speed—but everyone's writing the wrong code.
Probe closes that loop. In one click, it turns user interviews into shipped code, with every decision traced back to the quote that demanded it.
Try Probe → · See what shipped →
In the dashboard:
- Ingest user interviews (from Granola, file upload, or transcripts)
- Watch AI synthesize them into quantitative themes, ranked by mentions
- Click a theme → Probe generates three solutions in parallel, scored on evidence coverage, blast radius, and business fit
- Click the winner → real code commits to GitHub, feature flag flips, deployed URL updates live
Then hover any new UI element in the shipped app. The "Why did this ship?" inspector shows the exact supporting quote, timestamp, interview source, and the two solutions that lost the tournament.
Every shipped line of code is traceable to the evidence that demanded it.
- Interview synthesis — AI turns transcripts into themes with direct citations
- PR Tournament — Three solutions per theme, scored and ranked in real-time
- Real shipments — Commits actual code to your GitHub repo, flips feature flags, deploys live
- Full lineage — Inspect any shipped element and see the quote → theme → solution → code path
- Business context grounding — Solutions reference your actual tech stack (Stripe, Notion, Intercom, etc.), not generic advice
# Install dependencies
npm install
# Set up environment variables
# .env.local needs:
# - ANTHROPIC_API_KEY (for solution generation)
# - OPENAI_API_KEY (for interview synthesis)
# - SUPABASE_URL & SUPABASE_ANON_KEY (for data storage)
# - GITHUB_TOKEN (for real commits)
# - LOGFIRE_TOKEN (optional, for observability)
# Start the dev server
npm run devOpen http://localhost:3000.
Both probe and a target demo app (like acme-saas) should run on Render. The Render URLs are baked into the feature-flag flip and shipment inspector, so local testing works best with the cloud URLs.
User interviews (Granola MCP / file upload)
↓
/api/ingest — parse & store transcripts
↓
/api/synthesize — OpenAI turns interviews into themes with citations
↓
Dashboard — Recharts theme distribution + theme card grid
↓
Theme click → /api/tournament (3× Anthropic Claude Sonnet for solutions)
↓
Tournament scoring → solution cards (evidence, blast radius, business fit)
↓
Ship button → /api/ship
├─ GitHub Contents API: commit code diff
├─ Supabase: flip feature flag
└─ Acme app: redeploy (Render webhook)
↓
Inspector hover → /api/shipments/:id
└─ Render source quotes + timestamps + losing alternatives
Stack:
- Frontend: Next.js 16, React 19, shadcn/ui, Recharts
- Backend: Next.js API routes, Supabase (Postgres)
- AI: Anthropic Claude Sonnet 4.6 (code gen), OpenAI (synthesis)
- Deploy: Render
- Observability: Pydantic Logfire
- Interview capture: Granola MCP (live sync) or file upload (Word, PDF, text)
- Code repository: GitHub (real commits via Contents API)
- Feature flags: Supabase (key-value toggles)
- Deployment: Render (webhooks on repo push)
Real:
- Dashboard, synthesis, tournament scoring
- GitHub commits to a real repo
- Feature flag flips and live deploys
- Inspector overlay and full lineage
- Shipped URL is genuinely updated
Pre-Prepared for the demo:
- 20 fake Acme interview transcripts (written with Claude)
- Acme SaaS repo structure (we can't ship into a stranger's codebase in 24 hours)
- One pre-baked shipment in our pocket as fallback if the live ship errors out on stage
This is a hackathon project. The core loop is real; the demo context is controlled.
This is a 24-hour hackathon build that's now open for feedback and contributions. We expect more hands on this.
Setup is minimal: just clone, npm install, add your env vars, and npm run dev. No special build steps or prerequisites beyond Node 18+.
We keep things low-friction:
- No pre-commit hooks or strict linting gates
- TypeScript strict mode, but pragmatic about it
- Tests are encouraged but not required for small PRs
- Docs live in the codebase, not a wiki
If you want to extend Probe (new interview sources, scoring rubric tweaks, new solution types, better inspector UI), open an issue first so we can sync on direction.
Does this work with my tool?
Right now we support Granola MCP and file upload for interviews, and GitHub + Supabase + Render for shipping. We'd love to add more capture tools (Dovetail, Outset, etc.) and deploy targets. Open an issue.
Can I use this on my own codebase?
Yes. You'll need to wire up a GitHub token with repo write access, point it at your repo, and define your AcmeContext (tech stack + business goals). The /api/tournament endpoint is agnostic to the target repo; the hard part is grounding the solutions in your business context.
How much does this cost to run?
- Synthesis (OpenAI): ~$0.01–0.05 per interview
- Tournament (Anthropic): ~$0.10–0.30 per theme (3 solutions × streaming)
- Supabase, Render: free tier covers most hackathon use; $5–20/mo at low volume
- GitHub: free
Set usage alerts if you're cost-sensitive.
Why Render instead of Vercel?
Probe needs long-lived Node services to run MCP clients. Vercel serverless has cold-start + connection constraints. Render keeps the Granola MCP connection warm.
This project was built in 24 hours (April 25–26, 2026) to explore whether the gap between user research tools ($1B market) and code generation tools ($50B+ market) is really uncontested. Early signal: yes.
We're sharing the code and the demo so you can see if we're onto something real.
Questions? Open an issue, or email the team via the links below.
Try it: probe-4fvo.onrender.com
See the shipped feature: acme-saas.onrender.com
Code: github.com/MsTiik/Probe