Inspiration
I was tutoring a kid who, it turned out, had ADHD, but I didn't know that going in. I had no training, no diagnosis, and no idea what to do as he got more dysregulated by the minute. What if I could just type what I was seeing, not a diagnosis, just "he won't sit still," and get something real back? From there it widened to any teacher or parent facing an unidentified special need. One rule shaped everything after: the tool should never diagnose.
What it does
- Action-first responses for a real in-the-moment situation with a child, with steps for the next five minutes, not background reading
- Every response grounded in one named, evidence-based technique: co-regulation, the low-arousal approach, antecedent modification, first-then structuring, functional communication, proximity/sensory regulation
- Each technique links to one verified, hand-picked source (Studio 3, Child Mind Institute, AFIRM/UNC, OCALI, ASAT, Understood.org), never an AI-generated link
- Vague complaints like "he's rude" get translated into a likely mechanism (demand avoidance) instead of taken at face value
- Zero-detail input like "he's not behaving today" triggers a clarifying question instead of a confident guess, enforced in code, not just prompted
- Crisis and evacuation scenarios are force-classified as safety situations through a deterministic keyword override, not left to the model alone
- Persistent cross-incident memory connects a classroom meltdown to a mealtime refusal days later
- A shareable code lets a teacher and parent log to the same child's record, each incident tagged by who logged it
- A printable summary is a real synthesized report: triggers grouped by category, a named dominant pattern with real numbers, distinct non-repeated recommendations, built from computed logic with zero hallucination risk
- Voice input via Deepgram
How we built it
Express backend on Railway, calling Claude (claude-sonnet-4-6) with a structured system prompt. Static frontend on Netlify. Redis Cloud for persistent memory. Built iteratively with Claude Code, refining the prompt through four real revisions as testing surfaced gaps.
Challenges we ran into
- A fire-alarm scenario that was correctly flagged as a crisis early on silently stopped being flagged after later, unrelated prompt edits stacked up. Fixed with a deterministic code override, not a better-worded rule.
- Around the same time, responses across different situations started converging on the same handful of steps. Expanded the technique set and added explicit anti-default instructions.
- Memory initially lived in a plain in-memory object and vanished on every server restart. Caught this by running an adversarial mock-judge critique on my own project. Swapped to Redis and proved it by actually restarting the live server and confirming the data survived.
- The model occasionally wrapped its JSON output in markdown fences or stray text, breaking a naive parser. Added a fallback that strips fences and extracts the outer JSON block.
- A multi-child classroom roster stalled twice during AI-assisted development. Cut it deliberately to protect the working core, a real scope call under time pressure.
Accomplishments that we're proud of
Persistent memory proven against a real restart, not just claimed. A system that knows the difference between not having enough information and having enough to act on. A printable report built entirely from computed logic instead of free-text generation, so it can't hallucinate. Running my own project through an adversarial judge critique before submitting and then actually fixing what it found.
What we learned
A system prompt that passes one test can still regress as more rules get layered on top. The highest-stakes paths need deterministic logic underneath them, not just good wording. And disclosing real limitations openly makes a project more credible, not less.
What's next for FIRST RESPONSE
Multi-child classroom support, severity trends over time, real authentication on the shared record (currently disclosed as open by design), and finishing the conversational follow-up mode with the same grounding rigor as the core flow.
Built With
- claudeapi
- claudecode
- css
- deepgramapi
- express.js
- getusermediaapi
- html
- html5
- javascript
- mediarecoderapi
- netlify
- node.js
- railway
- redis
- rediscloud
- vanilla-js-for-the-frontend)
Log in or sign up for Devpost to join the conversation.