Spec §5 · UI lane · wireframes + contract

Legislative Dashboard — Design deliverables

The UX design for the anonymous + personalized California-legislature dashboard. One surface, two personas: anonymous sees a chronological overview of upcoming legislation; logged-in users set a ZIP → find legislators → watch them + opt into topics, and matching bills float to the top. This is the design a backend/frontend engineer implements — not the build itself.

Read first

DESIGN_DASHBOARD.md — the design Information architecture, the two flows (anonymous vs. logged-in), the "float to top" ranking model, the "upcoming" definition, layouts, all six empty states, the ZIP→legislator resolution model, and the visual/interaction system. design/DESIGN_DASHBOARD.md API_CONTRACT.md — what the UI consumes Shared JSON shapes (bill list, watched-legislator / preference blob, tag cloud, ZIP-district resolve, error envelope) so the build, correlation, and LLM lanes share one contract. Auth-agnostic, field-name-stable, degradeable. design/API_CONTRACT.md

Wireframes (open in a browser)

01 · Anonymous dashboard Chronological "upcoming legislation" queue grouped by day, personalization-lite filters (no login), a non-annoying "unlock" affordance that names the value, top-topics teaser. design/wireframes/anon-dashboard.html 02 · Logged-in dashboard The floated "Relevant to you" band with meaning-cued indicators + "why is this here?" transparency, the ZIP-setup empty state (with all four resolve outcomes), and live watch/opt-in toggles that re-rank. Top toggle switches between personalized / setup / anon states. design/wireframes/logged-in-dashboard.html 03 · Watch / opt-in controls Every control and every state (default, checked, focus, disabled, pending) for legislator-watch toggles and topic opt-in chips, plus the zoomed-up legend for the float-reason indicators. design/wireframes/watch-and-opt-in-controls.html

Open decisions (for the orchestrator / owner — not silently assumed)

D1 · Auth method. D2 · ZIP vs. full address as the primary input + data-source provenance/freshness. D3 · Ranking weights.