Inspiration

Students in Uzbekistan prepare for exams across fragmented websites, Telegram channels, PDFs, and mobile apps. Most platforms show every learner the same questions, repeat already-mastered material, and provide little guidance on what to study next.

We built UzExam to create one intelligent learning environment for Uzbekistan—an adaptive exam operating system that understands each learner’s progress and turns every mistake into a personalized next step.

What it does

UzExam brings university entrance preparation, school subjects, university courses, driving theory, IELTS, and SAT practice into one platform.

Its core capabilities include:

  • Adaptive question selection based on each learner’s history and topic needs
  • A 90-day freshness window that avoids unnecessary question repetition
  • SM-2 spaced repetition that brings mistakes back at the right time
  • Personalized onboarding and a focus-first learning feed
  • Timed mock exams, instant results, streaks, and detailed analytics
  • Fair, difficulty-weighted leaderboards based primarily on first attempts
  • Passwordless authentication through a secure six-digit Telegram code
  • Telegram Mini App and bot integration for missions and notifications
  • Teacher and organization workspaces for groups, assignments, live tests, and student analytics
  • Support for nine question formats, including formulas, images, matching, ordering, and numerical answers

The live platform currently contains more than 38,000 published questions across 165 subjects and over 50 product modules.

How we built it

UzExam uses Django 4.2 for the backend and server-rendered interface, with HTMX, Alpine.js, and Tailwind CSS providing fast interactions without the complexity of a large client-side application.

PostgreSQL stores the learning graph, questions, attempts, rankings, and content taxonomy. Redis powers sessions, caching, rate limits, and short-lived login codes. Our Telegram bot is built with aiogram and communicates with Django through authenticated HMAC requests.

The adaptive engine scores candidate questions using freshness, difficulty fit, previous mistakes, and topic needs:

[ selection_score = freshness + difficulty_fit + mistake_reinforcement + topic_need - seen_penalty ]

After every submitted session, UzExam grades the answers, updates the learner’s exposure history, schedules revisions, recalculates skill signals, and refreshes relevant leaderboards.

During OpenAI Build Week, we used OpenAI Codex as an engineering collaborator to navigate the platform’s large architecture, reason about personalization flows, review implementation decisions, and accelerate product documentation and iteration.

Challenges we ran into

The hardest challenge was personalization at scale. UzExam spans many exam directions and subjects, so a new learner could easily face choice overload. We designed a short onboarding flow that identifies the learner’s goal and reorganizes the experience around that focus without hiding the rest of the platform.

Preventing repetition was another major challenge. Random question selection is not enough: the system must distinguish between content that should remain fresh and mistakes that must intentionally return. We combined a 90-day exposure window with spaced repetition and controlled fallback rules.

We also had to make rankings resistant to repeated attempts and easy-question farming. Our scoring system therefore gives the strongest weight to first attempts, consistency, accuracy, and difficulty.

Finally, Telegram-based authentication required careful protection against replay attacks, brute-force attempts, expired codes, and token reuse.

Accomplishments that we're proud of

  • Built a production platform serving more than 10,000 registered learners
  • Published more than 38,000 structured questions across 165 subjects
  • Shipped adaptive testing and spaced repetition as core infrastructure
  • Built a personalized onboarding and focus-first home experience
  • Achieved a 75% median focus-category test share among the first onboarded users
  • Created one system that works across the web, Telegram bot, and Telegram Mini App
  • Developed a scalable architecture covering learners, teachers, organizations, payments, analytics, and content operations

What we learned

We learned that personalization does not always require a black-box recommendation model. Reliable learning signals—goals, attempts, accuracy, recency, difficulty, and topic coverage—can already create a highly relevant experience.

We also learned that educational engagement is not about sending more notifications. Timing, relevance, and respecting learner fatigue matter more than frequency.

Most importantly, building for Uzbekistan requires local-first product decisions: Telegram-native access, Uzbek-language content, mobile-friendly performance, local exam formats, and affordable access.

What's next for UzExam

Next, we plan to introduce an OpenAI-powered AI Mentor that can explain mistakes in Uzbek, generate personalized study plans, and provide grounded guidance based on the learner’s actual performance.

We also plan to expand semantic duplicate detection, improve adaptive difficulty estimation, add deeper teacher analytics, and make UzExam the shared learning infrastructure for schools, universities, and independent educators across Uzbekistan.

Built With

Share this project:

Updates

posted an update

UzExam is now truly multi-exam: IELTS, SAT & more are live

We started with a single mission — Uzbekistan's university entrance exam (DTM). This sprint we turned UzExam into a real Universal Exam Operating System: one adaptive engine, many exams.

What we just shipped

** IELTS — the full mock experience**

  • Reading & Listening with a live timer and auto-submit
  • Writing scored by AI across all four criteria (Task Achievement, Coherence & Cohesion, Lexical Resource, Grammar)
  • Speaking bank with real Part 1–3 prompts
  • End-to-end band-score calculation

** Digital SAT — Bluebook-style**

  • Full-length adaptive SAT mock modeled on the official Bluebook flow
  • Topic-by-topic SAT drills for targeted practice

** Six tracks, one platform** Abituriyent · University · School · Driving Test · IELTS · SAT — all running on the same core.

Under the hood

  • 77,000+ questions, with a uniqueness engine so you never see the same question twice within 90 days
  • Mistake-based spaced repetition (SM-2) that turns every wrong answer into a personal review deck
  • AI Mentor + AI essay checker, powered by Claude
  • Telegram-native login — a 6-digit code, zero passwords
  • Full MathJax formula & image rendering for STEM questions

Next up

More IELTS content, Russian-language exam variants, and video lessons.

Try it live at uzexam.uz

Log in or sign up for Devpost to join the conversation.