Inspiration

Most technical interview prep tools reward memorizing solutions. You grind 200 problems, learn the pattern for Two Sum, and then blank when a variation shows up because you never actually understood why the approach works. We wanted to build something that trains the skill interviewers actually care about: how you think, not whether you can copy a pattern you've seen before.

What it does

AlgoLite is an AI-powered interview prep platform that coaches you through LeetCode-style problems using plain English — no code required. Instead of asking you to implement a solution, it walks you through four questions that mirror a real interview conversation:

  1. Pattern Recognition — What algorithmic pattern does this problem remind you of?
  2. Approach Description — Explain how you'd solve it in plain English (and get challenged on logical gaps and contradictions).
  3. Complexity Analysis — What's the time and space complexity of your approach in Big O?
  4. Optimization & Edge Cases — How would you improve it, and what edge cases should you consider?

For each answer, an AI coach gives structured feedback: a ✅/⚠️/❌ rating, direct assessment, and a Socratic follow-up hint if you're off-track — without just handing you the answer.

How we built it

  • Frontend: React (JavaScript/CSS) served via AWS Amplify
  • Backend: Python Lambda functions deployed with AWS SAM (Serverless Application Model)
  • AI: AWS Bedrock with openai.gpt-oss-120b for all four feedback endpoints, each with a specialized system prompt tailored to evaluate a different dimension of problem-solving
  • Database: DynamoDB storing problems, correct patterns, approaches, complexity, and edge cases
  • Data pipeline: A scheduled Lambda (runs every 24 hours) that web-scrapes and populates the questions table automatically
  • API: AWS API Gateway routing POST requests to four separate Lambda functions: verify_pattern, verify_approach, verify_complexity, and verify_optimization

Challenges we ran into

Prompt engineering for the approach question was the hardest part. Getting the model to genuinely challenge a user's explanation — not just validate it — required careful instruction. A vague answer like "I'd use a hash map to check things" could sound reasonable but contain no real logic. Teaching the model to distinguish confident-sounding hand-waving from a real algorithmic plan took significant iteration.

We also had to think carefully about how to evaluate complexity relative to what the user described, not the optimal solution. If their approach was O(n²), grading them against an O(n) answer would be unfair — the model needed to evaluate their own stated logic.

Accomplishments that we're proud of

Building a backend architecture where each evaluation concern is cleanly separated into its own Lambda function felt like the right call — it keeps prompts focused, makes individual functions testable in isolation, and means we can tune one question's behavior without touching the others. We're also proud that the feedback genuinely feels like a senior engineer giving a mock interview rather than a generic AI response.

What we learned

The gap between "can write the code" and "can explain the thinking" is enormous — and most prep tools only train the former. We also learned that system prompt design is engineering: small wording changes in how you instruct the model to evaluate an answer produce very different quality feedback. Tone, strictness, and what to do in ambiguous cases all need to be explicit.

What's next for AlgoLite

  • Conversation mode: let users respond to the AI's challenges and refine their explanation across multiple turns, more like a real interview
  • Progress tracking: score history per problem and per question type so users can see where their thinking consistently breaks down
  • Difficulty tiers: surface problems by pattern category and difficulty, with guided onboarding for users who are new to pattern recognition
  • Hint system: optional structured hints for users who are completely stuck before they attempt an answer

Built With

Share this project:

Updates

Submission history