个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Self-hosted legislative tracker for teams.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Legislative tracking for teams.
FloorVote is an open, self-hostable bill tracker for any team that tracks legislation—automatic bill summaries, member voting, email notifications, and hearing calendars, all for about $5-7/month in infrastructure.
FloorVote monitors state and federal legislation and surfaces the bills that matter to your team—filtered by your keywords and summarized and tagged by AI according to your instructions. Your team can comment and vote on the bills, and your team can set an official position.查看完整 README ↗FloorVote is an open, self-hostable bill tracker for any team that tracks legislation—automatic bill summaries, member voting, email notifications, and hearing calendars, all for about $5-7/month in infrastructure.
FloorVote monitors state and federal legislation and surfaces the bills that matter to your team—filtered by your keywords and summarized and tagged by AI according to your instructions. Your team can comment and vote on the bills, and your team can set an official position.
FloorVote can be used by individuals or teams, but it's especially powerful for teams, whether big or small. Instead of everyone on a team monitoring bills on their own and comparing notes over email or in meetings, FloorVote gives the whole team one shared place to watch, discuss, and respond to the bills that matter to them.
Each team gets a private, isolated deployment with its own database, member roster, bill list, activity feed, and calendar.
See the demo site · Docs · Get started · Security · Contributing
Development supported by the Bipartisan Policy Center.
| Bills | Keyword filtering · AI summaries, tags, and relevance scores · full text, fiscal notes, and amendments · triage for new matches · search across title, summary, and abstract · filtering by tag and priority · custom fields |
| Team | Support/oppose/neutral voting · comments with reactions and @-mentions · personal notes · priority flags · official team positions |
| Roles | Owner, admin, and member · custom roles for committee assignments · per-member voting restrictions |
| Calendar | Auto-added hearings · custom events · subscribe from any calendar app over ICS · spreadsheet import |
| Magic-link sign-in · daily or weekly digests · week-ahead hearing preview · new-match and mention alerts | |
| Admin | Configurable AI context, relevance question, and tag taxonomy · toggleable feature modules · bulk member invites · data export |
Each of these is explained in full on the docs site: What can FloorVote do?
| Backend | Hono on Cloudflare Workers—tenant API, central API |
| Database | Cloudflare D1 (SQLite via Drizzle ORM)—separate databases for central and each tenant |
| Storage | Cloudflare R2—bill text, stored centrally |
| Queues | Cloudflare Queues—central ingestor, per-tenant bill delivery |
| Frontend | React 19 + React Router 7 + Vite 8, served via Workers Assets |
| Cloudflare Email Service, with Resend available as a fallback | |
| AI | Google Gemini 2.5 Flash via Cloudflare AI Gateway. Chosen for its affordability, accuracy, and ability to handle long PDFs, which is how many bills arrive. The default lives in api/src/lib/llm.ts, and the GEMINI_MODEL and GEMINI_THINKING_BUDGET vars override it per environment. |
| Legislative data | LegiScan |
| Testing | Vitest with @cloudflare/vitest-pool-workers; Vitest + jsdom for the frontend |
flowchart TB
API["LegiScan API"] -->|hourly cron| C
subgraph C ["Central service — one per operator"]
CW["Worker + D1 + R2 + Queues"]
end
C -->|per-tenant queue| TA["Tenant A — Worker + D1 + Queue"]
C -->|per-tenant queue| TB["Tenant B — Worker + D1 + Queue"]
Central — one per operator. It makes every legislative API call and stores all bill text, so provider traffic, caching, and quota all sit in one place however many teams you run. It does no AI processing.
Tenants — one per team. Each runs the AI pass (summary, tags, relevance score) using its own configured context and taxonomy, keeps its own D1 database, serves the React app via Workers Assets, and never calls LegiScan directly. Because relevance is scored per team, the same bill can score very differently for two teams.
Tenant and central talk to each other over Cloudflare service bindings in both directions, with no shared secret in transit.
For the full data flow—cron passes, the ingestor, deduplication, and queue boundaries—see Architecture on the docs site.
FloorVote is created and maintained by Will Adler of the Bipartisan Policy Center Elections Project.
Contributions (including data providers for DC, Maryland, and Virginia) from Joshua Miller of Open City Advocates.
Architecture and security have been reviewed and strengthened through a volunteer engagement with U.S. Digital Response (volunteer: Larry Hitchon).
FloorVote was developed using Claude Code, the superpowers plugin, and mattpocock/skills.
FloorVote is open source under AGPL-3.0. Contributions are accepted under the Developer Certificate of Origin — sign your commits with git commit -s. If you run a modified version as a network service, the AGPL requires you to offer your users the corresponding source.