← All case studies

Constituency: a civic engagement platform connecting Irish citizens with their representatives

A full product build for the public sector: citizens raise an issue once, in the open or in private, and get a guaranteed reply from a verified elected representative, with every step recorded.

IndustryGovTech · Civic Engagement
RoleFull product build
Stack
  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Django 4.2
  • PostgreSQL 15
  • Redis 7
  • AWS
  • Docker
  • Nginx
  • Stripe
Constituency login page: sign in beside a Dublin street scene, with terms of service confirmation and language selection
Constituency: verified sign-in for citizens and representatives alike, with explicit consent to the platform rules.

The challenge

Contact between Irish citizens and their elected representatives ran through email threads, social media replies, and phone calls: channels with no record, no deadline, and no way to prove anything was ever read. Issues went unanswered, nobody could point to what had been promised, and each unanswered message widened the trust gap between communities and the people meant to serve them. Left alone, the drift would keep pulling people out of civic life altogether.

Any fix had to earn trust on both sides at once. Citizens needed certainty that a real, verified representative would actually reply. Representatives needed certainty that the person writing to them was a real constituent, not an anonymous account. And because civic correspondence carries personal circumstances, health, housing, and money among them, all of it had to be handled to a standard that would survive scrutiny.

What we built

We built Constituency end to end: a platform where a citizen submits an issue once and chooses whether it stays private between them and their representative or goes public for the community to see and support. Identity verification sits at the front of both sides, so every case has a real constituent at one end and a verified representative at the other. Messaging is encrypted, petitions are verified rather than open to bulk signing, and cases carry a status the citizen can watch move.

Public cases surface on a national map filtered by county, town, status and category, which turns individual complaints into a visible picture of what a community is dealing with. Around the casework sits the rest of civic life: events and webinars, news, FAQs, and a bilingual interface. The front end is Next.js 15 with React 19, TypeScript and Tailwind CSS 4; the back end is Django 4.2 with Django REST Framework and Django Ninja over PostgreSQL 15 and Redis 7, with Stripe for representative subscriptions, running in Docker behind Nginx on AWS.

The hard part was holding two requirements together that pull in opposite directions. A guaranteed response window means the system has to route, notify and escalate quickly; the sensitivity of the content means every one of those paths has to stay encrypted, access-controlled and auditable. Getting both meant designing the case lifecycle and the permission model as one thing rather than bolting security onto a messaging app, and the result is audited to ISO/IEC 27001.

The result

Constituency guarantees a response within 18 to 24 hours, so a citizen knows when to expect a reply instead of hoping for one. Correspondence moved off email and social media into a structured, auditable system where each case has an owner, a status and a history. Public perception of government responsiveness improved, trust between constituents and their representatives grew, and communities gained a shared, visible record of the issues they are raising and what is being done about them.

Visit constituency.ie →

Building for the public sector?

We build platforms that hold up to security review and public scrutiny.

Get a free proposal