back

Uwazi ML

Uwazi learned to read its own documents. Every suggestion is something a researcher can accept or reject.

The pile

A human rights case arrives as paper: court filings, testimony, government responses, scanned letters. To be useful in Uwazi it has to become structured data, and somebody has to read every page and type it in. Organizations with far more documents than staff could not afford extraction scripts, so the archive was always behind the cases that needed it.

Information Extraction and Paragraph Extraction let a researcher train a model on their own documents and pull fields out of thousands of PDFs without writing code. I designed the part people touch: teaching the model what to look for, and deciding what to do with what it found.

Designing for disagreement

Accuracy was never the design problem; trust was. An archive that quietly fills itself with plausible wrong values is worse than an empty one, and a wrong date on a filing can sink a case. So every suggestion shows its page with the passage highlighted in place, nothing is written on the model’s say-so, and a researcher accepts, corrects, or throws it out. The correction is what the model learns from next.

A researcher sets up an extractor by pointing at the property they want filled and labelling a handful of documents by hand. No model selection, no parameters: the labelling is work they already did, and now it is also the training data.

Information extraction dashboard mockup.
The information extraction dashboard, a mockup.
The information extraction and paragraph extraction workflow as a diagram.
Information extraction and paragraph extraction, as one workflow.
The information extractor interface with AI suggestions and user controls.
The extractor, with the controls to accept or reject.
The modal for configuring an information extraction model.
Configuring an extractor.
The interface for labelling and updating suggestions over a PDF.
Labelling suggestions over the PDF.

Two extractors

There are two shapes of question people ask a pile of documents. Information Extraction pulls a value into a field: a date, a court, a name. Paragraph Extraction pulls a passage out and keeps it whole, for when you need a paragraph of testimony rather than a value.

There was no usability lab. Features went out to real installations in small pieces, and the feedback came back as bug reports from people with live cases open: slower to read than a test session, and harder to argue with.

The modal for creating a paragraph extractor.
Creating a paragraph extractor.

picture The suggestion interfaces, before and after.

The AI suggestion interfaces, before and after.
The suggestion interfaces, before and after.
Paragraph extraction: the dashboard, the entity and the document extraction interface.
Paragraph extraction: the dashboard, an entity, a document.

In use

Both features are in Uwazi today. Researchers with no technical background train their own extractors on their own documents, which was the whole bet. The lesson I keep: the work in an ML feature is the few screens where a person decides whether to believe it, and design for their expertise, not their tooling.

A PDF document with AI-suggested information highlighted, and user controls for updating the selection.
A suggestion shown on its page.

picture Choosing the source template for a paragraph extractor.

The source template selection modal for paragraph extraction.
Choosing the source template for a paragraph extractor.