Inspiration
We were motivated by the ongoing harms of gerrymandering and the long legacy of redlining-driven inequity in U.S. representation. Redistricting often happens in processes that are hard for the public to inspect, which creates a gap between who is affected and who can actually evaluate the maps.
Our goal with remapd is to make districting more transparent, measurable, and fairness-oriented so that marginalized communities can respond with evidence, not just suspicion.
What it does
remapd is a redistricting analysis platform that:
- Optimizes county-to-district plans with a weighted multi-objective function.
- Scores plans on fairness, population balance, compactness proxy, and voting-rights proxy.
- Compares optimized outputs to a baseline for clear, quantitative improvement tracking.
- Fetches Census-grounded data through a tool layer to support factual analysis.
- Produces structured, interpretable, natural-language outputs through a multi-agent LangGraph backend.
How we built it
- Frontend: Next.js + React + TypeScript + shadcn/ui, with D3/TopoJSON maps and Recharts metrics.
- Backend: FastAPI + Pydantic + NumPy for optimization APIs and scoring.
- Optimizer: Reward-guided local search (simulated annealing style) over county assignments.
- Agents: LangGraph orchestration with Engine, Civil Rights, Legislative, and summary-style outputs.
- Data grounding: MCP-style tools for Census fetch + provenance/audit signals.
- LLM layer: Anthropic Claude for non-technical structured explanations.
Challenges we ran into
- Hallucination risk: Preventing unsupported claims in agent output, which pushed us to ground with MCP-style Census tools.
- Data/API reliability: Handling key setup, API errors, and consistent runtime behavior.
- Algorithm scope under time constraints: We originally aimed for PPO-based RL training, but given hackathon timelines and training overhead, we shifted to a more efficient reward-guided objective search approach to deliver a reliable end-to-end system.
- Audience refinement: We initially centered policymakers, but through team iteration shifted focus toward advocacy groups, constituents, and public-interest users who need actionable evidence.
- Reward design and tuning: Balancing multiple objectives so no single metric dominated.
Accomplishments that we're proud of
- Built a full pipeline from optimization to plain-language explanation.
- Delivered baseline-vs-optimized transparency with metric-level detail.
- Implemented an easy-to-use interface for non-technical users.
- Grounded analysis in real Census-backed data.
- Created a workflow that helps civic actors move from critique to evidence-backed alternatives.
What we learned
- Explainability and trust are core requirements in civic AI.
- Grounding external facts is essential in high-stakes policy contexts.
- A simpler optimization approach can be more practical than heavy training under hackathon constraints.
- Product framing matters: tools for advocacy and constituents need clarity, accessibility, and defensible outputs.
What's next for remapd
- Work with various advocacy groups and communities that are traditionally underrepresented to draft concrete, real policies that provide fairer district maps.
- Strengthen legal/policy context for LangGraph agent outputs using a RAG-support legal database, to further reduce hallucinations.
- Track real-world impact through simulation-based methods, such as creating a World Model for legislation impact.
Built With
- claude
- fastapi
- langgraph
- nextjs
- numpy
- python
- react
- tailwindcss
- typescript
- uvicorn
Log in or sign up for Devpost to join the conversation.