Cogni

Recovery, one step at a time.


Where It All Started

We kept coming back to the same gap: someone gets a concussion, goes to urgent care, gets a discharge handout, and is told to rest. Days or weeks later, the symptoms that actually disrupt daily life like brain fog, trouble concentrating, word-finding difficulty are still there. But by that point, the patient has already left the clinical system. There's no structured tool tracking how they're doing, adapting to their recovery, or looping a clinician back in when something changes.

Patients are left to self-manage a condition that's inherently hard to self-assess, while research (Cicerone et al., 2011; Bayley et al., 2014) has repeatedly shown that active cognitive engagement, not passive rest, is the actual standard of care for recovery. That mismatch - what the evidence supports vs. what patients are actually handed on their way out the door - is where Cogni started.

Cogni in Action

Cogni is an active, adaptive cognitive rehabilitation tool for the sub-acute and persistent-symptom phase of concussion recovery. It's clinician-supervised from day one, and built to be genuinely privacy-first rather than privacy-adjacent.

A clinician creates the patient's profile and runs a structured intake as injury timing, current symptoms, language difficulty, which sets the patient's starting difficulty tier and runs a safety gate: if the patient is still within 48 hours of injury or has unresolved acute symptoms, Cogni blocks the cognitive exercises entirely and surfaces wait guidance instead of quietly assigning an easy difficulty.

Once cleared, the patient trains daily on three exercises - N-Back for working memory, Sequence Recall for visual-spatial memory, and a Reaction & Attention task, plus a conditional Speech & Word-Finding module that only appears if intake flagged language symptoms. A ZPD (Zone of Proximal Development) engine adjusts difficulty in real time based on accuracy, latency, and error rate, the way a physical therapist would progress a workout. A daily symptom check-in, scored on the same 0–6 scale used in the Amsterdam Consensus Statement, feeds the same engine as a second signal so a bad symptom day can be caught even before it shows up in game performance.

Everything rolls up into a clinician/caregiver dashboard: trends in accuracy, reaction time, memory scores, and symptoms, a PDF export for clinical visits, and a switcher view for anyone tracking multiple patients. Access is role-based: caregivers can view, only clinicians can adjust difficulty or intake data.

And underneath all of it sits a Privacy Sandbox: a live network panel that shows, in real time, exactly what does and doesn't leave the device, because the camera-based fatigue detector, audio analysis, and all adaptive logic run 100% on-device. Raw frames and biometric signals are processed in RAM and immediately discarded; only an encrypted, anonymized score ever syncs.

How It Came Together

We split the build across four people along the natural seams of the system:

  • Rehabilitation exercises & speech module: the N-Back, Sequence Recall, and Reaction/Attention games, built logic-first (N-Back shipped with 14 passing unit tests before the UI was even wired up), all emitting a shared GameSessionEvent schema that the rest of the system consumes.
  • Adaptive ML & frustration guard: the ZPD difficulty-scaling engine reading that event stream, the camera-based fatigue detector, and the symptom check-in scoring logic, all running client-side via TensorFlow.js/ONNX Web.
  • Dashboard, backend & privacy architecture: the database schema, the sync layer that attaches an authenticated patient ID to the (deliberately patient-agnostic) game events, the caregiver dashboard, PDF export, the client-side encryption pipeline, and the Privacy Sandbox panel itself.
  • Clinician onboarding & safety gate: clinician account creation, the patient intake form, the acute-phase safety gate, the magic-link patient invite flow, and final verification of every research citation before submission.

We deliberately kept the games patient-agnostic at the schema level eventSchema.js never bakes in a patient ID, so they could be built and tested in complete isolation from the backend, and the sync layer injects identity only at the point of persistence. That seam let three of the four workstreams move in parallel almost the entire time.

Visually, we picked a "Harbor" palette (deep navy, dusty teal, warm orange on a soft off-white) to make a calming and ( ) interface.

Pushing the Limits

The camera-based fatigue detector was, by a wide margin, our riskiest component. Extracting a usable PPG/HRV-adjacent signal from a webcam feed is genuinely noisy. Lighting, motion, and camera quality all degrade it fast, and we had to validate feasibility early rather than assume it would just work, with a fallback path (self-report pacing, interaction-pattern deltas) ready in case the signal wasn't reliable enough to trust on its own.

Keeping the Responsible AI claims honest was its own kind of pressure: it's easy to say "everything runs on-device," but we treated that as something to actually verify and inspecting real network traffic rather than something to assert and hope was true. That's what the Privacy Sandbox panel became: not just a feature, but our own accountability check.

Key Takeaways

We're proudest of the fact that Cogni isn't just adaptive - it's honestly adaptive. The safety gate doesn't quietly downgrade a patient who isn't ready; it stops and tells them why. The fatigue detector doesn't pretend to diagnose anything; it prompts a break. And the transfer benefits of cognitive training are represented the way the research (Soveri et al., 2017) actually supports them - real, but limited beyond the trained task, instead of oversold as a cure.

Building the Privacy Sandbox taught us something less technical: the most convincing thing you can show a skeptical user (or judge) isn't a privacy policy but a live view of the thing itself proving it's telling the truth. The most convincing thing you can show a skeptical user (or judge) isn't a privacy policy but a live view of the thing itself proving it's not lying.

What's Next

The core loop — intake, adaptive exercises, symptom tracking, clinician dashboard — is in place, but there's a clear next layer. The PDF export currently reads as a clean data summary; the natural next step is visual charts alongside it, so a clinician can see a symptom or accuracy trend at a glance during a visit instead of parsing numbers row by row.

We also built Cogni desktop-first, but recovery doesn't happen at a desk. Patient is far more likely to do a five-minute daily check-in or a quick game session from their phone between other things. A mobile-optimized version is the most direct way to close that gap between where the tool lives and where the patient actually is.

Longer term, we'd want to close the loop the other way too: right now the clinician adjusts intake and reviews trends, but doesn't get flagged proactively when a patient's symptom check-ins trend worse over several days in a row. That's the kind of signal Cogni already has - it just isn't surfaced as an alert yet.

Share this project:

Updates

Submission history