In detail
Project snapshot
Project: Grand Jury Hub, personal civic-tech project
Role: Full-stack design engineer
Live site: grandjuryhub.org
Stack: Next.js, React, TypeScript, Convex, Tailwind CSS, shadcn/ui, Pol.is, OpenNext, Cloudflare Workers.
Problem
Civil Grand Jury findings are commonly published in dense PDFs with few pathways toward public understanding or deliberation. Residents needed browsable report cycles, authoritative citations, plain-language context, and structured discussion. The initial seed focused on the 2025–2026 Tuolumne County Civil Grand Jury cycle.
Approach
I owned the content model, routes, Convex data layer, seed scripts, interface, Pol.is integration, responsive navigation, SEO, deployment, and documentation. The design separated official records, locally authored summaries, and live Pol.is participation state. The goal was to make the official record easier to enter and discuss—not replace it.
Implementation
- Modeled jurisdictions, reportCycles, reports, publicLinks, themes, and conversations in Convex.
- Built a project index, jurisdiction/cycle pages, report summaries, thematic groupings, public articles, conversation cards, and direct authoritative PDF links.
- Supported existing Pol.is conversation IDs and initialization of ID-less records through a configured production site ID.
- Kept questions, summaries, citations, routes, and report connections locally; Pol.is remains authoritative for statements, votes, moderation, and conversation lifecycle.
- Added dedicated conversation pages, responsive layouts, topic navigation, random topic selection, and explicit unconfigured/unavailable embed states.
- Seeded plain-language summaries, report references, public articles, thematic prompts, and questions using stable slugs and idempotent upserts.
- Added Convex deployment/seed scripts, production seeding, OpenNext deployment to Cloudflare Workers, server-rendered metadata, sitemap/robots routes, and social image routes.
Outcomes and limitations
Delivered source-linked civic pages, summaries, thematic prompts, deliberation spaces, reusable data modeling, and production publishing infrastructure. The model supports additional jurisdictions and cycles. Preserving official authority, respecting Pol.is state ownership, and avoiding oversimplification remained key constraints. No measured participation or comprehension results were reported.
Adapted from portfolio text; images and navigation omitted.

