Inspiration

Clinical trials depend on participants accurately reporting side effects. But someone who doesn't speak English well may skip a report, downplay a symptom, or describe it in a way staff can't capture: "my stomach is burning and my head is spinning." Every missed or garbled report is a hole in the safety data, and participants who feel unheard are more likely to drop out.

We asked a simple question: what if a participant could just talk, in their own language, and the study team received a clear, verified English record?

We don't try to get people into trials. We make sure the people who are already in can be heard.

What it does

Symora is a voice reporter for clinical trial participants that translates the language they are most comfortable speaking into a structured English report for clinical trial use.

  1. The participant speaks in their own language (Spanish and Vietnamese in our demo).
  2. A voice agent asks short follow-up questions: when did it start, how bad is it, is it still happening?
  3. Gemini converts the conversation into a structured English report: symptom, onset, intensity, and ongoing status.
  4. The participant hears a read-back and confirms before anything is submitted.
  5. The confirmed report is saved to Postgres for the study team.

Symora is not a translation app. A translator converts words; Symora produces a trial record. Unknown details stay null, and we never guess a date, a severity, or a medication.

How we built it

  • Gemini (structured JSON output) extracts and translates symptoms from the transcript, with a fallback model for when the primary model is busy.
  • ElevenLabs powers the voice conversation, the entire participant interface.
  • Tiger Data (PostgreSQL) stores participants, symptoms, and reports as timestamped records.
  • Next.js serves the app and the API, with bearer-token authentication on every endpoint.

Challenges we ran into

  • Making a language model trustworthy. Models can add details nobody said, so we built verification around the model instead of relying on the prompt alone.
  • Real behavior vs. tests. Mocked tests passed while the live API still had bugs, so we learned to verify with real requests.
  • Reliable multilingual support. Each language needed testing of its own, so we limited our demo to the languages we could verify.
  • Teamwork across a fast-moving codebase. Several people built pieces at once, so we used branches and pull requests to keep everything working together.

What we learned

  • Safety-critical AI needs verification layers around the model, not just a good prompt.
  • Test with real requests, not only mocks.
  • Being honest about what doesn't work yet builds more trust than hiding it.

What's next

  • A coordinator dashboard that highlights urgent reports, with a human reviewing every report
  • Support for more languages, including Mandarin
  • Routing each report to the coordinator assigned to the participant's study site
  • Real authentication and role-based access, plus HIPAA and IRB review before any real deployment

Safety and privacy

Symora is a prototype built with fictional data only. It gives no medical advice and never diagnoses. It stores a participant ID and nothing else: no names, and no immigration status. The original transcript is always preserved, and the participant confirms every report.

Built with

Next.js · TypeScript · Gemini API · ElevenLabs · Tiger Data (PostgreSQL) · Vercel

Built With

Share this project:

Updates

Submission history