Inspiration

The chaos of university office hours before a midterm. TAs spend hours answering the exact same "null pointer" question for twenty different students, while the queue stretches out the door. Students don't want to wait an hour in a hallway, and TAs don't want to repeat themselves. We realized that a linear queue is the wrong data structure for office hours. We needed a way to group concepts, not just people.

What it does

TA-da! is an AI-orchestrated smart queue for university teaching assistants. Instead of a traditional first-in-first-out line, our application analyzes incoming student questions in real-time and automatically groups conceptual duplicates.

On the TA Dashboard, instructors see "clusters" of confusions rather than individual tickets. A TA can select a cluster of five similar questions, type out an explanation for the core concept once, and instantly resolve all five students' tickets simultaneously. It turns two hours of redundant work into twenty minutes of high-impact teaching.

How we built it

We utilized a "Contract-First" development strategy to move quickly without merge conflicts.

Frontend: Built with React and Vite, featuring a live-polling dashboard that updates student and TA views seamlessly.

Backend: Node.js and Express server handling API routing and secure database mutations.

AI Orchestration: Claude SDK for handling clustering.

Database: Supabase (PostgreSQL) holding our session, question, and cluster schemas.

Challenges we ran into

AI Hallucinations & Database Corruption: Early on, the AI would occasionally hallucinate fake UUIDs when grouping questions, which would crash our database queries. We solved this by implementing strict Zod schema validation to sanitize and strip invalid IDs from the AI's output before it ever touched our database.

Live-Update Rate Limiting: Our live-polling initially triggered our own DDoS protection. We had to implement dual-layer rate limiting: a strict limiter to prevent POST spam, and a loosened limiter to allow the GET polling to function smoothly.

Accomplishments that we're proud of

  • Bulletproof Security for the "Red Team": Anticipating the "Break It" phase of the hackathon, we implemented Zero-Trust security. We enabled Row Level Security (RLS) on all Supabase tables with zero public access policies. All database interactions are securely proxied through our Express backend using a service role key, rendering frontend key-extraction exploits useless.
  • Execution: Going from a blank terminal to a fully deployed, AI-powered multi-user application in under 36 hours.

What we learned

  • Defensive BaaS: Backend-as-a-Service tools like Supabase are incredibly fast to spin up, but their default configurations leave public endpoints exposed unless explicitly locked down with RLS.
  • Division of Labor: Defining our JSON contracts and database schemas in the first two hours allowed our team to split frontend and AI-backend work perfectly in parallel.

What's next for TA-da!

LMS Integration: Connecting to the Canvas API so students can authenticate with their university credentials and TAs can auto-import their rosters. (Too bad Canvas has been hacked!)

Built With

Share this project:

Updates