True Cover planner on a satellite map of Namialo: four colour-coded squad routes of six spray areas each leave the health centre, beside the field plan for each squad
True Cover planner on a satellite map of Namialo: four colour-coded squad routes of six spray areas each leave the health centre, beside the field plan for each squad

Case Study

True Cover Agent

An AI agent that plans field work to close gaps in coverage, and knows when to involve people.

Quick Take

Objective

Health programs miss the households they never counted. A survey, a vaccination campaign or a spraying round has limited teams, days and supplies, and someone has to decide which doors they knock on.

Execution

Extended True Cover, a coverage algorithm from Ona and UCSF, into a larger program in 2020, then reconstructed it in 2025 as an agent that plans field rounds and prices every trade-off.

Results

An undeployed concept, and a guideline for AI agent design: the agent makes recommendations with the right context, then a person makes the decision.

I

Problem

Health programs run on coverage: the share of children vaccinated, or of households given bednets or sprayed against malaria. A district that vaccinates 900 of 1,000 children reports 90%, but if 1,100 children actually live there, it is 82%. The missing children live in the communities nobody counted, which makes them high risk.

True Cover started in 2019 when Ona worked with UNICEF and UCSF epidemiologists for measles and immunization coverage: satellite imagery can supply the household list. A model finds rooftops, health workers visit a sample, and True Cover predicts coverage everywhere, then sends teams where it is least confident.

Back then, we did planning using an algorithm and computer vision. In 2025, my work was extending it into a larger program. I worked on a concept for planning with an agent, now a working prototype. The agent drafts a plan in seconds, and that speed created a design problem: something an agent produces looks polished, but that doesn't mean it is correct.

II

Approach

A chat beside a map

I designed a UI to be a conversation between the program manager and the agent, with important context and course correction at vital steps. The agent works the same way for any round: it reads the structures from imagery, groups them into areas, ranks the areas by need, and fits the plan to the teams, days and supplies available. The prototype's example is an indoor residual spraying round for malaria in Namialo, Mozambique. Spraying only protects an area when most of its houses are treated, so the agent has to choose fewer areas and cover them well. A measles survey or a bednet distribution changes the unit of work and the target, not the flow.

For the concept, the program manager types a request in plain language such as “IRS round for Namialo. Four squads, seven days, 220 bottles of pirimiphos-methyl.” The agent shows a map of the 1,840 structures it found in 115 spray areas, and proposes 24 areas that fit the insecticide and leave a day for mop-up. I designed for the moments when the agent stops drafting and waits on a decision from the program manager.

Asking which boundary is correct

The program manager replies “24, keep the mop-up day. But skip the flood areas.” The agent has two boundaries that could mean that: the north bank of the Monapo river drops 228 structures, and the mapped 2019 flood extent drops 311. The agent asks which one should be used since it's a method question, and previews each option on the map.

Spray planner asking whether “the flood areas” means north of the Monapo river or the 2019 flood extent, beside the map before and after the north bank is set aside
Showing the work

A program manager who signs off on a plan needs to see how the agent built it. So, while the agent builds the plan, it lists each step: structures read, last season's cases joined, areas ranked. A Stop button sits beside the list, and a user can keep asking questions while it works.

Plan 4 computing in three steps, structures read, cases joined and areas ranked, with a Stop button, beside the map setting aside 228 structures north of the Monapo
Getting help from a human

There are some calls the agent may assign low confidence. In the example, the agent proposes a plan with caveats: five roofs from the imagery are low confidence. Each one opens the satellite tile, the reasons the model doubted it, and three calls: keep, remove, or send it to the squad leader. When the program manager removes a roof, the agent reevaluates the plan.

Satellite evidence for a low-confidence roof in the Mecuburi forest block with three calls for the program manager, beside the agent repricing the plan to 383 structures after the roof is removed
Showing the cost of a request

The user asks whether the squads can spray the whole locality. The agent shows the arithmetic: 1,612 structures at 64 a day takes 26 spray days, and 806 bottles against 220 in stock. So it can offer alternative plans if the program manager is willing to increase days or change other variables. Whatever the plan, work spread too thin can't protect or measure anything.

Arithmetic showing why the whole locality does not fit, 26 spray days and 806 bottles against 220, with two trades and a warning against spreading the spray too thin, beside plan 4 on the map
A person signs off

The agent can't approve a plan. The program manager's approval locks plan 4, revision 5, and records their name and the time against it. Any later change starts a new revision that needs approving again.

Plan 4 summary with 24 spray areas, 384 structures and 192 of 220 bottles waiting for approval, beside the same plan approved by the program manager
The plan becomes squad-weeks

Once approved, the agent splits the 24 spray areas into four squad-weeks from the Namialo health centre, six areas each, one a day from Monday to Saturday. Locked and absent houses go on a mop-up list for the following Monday.

Squad board on a satellite map of Namialo, with four colour-coded squad routes of six spray areas each leaving the health centre, beside the field plan for each squad
Staffing the squads

Supervisors put eight spray operators on four squads. The roster shows the languages each person speaks, since every household has to agree before anyone sprays. Auto-assign fills the empty slots, pairs Emakhuwa speakers with the squads whose areas need them, and explains what it did.

Spray operator roster with languages spoken, two squad weeks with roofs still to check highlighted, and a staffing bar explaining what auto-assign did
On a spray operator's phone

The field app follows a spray operator on Squad 1. Before leaving, the operator sees today's plan: 16 structures with 14 needed for 85%. At each structure, the app asks whether people sleep there, because the roof model found it from satellite imagery and nobody has checked it on the ground.

Field app screens for a spray operator: today’s area before spraying, spray area coverage at 44%, and a check asking whether people sleep in a structure
Correcting the map offline

When the operator removes a household, the area's target updates to 13 of 15. The app says how many more refusals the area can take before it falls short. Every result waits in a queue until the phone finds signal, and each correction goes back to the planner. That is the loop True Cover started with: what teams find in the field updates the model, and the next round goes where it is least sure.

Field app after a structure is removed as an animal pen, showing 13 of 15 needed for 85%, beside the queue of results waiting to upload offline
Click through the whole flow

The prototype runs from the first request to the plan landing on a spray operator's phone.

III

Outcome

WHAT THE CONCEPT PRODUCED
SCALE

1,840 → 384

Structures read from satellite imagery, narrowed to the 24 spray areas four squads can cover in a week in the example round
HAND-BACKS

4

Moments the agent stops: an unclear boundary, doubtful roofs, a request that won't fit, and final approval
PLAN

4 squad weeks

Six spray areas each, sent offline to squad tablets and phones

True Cover lost its funding before it gained traction in the field, so the figures above describe the design.

“The assistant never approves the plan. A program manager does.”

Before True Cover: Aleena, 2016

Aleena bot, 2016

In 2016, I designed the flow for a Telegram app bot named Aleena, which captured health data one value per turn and posted them into OpenMRS and OpenSRP. It could only read commands, so the numbered command menu was the whole interface.

Aleena on Telegram in 2016: the numbered command menu after /start, the menu showing captured values for pulse and weight, and a child’s vaccine card returned for ID 10021

Left to right: /start returns the command menu; answered commands show their value in the menu; a vaccination ID brings back the child’s vaccine card.

Aleena bot, 2026

In 2026, I redesigned the same visit with a language model doing the parsing. The health worker types “last Tuesday” and Aleena reads it as Tuesday, 13 October 2026. One message fills four fields and a progress message shows what is still needed. It was fun to look at what changed and what stayed the same, but it still used the same principle of narrowing what the system must decide to the goal of the session.

Aleena prototype in 2026: one typed message read into blood pressure, weight, pulse and risk symptoms; a fundal height of 72 cm flagged as not fitting 28 weeks; and a treatment question handed to the clinician with three raised blood pressure readings

Left to right: one message fills the whole visit; a reading that can’t be right for 28 weeks is checked once; a treatment question goes to the clinician with her blood pressure history. Try the 2026 prototype.

What I Learned

Drafting a plan is the part a model does well, whatever the round is for, though the agent needs to be stopped so the method can match the goals. I've learned designing an agent means listing the decisions a person should be involved in and focusing on those screens first.

Team

2 epidemiologists, 1 account manager, 1 ML tech lead

Role

Product Designer

Expertise

AI / Concept / Design

Highlight

An agent that displays the tradeoffs and waits for signoff.