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:
- 🎯 Choose your role → Backend Developer
- ⚡ Choose your stack → Node.js
- 📊 Choose your level → Middle
- 🤖 Bot generates a contextual question
- ✍️ You answer (text or voice!)
- 📝 AI scores your answer (0-10) with feedback
- 🔄 Repeat for 5 questions
- 📋 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
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)