Methodology

What we scan, what counts as an opportunity, and how we stay honest

Local government data is public but painful. Here's exactly how we turn it into source-linked vendor leads — and the one rule we never break.

Data window: Legistar pull 2026-06-11 · last-30-day window

Sources we scan

We pull city-council matters and agenda items from the public Granicus Legistar Web API (webapi.legistar.com/v1/{city}/Matters) — the same records the city itself publishes on its Legistar site. The API is public and token-free for the cities we use. We identify with a User-Agent and rate-limit our requests.

Current live metros (HTTP-200, token-free as of the 2026-06-11 pull): Oakland CA, Seattle WA, Mesa AZ, Alameda CA, Philadelphia PA. Every rendered item links back to the city's own LegislationDetail.aspx record so you can verify it independently.

What counts as an opportunity

An agenda item becomes an opportunity when it matches a vendor category by keyword and carries a meaningful procurement or budget signal. Categories we score: civil engineering / public works, facilities, IT & cybersecurity, software/SaaS, professional services, security services, staffing, and web/civic-tech.

Each item gets an opportunity score (category match + budget/procurement signals like "not to exceed", "RFP", "contract", "authorize") and an urgency read (NOW / SOON / WATCH). We classify whether it's award intel (a contract already going to a named prime — useful as subcontracting intelligence) or pipeline (upstream signals like a capital budget or a new build — forward-looking leads).

The no-padding rule

Never pad. A 5-item real pack beats a fake 10-item report. Every item must have a source link and freshness label.

This is verbatim from our compliance/quality rule. The pack generator refuses to invent rows to hit a target count — it renders exactly the items that match. The Oakland civil-engineering pack is 5 items because the data has 5 real items; it is not stretched to 10.

Freshness label convention

Two timestamps matter and we show both. The data window is when we pulled the records (the Legistar pull date, currently 2026-06-11, over a last-30-day window). The per-item freshness label is computed from the item's meeting date relative to today:

LabelMeaning
Meeting is TODAY / in ≤7dImminent — act now
Meeting in 8–21dSoon — on the near horizon
Meeting in >21dWatch — track toward the date
Meeting was Nd agoPast meeting — context / award already landed

No item appears without a meeting date and a freshness label. If the date is unknown it is labeled as such — never hidden.

Next wedges we're testing

From the same 200-item live dataset, here are the honest densities of the next-best wedges (full analysis in reports/adjacent_wedge_density_2026-06-13.md). No (metro, category) pair reaches 10 in this window — max density is 5.

WedgeReal countStatus
Oakland, CA — civil engineering5Live (densest pair)
Oakland, CA — staffing4Next to test (same metro, distinct buyer)
Seattle, WA — engineering3Second test (proves the playbook ports to a new metro)
Alameda, CA — facilities3Bay Area neighbor candidate

Recommendation: Oakland / staffing (count 4) is the best next wedge — highest adjacent density, zero new fetch cost (Oakland is already pulled), and a distinct, reachable buyer (staffing/recruitment firms placing into municipal roles). Note: the brief guessed "Mesa/facilities=3", but the real count is Mesa/facilities=2; the actual 3-count facilities wedge is Alameda. We report the real number.