Inspiration
Parkinson's disease affects over 10 million people worldwide, yet early diagnosis remains elusive. Studies show that vocal biomarkers — subtle changes in pitch, tremor, and spectral energy — can precede motor symptoms by years. But these signals are invisible to the human ear. I was inspired by the question: What if an AI agent could listen to speech and flag early Parkinson's risk before a patient even walks into a clinic? More importantly — what if it could explain why it made that decision, in language a clinician could trust?
What it does
NeuroLynk-AI is a healthcare AI agent for explainable Parkinson's speech screening. It analyzes 753 vocal biomarkers extracted from speech recordings (MFCCs, delta coefficients, formants, log energy, wavelet decomposition levels) and returns a full clinical screening result.
- Prediction: Healthy or Parkinson's Detected with confidence percentage
- Explainability: Top contributing biomarkers identified via SHAP values
- Clinical Summary: Plain-language interpretation generated by Gemini 2.5 Flash
- FHIR R4 Report: Standards-compliant DiagnosticReport for EHR integration
- A2A Ready: Fully registered on Prompt Opinion as a JSON-RPC agent, callable by other agents
How we built it
| Layer | Technology |
|---|---|
| ML Model | XGBoost + Scikit-learn |
| Explainability | SHAP TreeExplainer |
| API | FastAPI + Uvicorn |
| LLM | Gemini 2.5 Flash |
| A2A Protocol | JSON-RPC 2.0 / po-community-a2a spec |
| Clinical Reports | FHIR R4 DiagnosticReport |
| Deployment | Google Cloud Run |
| Monitoring | MLflow + KS-test drift detection |
The SHAP value $\phi_i$ for each biomarker feature $i$ is computed as: $$\phi_i = \sum_{S \subseteq F \setminus {i}} \frac{|S|!(|F|-|S|-1)!}{|F|!} \left[ f(S \cup {i}) - f(S) \right]$$ This guarantees additive feature attribution — every prediction is a transparent sum of individual biomarker contributions.
Challenges we ran into
- A2A Schema Compatibility: The Prompt Opinion validator enforced a strict
AgentCardV1schema. AligningprotocolBinding: "JSONRPC",text/plainmodes, and emptysecuritySchemes: {}required significant iteration. - SHAP Version Conflicts: Different SHAP versions return values as
list,2D array, or3D array. We built a robust normalisation function to handle all output shapes. - LLM Environment Loading: On Cloud Run,
python-dotenvwas not loading.envat startup, causing the Gemini provider to silently fall back to mock mode. Fixed by callingload_dotenv()explicitly at the top ofmain.py. - Wavelet Feature Interpretation: Wavelet coefficients at different decomposition levels represent different frequency bands and are not directly comparable in magnitude, requiring careful normalization before model input.
Accomplishments that we're proud of
- Achieved ~94% accuracy and 0.97 ROC-AUC on the Oxford Parkinson's dataset
- Built a fully standards-compliant FHIR R4 DiagnosticReport generator
- Successfully registered as a live A2A agent on the Prompt Opinion platform with JSON-RPC 2.0 compliance
- Designed a production-ready system with MLflow experiment tracking and KS-test drift detection for model monitoring
What we learned
- The A2A protocol requires a precise agent card schema — small field name or type mismatches cause silent 422 validation failures
- Explainability is not optional in healthcare AI; SHAP makes the difference between a model a clinician ignores and one they trust
- FHIR R4 is a powerful but strict standard; even minor structural deviations break EHR compatibility
- Cloud Run environment variable propagation requires explicit handling — never assume
.envis loaded automatically
What's next for NeuroLynk AI
- Real audio pipeline: Accept raw
.wavfiles and extract features on-the-fly instead of requiring pre-computed vectors - Longitudinal tracking: Monitor a patient's vocal biomarker trends across multiple screenings over time
- Multi-disease extension: Adapt the pipeline to screen for ALS and essential tremor using the same speech biomarker framework
- EHR Integration: Connect directly to FHIR servers for automated report submission and patient record updates
- Clinical trial partnership: Validate NeuroLynk-AI against prospective clinical data for regulatory pathway exploration
Built With
- a2a-protocol
- fastapi
- fhir
- gemini
- json-rpc-2.0
- mlflow
- prompt-opinion
- pydantic
- python
- scikit-learn
- shap
- xgboost
Log in or sign up for Devpost to join the conversation.