From opinion to outcome

CASE STUDY • civic platform • voting ux • design systems • ai tools

About

Goal

This was a 6-month contract role in early 2026, building the product from the ground up. This case study highlights a focused, mid-sized scope centered on core systems, key flows, and foundational decisions. VoteOnIssues was created to address a broken pattern—people engage with politics through noise, not clarity. The goal wasn’t another feed, but a system where users engage directly with issues, form positions, and understand how those positions compare at scale.

Worked closely with the founder and backend engineer to define the design system and shape the product from the ground up. Translated foundational design decisions into a scalable, production-ready experience across the platform.

✅ Defined and scaled the design system across the platform
✅ Led UX for issue creation wizard, voting flows, and ranking
✅ Designed login and verification experience
✅ Built admin workflows for issue review and approval 

www.voteonissues.org

the problem

Civic engagement platforms today are fragmented. Opinions get buried in fast-moving feeds, making it difficult for users to track what actually matters. There’s little to no structure for prioritization, so everything is presented with equal weight regardless of impact. As a result, users lack a clear signal of what matters most—both to themselves and at the collective level—making it harder to form informed positions or understand broader public sentiment.

the solution

The platform is built around a simple loop: understand an issue, take a stance, and decide how much it matters. Instead of passive scrolling, the experience encourages intentional interaction—turning reactions into decisions. Issues are structured rather than buried in feeds, allowing users to engage without noise. Clear support or oppose actions make positioning explicit, while a ranking system helps prioritize what matters most. Over time, aggregated data reveals both individual perspectives and broader collective insight.

the strategy

The solution is structured around shifting users from passive consumption to active decision-making. Instead of designing for browsing, the product prioritizes a clear action loop—introducing issues in a way that drives immediate understanding, encourages stance-taking, and reinforces prioritization through ranking.This meant reducing noise, surfacing only what’s actionable, and sequencing the experience so users move naturally from awareness to decision to comparison—laying the foundation for how the dashboard and core flows are structured.

the details

The central question driving this experience was what a user needs to see the moment they land—what issues matter, where they stand, and how others compare. The browse view presents a structured list of issues with real-time support vs oppose distribution and clear indicators of the user’s stance, enabling quick scanning and alignment. Clicking into an issue expands into a detailed view with full context, stance actions, and discussion, creating a seamless flow from awareness to action without relying on feeds or noise.

core workflow

The core workflow is built around three actions: users take a clear stance by supporting or opposing issues, rank those issues by importance to force prioritization, and contribute to aggregated insights that reveal where individual and collective perspectives align or diverge.

additional workflows

The experience is designed around a focused loop: quickly understand an issue, take a stance, and decide how much it matters—everything else is secondary. Supporting or opposing an issue creates an immediate feedback loop, while changing a stance introduces intentional friction through confirmation. Ranking is handled through drag-based prioritization tied directly to importance, and filters allow users to sort by stance for clarity. The system also enables comparison, helping users see how their views align with local jurisdiction politicians.

submitting issues: admin approval

The admin workflow is designed as a structured review loop where submitted issues move through clearly defined states. Admins can review each submission, leave comments, and request revisions—creating a back-and-forth with the original submitter rather than a one-time decision. A mirrored status system (“In Review,” “Pending,” “Waiting on User,” “Approved,” “Declined”) keeps both admins and users aligned on exactly where an issue stands, ensuring transparency while maintaining control over what gets published.

design system & components

The initial mocks were created quickly alongside the founder to explore core ideas and interactions, but lacked consistency and scalability. From there, I formalized those early concepts into a token-driven design system—defining color, type, spacing, and component behavior in Figma, then mapping that directly into code. This foundation allowed the product to scale coherently, turning rough, on-the-fly designs into a consistent, production-ready system across the platform.

working with ai

The initial mocks were created quickly alongside the founder to explore core ideas and interactions, but lacked consistency and scalability. From there, I formalized those early concepts into a token-driven design system—defining color, type, spacing, and component behavior in Figma, then mapping that directly into code. This foundation allowed the product to scale coherently, turning rough, on-the-fly designs into a consistent, production-ready system across the platform.

reflection

VoteOnIssues reinforced the shift: design isn’t just interfaces anymore—it’s systems thinking + execution. The constraint isn’t tooling, it’s judgment—knowing what to build, what to simplify, and what actually drives meaningful interaction. Early traction validated the model, with success measured through active participation: user sign-ups, politician adoption, number of issues created, and total stances taken. Deeper engagement was tracked by how often users took a stance, ranked issues by importance, and returned to continue interacting with the system.