Capture every public-records request flowing through the 7 jurisdictions. Build an intelligence index, not a compliance tool.
Checking pipeline status…
Premise: what other people are asking for is itself the intelligence. Which lobbyist filed a PRR on which RFP, which reporter is sniffing around which department, which developer is pulling permits on which parcel.
Reality check (May 12): scrapers built and tested for all 4 portal-based jurisdictions. City of Miami NextRequest is the only one actually publishing today — 500 records pulled in the sandbox test (200 Open, 300 Closed, April 20–May 12 window, top departments Police 180 / Fire EMS 59 / City Attorney 34 / Code Enforcement 27). The other three agencies have their public archives disabled or empty at the policy level: Hialeah's NextRequest config has visibility_default = "department_visible" so it exposes zero requests publicly; Miami Beach's JustFOIA returns "Public Portal search is not enabled for guest users"; Coral Gables's JustFOIA is enabled but the archive itself is empty. The scrapers run every 6 hours regardless — the moment any of those three flips a switch, the records start flowing with no code change.
Total captured
0
awaiting pipeline
Last 7 days
—
new requests
Unique requesters
—
tracked
Portals scraped
0 / 5
live adapters
Search the captured catalog
Disabled until state/public_records.json exists and an MCP endpoint exposes it.
City of Miami — NextRequest
Scraper built · publishing
Highest-yield source in the system. 500 records pulled in sandbox test: 200 Open + 300 Closed, top departments Police 180 / Fire EMS 59 / City Attorney 34 / Code Enforcement 27. Note: Miami runs show_requester: false — requester_name is null. Full request body lands in the title field; often contains the signer's name in the closing block.
Same code path as Miami; scraper runs every 6 hours. Hialeah's tenant config has visibility_default = "department_visible" — exposes zero completed requests publicly. Not an auth issue, not a scraper bug; a policy choice on the city's end. Mayor Bryan Calvo signed transparency executive orders Jan 12, 2026 — if those propagate to the portal config, records start flowing automatically.
JustFOIA's public API (POST /publicportal/api/Search) works fine — no auth, no XSRF, plain HTTP. Miami Beach's tenant config has isSearchEnabled: false: the API returns HTTP 400 + body "Public Portal search is not enabled for guest users". Scraper handles that gracefully and exits clean. When the clerk flips the toggle, records start flowing.
Same JustFOIA backend, same scraper code. Coral Gables has isSearchEnabled: true and the API answers — but the archive is genuinely empty. searchResultsCount: 0 for every query, every formId, every date range. The portal exists; nothing's been published into it.
Session-stateful, rate-limited, no public completed-request browser. Passive monitoring is impossible at the request-log level. Workaround: monitor LORIS lobbyist registrations (already covered by lobbyist-watch.yml) plus Commission on Ethics opinions (cao-enrich.yml). For request-level intelligence on Miami-Dade specifically, would need to file standing PRRs ourselves, which is a different posture than passive intel.
Both jurisdictions accept PRRs only via email or PDF form to the City/Village Clerk. No portal, no public log. No passive intelligence available; the only way to see who's asking what would be a meta-PRR ("send me a list of all PRRs filed in the last 90 days"), which itself becomes public record.
1Commit the scrapers — files ready in your outputs folder: public-records-watch.yml → .github/workflows/, public_records.py + justfoia_records.py → scripts/, rename state-public_records.SAMPLE.json → state/public_records.json for the baseline. First cron run produces a real diff against that baseline.
2Add public_records_state MCP endpoint to govt-agenda-mcp Worker — same pattern as dashboard_state. Once live, this artifact's "Total captured" KPI flips from 0 to the real count and the search box becomes live.
3Cross-reference layer — match requester names against the lobbyist catalog (Miami-Dade LORIS + city clerk lists). Flag when a registered lobbyist files PRRs on RFPs you're tracking, or when their PRRs intersect with active client matters. The actual intelligence value lives in the connections, not the raw catalog.
4Standing PRR templates (later) — file PRRs ourselves on Miami-Dade GovQA + the email-only jurisdictions on a quarterly cadence (Mayor/Manager calendars, P-card exports, OIG referrals). Still secondary to passive intel.
What you'd query, once live
"Show me every PRR filed by any registered Miami-Dade lobbyist in the last 90 days" — cross-reference with LORIS
"Who has filed PRRs about the container stacking ordinance?" — for JD's matter
"What records did Miami Herald request from Hialeah this quarter?" — read the press's interest