Meetings Viewer
Inspect scraper JSON output as a browsable, filterable table. Built to cut QA time during scraper development.
city-scrapers-meetings-viewerthe Next.js app and docs you are readingMeetings Viewer
The Meetings Viewer turns raw Scrapy JSON into a browsable, filterable table. It exists to speed up the most repetitive part of scraper development: checking that your output is correct, field by field.
What it does
- Loads JSON files from
data/scrapers/in the repo. - Renders each meeting record as a row in a data grid.
- Highlights duplicates, missing fields, and status inconsistencies.
- Lets you filter by classification, status, date range, and free-text search.
Status values
Meeting records use four status values. These are rendered with the real component used in the app:
passed - the meeting happened or was confirmed.
cancelled - the meeting was cancelled.
tentative - the meeting is planned but not confirmed.
confirmed - a newer vocabulary member; upcoming and confirmed by the source.
The status legend above is rendered with the actual StatusChip component
from the app, not a screenshot. If the component changes, this page updates
automatically - the "live component" pattern described in the docs platform
research.
Where the data comes from
The viewer reads from data/scrapers/<spider-name>.json. Each file is the
output of a scrapy crawl <spider> -O data/scrapers/<spider-name>.json run.
The file format is a JSON array of meeting records matching the
schema.
The filename without .json must match the spider's name attribute - it
becomes the slug in the viewer's URL: fortx_council.json is served at
/scrapers/fortx_council.
Next steps
- Quick start - load your scraper output and start reviewing.
- Architecture - the two modes, data shapes, and the invariants both share.
- QA rubric - the field-by-field checks to apply.
Last updated on