Case study · 2025
AttemptIQ
UPSC diagnostic analytics. Turns mock test results into what to fix next: decaying topics, trap patterns, real readiness.
- Role
- Solo founder and engineer
- Scope
- Built and run solo, with paying users
- Platform
- Web
- paying users, zero paid marketing
- 15+
- organic pageviews
- 12,000+
- p95 & p99 API latency
- < 150 ms
- questions solved
- 4,500+
01 — Overview
AttemptIQ is a diagnostic analytics platform for UPSC aspirants. It reads mock test attempts question by question and shows what a score hides.
02 — The problem
Aspirants take mock test after mock test and get back one number. The score doesn't say which topics are slipping, which trap questions keep catching them, or whether they are actually ready.
03 — Engineering decisions
- 01
A schema built for analytics
23 tables and 5 materialized views track question-level performance, topic mastery over time and trap susceptibility across sessions, so the expensive questions are answered ahead of time, not per request.
- 02
LLM analysis off the request path
Insight generation runs in a BullMQ pipeline, decoupled from the user's request, so a slow model never blocks a page and reports are built in the background.
- 03
RAG over a student's own history
Past performance is embedded with pgvector, and the relevant patterns are retrieved to ground each insight in what this student actually did, not generic advice.
- 04
Signals beyond the score
Detects session fatigue, susceptibility to trap questions and topic confidence decaying over time.
- 05
Multi-tenant from day one
JWT auth, rate-limited endpoints and per-user data isolation.
04 — Stack
- App
- Next.js, TypeScript
- Data
- PostgreSQL, Redis, BullMQ, pgvector
- AI
- Gemini, RAG
- Infra
- Hetzner, Cloudflare, Sentry, PostHog