🪿 TechReady — AI Mock Interview Coach
Helping women and underrepresented engineers break into tech — one interview at a time.
🔗 Live Demo: techready-sigma.vercel.app
📋 4-Line Problem Frame
| User | Women and underrepresented engineers preparing for technical job interviews |
| Problem | Mock interview practice is expensive, inaccessible, or intimidating — leaving candidates underprepared |
| Constraints | Must work without a login, be free to use, and provide real-time feedback in plain language |
| Success Test | A user can complete a full mock interview session, receive structured feedback, and feel more confident about their next real interview |
💡 What It Does
TechReady is an AI-powered mock interview coach that:
- Asks real technical interview questions across 9 topics (Python, DSA, SQL, ML, System Design, Behavioral, APIs, OOP, JavaScript)
- Gives structured feedback after every answer: what you got right ✅, what to improve 🔧, ideal answer 💡, and a score ⭐
- Provides hints when you're stuck — without giving away the answer
- Lets you skip questions and move on
- Tracks conversation context to ask progressively relevant follow-ups
- Runs entirely in the browser — no login required
Powered by Goose (Block) + OpenRouter
🛠️ Tech Stack
| Layer | Technology |
|---|---|
| Framework | Next.js 14+ (App Router) |
| Language | TypeScript |
| Frontend | React, Vanilla CSS (Glassmorphism dark UI) |
| Backend | Next.js Serverless API Routes |
| AI Development | Goose (Block) — coding, debugging, prompt engineering |
| LLM API | OpenRouter → anthropic/claude-3-5-sonnet-20241022 (configurable) |
| Hosting | Vercel |
🚀 Quickstart
# 1. Clone the repo
git clone https://github.com/ritwikareddykancharla/techready.git
cd techready
# 2. Install dependencies
npm install
# 3. Set your API key
cp .env.example .env
# Edit .env and paste your OpenRouter API key
# 4. Run the development server
npm run dev
Then open http://localhost:3000 in your browser. That's it!
⚙️ Configuration
Edit .env:
OPENROUTER_API_KEY=your_key_here
To change the LLM model, edit src/app/api/utils.ts:
export const MODEL = "anthropic/claude-3-5-sonnet-20241022"; // Default — strong reasoning, great feedback quality
// export const MODEL = "anthropic/claude-sonnet-4-6"; // Upgrade — latest Claude, even better
// export const MODEL = "google/gemini-2.0-flash-exp:free"; // FREE — 1M context, fast
// export const MODEL = "meta-llama/llama-3.3-70b-instruct:free"; // FREE — GPT-4 level performance
// export const MODEL = "deepseek/deepseek-v3-2"; // Cheap — frontier quality at low cost
💡 Tip: Models ending in
:freeon OpenRouter require no credits — great for local development and testing.
🏗️ Architecture
Browser (React / Next.js Frontend)
│
│ fetch('/api/start')
│ fetch('/api/respond')
│ fetch('/api/hint')
│ fetch('/api/skip')
▼
Next.js API Routes (src/app/api/.../route.ts)
│
│ Maintains conversation history via client-side state
│ Injects system prompt (TechReady persona) from utils.ts
▼
OpenRouter API
│
▼
LLM (Claude 3.5 Sonnet / Claude Sonnet 4.6 / Gemini 2.0 Flash / etc.)
No database. No auth. Stateless backend — conversation history lives in React component state and is sent with each request.
🤖 Goose Integration (AI/ML Track)
Goose by Block was our primary AI development partner throughout the entire build of TechReady — not just a feature, but core to how we shipped.
- Code generation — Scaffolded Next.js API routes, TypeScript types, and React component logic
- Debugging — Traced and fixed issues with conversation state, response parsing, and API error handling in real time
- Prompt engineering — Iterated on system prompts to shape TechReady's interview coaching persona — rubric-based feedback, follow-up questions, topic-aware behavior
- Architecture decisions — Helped design the stateless session approach, 9-track structure, and hint/skip flow
TechReady wouldn't have shipped in this timeframe without Goose. It compressed days of iteration into hours.
🧠 Decision Log
| Decision | Why | Tradeoff |
|---|---|---|
| Next.js over Flask | Full-stack framework — unified frontend + backend, seamless Vercel deploy | Required TypeScript migration under tight hackathon constraints |
| Serverless API Routes | No always-on server needed, scales automatically | History stored client-side, not server memory |
| Vanilla CSS over Tailwind | Glassmorphism design easier to control in standard CSS | Slightly harder to manage spacing utilities |
| OpenRouter over direct Anthropic | One key, 500+ model options, cost control and flexibility | Extra API hop |
| Claude 3.5 Sonnet as default | Excellent instruction-following and structured feedback quality | Paid model — switch to a :free model for zero-cost usage |
| React component state | Fast and robust for single-page chat with no database | History lost on hard page refresh |
| Goose for development | Accelerated coding, debugging, and prompt iteration | — |
⚠️ Known Issues & Next Steps
Known Issues:
- Session history resets on page refresh (no persistence yet)
- No rate limiting on the backend (can burn API credits fast)
- Mobile keyboard may cover input on some phones
Next Steps:
- [ ] Add session saving (localStorage or Supabase)
- [ ] Score tracking across multiple questions
- [ ] Voice input for more realistic interview practice
- [ ] Spaced repetition — resurface questions you got wrong
- [ ] Company-specific question packs (FAANG, startups, etc.)
🎯 SDG Alignment
SDG 4 — Quality Education: Free, accessible technical interview prep for underrepresented engineers who can't afford coaching.
SDG 5 — Gender Equality: Designed to build confidence and technical fluency in women entering the tech workforce.
SDG 10 — Reduced Inequalities: Levels the playing field between candidates with and without access to mentors or expensive bootcamps.
📜 License
MIT — free to use, modify, and share.
🙏 Credits
- Goose by Block — open-source agentic AI framework
- Next.js — React web framework
- OpenRouter — unified LLM API (500+ models, one key)
- Fonts: Syne, DM Mono, DM Sans (Google Fonts)
Built With
- claude
- goose
- next.js
- openrouter
- sonnet
Log in or sign up for Devpost to join the conversation.