Skip to content
Sharif Amlani, PhD
Sharif Amlani presenting Your Ballot, Your Block with two teammates at Hack for Humanity: Miami, the app projected on a screen behind them at The LAB Miami

A voter guide that shows its sources.
Grand Champion.

A Gemma 4 civic voter guide for Miami-Dade. Enter an address, see who is actually on your ballot after redistricting, and compare the candidates in their own words, all on one left-right axis.

Open the app GitHub

Role
Team of four
Organization
Hack for Humanity: Miami (The AI Collective / MLH)
Years
Oct 2026 · Miami, FL
Stack
Gemma 4 · Gemini Live · gemini-embedding-2 · Next.js · Vercel

The outcome

Top prize.
Against 12 teams.

Grand Champion
Build for Miami theme challenge
Hack for Humanity: Miami · Oct 2026
95
Miami-Dade candidates
On one left-right axis
880
Passages of candidates' own words
From 100 pages, saved word for word
MIT
Open source
Public on GitHub

01 — The problem

New lines,
new ballot.

Florida redrew 21 of its 28 congressional districts in May 2026, and the new lines are in use for the election on Tuesday, November 3, 2026.

For a young Miami-Dade voter who has just moved, or who has never voted, three things are hard at once: which district am I in now, who is on my ballot, and what do the candidates actually say about the things I care about?

02 — What we built

Three models.
Three jobs.

  • Built with a team of four in under five hours, during the build window at The LAB Miami.
  • Fused DW-NOMINATE scores (votes in Congress), CFscores (who funded past campaigns) and quote-verified Gemma 4 estimates onto one left-right axis per race.
  • Every candidate position links to a primary source: a word-for-word quote and the page it came from. It shows a match and its evidence, never an endorsement.
  • Privacy by design: an address is used for that one request and is never stored or logged.
  • Open source under MIT, with Gemini Live voice for the interview.
Model 01

Gemma 4

Does all the reading: decides each candidate's yes / no / none with an exact quote, reads the voter's answers, and places everyone on the left-right line.

Model 02

Gemini Live

Voice only. Speaks the interview questions and hears the answers.

Model 03

gemini-embedding-2

Finds passages only, by cosine similarity. It decides nothing.

03 — How it works

An address in.
A ballot out.

Fig. 01 — How the models fit together
Simplified
  1. 01 · LocateThe Census Geocoder finds the district on the new map; county data gives the old-map district, precinct and polling place.
  2. 02 · BallotThe races and candidates for that address, from Congress down to judges and ballot questions.
  3. 03 · TalkA voice interview over Gemini Live, or typing and tapping Yes / No / Not sure.
  4. 04 · CompareGemma 4 places the voter on the candidates' line; every match shows a word-for-word quote and a link.
  5. 05 · PlanThe most likely polling place and the two nearest early-voting sites.

04 — How we knew it worked

Checked,
not guessed.

A voter guide that guesses is worse than none. Each claim is tied to the check behind it, and the limits are printed in the app.

QuotesWord for wordA candidate's position is kept only if Gemma 4's quote is found word for word in the passage it came from; otherwise it is recorded as none. A script re-checks every quote.
EstimatesCorrect sideGemma 4 first placed sitting members from their websites alone, never seeing their real scores. Estimates were written only if every member landed on the correct side and the average miss was under 0.25.
Conversion0.07Average miss of the straight line that puts CFscores on the DW-NOMINATE scale, fitted on the five people who have both scores.
Voter placementOrdered, repeatableFive made-up voters come out in order from left to right, and a second run gives the same numbers. There is no true answer to compare with, so that is all it claims.

05 — In their words

Grand Champion, Build for Miami Theme Challenge.

Hack for Humanity: Miami · The AI Collective / MLH · Oct 2026

Top prize against 12 teams at The LAB Miami, Saturday, October 10, 2026.