🪿 TechReady — AI Mock Interview Coach

Helping women and underrepresented engineers break into tech — one interview at a time.

License: MIT Built with Goose Deployed on Vercel

🔗 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 :free on 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
Share this project:

Updates