Meetings Viewer

Meetings Viewer

Inspect scraper JSON output as a browsable, filterable table. Built to cut QA time during scraper development.

Repo
city-scrapers-meetings-viewerthe Next.js app and docs you are reading

Meetings 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