Consulting case interviews are notoriously difficult to prepare for. Candidates spend months practicing frameworks, math drills, and business acumen, but finding a practice partner who can give accurate, partner-level feedback is a massive bottleneck.
I wanted to solve this by building an AI-powered practice platform that doesn't just give generic advice, but grades you like a real McKinsey or BCG partner.
That's the foundation of caseblitz.app.
The Core Product Loop
CaseBlitz isn't just a static question bank. It's a comprehensive "Habit Engine" built around structured practice:
- Daily Drill: Quick, focused questions to keep your mind sharp.
- Blitz Mode & Focus Sessions: Adaptive difficulty sessions for deep practice.
- Case Player: A 5-step wizard covering chart analysis, math drills, framework building, and a case brief overlay.
- Gamification: Streaks, readiness scores, and visual progress tracking to keep candidates motivated.
The Tech Stack
- Framework: Next.js (App Router)
- Database: Supabase (PostgreSQL) + Drizzle ORM
- Auth: Better Auth (magic links, OAuth, anonymous sessions)
- Monetization: Polar.sh for Pro tier gating
- AI: Anthropic SDK (Claude Haiku)
Architecture Decisions
1. The Skeptical Partner AI
The most critical part of CaseBlitz is the AI feedback. I didn't want the AI to be a friendly chatbot; it needed to be a "demanding, highly analytical Senior Partner."
I implemented this via a Next.js streaming API route using Anthropic's claude-haiku-4-5-20251001 model:
// app/api/ai-feedback/route.ts
const SYSTEM_PROMPT = `You are a demanding, highly analytical Senior Partner at a Tier 1 consulting firm. A candidate has just presented their framework.
Your job is to critique their logic. You are precise and direct. You never praise — no "great start" or "good thinking." You also never insult. You respect the candidate's time by being specific about what's missing and what would fix it.
Evaluation rules:
1. Identify the most critical missing branch in their logic.
2. Call out one piece of irrelevant data they asked for (if any).
3. Grade on a scale of 1–5. A 3 is competent. A 5 is exceptional and rare.
4. State exactly what would make this a 5, in one sentence.`;By streaming the response directly to the client, the UI feels instantly responsive. The strict prompt formatting (Score: [1-5]/5) allows me to parse out the numerical score and save it to the userScores table in Supabase via Drizzle.
2. Guarding the AI (Rate Limits & Pro Tier)
LLM tokens aren't free, and the AI feedback is the core value proposition of the Pro tier. In the API route, I implemented two layers of protection:
- Pro Gating: Checking
isPro(session.user.id)before hitting Anthropic. - Daily Limits: Tracking
aiCallsTodayin theuserProfiletable to cap requests at 5 per day.
3. Progressive Reveal & The Content Factory
Case prep relies on hidden information. The Case Player component is heavily inspired by real interview flows: the candidate gets a prompt, asks questions, builds a framework, and then the interviewer reveals data (like a chart).
To fuel this, I built an offline "Content Factory" — scripts that use JSONB schemas to generate, validate, and seed hundreds of structured case scenarios directly into Supabase.
What I Learned
1. Prompt Constraints Are Everything LLMs naturally want to be helpful and verbose. Forcing Claude to be blunt, skip the pleasantries, and stick to a strict 4-point grading rubric required aggressive system prompting ("You never praise"). It completely changed the feel of the app from a generic "AI tutor" to a realistic interview simulator.
2. Polar.sh makes SaaS easy Handling subscriptions, trial periods, and webhook events is usually painful. Integrating Polar.sh allowed me to quickly lock the "Skeptical Partner" AI behind a paywall without writing massive amounts of billing logic.
Try It
If you're prepping for a consulting interview and want to test your frameworks against a relentless AI partner, check out caseblitz.app.