DRAFT / CIVIC STACK
How another town could copy this.
Draft, checked November 3, 2026. This is a practice page for El Segundo and the officials who represent it. It is not a finished kit. Not an official City of El Segundo page.
Data sources
- City meetings: the city clerk's agenda and minutes publisher. El Segundo uses Granicus. If a minutes cell is empty, leave the vote unavailable.
- State bills: leginfo.legislature.ca.gov status and votes pages. Quote the aye list before saying a member voted aye.
- U.S. House: clerk.house.gov roll-call XML. Congress.gov is the companion index.
- Who represents the town: confirm districts with the county GIS identify service at a point inside the city. Do not copy El Segundo's district numbers onto a neighbor.
Cities inside about 25 miles, not built yet, are listed in the repo note docs/CIVIC-RADIUS-SOURCES.md and summarized below.
Schema
One JSON file, bills.json. Each item has an id, body, title, date, status, stage, official votes, floor totals, and source quotes with a checkedAt date. Representatives live in officials.json. A signal target is rep: or bill: plus that id.
MCP
The read-only server is https://elsegundo.xyz/mcp. get_representatives returns the officials file. It does not record signals and it does not send mail.
Signals
Support, Oppose, and Question are anonymous taps stored as counts in the site's existing analytics blob store. The label on every card is: "Signals are unverified, anonymous tallies, not a petition or poll, and are not sent to officials." Official contact buttons stay next to the taps. There is no account. The endpoint is GET and POST /api/v1/signals.
Privacy
No names, emails, or IP addresses are stored with a tap. There is no per-person dedupe, because that would require an identifier. A daily cap limits how many taps one target can take. Missing votes stay unavailable. The page does not grade officials.
Next towns
Start with each city's clerk. Confirm the Assembly, Senate, and House districts before copying a member. Manhattan Beach, Hermosa Beach, Redondo Beach, Torrance, Hawthorne, Lawndale, Gardena, Inglewood, and Culver City are the first ring to check. Their districts are not filled in on this draft.