About · Methodology

How this site is built.

West Loop Vibe is a citation-based neighborhood index. Every business, event, transit stop, and food-inspection record is pulled from a public dataset and refreshed each week. There are no opinions, no rankings, no reviews. This page documents how it works — what's in the data, what's not, and how to correct anything that's wrong.

The citation rule

Nothing appears on this site without a verifiable public source. The build fails outright if a business or event record is missing a source URL and a retrieval date. This isn't aspirational — it's enforced by the schema in src/content.config.ts, and a typo in a citation will break the deploy. The rule has one practical consequence: if you can't find something here, it usually means the source dataset doesn't have it yet, or it's outside the City's West Loop classification.

Where the data comes from

Eight public data sources feed the site. They're arranged in tiers, with later tiers only filling gaps — never overriding — what earlier tiers already say:

  1. Business listings — every active license tagged neighborhood = "WEST LOOP" in the City of Chicago Business Licenses dataset (uupf-x98q). Deduplicated by location so a single storefront with three license types appears once.
  2. Phone numbers, websites, opening hours — pulled from OpenStreetMap contributors via the public Overpass API. Matched to City records by name similarity and proximity. About 13% of businesses get at least one OSM field — mostly consumer-facing places that someone has bothered to map.
  3. Tagline, description, menu and reservation links, founding year, and a handful of curated facts — paraphrased from each business's own public website. This is the only tier that involves human writing, and the writing rule is strict: it can only restate what the business's own site says, with the source URL and verification date recorded alongside.
  4. Park events — from the Park District Event Permits dataset (pk66-w54g), filtered to Mary Bartelme Park, Skinner Park, Adams Playground, and Union Park; approved permits only.
  5. Citywide events that fall in West Loop — from the Special Events dataset (xgse-8eg7), geo-filtered to the West Loop bounding box.
  6. CTA L stations and bus stops — from the List of 'L' Stops (8pix-ypme) and CTA Bus Stops (qs84-j7wh).
  7. Food inspections — from the Food Inspections dataset (4ijn-s7e5), bbox-filtered, joined to businesses by license number. The most recent five inspections appear on each food business's page.
  8. Map tiles — from OpenFreeMap, with data from OpenStreetMap contributors. Free, no API key.

The refresh cadence

A scheduled job runs every Monday morning at 8 AM Chicago time. It re-pulls all of the City datasets, re-runs the OpenStreetMap match, regenerates the audit documents, and redeploys. The full refresh takes about ten minutes. Failures notify the maintainer through a macOS notification; if no notification arrives by Monday afternoon, the deploy went through.

The hand-curated enrichments (tier 3 above) are added in batches at irregular intervals. Each enrichment carries its own verified_at date, and a re-verification queue surfaces anything older than six months for a fresh check.

What the site won't do

Several things that other neighborhood guides do are off the table here, deliberately:

The closure mechanism

When a business closes for good, its page doesn't disappear — bookmarks and inbound links still resolve, but the page renders as a "permanently closed" notice with the source URL that verified the closure. Closed businesses are removed from the directory, the map, the category pages, and the sitemap; the standalone page stays as a quiet archive. The current closure log is on the corrections page.

When OpenStreetMap is wrong

OpenStreetMap powers the phone numbers, websites, and opening hours on about 13% of business listings. Sometimes the OSM record is stale or incorrect — a since-changed phone number, an old website, a closed business still tagged as active. When a curated enrichment surfaces one of these, the case is logged in an internal OSM-edit queue. Some of those edits are then made upstream on OpenStreetMap itself, so the correction propagates to every other site that uses OSM, not just this one. The queue lives at audit/osm-edits.md in the project repo and is mirrored on the corrections page.

How to correct something

Because every fact on this site is sourced from a public dataset, the most durable way to fix an error is to fix the source — the correction then flows back here on the next Monday refresh.

The schema strategy

Every page emits machine-readable JSON-LD describing what's on it. Each business uses a specialised schema.org type — Restaurant, Hotel, BarOrPub, BeautySalon, SubwayStation — rather than the generic LocalBusiness, so search engines and AI overviews understand what kind of place it is. Events emit Event schema with a partial Offer for ticketed events. The whole site is knit together by a stable entity graph — one Organization, one WebSite, one Place for the West Loop, one Person for the editor — and every page references those by stable @id. The result: a crawler can build a coherent picture of the site from a single page visit.

What's open-source about this

The site's code is MIT-licensed (see LICENSE-CODE in the project repository). The site's content — page copy, headings, prose — is CC BY-NC 4.0 (see LICENSE-CONTENT). Third-party data retains its original license, attributed where used. The project repository will be made public once a few internal infrastructure details are scrubbed.

What changed recently

Page-level dateModified values on every business and event reflect when the source data was last refreshed; sitewide dateModified reflects the latest source retrieval across all data. The Monday refresh log is internal; the visible corrections page covers content changes the weekly refresh doesn't capture (manual closures, OSM-edit submissions, page restructures).

Questions or doubts

If a fact on this site looks wrong, follow the correction steps above — that's the fastest path. If something about the methodology itself is unclear or feels off, the maintainer is reachable through the project repository once it's public. In the meantime: every claim on every page points to its source, and the source is the authoritative answer.