io.github.teabagkim/interview-mode
Structured interviewer for Claude Code β probing questions, decision tracking, evolving checkpoints.
Ask AI about io.github.teabagkim/interview-mode
Powered by Claude Β· Grounded in docs
I know everything about io.github.teabagkim/interview-mode. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
claude-interview-mode
An MCP server that turns Claude into a structured interviewer β and gets smarter with every conversation. Each interview feeds a shared evolution system where checkpoints are scored, ranked, and recommended based on real usage patterns across all users.
The Evolution System
This isn't just an interview tool. It's a collectively evolving knowledge system.
Every time anyone runs an interview in a category (e.g., "saas-pricing"), the system learns:
Session 1: You explore freely β decisions become new checkpoints
Session 2: Checkpoints load β Claude prioritizes what matters
Session 5: Bayesian scores stabilize β the interview path optimizes itself
Session 20: Community patterns emerge β everyone benefits from collective experience
How evolution works
1. Checkpoint Discovery β When a decision is made during an interview, its topic is automatically registered as a new checkpoint. After just a few sessions, the system knows what topics matter for each category.
2. Bayesian Scoring β Each checkpoint tracks how often it's covered and how often it leads to a decision. The score uses Bayesian smoothing to handle sparse data:
decision_rate = (decisions + 0.6) / (times_covered + 2)
The prior (0.6/2 = 30% base rate) ensures new checkpoints start with a reasonable score. After ~5 sessions, real data dominates.
3. Composite Ranking β Checkpoints are ranked by a composite score combining decision-leading effectiveness (70%) and usage frequency (30%):
composite = decision_rate Γ 0.7 + normalized_usage Γ 0.3
High-scoring checkpoints are the ones that consistently lead to concrete decisions β not just topics that get discussed.
4. Recommended Path β The system computes an optimal interview path: checkpoints with decision_rate > 0.2, sorted by their average position in past sessions. This tells Claude not just what to ask, but when to ask it.
5. Community Evolution β All metadata flows to a shared database. When you interview about "api-design", you benefit from every other user who interviewed about "api-design" before you. The checkpoints, scores, and paths evolve collectively.
What gets shared (and what doesn't)
| Shared (metadata only) | Never shared |
|---|---|
| Category names (e.g., "saas-pricing") | Your actual questions and answers |
| Checkpoint names (e.g., "pricing-model") | Decision details and reasoning |
| Usage counts, scores, positions | Any personal or project-specific content |
What it does
- Claude drives the interview β asks questions, proposes options with reasoning, challenges assumptions
- Tracks Q&As and decisions β structured records with timestamps
- Evolving checkpoints β learns what topics matter per category, ranked by Bayesian effectiveness scores
- Recommended paths β suggests the optimal order to explore topics based on past interview patterns
- Concurrent sessions β supports multiple interviews running in parallel
- Privacy-first β only anonymous metadata (categories, checkpoint names, counts) goes to the shared database
Install
npx claude-interview-mode
Or install globally:
npm install -g claude-interview-mode
Setup with Claude Code
Add to your project's .mcp.json:
{
"mcpServers": {
"interview-mode": {
"type": "stdio",
"command": "npx",
"args": ["-y", "claude-interview-mode"]
}
}
}
Restart your Claude Code session to load the MCP server. That's it β the evolution system starts working immediately via a shared community database.
Optional: Your own Supabase
By default, checkpoint data is stored in a shared community Supabase instance. If you want your own private database:
{
"mcpServers": {
"interview-mode": {
"type": "stdio",
"command": "npx",
"args": ["-y", "claude-interview-mode"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_ANON_KEY": "your-anon-key"
}
}
}
}
Then run supabase/schema.sql in your Supabase SQL Editor to create the tables.
Usage
Start an interview with Claude Code:
> Let's do an interview about my SaaS pricing strategy
Claude will lead the conversation. As the interview progresses:
- Each Q&A and decision is recorded with checkpoint coverage
- At the end, metadata is uploaded to evolve the system
- Next time anyone interviews in the same category, the improved checkpoints are loaded
Tools
| Tool | Description |
|---|---|
start_interview | Begin a session β loads scored checkpoints and recommended path |
record | Record a Q&A or decision, with checkpoint coverage tracking |
get_context | Review progress, see uncovered checkpoints ranked by score |
end_interview | End session, upload metadata, evolve the checkpoint system |
Architecture
You ββ Claude ββ MCP Server (interview-mode)
β
ββ read (anon key, read-only)
β ββ checkpoints, scores, patterns
β
ββ write (Edge Function, validated)
ββ metadata, checkpoint updates, score recalculation
β
Supabase (shared community DB)
4 database tables power the evolution:
| Table | Purpose |
|---|---|
checkpoints | Checkpoint dictionary per category (name, usage count, decision count) |
checkpoint_scores | Bayesian scores per checkpoint (decision rate, avg position, samples) |
interview_patterns | Coverage sequences per session (which checkpoints, in what order) |
interview_metadata | Session summaries (category, counts, duration) |
Security:
- Anon key is read-only (SELECT only via RLS)
- All writes go through an Edge Function with input validation and spam defense
- Empty interviews, implausible rates, and oversized payloads are rejected
Development
git clone https://github.com/teabagkim/claude-interview-mode.git
cd claude-interview-mode
npm install
npm run build # TypeScript β dist/index.js
npm run dev # Watch mode
License
MIT
