The story
Severe bleeding after birth can kill a healthy woman within hours. It is the leading cause of maternal death worldwide, and it heads the list of complications accounting for roughly 75% of maternal deaths.
The E-MOTIVE trial tested whether treating it better was a matter of knowledge or of execution. Eighty hospitals across Kenya, Nigeria, South Africa and Tanzania; 210,132 women delivering vaginally. The intervention was a calibrated drape to measure blood loss objectively, plus a bundle of first-response treatments that every one of those hospitals already knew: uterine massage, oxytocic drugs, tranexamic acid, IV fluids, examination, escalation.
The result was a 60% reduction in the primary outcome — severe haemorrhage, laparotomy for bleeding, or death from bleeding: 1.6% against 4.3%, risk ratio 0.40 (95% CI 0.32–0.50).
But the number that built this project is the implementation one. The bundle was used in 91.2% of intervention cases and 19.4% of usual-care cases.
Four out of five times, in hospitals staffed by people who knew exactly what to do, it did not get done. Under acute stress the thing that fails first is time.
One deadline a clock can actually defend
The WOMAN trial gave 20,060 women tranexamic acid or placebo across 193 hospitals in 21 countries. Death due to bleeding fell with a risk ratio of 0.81 (95% CI 0.65–1.00) overall — and 0.69 (95% CI 0.52–0.91, p=0.008) when it was given within three hours of birth.
Three hours from birth. Not from when someone noticed the bleeding, and those can be hours apart.
So Steady keeps two anchors, not one. It asks how long ago the birth was, and if you do not know, it displays "birth time not recorded" rather than assuming the window opened when the clock started. A confident deadline computed from a guessed anchor is worse than no deadline, and there is a test asserting an unknown window never reads as open.
What it does
You press one large button when bleeding is recognised. From then on it:
- counts up in figures you can read at arm's length across a room
- shows the three-hour window with the time left in it
- says what is due out loud, because hands are occupied
- takes Done or Not done for each step, and records either
- writes a timestamped record you can copy out at the end
That is the whole product. It never assesses the patient — it is given nothing about her — and it never recommends a drug or a dose.
The three properties it guarantees, and the tests that prove them
Elapsed time is read from the wall clock, never accumulated from timer ticks. A backgrounded phone throttles timers to once a minute or stops them entirely, and a stopwatch built by adding up intervals runs minutes slow over the span this is used for. One test advances a fake clock twenty minutes without a single redraw and asserts the elapsed time is still exactly 20:00.
A step that comes due stays due until somebody records what happened to it. Nothing expires because time moved on. One test refreshes a hundred times over an hour and asserts the unrecorded step is still showing.
"Not done" is recorded as not done. Nothing is hidden from the record, because the record is the output — the screen is only a view of it.
Fourteen tests, no dependencies. npm test. The tests are the specification.
Built for the room it is used in
Dark, because a labour room at night is dark and a white screen ruins night vision. Type sized to be read at arm's length. Touch targets sized for a thumb through a glove. Spoken output using the browser's own voice, which needs no network. Nothing is sent anywhere and no network is used at all after the page loads.
The protocol is data, not code
The steps, their timings, their repeat intervals and their time-limited windows live in
protocol.json, and every step carries the source it came from. The shipped file is an
example — labelled as one, in an orange banner that stays on screen the whole time — and a real
deployment replaces it with the institution's own protocol.
The example follows the E-MOTIVE bundle because the trial names those components. It contains no doses and no treatment decisions. What to give and how much is the institution's protocol, not this program's.
Challenges
I nearly shipped this with invented medical content. My web-search and web-fetch tools were failing on this account, so I planned to ship a placeholder protocol with the steps marked unverified. That was the wrong call: the shell could still reach the sources, and NCBI's E-utilities API serves abstracts without bot-blocking. Every figure above is now read from the primary record. It is in this list because the instinct to ship the unverified version was real.
Two statistics did not survive checking. An earlier draft carried lifetime-risk figures of "1 in 66 against 1 in 7,933". They are not in the current WHO fact sheet, so they were dropped rather than cited loosely. A sibling project's rheumatic-heart-disease figures were wrong from memory in the same way and were corrected against the source.
A window that could lie. The first version computed the three-hour window from the moment the clock started, because that is the anchor you have. For a woman whose bleeding is recognised two hours after birth, that reports an open window an hour after it shut.
What it does not do
It does not assess the patient. It does not decide anything clinical, recommend a drug, or suggest a dose. It does not judge whether an action was right — only whether it was recorded.
It does not claim to improve any outcome. The trials above establish that the timing matters. They say nothing about this software, which has never been deployed or trialled. Nothing here should be read as evidence that a clock closes the gap those trials measured.
What I learned
That the most useful thing in the room is sometimes not a model. Everything in that 19.4% was known by the people standing there. A tool that adds no knowledge at all, and only keeps time honestly, is a legitimate answer to a medical problem — and it is much easier to be sure it is not doing harm.
What's next
Hands-free input, which is the obvious gap: the output is spoken but the input is still a thumb. Voice recognition was left out rather than shipped flaky, since most browsers send audio to a server and that breaks the offline guarantee. Also a protocol editor, so an institution can load its own without editing JSON, and an export that lands in a record system instead of a clipboard.
Built With
- cloudfront
- javascript
- python
Log in or sign up for Devpost to join the conversation.