Skip to content

SDG 3 · Good healthLagos, NigeriaJINIHausa for blood

The blood arrives late because the request arrives as a voice note.

Nigeria's blood system runs on speech and paper — a relative shouting into a phone, a requisition slip in biro, a bank's stock ledger on a ruled page. JINI listens to all of it, turns it into a structured request, and dispatches to donors who can actually arrive. Donors are reached by SMS, on any handset, with no data.

Speech, paper, SMS or WhatsApp in 5 languages · Nothing dispatches below 75% confidence

JINI

Donor card · Lagos

Registered group

O NEG
Eligibility
Eligible now
Last donation
Last gave 112d ago
Donations
4 donations

Incoming request14:02 · JN-24601-LAG

● UrgentSMS · 150/160

JINI: O- needed now. St Anselm's General, Surulere - 4.2km from you. 3 units. You are eligible (last donation 112d ago). Reply Y to commit, N to pass.

Reply YReply N3 of 18 pinged
D-8841-LAGBatch 24-09-LAG-0117

Card issued on registration. Group self-declared at sign-up and confirmed at the collection centre before any donation is taken.

Sample dataA request, as a donor receives it

Intake

Nobody fills in a form.

A request arrives as a voice note in Pidgin, a photograph of a handwritten requisition, or a text from a frightened relative. JINI transcribes it, pulls the clinical entities, scores urgency, and refuses to dispatch anything it is not sure about. Edit the transcript below — the extraction re-runs as you type.

Raw input · voiceASR → entity extraction → triage
Audio trace11s · 8 kHz

Language detected: Nigerian Pidginfrom abeg, dey, sharp sharp

Matched spans

  • o negative
  • two pints
  • St Anselm's General Hospital
  • Surulere
  • after delivery
Structured requestCleared for dispatch
Blood group
O-93%from “o negative
Units
290%from “two pints
Facility
St Anselm's General Hospital88%from “St Anselm's General Hospital
Area
Surulere94%from “Surulere
Indication
Postpartum haemorrhage86%from “after delivery
Urgency
criticalscore 11
  • sharp sharp — immediacy phrase
  • dey bleed — active bleeding
  • urgent — explicit urgency

A request is dispatched automatically only when every field it depends on clears 75% confidence. Below that it is queued for a human coordinator with the uncertain fields flagged. An unstated Rh factor is always resolved to negative, because a negative recipient cannot receive positive blood.

Sample dataExtraction runs live in your browser. In production this step is Amazon Transcribe plus an LLM extraction pass on Bedrock — the fields, confidences and hold threshold are the same.

The unit of delivery

A match arrives as 152 characters of SMS.

One segment, GSM-7, no links, no attachments. It has to be readable on a cracked screen over a 2G cell, and answerable with a single keypress. Here is what each part of it does.

Specimen · outbound150/160 · 1 SMS

JINI: O- needed now. St Anselm's General, Surulere - 4.2km from you. 3 units. You are eligible (last donation 112d ago). Reply Y to commit, N to pass.

Sample dataMessage shape is real; facility and donor are invented

  1. JINI:Sender, in clear. No shortcode spoofing, no link to tap.

  2. O- needed now.Group and urgency first — the two facts that decide everything.

  3. St Anselm's General, Surulere - 4.2km from you.Where, and how far. Distance is computed from the area you registered, never from live tracking.

  4. 3 units.Scale of the need, so you know whether your one unit closes it.

  5. You are eligible (last donation 112d ago).The system has already checked your rest period. You are never asked when you cannot give.

  6. Reply Y to commit, N to pass.One character. Works on a keypad, costs a standard SMS, needs no data.

Routing

Requests go out in waves, not all at once.

Wave 1 is the smallest ping that could close the request: exact group, nearby, eligible today. If no one commits, the radius widens and compatible groups open up. Donors already contacted are not contacted again.

Lagos metro · donor districtsRequest JN-24601-LAG · O- × 3
Surulere312 donorsYaba268 donorsMushin197 donorsApapa141 donorsIkeja402 donorsOshodi233 donorsLekki356 donorsAgege158 donorsIkorodu121 donors8km
3 of 9 districts reachedSample data

Routine

Nearest exact match

Exact group, eligible today, inside 8km, response rate above the wave-1 threshold. The smallest ping that could close this request.

Donors pinged
3
Likely to reply
1
Radius
8km

Wave timings are configured per facility and per blood group. A group with a thin roster escalates faster; a group with deep coverage stays in wave 1 longer. Donors who were pinged in an earlier wave are excluded from every later one for this request.

Dispatch models

Once the request is structured, three more models decide who hears about it.

Ranking by who can actually arrive, budgeting how often each donor is contacted, and projecting where a group is heading for a shortfall. Each is shown with the inputs it uses.

M-01 · Match rankingSample data

Each candidate is scored on four inputs — distance, travel time in real traffic, days until eligible, and the share of past pings they answered. Only the top of the list enters wave 1.

Candidate donors ranked for request JN-24601-LAG
DonorGroupDistrictTravelEligibleAnswersScore
D-8841O-Surulere11m / 1.8kmNow82%94
D-2207O-Yaba16m / 3.4kmNow74%88
D-9163O-Surulere31m / 2.1kmNow61%71
D-4420O-Mushin24m / 4.9kmin 12d90%Held
D-6675O-Apapa58m / 9.6kmNow28%Held

D-4420 has the strongest reply history on this list and is not contacted: 12 days remain on their rest period. D-6675 is eligible but distant and replies to 28% of pings, so they are held back for wave 3.

Inventory

Most blood banks keep stock on paper.

Not in a database, not in an API — on a ruled page or a whiteboard, in handwriting, corrected in the margin. Asking a busy centre to adopt new software fails. Asking them to photograph the page they already keep does not.

Yaba Transfusion Centre

Stock ledger, page 47

  • O+ 22
  • O− 4
  • A+ 11
  • A− 3̶ 1corrected in margin
  • B+ 9
  • B− ⌁⌁ink smudge
  • AB+ 3
  • AB− 40digit likely 4, not 40

Sample page · not a real ledger

Photographed Today, 06:41 by ward clerk

Extracted & reconciled5 published · 3 held · 49 units live
Blood stock extracted from the photographed ledger, with reconciliation status
GroupReadConfidenceWasChangeStatus
O+2297%24-2Published
O-495%40Published
A+1193%12-1Published
A-158%3-2Held
B+996%90Published
B-Unreadable19%2Held
AB+391%30Published
AB-4094%1+39Held

3 rows withheld from the network

  • A-

    Low reading confidence (58%) — corrected in margin. Value shown but not published to the network until confirmed.

  • B-

    Cell unreadable (ink smudge). Holding yesterday's figure of 2 and asking the centre to re-photograph.

  • AB-

    Reads 40, up 39 from 1 since the last reading. That exceeds what this centre can collect in a day — digit likely 4, not 40.

A cell is published to the network only when it reads above 75% confidence and the change since the previous reading is physically possible for that centre. Everything else keeps the last trusted figure and raises a re-capture request. Reconciliation against the prior reading is what catches the errors OCR alone cannot: a clean, confident read of the wrong number.

Sample dataDeltas, flags, totals and the hold decisions above are computed from the sample page, not hard-coded. Production runs Amazon Textract with an LLM reconciliation pass.

Stock

Every request also returns the banks holding that group.

Bank stock is listed at the same moment the first donors are pinged, so a coordinator can see a unit that is already on a shelf across town instead of waiting on a volunteer.

Ikeja Central Blood Bank

Ikeja

Stock reported 8 min ago

  • O-2units on hand
  • O+14units on hand
  • A+9units on hand
  • B+6units on hand
  • AB+Out of stockRestock Thu 04 Sep

Yaba Transfusion Centre

Yaba

Stock reported 21 min ago

  • O-Out of stockRestock drive Sat 06 Sep
  • O+22units on hand
  • A+4units on hand
  • B+11units on hand
  • AB+3units on hand

Lekki Foreshore Clinic

Lekki

Stock reported 2 min ago

  • O-5units on hand
  • O+8units on hand
  • A+Out of stockRestock Fri 05 Sep
  • B+2units on hand
  • AB+1unit on hand

Sample dataFacilities and stock levels are invented for this demonstration

Trust

A faster network moves bad units faster too.

Paid and coerced donation is real and unsolved here: a few people donate far too often under different names, which endangers them and produces units of unknown provenance. Screening is part of the dispatcher, not a disclaimer at the bottom of it.

Risk score

88/ 100

Suspended pending review
ClearReview at 35Suspend at 70
  • Donation cadence

    96 × weight 0.34 = 32.6

    6 donations in 92 days across 3 facilities. The physiological floor is one per 90 days.

  • Identity clustering

    93 × weight 0.30 = 27.9

    Three roster entries share one handset IMEI and one bank account for transport reimbursement.

  • Response pattern

    81 × weight 0.18 = 14.6

    Commits within 40 seconds to every request regardless of distance — including 31km away.

  • Facility spread

    74 × weight 0.18 = 13.3

    Never returns to the same collection centre twice in a row.

Action

Removed from dispatch and referred to a coordinator. The donor is contacted, not accused — over-donation is a health risk to them first, and brokers coerce the people they recruit.

Sample dataScores and actions are computed from the signal weights shown, not hard-coded.

No donor is ever shown a risk score, and no facility is told a donor was flagged. A suspension is a conversation with a coordinator, because the person donating six times a quarter is usually the one being exploited, not the one exploiting. Screening supplements mandatory testing at the collection centre — it never replaces it.

Plate registration

Who your blood can reach.

Compatibility decides which donors a request can be routed to. Pick your group to see who you can give to, who you can receive from, and how common that group is.

Select your group

You can give to8/8

  • O- — compatible, your group
  • O+ — compatible
  • A- — compatible
  • A+ — compatible
  • B- — compatible
  • B+ — compatible
  • AB- — compatible
  • AB+ — compatible

All eight groups. O− is the universal red-cell donor, used when there is no time to type the recipient.

You can receive from1/8

  • O- — compatible, your group
  • O+ — not compatible
  • A- — not compatible
  • A+ — not compatible
  • B- — not compatible
  • B+ — not compatible
  • AB- — not compatible
  • AB+ — not compatible

One group only. If you need blood, nothing but O− will do, and O− is 2.1% of the population.

Compatibility shown is for red-cell transfusion, the case JINI routes. Plasma and platelet compatibility run the other way and are matched at the collection centre, never over SMS. Whole-blood donors rest at least 90 days between donations; JINI holds your eligibility date and will not contact you before it clears.

Request console

Post a request and see how it routes.

The routing engine runs here in the browser against a sample roster of 420 donors. Changing the group, units, area or urgency recomputes the compatible pool, the wave sizes, the message text and the bank list.

Request docketJN-24603-LAG

1 · Recipient blood group
2 · Units needed
3
5 · Clinical urgency

Nothing is sent. The console runs locally against sample data.

Donors who can give to O-

  • O- compatible
  • O+ not compatible
  • A- not compatible
  • A+ not compatible
  • B- not compatible
  • B+ not compatible
  • AB- not compatible
  • AB+ not compatible
Roster pool
7/420
Eligible today
6
Units on shelf
7

Dispatch plan · 6 donors reachable

Sample data

Nearest exact match

Exact group, eligible today, inside 8km, response rate above the wave-1 threshold. The smallest ping that could close this request.

Donors contacted in wave 1
DonorGroupDistanceETAAnswersScore
D-4455O-4.2km13m73%86
D-5215O-0.4km7m60%86
D-2905O-3.6km12m53%81

Message as composed112/160 · 1 SMS

JINI: O- URGENT. St Anselm's General, Surulere - 4.2km. 3 units. You are eligible. Reply Y to commit, N to pass.

Addressed to D-4455 · 4.2km · replies 73% of the time

Banks holding a compatible unit — returned at the same moment as wave 1

  • O-Lekki Foreshore ClinicLekki · updated 2 min ago5units
  • O-Ikeja Central Blood BankIkeja · updated 8 min ago2units
  • O-Yaba Transfusion CentreYaba · updated 21 min agoOut · restock drive Sat 06 Sep

Plate schedule

Where the inference actually happens.

Eight stages, each with the input it consumes, the output it emits, and the gate that stops it acting when it is not sure. Every stage that can be wrong hands off to a person rather than guessing.

Target inference architecture for JINI, by stage
PlateStageInServicesOutGate
P-01Speech intakeInbound call or voice note, 5 Nigerian languages
  • Amazon Transcribe
  • Amazon Connect
Timestamped transcript with per-token confidenceBelow threshold → replay to caller for confirmation
P-02Document intakePhotographed requisition slip or ward form
  • Amazon Textract
Key-value pairs and table cells with geometryUnreadable cell → re-capture request, never a guess
P-03Extraction & triageTranscript or extracted text
  • Amazon Bedrock
  • Comprehend Medical
  • Bedrock Guardrails
Structured request: group, units, facility, indication, urgencyConfidence < 75% → human coordinator queue
P-04Ledger digitisationPhotographed blood-bank stock ledger
  • Amazon Textract
  • Amazon Bedrock
Per-group unit counts, reconciled against the prior readingImplausible delta → hold last trusted figure
P-05Arrival propensityCandidate donors, congestion, history, group scarcity
  • Amazon SageMaker
  • Amazon Location Service
Probability each donor commits and arrives in the windowRest period is a hard filter applied before scoring
P-06Dispatch policyRanked candidates, request urgency, roster fatigue state
  • AWS Lambda
  • Amazon EventBridge
  • Amazon Pinpoint
Timed SMS waves with per-donor contact budgetOne donor, one contact per request
P-07Demand forecastingHistoric per-group demand, season, facility mix
  • Amazon SageMaker
Regional shortfall projection over a multi-week horizonProjection drives drives, never dispatch decisions
P-08Trust screeningDonation cadence, identity clustering, response behaviour
  • Amazon SageMaker
  • Amazon Fraud Detector
Risk score with contributing signalsSuspension always routes to a human, never automatic

Where the load is

Speech and document intake run per request and are the heaviest inference path. Propensity scoring runs over the full candidate set on every wave. Forecasting and trust screening run on a schedule rather than in the request path.

What degrades gracefully

If intake models are unavailable, structured entry and the USSD path still work — the system falls back to the coordinator queue rather than stopping. Dispatch never depends on a model being up.

What is not automated

No transfusion decision, no eligibility ruling, no donor suspension, and no dispatch of a low-confidence request. Every one of those routes to a person, by design and not by limitation.

Running a hospital, blood bank or transfusion service?

We are looking for pilot sites in Lagos. If you keep stock on paper, that is the integration — send a photograph of the page you already fill in.

Talk to ushello@jinihq.com

Target architecture for a pre-launch system. Nothing here is deployed yet, and no latency, accuracy, cost, or throughput figure is claimed anywhere on this page. Service selections are the intended build and may change as the system is implemented.

Registration

Joining costs one call and no data.

Dial the short code, answer five numbered questions, and you are on the roster. It works on a feature phone, on zero airtime credit, in a blackout. The menu below is interactive — dial it.

Ready*4357#

Dial the short code:

*4357#

Tap the keys below, or use your keyboard.

  • Works on any handset

    USSD is carrier-level. If the phone can make a call, it can register. No Android version, no Play Store, no 40MB download.

  • Works on zero credit

    Session codes are free to dial on the major Nigerian networks, so an empty balance does not remove a donor from the roster.

  • Works with no data

    No part of registration or notification needs a data connection. Alerts arrive over SMS.

  • Works in your own time

    Pause for 30 or 90 days from the same menu. You are never pinged inside your 90-day rest period, and STOP removes you permanently.

Put yourself on the roster.

One call puts your group and area on the roster. From then on you are contacted only when a nearby request matches and your rest period has cleared.

*4357#

Short code shown is a placeholder and is not yet provisioned with any network. JINI is pre-launch — there is no live roster to join today.

Questions

Donating, eligibility and how the roster works.

Everything below applies to whole-blood donation in Nigeria. Clinical decisions are always made at the collection centre, not by JINI.

Who can donate blood in Nigeria?

General donor criteria are 18 to 65 years old, at least 50kg in weight, in good health on the day, and at least 90 days since your last whole-blood donation. Haemoglobin level, blood pressure and a short health questionnaire are checked at the collection centre before any donation is taken. JINI does not screen donors — it routes requests to people who have opted in, and the centre makes the clinical decision.

How often can I donate blood?

Whole-blood donors rest a minimum of 90 days between donations. JINI stores your eligibility date and will not contact you before it clears, for any request, at any level of urgency.

Do I need a smartphone or data to use JINI?

No. Registration runs over USSD, which works on any handset that can make a call, including a feature phone with no data and no airtime credit. Match alerts arrive as a standard SMS. There is no app to install.

How do I register as a donor?

Dial the JINI short code and answer five numbered questions: your blood group, your area, when you last donated, and whether you consent to be contacted. Registration takes under a minute and issues you a donor card reference. The short code shown on this site is a placeholder — JINI is pre-launch and no live roster exists yet.

Which blood types can donate to which?

For red cells, O negative is the universal donor and can be given to all eight groups, while AB positive is the universal recipient and can receive from all eight. O negative recipients can only receive O negative. A can give to A and AB, B can give to B and AB, and a negative group can give to both the negative and positive version of a compatible group. The compatibility chart on this page shows every combination.

How rare is O negative blood in Nigeria?

O negative is roughly 2% of the Nigerian population according to published population studies, while O positive is around half. That scarcity is why O negative requests escalate faster and why JINI deliberately holds rare-group donors back from requests a common-group donor could answer.

What happens when I reply Y to a request?

Your commitment is recorded against that request and the requesting facility sees that a donor is on the way, along with an estimated arrival time. You are not contacted again about the same request. Replying N passes on it with no penalty, and not replying at all is treated as a pass.

Will JINI share my phone number?

No. JINI stores your number, blood group and the area you selected. Your number is used to route requests and for nothing else, is never sold, and is never shown to the requesting facility or to another donor.

How do I stop receiving messages?

Reply STOP to any JINI message to leave the roster permanently, or use the USSD menu to pause for 30 or 90 days. Both take effect immediately.

What does the AI in JINI actually do?

Five things. It transcribes a spoken request in Nigerian English, Pidgin, Yoruba, Hausa or Igbo. It reads photographed paper requisitions and blood-bank stock ledgers. It extracts the blood group, units, facility and clinical indication from unstructured text and scores urgency. It ranks donors by how likely they are to actually arrive in time rather than by distance alone. And it screens for the donation patterns that indicate a commercial or coerced donor. Nothing clinical is automated, and any extraction below 75% confidence is queued for a human coordinator instead of being dispatched.

Can I send a request as a voice note?

Yes — that is the primary way JINI is designed to be used. Call the short code or send a voice note and speak normally in whichever language you are comfortable with. You do not need to know the correct clinical terms or fill in any fields. If the system cannot make out something it needs, such as the Rh factor, it asks rather than guessing.

Our blood bank keeps stock on paper. Do we have to change systems?

No. Photograph the ledger page or whiteboard you already keep and JINI reads it, reconciles it against the previous reading, and publishes the stock to the network. Cells it cannot read confidently, or changes that are physically implausible since the last reading, are held back and flagged for re-capture rather than published as fact.

How do hospitals or blood banks get in touch?

Email hello@jinihq.com. JINI is pre-launch, so we are speaking to hospitals, blood banks and transfusion services about pilot sites rather than signing anyone up. Tell us your facility, your area, and how you currently record stock — a photograph of your existing ledger page is genuinely all the integration we need to start.

Does JINI replace a hospital or a blood bank?

No. JINI routes and notifies. It does not collect, screen, store, test or transport blood, and it is not a clinical service. In an emergency, contact your nearest hospital first — JINI works alongside it, and returns the blood banks holding the required group at the same moment donors are contacted.