💡 Inspiration
After discovering only 20% of voting-aged people vote in the primary elections (Bipartisan Policy Center, 2023), we were inspired to make an app that addresses this. People have become increasingly aware of the true impact of mayoral and local elections, as they play a key role in shaping affordable housing, pollution control, employment, education, etc. We took the correlation between favorable election results and government officials effecting positive change to develop an app dedicated to increasing voter turnout. Ballot Buddy aims to achieve this by reducing the barriers of entry to voting; that is, centralize the relevant information often scattered across government websites, random PDFs, hearsay, and other sources. No longer will the lack of clear information deter people from exercising their civic rights.

We were also inspired by the idea of drawing-in young voters, who may feel a greater disconnect between the ballot and daily life. With Ballot Buddy, we strive to help residents see how elections—at all levels—connect to their community, representatives, and the issues they care most about.

🗺️ Functions
Ballot Buddy serves as a centralized resource featuring nearest polling location, government officials, and localized news feed. Using GIS technologies, it provides users with two informative maps containing all relevant geographic information in one place. The Voting map allows users to find mail-in ballot drop-off locations, early-voting, and Election Day polling locations. They can also see which congressional districts and state senate districts they are a part of. The map permits users to input their address, then provides information on their representatives and designated officials. The Local Issues map highlights a variety of relevant data taken from CalEnviroScreen 5.0 study including county census tract percentiles for unemployment, poverty, housing burden, overall economic burden, pollution, vulnerable population characteristics, and a final CalEnviroScreen burden score.

Our app is multi-use as it includes a news tab that features relevant news articles based on your location and interests. This helps users find timely coverage on the issues that matter most to them - from climate and housing to education, the economy, and public safety - alongside dedicated election coverage broken out by federal, state, and local races, primaries, ballot measures, and voter registration. Users can filter either feed with a single tap, and once they enter their address, both feeds automatically re-center around local coverage for their area, so the same civic data that powers the map and representative's lookup also shapes what news they see. In short, Ballot Buddy helps users find important election dates, nearby voting locations, designated officials, and the community issues happening around them.

🛠️ Tools

  • .NET MAUI and .NET 10 — used to build Ballot Buddy as a cross-platform mobile and desktop application.
  • ArcGIS Maps SDK for .NET — powers interactive maps, location markers, map layers, legends, and geocoding.
  • ArcGIS Online — hosts and delivers the web maps and geographic data displayed in the app.
  • ArcGIS Pro — used to prepare, analyze, and publish election and community map data.
  • ArcGIS World Geocoding Service — provides address suggestions and converts selected addresses into map coordinates.
  • Esri Calcite Design System for .NET MAUI — supports consistent, map-focused interface components.
  • Cicero API — identifies elected representatives based on a user’s address and location.
  • NewsAPI — powers the News tab’s live, filterable topic and election-news feeds.
  • ArcGIS StoryMaps — used to present the project’s purpose, process, and impact.

Built With .NET 10, .NET MAUI, C#, XAML, ArcGIS Maps SDK for .NET, ArcGIS Online, ArcGIS Pro, ArcGIS StoryMaps, Esri Calcite, ArcGIS World Geocoding Service, Cicero API, NewsAPI, REST APIs, JSON, and Visual Studio.

🧩 Challenges

  • Deciding the most important information to show on the map versus what can be left out
  • One challenge was narrowing down the amount of civic data into something that feels simple and usable. Election information can be complicated, especially when users need to understand different offices like mayor, city council, county supervisor, school board, state assembly, and congressional representatives
  • Tuning news search queries, so results stayed genuinely relevant — broad single-word topics returned unrelated noise, so we had to iterate toward more specific phrasing to keep the feed trustworthy.

🏆Accomplishments

  • Our teamwork, perseverance, and drive
  • Utilizing a rich variety of APIs, SDKs, and Esri software
  • Creating a visually pleasing app with an array of working features
  • Using spatial input to produce a localized news feed
  • Implementing a dynamic countdown feature
  • Developing a practical app that works to address a social issue important to us

📝 Lessons learned

  • How to build with .NET MAUI
  • Depth and breadth of ArcGIS Software
  • Implementing Google APIs
  • Debugging across multiple MAUI build targets (Windows, Android) taught us a lot about how differently the same codebase can behave per platform
  • SDKs
  • Keeping a presentation short and concise
  • Developing a narrative to make presentations engaging, and not boring!
  • Integrating and tuning a third-party news API to keep results relevant and locally grounded
  • Building a location-aware, dual-feed news experience

🚀 Future of Ballot Buddy
If we had more time, we would work to implement a lot more features! Some ideas we would strive to include are:

  • In-app routing
  • Using Survey123, a crowdsourced wait time for people to view and report how busy a specific polling location is
  • Accessibility filtering to filter locations that are, for example, wheelchair or language accessible
  • Bilingual support using a global toggle switch to offer the application in multiple languages

    The future would also hold a nationwide application of Ballot Buddy. Our current application would serve a scalable model to be reiterated and reproduced for each state. Combined, these features would boost the utility of the app, making it increasingly useful for everyday citizens.

Built With

  • .net-maui
  • .net10
  • arcgis-maps-sdk-for-.net
  • arcgis-pro
  • arcgis-storymaps
  • arcgis-world-geocoding-service
  • c#
  • cicero-api
  • esri
  • esri-calcite
  • github
  • json
  • newsapi
  • rest-apis
  • visual
  • xaml
Share this project:

Updates