Research · Public health · Mobile
COVID contacts tracker
A proof of concept for contact tracing on the phone: keep fourteen days of location history on the device, upload only after a confirmed diagnosis, and warn people who shared a place and a time with someone who later tested positive.
Context
In the first months of the pandemic, breaking the chain of transmission still meant interviews and memory. Phones already knew where they had been. The question was whether that history could warn contacts without turning a public-health tool into a surveillance product.
What we built
A cross-platform app that records the last fourteen days of locations locally as JSON. Nothing is sent unless the user is confirmed infected. Everyone else sees a map of places visited by confirmed cases and is notified if their own local history overlaps in space and time.
Outcome
The prototype was presented about three months after the start of the global pandemic, at ZINC 2020, and published by IEEE. It was a design for epidemiologists and for individuals — and a claim that the same pattern could apply to other contagious disease, not only COVID-19.
How tracing works
The app runs in the background and writes places to a file on the phone. Opening it shows a map of locations reported by confirmed patients, drawn from the server. The device compares that set with its own file. A match — same place, same window of time — produces a notification. The point is not to identify a person. It is to tell someone they may have been exposed, early enough to isolate.
A confirmed diagnosis is the only moment data moves off the device, and it depends on the user (or a clinician they trust) choosing to send the file. The paper is explicit that the system only works if that social contract holds. There is no covert upload of a healthy user’s history.
Privacy and the stack
Local-first storage is the privacy design, not an afterthought. The server holds anonymised locations of confirmed cases so that other devices can test for overlap. It does not hold a social graph of everyone the app has ever seen.
The implementation stayed on a small web stack — HTML, CSS, JavaScript, PHP and MySQL, without a heavy framework — plus a maps API for the visualisation, geocoding for coordinates, and charts for case statistics. The constraint was time: a demonstrator that could be explained, not a national deployment.
What it was for
Two users at once. A person who wants to know if they crossed paths with an infection. A public-health workflow that needs contacts faster than manual tracing can produce them. The write-up treats both, and argues the same machinery is not COVID-specific: any outbreak where location and time are the exposure model can reuse it.