Civic Tech · Case Study

Open Permit: From 10-Hour Hackathon to Civic Intelligence Platform

How a 10-hour hackathon sprint became a civic intelligence platform serving 8+ countries — 200+ permits, 40 legal frameworks, 197 funder contacts.

Visit Open Permit ↗ GitHub →
10hrsHackathon build
8+Countries
200+Permits ingested
40Legal frameworks
197Funder contacts

TL;DR

Open Permit started as AFOG — a prototype built in 10 hours at a Mumbai hackathon. It used Google Gemini to ingest planning permits and generate legally-sound objection letters with proper citations. After winning the hackathon, it was accepted into the AARC Pre-Accelerator in Bangalore, rebranded, and expanded to 8+ countries. It now holds 200+ permits, 40 legal frameworks, and a funder database of 197 contacts.

Next.js Express.js Supabase Google Gemini TypeScript Railway Vercel

The Problem

Communities lose battles against harmful development proposals — factory farms, polluting facilities, questionable zoning changes — not because they lack passion, but because they lack legal firepower. The advocacy pipeline is fundamentally broken.

💸

Cost Barrier

Hiring lawyers to draft objection letters costs thousands per permit. NGOs with limited budgets can't scale this.

Time Barrier

Permit objection windows are often 21 days. Legal drafting takes weeks. The math doesn't work.

Knowledge Barrier

Legal citations vary by jurisdiction. What's valid in India differs from the UK, Ireland, or Australia.

🌍

Scale Barrier

NGOs can't monitor every permit in every region. Coverage is spotty. Bad actors exploit the gaps.

Origin: Code4Compassion Mumbai (10 Hours)

Built at the Code4Compassion hackathon in Mumbai, hosted by Open Paws and Electric Sheep. The original prototype — called AFOG (Automated Factory Farm Objection Generator) — was scoped tightly: ingest a planning permit, run it through Gemini, generate a letter, export it.

1

Ingest Permit Document

Upload PDF or paste permit text. Pipeline extracts key fields: location, type, applicant, deadline.

2

Gemini Analysis

Google Gemini processes the permit against the relevant legal framework, identifying objection grounds and applicable statutes.

3

Generate Objection Letter

Produces a legally-structured objection letter with jurisdiction-specific citations, formatted for the relevant planning authority.

4

Export and Submit

Download as PDF or Word. Recipient routing suggests the correct authority inbox based on permit type and location.

"We won the hackathon. The real question: could this scale beyond factory farms, beyond India, beyond a demo?"

Scaling Through AARC Pre-Accelerator

Open Permit was accepted into the AARC Pre-Accelerator in Bangalore. The rebrand from AFOG to Open Permit reflected reality: the technology was jurisdiction-agnostic and could handle any government permit. The name needed to reflect that broader civic intelligence vision.

200+
Real permits processed
40
Legal frameworks built
197
Funder contacts
150+
NGOs reached via Brevo

Technical Architecture

Stack Overview
Frontend    →  Next.js (TypeScript) — Vercel deployment
Backend     →  Express.js API — Railway hosting
Data Layer  →  Supabase (PostgreSQL) — permits, legal frameworks, users
AI Layer    →  Google Gemini — permit analysis, letter generation, multi-lang NLP
📁

Monorepo Structure

Frontend and backend live in the same repo under /apps. Shared types via a /packages/common workspace.

🛡

Graceful AI Degradation

If Gemini API is unavailable, the system falls back to template-based generation using pre-loaded legal frameworks.

🔐

Access Control

Supabase Row Level Security enforces per-user permit access. Admin panel gated behind role claims.

📚

Legal Framework Store

40 jurisdiction-specific legal frameworks stored as structured JSON. Each includes applicable statutes, citation formats, and authority routing rules.

Claude Code's Role

💻

Codebase Development

The entire Next.js + Express stack was built and iterated through Claude Code sessions — permit ingestion pipeline, Gemini integration, recipient routing system.

📊

Pitch & Funder Materials

Every AARC Demo Day pitch deck iteration, the SFF grant framing, and funder database structure were developed through Claude Code.

🔄

Data Pipeline

CSV work for permit normalization, funder contacts, Brevo campaign structuring, and bulk recipient routing all ran through Claude Code sessions.

Legal Framework Expansion

Each new country's framework — researching jurisdiction requirements, drafting templates, validating citation formats — goes through Claude Code before entering the platform.

What's Next

  • Infrastructure migration to Yotta (Indian sovereign cloud) following Supabase India block
  • ALPN partnership for India-specific permit tracking and routing
  • Expand to 15+ countries with dedicated legal framework parsers
  • Automated permit detection pipeline — proactive monitoring, not just reactive generation
  • NGO dashboard with bulk permit tracking and campaign management
  • SFF grant application for sustainability-focused civic infrastructure funding

Key Lesson

Civic tech doesn't need to be slow, bureaucratic, or expensive to build. A 10-hour hackathon proved the core technology works. AARC proved it could scale. The constraint wasn't the code — it was building the legal framework library and reaching the right NGOs. Claude Code handled the code. The domain work was the real leverage.