Inspiration

We wanted to build something that actually helps people, and we kept coming back to one idea: using AI to catch the mistakes people make under pressure. While digging through research, we found a 2023 study out of Copenhagen (Wenstrup et al., npj Digital Medicine). Call-takers on a medical helpline there recognized only 52.7% of strokes on the phone. A model trained on calls from the same service caught 63%. With stroke, treatment depends on time, so a stroke nobody catches on the call can mean a patient waits longer for care. And even when someone does catch it, the details the hospital needs may not reach the stroke team until later.

That's the gap we wanted to close. LastWell is an AI layer on the 911 call: it listens, spots a possible stroke, and gets the details to the doctor who will treat it, sooner.

What it does

While a 911 call is happening, LastWell listens to both sides. If the caller describes something that sounds like a stroke, the dispatcher sees it on screen as possible or likely, along with the signs it heard and the caller's words in the transcript behind each one. It suggests one question at a time ("When was he last seen normal?" or "Is he on a blood thinner?") and calls out look-alikes like low blood sugar or a seizure. It also works out when the patient was last known well, an important detail for the stroke team's treatment decisions.

When the dispatcher hits Send stroke pre-alert, LastWell phones the on-call stroke neurologist and reads them a short briefing. They can ask it questions out loud, and cut it off mid-answer. It only answers from what the caller said in the transcript. If something never came up, it tells them so. The stroke team can also see alerts on a live hospital board.

We set a few rules we wouldn't bend. No quote from the transcript means no fact on screen. The last-known-well time is worked out by code, never by the model. It can't jump to likely until it has heard two different kinds of signs, and one of them has to be face, arm or speech. The dispatcher approves every alert, each call keeps an audit trail, and LastWell never tells anyone a call is "not a stroke."

How we built it

Twilio handles the phones. The caller gets bridged to the dispatcher, and both sides stream to our gateway, where Cartesia Ink 2 transcribes them live. We run one Ink session per side, so we always know who's talking. Drug names like Eliquis and warfarin go in as keyterms, because mishearing a blood thinner is about the worst mistake a briefing could make.

Claude Haiku 5.5 reads every new sentence and pulls out signs and facts, each with its quote. Our code checks those quotes against the transcript and drops anything without a match. Every ten seconds or so, Claude Sonnet 5.5 rereads the whole call to decide the level, check for look-alikes and pick the next question. The model finds phrases about when the patient was last well, but code calculates the time.

When the dispatcher sends a pre-alert, Twilio calls the stroke team and Cartesia Sonic reads the briefing aloud. Dispatcher console and stroke team board are a Next.js app. Calls and alerts are stored in Convex. The stroke team's board subscribes to a live Convex query, so new alerts and status changes appear instantly without refreshing. We also use Convex file storage for the spoken briefing, its rate-limiter component to cap calls to the same doctor, and scheduled functions to expire the board's access after 10 minutes.

How we tested it

The short version: LastWell caught every stroke we tested it on, including the ones that don't sound like strokes, and never showed a made-up fact.

We wrote 20 practice 911 call scripts: 12 strokes, 5 look-alikes (like low blood sugar or a seizure) and 3 other emergencies. We tuned LastWell on those scripts, then wrote 8 new scripts and ran them once, without making any changes. We compared its flags with a simple keyword alert that fires on words like "stroke", "droop" or "slurred", the kind of alert general 911 software uses.

Some scripts describe chameleon strokes: strokes that come across through less obvious symptoms like dizziness, double vision or confusion.

Catching strokes

LastWell Keyword alert
Strokes flagged, practice scripts 12 of 12 3 of 12
Strokes flagged, new scripts 4 of 4 3 of 4
Chameleon strokes flagged, both sets 8 of 8 3 of 8
Median time to flag a chameleon, new scripts 14 s 31 s, 58 s, missed 1

"Flagged" means the system reached at least possible stroke.

Getting the details right

The keyword alert only flags matching words; it does not extract these details.

Practice scripts New scripts
Final level matched our expected level 20 of 20 8 of 8
"Likely" flags that were strokes 7 of 7 1 of 1
Blood thinner correct 8 of 8 2 of 2
Last-known-well time correct 16 of 16 3 of 6
Made-up facts shown 0 0

Other results

  • Look-alikes such as low blood sugar or a seizure never reached "likely". When they were flagged, each came labeled with what else it could be.
  • Real speech: Cartesia Sonic read 6 calls out loud as phone-quality audio, including with an accent and in a panic, and Ink 2 transcribed them like a live call. LastWell caught all 4 strokes in every version, with no made-up facts.
  • A live call on real phones worked from the 911 side all the way to the neurologist's briefing. We wrote all of these calls ourselves, so these results show performance on scripted cases, not real 911 audio, which will be harder

Challenges we ran into

Our first Q&A sounded like a robot. It treated a “thank you” as a question and replied, “That wasn’t mentioned on the call.” We had to teach it when to answer and when to stay quiet. For common questions about last-known-well time, medications, age, and symptoms, we made it answer from the facts already collected during the call.

Poor phone audio was another challenge. People may talk fast when they’re scared, and medication names are easy to mishear. We gave the speech-to-text system keyterms like Eliquis and warfarin to help it recognize them.

We also had to make the screen usable while a dispatcher is handling a call. We show one suggested question at a time and keep the stroke level and the caller’s supporting words easy to find, so the dispatcher can check the evidence quickly.

What we learned

Medicine: In a stroke, every minute counts. An important fact is when the patient was last known well, because clinicians use that time when assessing treatment options. We also learned the warning signs (BE-FAST: Balance, Eyes, Face, Arms, Speech, Time) and why blood thinners matter.

Voice agents: This was our first time building with voice agents. We were surprised how quickly we could connect a live phone call to our code and turn speech into text and text back into speech. Phone audio is messy, so speed, clear medical words, and supporting words from the transcript matter most.

AI and safety: AI models are great at understanding messy human speech. But the decisions that matter (the clock time, the words in the briefing, whether to alert) belong to code and to people. Building these safety guardrails was as much work as building the AI itself.

Convex: We learned how a live database keeps every screen up to date instantly, and how to use its built-in tools for file storage, rate limiting and automatic expiry.

Who it's for and where it could go wrong

LastWell is built for 911 dispatchers taking possible-stroke calls, and the on-call stroke teams at the hospitals they send patients to. It could go wrong if the caller is vague or the audio is very poor. Our weakest result was last-known-well time: we got it right in only 3 of 6 new scripts. That's why every fact must link to supporting words in the transcript, times are calculated by code, no call audio is stored, and a person always decides whether to send the alert. LastWell supports people; it doesn't replace them.

What's next

To move from prototype to real use, we would pilot LastWell with one dispatch center using real, de-identified call recordings reviewed by clinicians; connect it to dispatch software and hospital stroke-alert systems; meet applicable health-privacy requirements with proper sign-in and access roles; and measure the real effect on how quickly stroke patients receive treatment.

Built With

Share this project:

Updates

Submission history