DEV Community

Cover image for I Built an AI-Powered Tech Interview Simulator with Claude — Here's What I Learned
Rustam
Rustam

Posted on • Edited on

I Built an AI-Powered Tech Interview Simulator with Claude — Here's What I Learned

The Problem

Everyone knows the drill: you're preparing for a tech interview, reading lists of "Top 50 Questions," but you have no idea how your actual answers would be scored. You can memorize theory, but you can't practice the real thing — unless you have a friend who's willing to grill you for an hour.

What I Built

AI Tech Interviewer — a Telegram bot that runs realistic technical interviews powered by Claude AI (Anthropic's Sonnet).

You pick a role (Backend, Frontend, QA, DevOps), choose your tech stack (Node.js, Python, React, etc.), select a difficulty level (Junior/Middle/Senior), and the bot fires 5 questions at you — just like a real interviewer would.

Each answer is scored 0-10 with detailed feedback explaining what you got right and what you missed.

Here's what a session looks like:

  1. 🎯 Choose your role → Backend Developer
  2. ⚡ Choose your stack → Node.js
  3. 📊 Choose your level → Middle
  4. 🤖 Bot generates a contextual question
  5. ✍️ You answer (text or voice!)
  6. 📝 AI scores your answer (0-10) with feedback
  7. 🔄 Repeat for 5 questions
  8. 📋 Get a full report with scores and ideal answers

The Tech Stack

Component Technology
Bot framework grammY
Runtime Node.js 22
Database SQLite (better-sqlite3, WAL mode)
AI Anthropic Claude Sonnet
Speech-to-text faster-whisper (small model, int8)
Audio processing ffmpeg
Payments Telegram Stars
Landing Nuxt 3 + Tailwind → Cloudflare Pages

Key Features That Made It Work

🎤 Voice Input

This was a game-changer. Many developers think better when they talk, especially for system design questions. The pipeline:

Telegram .ogg → ffmpeg (noise reduction) → WAV 16kHz → faster-whisper → text
Enter fullscreen mode Exit fullscreen mode

The whisper server runs persistently — no cold start. The AI scoring is lenient on garbled technical terms from speach to test recognition, because "kubernetes" might come out as "kubernets" in voice.

⚡ Lazy Question Generation

Here's a UX trick: only Q1 is generated when the session starts (~3-5 seconds). While you're answering Q1, the bot preloads Q2 in the background. By the time you submit, the next question is ready instantly.

🧠 Adaptive Difficulty

The bot adjusts on the fly:

  • Score > 8 on two consecutive questions → questions get harder
  • Score < 4 on two consecutive questions → questions get easier

This keeps the interview challenging but not demoralizing.

📊 The Numbers

  • 650 sessions completed
  • Average score: 3.8/10 — turns out interviews are hard 😅
  • 72% Junior sessions — most users are preparing for their first interviews

💡 Key Insights

1. People quit when questions get too hard.
Most cancellations happened on questions 2-3 when difficulty ramped up.

Takeaway: adaptive difficulty matters more than I thought.

2. Voice answers are longer and more detailed.
Users who answered by voice gave ~3x more content than text answers. But their scores weren't proportionally higher — they rambled more.

Takeaway: conciseness is a skill the bot helps practice.

3. Junior-level questions are the most popular.
72% of all sessions were Junior level. People want to nail the basics before going deeper.

Takeaway: the market is entry-level developers, not seniors.

4. Multiple choice questions get higher scores.
Questions 2 and 4 are multiple choice (A/B/C/D). Average score on those: ~6/10. Open questions average: ~2.5/10.

Takeaway: free-form answers are where people struggle most.

Architecture Decisions I'd Make Again

SQLite over PostgreSQL

For a single-server bot, SQLite in WAL mode is perfect. Zero configuration, instant backups (copy one file), and it handles concurrent reads from the admin panel without issues.

grammY over Telegraf

grammY has better TypeScript support, middleware composition, and the conversation plugin is excellent for multi-step flows. The callback query handling is clean and predictable.

Claude over Open AI GPT

I tested both. Claude Sonnet gives more nuanced technical feedback. It doesn't just say "correct" or "incorrect" — it explains why and suggests what a stronger answer would include. The evaluation feels more like a real senior developer reviewing your answer.

Persistent Whisper Server over On-Demand

Cold-starting whisper for each voice message added 5-8 seconds of latency. Running it as a persistent HTTP server reduced voice processing to ~2 seconds. The small model with int8 quantization uses ~362MB RAM — acceptable for a VPS.

Monetization (Yes, on Telegram)

  • 5 free interviews to try
  • Pro subscription: 250 Telegram Stars/month (~€5)
  • Payments via Telegram Stars — no credit cards, no business registration needed
  • Alternative: Buy Me a Coffee

What's Next

  • 📝 More blog content (techinterviewbot.dev/blog)
  • 🎁 Referral system (invite friends → get free interviews)
  • 📱 More language support
  • 🤝 Partnerships with IT bootcamps

Try It Yourself

🤖 Bot: @TechInterviewITBot
🌐 Landing: techinterviewbot.dev
📝 Blog: techinterviewbot.dev/blog

The bot is free to try (5 interviews). Pick your stack, answer the questions, and see how you'd actually score in a real interview.

I'd love feedback — especially from people who are actively interviewing. What questions should the bot ask? What's missing?

Top comments (0)