Case study

TN SuccessMate

டிஎன் சக்சஸ்மேட்

Turn textbooks and notes into traceable knowledge, then teach TNPSC Group 4 as a daily live class — not a chat window.

Real codebases with production deploy docs; scraper hostname live; Group 4 only
  • Python
  • FastAPI
  • PostgreSQL
  • Redis
  • Celery
  • Next.js admin
  • Flutter
  • Docker
  • AWS
  • Supabase
  • R2
UploadOCRReviewJSONCoach

Problem

PDFs, scans, and handwritten notes are not searchable. Exam coaching that “guesses” from an LLM is unsafe.

What exists

  • Upload PDF / TXT / images / handwriting
  • Per-page classify, OCR, layout, hierarchy
  • Tamil + English (mixed pages)
  • Confidence + needs_review — uncertain text is never invented
  • Admin review UI and approved JSON export
  • Search over approved items
  • Production path documented: Docker on AWS EC2 (ap-south-1), nginx + web + api + worker + redis; Supabase Postgres; Cloudflare R2
  • Live DNS: scraper.happibuys.com / api.scraper.happibuys.com
  • TN SuccessMate (டிஎன் சக்சஸ்மேட்) is not a chatbot: daily / live class teaching, topic doubts, MCQs, daily mock, reports, next-day recall
  • Grounded on approved ContentItems; empty hits → refuse
  • Flutter mobile coach: GetX + GoRouter + Dio + ScreenUtil
  • Home catalog: Exam → Syllabus part → Unit → Topics; Group 4 available; Group 1 / Group 2 marked Coming soon
  • Coach BFF on FastAPI; LLM via Ollama / OpenAI-compatible (Tamil-LLaMA path documented)

Architecture

Animated diagram of the system from documented facts.

UploadOCRReviewJSONCoach

Stack

  • Python
  • FastAPI
  • PostgreSQL
  • Redis
  • Celery
  • Next.js admin
  • Flutter
  • Docker
  • AWS
  • Supabase
  • R2

Status

Real codebases with production deploy docs; scraper hostname live; Group 4 only

Extraction + coaching are real codebases with production deploy docs and a live HappiBuys hostname for the scraper. Only Group 4 is fully in catalog — Group 1 and Group 2 are marked Coming soon.