VoteReady

One household. Different voter situations. One clear action plan. A synthetic prototype combining multilingual AI assistance with deterministic rules and explicit citizen confirmation.

Type
Synthetic civic-tech prototype
Role
Full-stack & AI engineering

Tech stack

  • Next.js
  • React
  • TypeScript
  • Supabase
  • PostgreSQL
  • Prisma
  • Gemini
  • Zod
  • Playwright
  • Vercel

A family can share an address while its members face very different voter-record situations. A single household-level status hides the difference between a scheduled hearing, an unresolved current record, and a historical record that still needs matching.

VoteReady checks each member independently and turns those situations into a prioritised action plan. The demonstration follows four fictional people across three official assignments, with separate record, notice, and preparation states.

VoteReady household dashboard showing separate member situations and actions
A household view keeps individual situations and next actions visible.

The application separates interpretation from decisions. Gemini reads visible clues from a Telugu historical roll and returns bounded English transliterations. Zod validates the structured output before deterministic rules rank possible matches.

Visible roll clues
Gemini interpretation + transliteration
Zod-validated structured output
Deterministic candidate ranking
Citizen reviews and confirms

The fixture produces similarity scores of 82, 79, and 78 out of 100. These are rule-based ranking scores, not identity probabilities or confidence that a person has been found. The citizen must explicitly confirm the candidate.

VoteReady Telugu historical-record matcher with ranked candidates
Multilingual interpretation assists a reviewable matching workflow; it does not establish identity.

An incomplete notice leaves four important fields unknown: the reason, time, venue, and evidence requirements. The application preserves those unknowns instead of filling them with plausible instructions.

A separately labelled simulated clarification can supply the missing details and three preparation items. Their provenance remains visible, so extracted notice content and simulated follow-up information stay distinguishable.

VoteReady hearing preparation screen with known details and next steps
Preparation follows known information and explicitly labelled clarification.

Next.js, React, and TypeScript provide the application interface. Supabase PostgreSQL and Prisma persist household and workflow state, while Gemini supplies bounded interpretation behind structured schemas.

The repository documents an end-to-end build with Codex, including the application, validation gates, and deployed workflow checks. Session persistence allows the demonstration to continue after a reload.

VoteReady architecture diagram from the repository README
The repository architecture separates application state, AI interpretation, and validation.
ChoiceReasonBoundary
Synthetic records and simulated responsesDemonstrate the full workflow without using real voter information.Results do not establish real-world electoral accuracy.
Deterministic ranking after AI interpretationKeep candidate ordering inspectable.Ranking quality still depends on extraction quality and the chosen rules.
Explicit citizen confirmationMake identity selection a deliberate action.The demo cannot verify a real person’s identity.
Structured output and preserved unknownsConstrain the interface and expose missing information.Schema validity alone does not prove factual correctness.

The README reports the following checks for the synthetic demonstration. These validate implementation behaviour against fixtures, rather than voter eligibility or accuracy on real electoral records.

Reported checkResult
Unit tests53 / 53 passed
Browser end-to-end tests11 / 11 passed
Public deployed workflow checks10 / 10 passed
Observed browser console errors0
Responsive viewports375, 430, 1280, and 1440 px
Missing notice fields preserved as unknown4 / 4

The fixture contains four household members, two notices, four open actions, and fifteen historical records. Typecheck, lint, build, database, and privacy checks were also completed before deployment.

The next evaluation step is a larger synthetic multilingual set, measuring Top-1 and Top-3 matching accuracy, extraction precision and recall, false inferences, and schema validity.

AI request latency is another documented limitation. Repeated p50 and p95 latency and cost measurements would be more useful than treating the README’s single-run observations as a performance guarantee.

Is VoteReady an official government service?

No. It is an independent synthetic prototype with no ECI affiliation or government-system connection.

Do I need to enter real voter information?

No. The demonstration uses fictional people and records. Its credentials, notices, and official responses are simulated.

Does AI choose a person’s identity or eligibility?

No. AI interprets visible clues, deterministic rules rank candidates, and a citizen explicitly confirms a selection. The prototype does not determine eligibility.

What do the test results measure?

Application behaviour on synthetic fixtures, browser workflows, and deployment checks. They do not measure accuracy against real electoral records.

Project details and measurements from the repository README ↗.Checked 24 October 2026

LET’S CONNECT

LET’S TALK ABOUTWHAT’S NEXT.

I’m open to contracts, internships, and remote engineering roles.

STRAIGHT TO MY INBOX