Inspiration
I was inspired by something many students but also for my experience: sometimes we have a question, but we stay silent because we are afraid of being wrong, being judged, or feeling embarrassed about not understanding.
A quiet classroom can look like a classroom that understood, even when several students are actually confused. I created ClassSignal to make asking for help feel safe and to help teachers notice that confusion before the class moves on.
What it does
ClassSignal allows a teacher to create a course, open a live class, and share a short code or QR.
Students can participate from their phones without creating an account. They anonymously select I understand, I have a question, or I’m lost, and they may also describe what is confusing them.
The teacher receives these signals in real time, compares multiple pulses during the class, moderates written questions, and shares selected doubts on an anonymous student wall.
GPT‑5.6 transforms each pulse into a structured confusion map, identifies the concepts causing difficulty, and proposes a short teaching intervention or a publication draft. The teacher always reviews the result before using or publishing it.
How we built it
I built the mobile-first interface with React, TypeScript, Vite, Tailwind CSS, React Router, and Zod.
Supabase provides authentication, PostgreSQL, Realtime updates, Row Level Security, and Edge Functions. Anonymous submissions are processed through a protected server-side function using Cloudflare Turnstile, rate limits, and per-pulse pseudonymous identifiers.
The AI features use the OpenAI Responses API with GPT‑5.6 and strict structured outputs. Student names, emails, account information, and anonymous identifiers are never sent to the model. AI generation only happens after an explicit teacher action.
Challenges we ran into
The greatest challenge was protecting genuine anonymity without turning the public response endpoint into an abuse vector. Student accounts and course enrollment therefore remain completely separate from anonymous pulse responses.
Another challenge was keeping the classroom state consistent while teachers opened, closed, or reactivated pulses. Every analysis must use responses from the correct pulse and must become outdated when its source data changes.
I also had to treat student questions as untrusted content, prevent duplicate paid AI requests, control API costs, and ensure that nothing generated by AI was published automatically.
Accomplishments that we're proud of
I completed the full classroom feedback loop: QR participation, anonymous responses, live results, repeated pulses, question moderation, a shared student wall, AI confusion maps, targeted micro-interventions, and aggregate follow-up comparisons.
For the Cálculo Diferencial demonstration, ClassSignal includes 6 classes, 18 historical pulses, 536 anonymous responses, and 132 written doubts. This makes it possible to demonstrate how confusion changes across an entire course instead of showing only one isolated poll.
I am especially proud that ClassSignal provides useful information without connecting a student's identity to their classroom signal.
What we learned
I learned that a quiet classroom is not necessarily a classroom that understands.
Percentages reveal how many students are struggling, but anonymous written doubts reveal why. I also learned that AI is most useful when it is grounded in real classroom evidence and gives the teacher a practical next step instead of replacing the teacher's judgment.
Privacy, moderation, review, and clear product boundaries are just as important as the AI model itself.
What's next for ClassSignal
The next step is to test ClassSignal in real classrooms and learn how it changes teaching decisions.
I want to improve accessibility and multilingual support, add learning objectives, expand evaluations across different subjects, and strengthen the intervention loop so teachers can measure whether a focused explanation improved the following pulse.
The goal remains simple: make asking for help feel safe and make confusion visible before it becomes failure. I used Codex to help draft, translate, and structure this project description from my original ideas and development notes. I reviewed and edited the final text to ensure it accurately reflects what I built.
Built With
- cloudflare-turnstile
- gpt-5.6
- openai-api
- postgresql
- react
- supabase
- supabase-edge-functions
- supabase-realtime
- tailwind-css
- typescript
- vite
- zod
Log in or sign up for Devpost to join the conversation.