Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.axiomancer.io/llms.txt

Use this file to discover all available pages before exploring further.

The ZBA Decisions dashboard is a cross-jurisdiction search surface over Locus’s normalized Zoning Board of Appeals catalog. Use it to find variance and special-permit outcomes by jurisdiction, case number, address, decision date, or outcome — and to pull a filtered set as CSV for entitlement, due-diligence, or land-use research. The page lives at /zba-decisions inside the Locus app and is backed by GET /api/zba-decisions/search.

Coverage

The catalog covers four ZBA jurisdictions, ingested from a mix of structured open-data portals and PDF-based agendas.
Jurisdiction slugSourceIngestion type
nycNYC Open Data (Socrata)Structured API
phillyOpenDataPhilly (Carto)Structured API
chicagoCurated jurisdictional feedsStructured + PDF
bostonCurated jurisdictional feedsStructured + PDF
NYC and Philadelphia run on dedicated upstream API collectors so refresh cadence matches the underlying portals — typically daily for NYC Socrata and several times per week for Philly Carto. Chicago and Boston are sourced from a mix of structured feeds and PDF-decision parsers, so cadence varies by hearing schedule.

When to use it

Reach for this dashboard when you need to:
  • Triage entitlement risk for a target site by reviewing recent variances on adjacent parcels.
  • Track outcome rates (Approved / Denied / Granted with Conditions) for a specific variance type or jurisdiction.
  • Pull a date-bounded set of decisions into a CSV for diligence binders or model training.
  • Click through to the original decision document on the source jurisdiction’s portal.

Filters

Every filter narrows the result set on the server side and resets pagination to the first page.
FilterDescription
JurisdictionOne or more of chicago, boston, nyc, philly. Multi-select.
Case # or addressSubstring match (ILIKE) against either case_number or address — use the same input to search by either.
OutcomeExact match — one of Approved, Denied, Granted, Granted with Conditions, Pending, Withdrawn.
Variance typeSubstring match against variance_type (for example, use, bulk, setback, parking).
Date from / Date toInclusive bounds on decision_date. Either bound is optional.
A Reset filters link clears every active filter; it appears only when at least one is set.

Sorting and pagination

ColumnDefaultNotes
Decision Date (decision_date)DescendingThe default sort — most recent decisions first.
Occurred At (occurred_at)Upstream event timestamp.
Jurisdiction (jurisdiction_slug)Alphabetical.
Click any column header to sort by it; click again to flip direction. Results paginate at 50 per page.

Result columns

Each row corresponds to one ZBA decision:
  • Case # — the upstream case or docket number.
  • Jurisdiction — normalized jurisdiction slug.
  • Address — subject-property address as reported.
  • Variance type — truncated to 40 characters in the table; full text available via the API.
  • Outcome — color-coded badge (green for Approved / Granted, red for Denied, amber for Granted with Conditions, blue for Pending).
  • Decision Date — locale-formatted.
  • External-link icon — opens the decision’s source_url (the original portal record or PDF) in a new tab. Shown only when a source URL is present.

Export

Click Export CSV to download the currently visible page as zba-decisions.csv. The export honors active filters and sort, and includes: Case Number, Jurisdiction, Address, Variance Type, Outcome, Decision Date, Conditions (conditions truncated to 200 characters).

API

GET /api/zba-decisions/search

Returns a page of normalized ZBA decisions, plus the total count for the active filter set. Query parameters
ParameterTypeDescription
jurisdictionsstringComma-separated jurisdiction slugs (e.g. nyc,philly).
case_qstringSubstring matched against either case_number or address.
outcomestringExact match — see allowed values above.
variance_typestringSubstring match against variance_type.
date_fromstringInclusive lower bound on decision_date (YYYY-MM-DD).
date_tostringInclusive upper bound on decision_date (YYYY-MM-DD).
sort_bystringOne of decision_date (default), occurred_at, jurisdiction_slug.
sort_dirstringasc or desc (default).
limitnumberPage size. Default 50, capped at 200.
offsetnumberZero-based offset. Default 0.
Response shape
{
  "decisions": [
    {
      "source_key": "nyc:2024-0123",
      "jurisdiction_slug": "nyc",
      "source": "nyc-socrata",
      "source_url": "https://data.cityofnewyork.us/...",
      "case_number": "2024-0123-BZ",
      "decision_date": "2026-04-12",
      "variance_type": "Use variance — eating and drinking establishment",
      "outcome": "Granted with Conditions",
      "conditions_text": "Subject to operating hours of 7 AM–11 PM…",
      "address": "123 W 14TH ST",
      "decision_text": "The Board grants the application…",
      "occurred_at": "2026-04-12T00:00:00Z",
      "ingested_at": "2026-04-13T05:00:00Z"
    }
  ],
  "total": 312,
  "limit": 50,
  "offset": 0
}
Example
Recent denials in NYC and Philadelphia
curl 'https://app.axiomlocus.io/api/zba-decisions/search?jurisdictions=nyc,philly&outcome=Denied&date_from=2026-01-01&limit=100' \
  -H 'Cookie: <your session cookie>'
The endpoint requires an authenticated Locus session; unauthenticated calls return 401 Unauthorized.

Business licenses

Search normalized business licenses across U.S. metros.

Explorer

Cell-level scoring that incorporates zoning and entitlement signals.