Inspiration Northern Ireland has a turnout problem and an alignment problem, and they're the same problem. Around 37% of registered voters don't vote because they don't feel informed, and the ones who do show up overwhelmingly vote on identity lines rather than policy alignment. The voters most likely to be misrepresented by the politicians they elect are also the least likely to know it. Existing civic tech doesn't fix this. TheyWorkForYou shows you what your MP did. Vote Compass shut down in 2017. The Detail does excellent investigative journalism but isn't built for everyday citizens deciding who to vote for. Every existing tool starts the same way: "look up your MLA." That's information without alignment, and it reinforces the tribal browsing pattern instead of breaking it. We wanted to build the opposite. Tell us about you first. Then show you which parties have actually voted the way you'd vote, regardless of which one your community has always backed.

What it does VoteWise is a political alignment engine for Northern Ireland which encourages disengaged voters to be more engaged with the current political landscape of NI. A user takes a 90-second policy quiz covering ten issue areas: housing, education, language and identity, environment, health, equality, economy, welfare, all-island integration, and legacy justice. Each question presents a concrete policy stance on a five-point Likert scale. The answers are scored against each party's actual voting record at Stormont, not their manifesto rhetoric. Results land on a single screen: a horizontal bar chart showing alignment percentages with each of the seven parties, sorted descending. The top match auto-plays a personalised 90-second ElevenLabs audio briefing summarising why that party matches them and where it might still diverge. From the results, users drill into any party's promise scorecard (kept, in progress, or broken) built from a four-year delivery review of their 2022 manifesto. Two prominent MLAs from each party have full profile pages with voting record, party-line deviation percentage, declared interests, and donation history. Every politician profile is cryptographically fingerprinted with SHA-256 and anchored on the Solana blockchain.

How we built it The backend is FastAPI with Motor for async MongoDB access, talking to a MongoDB Atlas cluster in the Ireland region. Endpoints expose the seven parties, the fourteen MLAs, the quiz questions, and the alignment scoring service. The scoring is straightforward: for each policy axis, take the absolute distance between the user's answer and the party's stance value (both on a -2 to +2 scale), sum across axes, normalise to a percentage. The frontend is Next.js 16 with React 19 and TypeScript, styled with Tailwind 4. The flow is intentionally linear: hero with quiz CTA, ten quiz questions one per screen with auto-advance, results page with Recharts horizontal bar chart and ElevenLabs audio player, drill-downs into party scorecards and MLA profiles. Solana integration runs on devnet. Every politician profile is hashed with SHA-256 over canonical JSON and written as the payload of a Memo program transaction. A "Verify Now" button recomputes the hash in the browser using the Web Crypto API and compares it to the on-chain version. Match means green badge. Mismatch means tampering. ElevenLabs powers seven pre-generated 90-second briefings with personalised scripts referencing each party's actual delivery record.

Challenges we ran into The project went through nine iterations before we locked the spec. The earliest version was a Solana-anchored civic budget tracker. Then a politician truthfulness scorer, which we killed because it was a defamation lawsuit waiting to happen. Then a promise tracker. Each pivot taught us something, usually about what we couldn't responsibly ship in 24 hours, but it cost time. The final pivot to alignment-engine-first happened with eight hours left on the clock. Defamation risk was a constant constraint. Several features we wanted to build, like an AI-generated "Conflict Radar" that surfaced suspicious correlations between donations and votes, would have exposed us to real legal risk. We learned to default to factual aggregation: show the donations, show the votes, let users draw conclusions. Don't let the AI editorialise about named individuals. Mapping Hansard votes to policy axes wasn't trivial. Some votes are clean, some procedural, some tactical where a party votes against its stated position. We hand-curated stance values rather than generating them at scale. Coordinating four developers running multiple Claude Code instances on one repo meant strict file-level separation: one missed coordination message would have cost us an hour of merge conflicts we didn't have.

Accomplishments that we're proud of The Solana integration is genuinely robust. Double-fallback architecture (in-memory dict if MongoDB drops, stub transaction signature if the wallet has no SOL), browser-side hash verification using Web Crypto with no external libraries, full changelog of any profile updates with old hashes preserved on-chain. A user can independently verify our database hasn't been tampered with, without trusting our backend. That's the threshold a lot of blockchain civic tech projects fail to clear. The alignment engine works on real political signal. We tested with several team members and external sense-checkers before locking. Top matches landed where we expected for typical political profiles, and the surprises (where someone's quiz answers diverged from their habitual vote) were the moments that convinced us the engine was producing real signal, not noise. The promise scorecards are real research, not synthetic content. Roughly fifty manifesto commitments tracked across seven parties over four years, with sources cited inline from Hansard, TheyWorkForYou, agendaNi, the Irish News, and Joseph Rowntree Foundation reports. We shipped a working end-to-end demo on time, on production URLs, with every claimed feature visible and testable.

What we learned Information without action isn't a hackathon project, it's a Wikipedia article. The early versions of VoteWise would have ranked alongside dozens of other civic dashboards. The shift from "look up your MLA" to "tell us about you first, then map you to parties based on actual votes" was the difference between a viewer and a tool. Defamation risk is the silent killer of civic tech. Every feature we cut for legal reasons would have made the demo flashier, and every one of those cuts was the right call. Restraint turned out to be a feature, not a constraint. Blockchain has a narrow legitimate use case in civic tech. Anchoring data we control onto a blockchain proves nothing, we still wrote the data. Anchoring proof that data hasn't been altered since publication is real. The first is decoration, the second is infrastructure. We learned the difference by building the decorative version first and killing it. And honest scope cuts at hour six are the most senior thing a team can do.

What's next for VoteWise The action layer is the feature we cut for time and the one we'd ship first post-hackathon. Surface the next two or three bills coming up at Stormont, predict each MLA's vote based on past pattern, and let users send their MLA a pre-filled email keyed to their quiz answers. Action receipts logged on Solana so politicians can't claim "my constituents support me" if 8,000 wallet-signed quiz responses say otherwise. Live data ingestion is the next priority. Hansard XML, the Register of Members' Interests, Electoral Commission donations, Companies House enrichment — all currently hand-curated, all scriptable. Moving to live ingestion is a few days of careful engineering and turns the project from a snapshot into a living tool. Coverage expansion to all 90 MLAs and 462 councillors is a build-out, not a redesign. Beyond NI, the architecture is jurisdiction-agnostic. Scotland, Wales, the Republic of Ireland, and devolved political systems elsewhere have the same alignment-versus-tribal-voting problem. Same engine, different data. Independent academic validation of the vote-to-axis mappings, ideally through QUB's politics department, would strengthen the claim that the alignment scores are politically valid and not just technically computed.

Built With

  • anthropic-claude
  • elevenlabs
  • fastapi
  • mongodb
  • mongodb-atlas
  • motor
  • nextjs
  • python
  • railway
  • react
  • recharts
  • sha256
  • solana
  • solders
  • tailwindcss
  • typescript
  • vercel
  • web-crypto-api
Share this project:

Updates