Files
PocketVeto/ROADMAP.md
Jack Levy a96bd024e9 docs: v1.0.0 — full documentation update
- ROADMAP.md: mark all v0.9.8–v0.9.10 items shipped; Phase 4
  accountability features complete; v1.0 criteria all met; update to
  reflect current state as of v0.9.10
- DEPLOYING.md: add SMTP/email section, ENCRYPTION_SECRET_KEY entry,
  fix OPENAI_MODEL default (gpt-4o → gpt-4o-mini), add pocketveto.org
  reference
- UPDATING.md: replace personal git remote with YOUR_GIT_REMOTE
  placeholder for public deployability
- ARCHITECTURE.md: add member_scores table, alignment API, LLM Batch
  API, email unsubscribe, bill tab UI, topic tags constant, Fernet
  encryption pattern, feature history through v0.9.10

Authored by: Jack Levy
2026-03-15 01:10:52 -04:00

8.2 KiB
Raw Permalink Blame History

PocketVeto — Roadmap

Consolidated feature roadmap and release history. Shipped items reflect what is live as of v0.9.10.


Shipped

Foundation & Core Pipeline

  • Docker Compose stack — PostgreSQL, Redis, FastAPI, Celery, Next.js, Nginx fully containerized
  • Bill polling — Congress.gov incremental sync, filtered to legislation that can become law (hr, s, hjres, sjres)
  • Document fetching — GovInfo bill text retrieval with smart truncation for LLM token budgets
  • LLM analysis — multi-provider AI briefs (OpenAI, Anthropic, Gemini, Ollama) with amendment diffing
  • Citations — every key point and risk cites the bill section + verbatim quote; cited_fact / inference label
  • Citation UI — § chips expand inline with quote + GovInfo source link; "Inferred" badge on analytical items
  • News correlation — NewsAPI + Google News RSS articles linked to bills via topic tags
  • Trend scoring — composite zeitgeist score (0100) from NewsAPI + Google News + Google Trends, nightly
  • Full-text search — PostgreSQL tsvector across bills and members
  • Multi-user auth — JWT email/password, admin role, user management panel
  • Admin panel — LLM provider/model switching, pipeline stats, external API health, manual task triggers
  • Bill type filtering — only legislation that can become law; 60-day seed window on fresh install

Member Profiles & Mobile

  • Member profiles — bio, contact info, leadership roles, service history, sponsored/cosponsored counts
  • Member interest scoring — composite trend score (NewsAPI + GNews + pytrends), nightly; lazy-loaded on first profile view
  • Member news — articles correlated to members via name search
  • Mobile UI — responsive layout, slide-in drawer, hamburger header, touch-friendly controls

Follows & Personalization

  • Follows — per-user bill, member, and topic follows
  • Follow modes — neutral | pocket_veto | pocket_boost with mode-selector UI and descriptions
  • Dashboard — personalized feed from followed bills/members/topics + trending
  • Public browsing — unauthenticated guests browse bills, members, topics, and trending; AuthModal gates interactive actions
  • Welcome banner — dismissible onboarding card for guests; localStorage dismiss state

Bill Detail Features

  • Bill action pipeline — full legislative action history from Congress.gov; nightly batch + event-driven on change
  • Action timeline — full history with latest-action fallback while history loads
  • Amendment briefs — "What Changed" badge; collapsible version history panel
  • Bill text status indicators — Brief / Pending / No text badge on BillCard (single batch query)
  • Draft letter generator — select up to 3 cited brief points, generate constituent letter via configured LLM; ZIP not stored
  • Personal notes — private per-bill note with pin, auto-resize textarea; one note per user per bill
  • Sponsor linking — poller fetches bill detail for sponsor; backfill task for existing bills
  • "No bill text" state — shown on detail page when GovInfo has nothing published

Collections & Sharing

  • Collections / Watchlists — named groups of bills, public/private, UUID share token; CollectionPicker popover on bill detail
  • Shareable brief links — share_token on bill_briefs; public /share/brief/[token] page, no login required
  • Shareable collection links — public /share/collection/[token] page, no login required

Notifications

  • ntfy push — Celery dispatcher POSTs to user's ntfy topic; optional token/basic auth
  • RSS feed — private tokenized XML feed per user; always real-time
  • Quiet hours — local-time window (IANA timezone auto-detected by browser); events queued and sent as batch after window
  • Digest mode — bundled ntfy summary on daily or weekly schedule instead of per-event pushes
  • Weekly digest — Monday 8:30 AM UTC; 7-day summary of followed bill activity via ntfy + RSS
  • Change-driven alerts — categorize_action() maps action text to 6 named categories; all three follow types (bill, sponsor, topic) covered
  • Granular per-mode alert filters — 8 independently toggleable alert types per follow mode (Follow / Pocket Veto / Pocket Boost); preset defaults; tabbed UI with per-tab save
  • Roll-call votes — bill_votes + member_vote_positions tables; on-demand fetch from Congress.gov /votes endpoint; VotePanel on bill detail shows yea/nay bar + followed member positions
  • Email notifications — SMTP / Resend integration; HTML templates; one-click unsubscribe tokens; per-user opt-in (v0.9.10)

UX & Polish

  • Party badges — solid red/blue/slate, readable in light and dark mode
  • Chamber badges — amber/gold for Senate, slate/silver for House
  • Fact vs inference labeling — cited_fact / inference on every cited point; backfill task for existing briefs
  • Following page — accordion sections, search, topic filters
  • Member search — "First Last" and "Last, First" both match via PostgreSQL split_part()
  • How It Works page — feature guide covering follow modes, alert filter customization, collections, notifications, AI briefs
  • Bill detail page tab UI — four tabs: Analysis, Timeline, Votes, Notes
  • Topic tag pills on bill detail and listing pages — clickable, filtered to 20 known topics
  • Collapsible sidebar — icon-only mode, localStorage persistence
  • Favicon — Landmark icon
  • LLM Batch API — OpenAI + Anthropic async batch endpoints; 50% cost reduction; state tracked in AppSetting("llm_active_batch")

Up Next

Phase 4 — Accountability

  • Vote History & Timeline — surface roll-call votes in the action timeline; add a "Votes" filter to the bills list so users can find bills that have had floor votes.
  • Member Effectiveness Score — nightly Celery task; transparent formula: sponsored bills, bills advanced through stages, co-sponsorships, committee participation, bills enacted. Stored in member_scores. Displayed on member profile with formula explanation.
  • Representation Alignment View — for each followed member, show how their votes and actions align with the user's followed topics. Neutral presentation — no scorecard framing.

Phase 5 — Search & Polish

  • Search Improvements — filters on global search (bill type, status, chamber, date range); search within a member's sponsored bills; topic-scoped search.
  • Desktop View — wider multi-column layout for large screens: sticky sidebar, expanded grid, richer bill detail.
  • first_name / last_name Backfill — Celery task to populate empty first/last from stored "Last, First" name field via split (affects ~10% of member records).

Backlog

  • Notification Channels v2 — email (SMTP), Discord webhook, Telegram bot.
  • Cross-Bill Referencing — extract referenced bill IDs from LLM briefs; bill_references table; hover preview popover in BriefPanel for referenced legislation.
  • Source Viewer Option B — in-app bill text viewer with cited passage highlighted and scroll-to-anchor. Deferred pending UX review of the current GovInfo-link approach.
  • Raw Diff Paneldifflib diff between stored document versions, shown as collapsible "Raw Changes" below the amendment brief. Zero API calls.
  • Shareable Collection Subscriptions — "Follow this collection" so other users can subscribe to a public collection and get its bills added to their feed.

v1.0 Definition

v1.0 ships when the following are all live:

  • Full bill pipeline (poll → fetch text → LLM brief → news → trend score)
  • Cited AI briefs with fact/inference labels
  • Follow modes (neutral / pocket_veto / pocket_boost)
  • Granular per-mode notification filters
  • Push (ntfy) + RSS + digest + quiet hours
  • Collections with share links
  • Shareable brief links
  • Personal notes
  • Draft letter generator
  • Public browsing (no account required to read)
  • Multi-user auth with admin panel
  • Member effectiveness score
  • Roll-call vote data

All other items above are post-v1.0.

All v1.0 criteria are met. v1.0 pending final code review and documentation pass.