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

  1. 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.

  2. 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.

  3. 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.

  4. 04

    Signals beyond the score

    Detects session fatigue, susceptibility to trap questions and topic confidence decaying over time.

  5. 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