Preserve: Evidence Collection for the Web
Preserve is a browser extension that captures a web page as evidence and files it straight into Uwazi. I designed it at Huridocs, where I led design on Uwazi from 2021 to 2025, working with a PM and three engineers. A month to get an alpha into the Chrome Web Store, two more to design the version that would be worth defending in court. The problem it solves is narrow and unforgiving: a post that will be deleted tomorrow has to be captured today, in a way a judge will still accept in three years.
- Role
- Lead UX/UI Designer
- Team
- PM, 3 Engineers
- Timeline
- 1 month (Alpha development) + 2 months (V1 design)
- Tools
- MindNode, Figma, Browser DevTools
A screenshot is not evidence
An investigator watching a government official post something incriminating has a window of hours. The post will come down. What they usually do is take a screenshot, drop it in a folder, and write the URL in a document somewhere.
That screenshot is worth very little later. Anyone can produce a convincing PNG of a tweet that never existed, so a screenshot proves nothing on its own about what was on the page or when. What makes a capture hold up is the boring material around it: the full response, the headers, the timestamp, a hash computed at capture time that would change if a single byte moved afterwards. None of which an investigator wants to think about at the moment they see the post.
Tools that got this right existed and were built for forensics teams, so they assumed a technical operator and a chain of custody process. Tools that were easy enough for the actual users were just screenshot utilities. And neither put the result anywhere near Uwazi, so the evidence still had to be carried by hand into the case it belonged to.
Information architecture diagram showing the flow of the Preserve extension.
Everything hard happens once
I spent the early part of this talking to people who deal with admissibility for a living, because I did not know what a court would want and guessing was not an option. What came back was more forgiving than I expected on format and much stricter on provenance. Nobody cares whether the capture is a PDF or a WARC. Everybody cares whether you can show it has not been touched since the moment it was taken.
That let me put all of the difficulty in one place. The extension does the rigorous thing every single time, without asking, and the person capturing never chooses a format, a verification level, or a storage location. Configuration invites a wrong answer under pressure, and the pressure here is a post that is about to be deleted.
Full presentation of the V1 flow and design, and MVP.
So the extension is one button, and the design work went into the two places where it is not that simple. The first is pairing: the extension has to know which Uwazi instance the evidence belongs to, and these are self-hosted installations held by organizations who are appropriately paranoid. It pairs once with a token generated inside Uwazi, and never asks again.
The second is failure. Captures fail, and they fail most on exactly the pages that matter, the ones behind logins or built entirely in JavaScript. A capture tool that fails quietly is worse than no tool, because the investigator walks away believing they have the evidence and finds out months later that they do not. Every capture reports back plainly whether it worked, and if it did not, the page is still there to try again.
Preserve extension full flow mockup.
Preserve setup with a generated token, between Uwazi and the browser extension.
Capture status indicators showing success or failure within the extension.
Where it actually stands
The alpha is in the Chrome Web Store and it works. Investigators capture pages and the captures land in Uwazi attached to the right case, which is the part I most expected to break and did not. The V1 I designed after it, the one with the status reporting and the wider content support, is designed and not shipped. I am not going to claim outcomes for a version that does not exist yet.
Chrome Web Store listing for the Preserve extension.
Integration with Uwazi, showing how the extension captures evidence and syncs with the platform.
Preserve extension capture and how it's shown in Uwazi.
The smallest thing I have built
Preserve is the smallest thing I have designed and the one I think about most. There is almost no interface to it, and that is the whole point: everything difficult was pushed behind a single button so that the person using it, at the worst possible moment, cannot get it wrong.
It also taught me to design for the failure before the success. The status reporting is the feature. A capture tool that misses sometimes and tells you exactly when is useful. A slightly better one that stays quiet about its misses is a liability, and you find out which of the two you built years later, in front of a judge.
Huridocs | 2021-2025