Inspiration
Chest pain is still the symptom most heart models are built to see. Women having a heart attack are more likely to be short of breath, nauseated, exhausted, or aching in the jaw and upper back, and more likely to be told it is anxiety. In VIRGO, young women with a myocardial infarction were more often judged non-cardiac and more often delayed care. In the National Registry of Myocardial Infarction, presenting without chest pain was more common in women and carried higher mortality.
Symptom Advocate started from that gap. A diary can hold the pattern a single visit misses. A model that only listens for chest pain will still call her fine.
What it does
A patient writes one entry: how the day felt, how bad it was, how she slept, and where she is in her cycle. No symptom checklist. The same diary is then read by two heart models, side by side, for a clinician.
The generic model treats chest pain as the only cardiac signal. If the note does not describe chest pain, pressure, or tightness, concern stays low, even when the stairs keep stopping her.
The female-informed model starts by labeling the note. A language model marks symptoms and what she was doing, including breathlessness, nausea, jaw or back pain, fatigue, sweating, and whether it happened while walking or climbing stairs. A fixed rule then counts exertional clusters. Three or more is elevated concern, including when classic crushing chest pain never appears. Chest discomfort that shows up at rest, with stress, or after a meal does not raise that score when exertion stays easy.
The language model writes the explanation. It cannot change the level. The screen is decision support for a clinician, not a diagnosis, and it never tells a patient she is having a heart attack or that one has been ruled out.
Seven demo diaries show the split: a postmenopausal woman dismissed as anxious, a stressful meeting, reflux after a meal, classic exertional angina, a young woman whose training is easy, two post-meal burns, and an early prodrome with no chest pain.
How we built it
The app is a TanStack Start diary with a patient check-in and a clinician view. Entries stay in the browser session. Both model calls run in parallel through OpenAI.
The female-informed rule is written from published findings, not from a fine-tune: VIRGO, Canto and the NRMI, HERMES, van Oosterhout, the 2016 AHA statement on women and acute myocardial infarction, the 2021 AHA/ACC chest pain guideline, High-STEACS, the Fourth Universal Definition of MI, and WISE. Those papers are listed in the clinician view. Credentialed research databases were not loaded.
What we learned
The bias is not only in who gets studied. It is in which sentence the model is allowed to count. Once chest pain is the gate, a careful diary of stairs, nausea, and jaw pain looks like a well woman.
We also learned that the label step has to be strict. "No chest pain" is a denial, not a positive finding. If that sentence is misread, the generic model becomes alarmed for the wrong reason and the demo of the bias disappears.
Challenges
People do not log symptoms as chips. They write "I had to sit on the step." Turning that sentence into tags without inventing chest pain, and without missing pressure in the center of the chest, was the fragile part.
The other challenge was keeping the disagreement honest. If the language model could choose the level, the two cards could agree by accident and hide the point. The rubric is locked in code. The model only explains the level it was given.
Built With
- openai
- react
- typescript
Log in or sign up for Devpost to join the conversation.