StatePulse is designed to encourage people to engage with their state's politics! It aggregates legislation from 2024 from all fifty U.S. states + Congress (with over 250k bills!), with local llm-generated summaries to help you understand the bill's contents and aims.
Core Features:
- Legislation topic tracking and bookmarking
- Find your state and national legislators and generate a message to them through the representatives/civics feature
- Post questions, bug reports, and express your thoughts on particular legislation
- High level views of legislation activity throught the U.S. through dashboard
- Generate AI summaries of bills in different venacular (plain english, legalese, or tweet length)
- And more!
Special thanks to the OpenStates community for providing an amazing API for aggregating legislation, representatives, and jurisdictions (states) with their custom web scrapers! This project would not be possible without them.
Jeremiah
Check their projects out: PalTCG, PortfolioSite, GMTK 2025
AlDeep
Check their projects out: Daily Medicin Logger, Bookmarks Daily Logger, TermiCoach, OnTheGo Secure, Daily Indoor Workout Assistant
Laura
Check their project out: Wilderlands
Gideon
Check their projects out: ezcap, Gideon's Chess Engine, Bearplans
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
Added daily automated topic tracking email newsletters! Users can choose which topics they want in their daily inbox. Used SMTP/Brevo.
New feature time! Incorporated a toggle that enables users to show which party represents which district: congressional, state upper, or state lower. Had to reexport all of the .geojsons cause they didn't include the right property fip/geocode matching the first time.
More refactoring internally, also starting to implement backend that enables users to follow legislators!
Many QoL improvements in this devlog! Fixed some dark mode theming issues for the map popups/key. Replaced Leaflet rendering engine with MapLibre GL, which now renders all of the legislative districts much more quickly than before. No lag! Added more bills and merged duplicate representatives as well.
Added chamber makeup into dashboard stats; users can now look at which party controls which chamber in different states, including numbers and percentages!
Added previous terms for Congress people in the representatives detail page. Also refined tables/buttons to improve consistency and dashboard stats to make circle size proportional to number of bills
Users can now click anywhere on the map and drag the location icon to get the representatives that represent those coordinates!
Federal and state legislative boundaries are here! Imported them into mongodb from U.S. Census. Implemented find your local reps, which get the relevant districts using lat + long. Also added all district boundary visualizations in the dashboard, and color coding representative cards for ux :)
Lots of new features in this devlog; implemented fuzzy search in policy updates feed using fuse.js. Added the field jurisdictionName: United States Congress for all Congress bills, so fetching bills from Congress should be nearly instant now. Also created some scripts to clean up some unwanted summaries.
Added legislation existence check so I don't call unnecessary gemini summaries from the API
Implemented time in office, added direct legislation filtered by representative in policy updates feed, and fixed clear filter bug not reloading feed state. Improved UI and UX for representative details with animations and better buttons!
Finished adding representative collection in mongodb database. Normalized all Congress representatives and senators into correct data types; now users can click on any representative to see the bills that they have sponsored! Obviously still a WIP, as some time dates are curiously NaN...
Changed source fetching script to have an Illinois exception (due to their stupid legislative page format)
Lots of new features in this one! Added distinct representative page for lookup and filtering, donation buttons, and a parallax animation on the home page to boost engagement. Implemented civics endpoint to remove conflicts with representative endpoint, and switched back to Google AI Studio after looking at the costs :D
Continued changing the AI Summaries text extraction from the different pdfs provided by legislature websites! Switched from Google AI Studio to Microsoft Azure AI for cost purposes. Text extraction from pdfs and source links now works better than ever...
Implemented SMTP email senders in tracking policies! Also fixed some of the backend API for handling push notifications, and added a new email template. Settled on Brevo for SMTP after hours of searching for alternatives to gmail. Unrelated, transferred DNS from Namecheap to Cloudflare :)
Lots of new stuff in this one! Spent a while refactoring the PostsFeed and PostCard components, which enabled me to add liking, more sorting (new, hot, top, and old), and display exact times. Also fixed some CRUD issues that came up through previous updates.
Updated the fetching script to include more robust Gemini Summary handling by feeding it better input text. This bug has been bashing me since the existence of this project...
Fixed CRUD operations on detailed individual community posts. Users can also click into posts from viewing other people's profiles.
Implemented some functionality into viewing individual community posts on a separate page. CRUD operations will be fixed soon.
More animations added! Also created a script that merged duplicate Congress bills containing same source links but having different identifiers.
Reformatted a ton of code. Added animations to the entire website, reduced loading times!
Major internal codebase changes, refactored a ton of types. Also fixed fetching representatives bug, where states with similar acronyms would fetch cached reps of different states (i.e. CA and AL)
Fixed incorrect Congressional session aggregation for dashboard. Implemented more robust solution for querying most recent Congress session; floor((x - 1789 / 2) + 1, where x is the current year
Fixed bugs regarding searching for Congress bills in the policy updates feed. Also enabled aggregation for U.S. Congress in dashboard.
Added state-specific dashboard statistics! Users can now look at popular topics, most active representatives, and recent bills at a glance.
Users can now view a dashboard to see overview statistics of all state legislation in the U.S. More features will be implemented soon!
Legislation fetching script now handles two APIs: OpenStates and U.S. Congress.
Bug fixes: fixed incorrect pagination state on new state search, fixed multiword queries for RepresentativesFinder.tsx (states like New York, New Jersey, New Mexico were calling directly from the OpenStates API instead of from mongodb cache); Enhancements: added custom tags for policy search, enabled users to view details on embedded legislation in community posts
Users can now add comments to posts, with fully implemented CRUD operations. Comments are nested akin to Instagram/Youtube/X.
Users can now create posts and link legislation to express their views! Also enhanced mobile UI and deployed a production instance of Clerk Auth. Core features are essentially complete (except for the occasional bug :)).
Added generate message to legislator. Now users can contact with their state rep/senator and ask questions pertaining to their bills!
Added civics tool improved mobile formatting (still need to iron out more bugs), added bookmark functionality
Started implementing page protection, used mistral from ollama to generate better summaries of policies, pushed to mongo
Added ollama scripts to generate summaries of legislation locally + push to mongo db database, continued populating historical legislation, fixed infinite scroll + state preservation on policy update feed
Added a better script to fetch all legislation data from all fifty states from 2017 to present
Improved pagination, switched localStorage caching to sessionStorage