How Policy Map works.
Policy Map is a way to see, sector by sector, what every US state is doing with the legislative tools at its disposal. Click a state on the map and you’ll see the bills, laws, regulations, and ballot measures we’re tracking — with thumbs-up / thumbs-down buttons so we can hear which ones matter to you.
Where the data comes from
Policy records flow in from OpenStates, a non-profit that aggregates state-legislature data into a single open API. We pull new and changed records two ways:
- Webhooks for tracked bills — when OpenStates sees a status change, we typically have the update live within a minute.
- Polling fallback every 15 minutes, scoped to an
updated_sincecursor, so nothing slips through the cracks.
Every change we detect produces a revision row: the badge that says “Updated 3h ago” on a policy card is real. Older versions stay on file for forensics if a downstream source ever needs to be replayed.
How sectors and types are assigned
OpenStates tags each bill with broad subjects and a classification. We map them into our own taxonomy with keyword rules — first match wins, falls back to tax for anything ambiguous. The mapping is heuristic, not perfect; we’ll add a human review queue once the import volume warrants it.
If you spot a mis-categorized policy, reply to the report email or open a GitHub issue.
How voting works
- You need an account. Sign-in is a single email link — no password, no tracking. We use your email only to deliver the link and to record your votes.
- One vote per policy. Click ▲ for thumbs up, ▼ for thumbs down. Click again to clear. You can flip your vote any time; only the latest one counts.
- Counts are public; identities are not. The page shows totals and your own current vote. No one else can see who voted which way.
- Rate limit. 30 votes per minute per user prevents abuse. If you hit the limit, take a breath.
What the reports contain
Each Monday at 09:00 UTC we email a weekly summary; on the 1st of each month at 09:00 UTC, a monthly one. The email contains:
- Total votes, distinct voters, and policies touched in the window.
- Top 10 up-voted policies (highest net score).
- Top 10 down-voted policies (lowest net score).
- Top 10 biggest movers — the policies with the most votes either way.
No CSV, no PDF, no spam — just one HTML email per week and one per month, scoped to the previous full Mon→Mon week (or calendar month).
Privacy
We keep your email and a per-policy vote record. We don’t set advertising cookies, we don’t share data with third parties, and we don’t track you across the rest of the web. The session cookie that keeps you signed in is HTTP-only and same-site — it can’t be read by JavaScript and won’t travel to other sites.
Delete-my-data requests: email hello@sierrabonita.co and we’ll remove your votes and account within 7 days.
Open questions
Tracking 50 states + DC is genuinely hard. The category heuristics will miss edges; the importer’s window may be off by a few minutes on the boundary days; the “updated” badge reflects only the changes we detected, not the legislative reality. If any of this matters for a decision you’re making, follow the “Source ↗” link on each card to the originating record.
Colophon
Built by Sierra Bonita. Next.js · Postgres · Redis · BullMQ · d3-geo. Type set in Source Serif 4, Inter, and JetBrains Mono. Map projection: Albers USA Composite from us-atlas.