Neuro-Synthetix: a voice bridge from a village to the world's clinical trials

작성자

카테고리:

← 피드로
DEV Community · Shadrak · 2026-07-10 개발(SW)

Picture this. A woman in a village in India. Three weeks of fever, a cough that won’t quit, weight melting off. Her local doctor has tried everything. The nearest hospital is hours away, and even if she could get there, she couldn’t afford it.

She speaks Hindi. Not a word of medical English.

Somewhere across the world, a research team is tearing their hair out looking for patients with exactly that profile. The trial they’re running is free for participants. It could be life-changing.

These two worlds never meet.

The information that could connect them is technically public. Clinical trial registries are open to anyone. But they’re scattered across countries, written in dense legal English, and buried in eligibility criteria that no normal person will ever read.

That’s where Neuro-Synthetix comes in.

You tell it how you feel, by voice or text, in your language. It finds real trials that are actively recruiting, in places you can actually reach. It never plays doctor. It points you toward possibilities and always reminds you to check with a real physician.

Live here: https://neuro.shadrakbessanh.me

So how does it actually work?

You have a conversation. A friendly AI talks with you like a clinician would, but without the white coat intimidation. It understands everyday words, slang, drug names, body parts, vague clues, other languages, even typos. It turns all of that into proper medical search terms.

First thing it asks is where you live. Because a trial recruits at physical sites. Your country decides which trials you can even join. The assistant explains why it’s asking, and it won’t search until it knows.

Then it asks a few targeted questions and starts searching as soon as it has a clear picture. No endless questionnaires. No filling out the same form twenty times.

Behind the scenes, it’s scanning thousands of real trials from multiple public registries. But here’s the clever part. Naive keyword search is noisy. “Fever cough” could surface a cancer trial just because a word matched. And a plain AI model can hallucinate trials that don’t exist.

So we split the search into stages. First, a fast, deterministic retrieval pulls about 25 real candidate trials from the database, ranked by condition match first, then keywords, filtered by the patient’s country. This is the safety net.

Then the AI takes over. DeepSeek looks at those real candidates and picks only the genuinely relevant ones, ranks them, and writes one sentence explaining why each fits. The model can only choose from the IDs we gave it. We re-validate every ID it returns. It’s mathematically impossible for it to invent a trial.

For the top results, it goes even deeper. It reads the real inclusion and exclusion criteria, picks the ones that actually decide the case, marks each as met, not met, or unknown, and produces a confidence score. Same idea as TrialGPT-style matching, but actually readable for a patient.

Every result shows a clear path forward. How to get a referral. How to contact the site. How to ask for an eligibility check. And a reminder that participation is often free. The official trial link is always there.

Voice works in Hindi, English, and French. Speech-to-text and text-to-speech run through Sarvam AI for Indian languages, with a device-voice fallback. A patient can just speak and be answered out loud.

But here’s what I’m really proud of.

The whole thing is designed for someone who might not read well and doesn’t speak English. The opening screen shows Hindi, English, and Français in their own scripts. You recognize your own writing. You don’t have to read a menu.

Choose speak and you land on a dedicated microphone screen. Push to talk. Hold to record, release to send. The answer comes back as voice only. No wall of text. When you type, nothing is read aloud. Text stays silent. Voice speaks. Two clean, separate experiences.

On the voice screen, the moment real trials are found, the app plays the spoken intro and then switches to the results screen. Because you need to see a list to open it. Pure audio can’t do that.

There’s also a health worker mode. A community health worker can run the flow for a patient, adding the patient’s age and sex as context. The eligibility matching stays accurate even when the patient isn’t the one holding the phone.

The tech stack? FastAPI with Python, running in Docker behind a Cloudflare tunnel. Neo4j maps symptoms to conditions to trials to hospitals. DeepSeek handles the conversation, tool calling, re-ranking, and eligibility reasoning. Sarvam AI provides the voice. An OpenAI-compatible translation layer ties it together. The data comes from ClinicalTrials.gov, CTIS, and ISRCTN, refreshed every 12 hours. The frontend is a lightweight multilingual chat with a voice mode and a world map. The mobile app is built with Expo and React Native, Android-first.

We ran into some interesting challenges.

Early on, reasoning in Hindi or French made the model weaker and leaked the wrong language into the results. So we rebuilt around one rule. The AI always thinks in English. Whatever the patient says in French or Hindi gets translated to English on the way in. The model reasons, searches, and re-ranks entirely in English, its strongest mode. The reply and every trial’s reason and criteria labels get translated back on the way out, segment by segment, in parallel. Same quality of matching whether you speak Hindi, French, or English. No bias toward famous diseases.

Keeping context across turns was tricky. “I have asthma” then later “and I take metformin” used to reset everything. Storing the whole conversation history in English with an explicit condition marker fixed it. Verified with an eight-scenario test harness in French, English, and Hindi.

DeepSeek’s outputs could get cut mid-JSON. We added generous token budgets, retries, and a salvage parser that extracts valid picks and confidence scores even from a truncated response.

Sarvam splits long replies into several audio segments. We were only playing the first. Now we play all segments in sequence, on web and mobile, so the answer is heard to the end.

On mobile, the audio session stayed in record mode, so playback was mute. Resetting the session before speaking fixed it.

A country filter once dropped valid trials, so the app said “no trials here” while the map showed a site there. We made the country match authoritative. The map and the assistant now tell the same truth.

We strip all markdown and HTML entities. A patient should read plain sentences, not asterisks and weird codes.

And we take responsibility seriously. Neuro-Synthetix is an orientation tool, not a diagnosis. Every screen says so. Every trial keeps its official reference so anyone can verify it at the source. Nothing is generated by the AI. Detailed eligibility is richer for ClinicalTrials.gov entries than for others. Some registries, like India’s CTRI, block automated access. So we surface Indian trials through ClinicalTrials.gov’s India data instead. We’d rather be honest about a limit than fake a number.

The same assistant runs as a native mobile app with Expo and React Native. Install Expo Go, scan the QR code, and you get the full push-to-talk experience.

Try it. The web version is live. The mobile version works in Expo Go. The code is open.

Live web: https://neuro.shadrakbessanh.me
Mobile: exp://ncarnci-bsh54-8081.exp.direct
Code: https://github.com/Bsh54/neuro-synthetix

Scan This with Expo Go

Scan with Expo Go

Neuro-Synthetix is an orientation tool. It doesn’t provide a medical diagnosis and doesn’t replace a doctor’s advice. But it does something that didn’t exist before. It makes the invisible visible. It connects the people who need help with the research that might help them.

And that’s what makes it worth building.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다