Inspiration

Our representatives in Washington don't accomplish what we want often, and writing to them about the issues we care about is one thing. But writing to a representative about the issues they said they care about is another. We wanted a way to make letter writing to representatives more effective by calling them out on specifically what they promised and how they did or didn't deliver. We also wanted a way to help people decide whether to vote for incumbents based on their trustworthiness.

What it does

Senator Holmes allows user to input their state and sees a rating and breakdown of how that senator delivered or failed to deliver on their campaign promises.

How we built it

We used pure HTML, CSS, and JavaScript for our website, served by a FastAPI-based Python backend, along with Gemini Pro, BeautifulSoup, and built-in Python libraries. We deployed our app with Vercel.

Challenges we ran into

  • Cleaning up hallucinated LLM data took a very long time
  • Dealing with different formats for naming people
  • Dealing with APIs not having the data we wanted: Senators use unanimous consent and voice votes very often, which means we couldn't track their vote.
  • Dealing with the Python virtual environment and how it interacted with pip and Anaconda created module errors, prompting us to learn more about Python's build systems

Accomplishments that we're proud of

Building a non-trivial tool involving 3 third-party APIs, writing LLM wrapper code in efficient ways, writing a web scraper (learning BeautifulSoup),

What we learned

We learned to research better what APIs provided and that they won't always provide data exactly as we expect.

What's next for Senator Holmes

  • Have a button in the app to write to their senator
  • Support House of Representatives in U.S. Congress and eventually state and local governments
  • Make our algorithm more independent by phasing out the use of LLMs in our data pipeline
  • Expand the scope of collection to other kinds of bills, tracking how their positions have changed over time, and matching what they've said to the press to their votes and their promises

Built With

Share this project:

Updates