NeuroPhenotype
Inspiration
Every rare disease patient has a story that sounds the same: years of normal-looking tests, doctors who don't have time to dig deeper, and a family told to "wait and see." For conditions like Rett syndrome, Dravet syndrome, and Angelman syndrome, the average diagnostic odyssey spans 4–7 years — not because the biology is unknowable, but because the right data never reaches the right clinician at the right time.
We kept asking: what if a clinician could capture objective physiological evidence that simply doesn't exist in any chart today — passive EEG signatures, autonomic patterns, movement characteristics — and fuse it with everything they already know about a patient? That question became NeuroPhenotype.
What it does
NeuroPhenotype is a multimodal diagnostic copilot that fuses two data streams no existing tool combines:
Half 1 — Biosignal Phenotyping: Passive physiological capture across 7 modalities (EEG, HRV, GSR, movement via MediaPipe + IMU, speech via microphone, rPPG via webcam, keyboard/mouse dynamics). These produce a 55-dimensional biomarker vector that feeds an XGBoost classifier trained on literature-derived synthetic profiles for Rett, Dravet, and Angelman syndromes. Each condition has a distinct electrophysiological and behavioral fingerprint — Rett's central theta dominance, Dravet's high spike rate, Angelman's pathognomonic high-amplitude delta — and our system captures these passively while the patient sits with a clinician.
Half 2 — Clinical Record Integration: A structured clinical intake system where clinicians input HPO phenotype terms (present/absent/uncertain), onset age, family history, and prior genetic testing history. A live paper document builds in real time as the doctor fills in the intake. PDF genetic reports and pasted referral letters are parsed using Claude to extract HPO terms, prior test results, gene findings, and onset information automatically — pre-filling the paper document in seconds.
Both halves fuse at inference time. The system outputs ranked next steps (not just a disease ranking): collect additional discriminating phenotypes, reanalyze prior sequencing, refer to a specialist, or order a targeted genomic panel — with estimated cost savings versus whole exome sequencing ($3,800–$4,500 per case).
A reanalysis trigger fires when prior negative testing combined with new phenotypes suggests reanalysis would be higher yield than ordering a new test. A data completeness warning flags when sparse clinical data may disadvantage patients with language barriers or atypical presentations, addressing equity explicitly.
How we built it
Biosignal pipeline: Built in Python with modality-specific feature extractors for each sensor type — MNE for EEG band power and coherence, neurokit2 for HRV, librosa for speech prosody and MFCC, MediaPipe Hands for movement stereotypy scoring, and a custom Arduino Nano BLE sketch streaming IMU and GSR data at 50Hz. All 55 features are assembled by a config-driven fusion layer and fed to an XGBoost classifier with late fusion.
Hardware EEG: Uses an AD623 instrumentation amplifier to extract microvolt-level neural signals from surface electrodes. Analog filtering removes 60Hz power line interference via a notch filter, eliminates DC drift with a high-pass filter, and band-limits the signal with a low-pass filter before streaming to the computer for real-time visualization. The device is battery-powered and built from low-cost components.
Clinical half: Built around structured dataclasses (ClinicalIntake, PriorTestRecord, FamilyHistory) with a rule-based feature encoder producing a clinical vector fused with the biosignal vector at inference. Document extraction uses pdfplumber for digital PDFs with pytesseract OCR fallback, topped with a Claude API extraction layer that identifies HPO term states, onset age, prior test type and result, and gene findings from unstructured text.
Dashboard: A Flask application with 17 routes, a three-column layout (intake / live clinical paper / recommendations), inline popover editing directly on the paper document, guided task modals for movement and speech capture, and a demo/clinical mode toggle. The Claude API generates enhanced SOAP notes and reanalysis checklists. Authentication uses SQLite with bcrypt hashing and Google OAuth.
Challenges we ran into
Getting the EEG signal chain to work in a hackathon timeframe was the central hardware challenge — noise floor management, impedance matching, and analog filtering all had to produce a clean enough signal to be interpretable. We validated that the synthetic training profiles derived from literature would match the kinds of features our hardware architecture would produce in practice.
The dual-architecture decision came mid-hackathon after analyzing the track requirements more carefully. We realized our original biosignal-only approach didn't fully address the "ingest variable inputs" and "next best action" criteria — so we rebuilt the clinical intake side in parallel, which meant keeping two independent feature pipelines consistent at the fusion layer.
Claude PDF extraction initially returned HTTP 400 errors due to model availability on our API tier, which we debugged under time pressure. The inline paper document with live popover editing required careful state synchronization between the paper DOM, the left panel fallback, and the intake data object sent to the server.
Equity is genuinely hard to implement well in a hackathon. We chose to be honest about what we could and couldn't do — adding explicit completeness warnings and SOAP note language that acknowledges the limitation rather than pretending the system performs uniformly across all data densities.
Accomplishments that we're proud of
The signal chain is real. We built and tested a custom battery-powered EEG signal chain during the hackathon — AD623 instrumentation amplifier, analog notch and band-pass filtering, real-time signal visualization — demonstrating the hardware architecture that biosignal capture is built on.
The dual-architecture fusion is architecturally clean. The 55-feature vector has a well-defined schema with documented feature slices, both halves contribute independently measurable signal, and the inference layer handles partial data gracefully rather than requiring complete inputs.
The live clinical paper document. Pasting a referral letter and watching the paper fill itself with structured HPO terms, prior test history, and onset age — then watching the probability bars shift in real time as you confirm each finding — makes the data fusion process visible and interpretable in a way a static form never could.
The reanalysis trigger is clinically meaningful. The Rett case vignette — where a negative chromosomal microarray correctly triggers reanalysis toward MECP2 sequencing because microarray cannot detect point variants — is exactly the kind of reasoning the track asked for.
What we learned
Rare disease genomics is a field where the bottleneck is not sequencing technology — it's phenotyping quality and test selection. The most impactful thing a decision support system can do is not predict the disease, but tell the clinician what to do next given what they know and don't know.
We learned that equity in clinical AI is not a checkbox — it's a design constraint that affects every output. A system that outputs confident probabilities from sparse data is actively harmful for patients whose records are incomplete by circumstance rather than clinical presentation. Explicit completeness warnings and uncertainty statements aren't defensive — they're what makes a system trustworthy.
Building with Claude as both a reasoning layer and a development tool taught us a lot about the difference between prompting for structured extraction versus prompting for clinical reasoning. Extraction prompts needed to be explicit about absent findings ("no seizures" → absent, not not_assessed) in ways that weren't obvious until we tested edge cases.
The hardware side taught us that a working analog signal chain in a hackathon is achievable but requires every team member who touches it to understand the full circuit end to end. Noise in the data is not just a technical problem — it propagates into clinical features and ultimately into recommendations.
What's next for NeuroPhenotype
Expand to more conditions. The architecture supports any condition with a distinguishable electrophysiological and behavioral phenotype. CDKL5 deficiency disorder, FOXG1 syndrome, and Phelan-McDermid syndrome are natural next targets, each with documented EEG signatures and HPO term profiles.
Validation on real patient data. Our classifier is trained on literature-derived synthetic profiles — a deliberate choice for a hackathon POC. The next step is retrospective validation on curated case vignettes from published literature and, ultimately, prospective pilot data from a clinical partner.
Longitudinal tracking. Rare disease phenotypes evolve over time. A version of NeuroPhenotype that tracks biosignal features across visits and flags phenotypic progression — automatically triggering reanalysis when enough has changed — would be significantly more valuable than a single-session snapshot.
Integration with genomic databases. Connecting the reanalysis trigger to live ClinVar and OMIM lookups would allow the system to recommend reanalysis not just based on new phenotypes, but based on new gene-disease associations published since the patient's last test.
Federated deployment. The biosignal capture pipeline runs locally. A federated architecture where biosignal features (not raw signals) are aggregated across sites would allow model improvement without centralizing sensitive patient data.
EEG rhythm extraction. Signal quality validation and clean EEG rhythm detection are the immediate next hardware milestone — moving from demonstrated signal chain to validated band power features on real subjects.
Log in or sign up for Devpost to join the conversation.