Skip to content
Back to work

Project

Turning Civil Grand Jury Reports into Public Conversation Infrastructure

A civic-tech platform turning dense Civil Grand Jury report cycles into source-linked project pages, plain-language summaries, and structured public conversation spaces powered by Pol.is.

Grand Jury Hub desktop interface
Live capture

Desktop capture of Grand Jury Hub.

In detail

Portfolio source

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.

What’s getting in
your product’s way?

Tell me what you’re building, where it gets difficult, and what you’d like to change.

Email your projectmatt@biehl.io
Turning Civil Grand Jury Reports into Public Conversation Infrastructure — Matt Biehl | biehlux.com