Inspiration
Standardized tests like the SAT can make or break college opportunities — but quality test prep is expensive and out of reach for many students in underserved schools. We wanted to build something that gives every student access to a tutor that actually adapts to them, not a one-size-fits-all prep book. With powerful open AI models now accessible, we saw a chance to put a real adaptive tutor in every student's pocket, for free.
What it does
AceSAT is an AI-powered SAT tutor that:
- Diagnoses a student's strengths and weaknesses through a 3-question onboarding quiz
- Creates a personalized 4-step study plan targeting weak categories using NVIDIA NIM (nemotron-3-super-120b-a12b)
- Adapts question difficulty in real time based on right/wrong answers
- Tracks progress locally — scores, weak areas, and attempt history — using a Room database
- Navigates the curriculum automatically, always steering the student toward their next weak spot
It's not just a quiz app — it actively steers the student's learning path like a real tutor would.
How we built it
- Android app: Kotlin + Jetpack Compose for the UI, Room for local persistence, Retrofit/OkHttp for networking
- Backend security proxy: Node.js + Express, so API keys never touch the client — it forwards requests securely to NVIDIA NIM and includes an offline fallback mode with mock questions when no key is present
- Web simulator: A single-page HTML/CSS/JS app that mirrors the Compose client, so judges and users can try the full experience instantly in a browser without installing an APK
- Design system: A custom Neobrutalist theme — cream backgrounds, thick black borders, flat offset shadows, and bold Space Grotesk typography — to make the app feel distinct, playful, and confident
- CI/CD: GitHub Actions pipeline that builds and releases the APK automatically on every push to main
Challenges we ran into
- Balancing a fully custom Neobrutalist UI (thick borders, flat shadows, press effects) with Jetpack Compose's default Material theming took real trial and error to get it feeling native and responsive.
- Designing the adaptive logic so difficulty scaling felt genuinely responsive rather than arbitrary — tuning how quickly the agent should escalate or ease off based on performance.
- Making the app usable without an API key was important for accessibility and demo reliability, so we built a full offline fallback engine into the backend proxy.
- Keeping API keys secure while still making local testing and web simulation frictionless for judges.
Accomplishments that we're proud of
- Built a genuinely adaptive AI agent — not just a static quiz — that diagnoses, plans, and adjusts in real time.
- Shipped three fully working pieces (Android app, backend proxy, and web simulator) that all interoperate.
- Created a distinctive, cohesive Neobrutalist design system from scratch rather than relying on default UI kits.
- Set up automated CI/CD so the APK builds and releases without manual steps.
- Made the whole experience accessible offline, so the app works even without an API key.
What we learned
- How to design and prompt an LLM (NVIDIA NIM / nemotron) to reliably generate structured, actionable study plans rather than generic advice.
- The importance of building an offline-first fallback for demo reliability and accessibility.
- How to architect a secure proxy layer so API keys never touch client devices.
- Practical lessons in Jetpack Compose theming to implement a fully custom, non-Material design language.
What's next for AceSAT
- Expand the diagnostic quiz beyond 3 questions for finer-grained weak-area detection.
- Add spaced repetition so previously mastered topics are periodically reinforced.
- Introduce peer/classroom features so teachers can track student progress across a whole class.
- Support additional standardized tests (ACT, PSAT) using the same adaptive agent architecture.
- Move from local Room-only storage to optional cloud sync so students can pick up progress across devices.
Built With
- android
- android-studio
- kotlin

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