Validation
How to keep bad data out of a product without slowing down the person adding good data. Drawn from Spotta, where every review belongs to one of 1,590 street records.
Check data before it goes live. When the system isn’t sure, it flags, and a person decides.
Before and after
OSM boundary · IkejaAllen Avenuerecord 1OSM boundary · OpebiAllen Avenuerecord 2
IkejaAllen Avenue1 record, 1 pageFlagged resolved imported
Where the checks run
- Source
OpenStreetMap
- Flag
Duplicate check
Machine - Decide
Manual resolution
Person - Import
Admin dashboard
Machine
The tool is fast at finding candidates. Whether two records are one street needs someone who knows the area. What came out the other end is live today: 1,590 streets across 28 neighbourhoods.
Try it
Bulk import · no sheet yetAdmin dashboard
- Upload
- Review
- Import
On your desktop
Drop streets.xlsx here
No sheet yet. Drop one in to start.
What gets checked
| Check | When | Found by | Decided by |
|---|---|---|---|
| Same street under two areas | Before import | The duplicate tool | Me |
| Missing name, area or LGA | On import | The admin dashboard | Whoever is importing |
| URL slug | On import | The admin dashboard | Nobody. It’s generated. |
Rules
- Check records before they go live, not after people have started using them.
- Let the machine find candidates. Let a person make the call.
- Name the row and the field: “Row 4: LGA is missing.”
- Generate what can be generated. Slugs are never typed.
- Merge on a name match alone. Two streets in one city can share a name.
- Report “1 error” without saying where it is.
- Let half-checked data reach the live site.