PublicBrief DMV
Inspiration
On the side, I work in Loudoun County's Community Services Board, where I see how decisions about data centers, land use, infrastructure, public spending, and emerging surveillance technologies (e.g. APLRs like Flock) can have long-term effects on residents. Yet the information needed to understand those decisions is often scattered across meeting agendas, staff reports, procurement documents, resolutions, and public notices.
The information is technically public, but it is not always practically accessible. A resident may need to read dozens of pages just to answer basic questions:
- What is actually being proposed?
- Has the decision already been made?
- Who is responsible for approving it?
- What financial, privacy, or infrastructure concerns are involved?
- What information is missing?
- Is there still time to participate?
Companies, vendors, developers, and institutional stakeholders often have dedicated resources for monitoring local government. Individual residents usually do not. When people disengage because these processes are difficult to follow, consequential decisions can advance without meaningful public scrutiny. For example, tools like Hamlet (https://www.myhamlet.com/).
That information imbalance inspired PublicBrief DMV.
What it does
PublicBrief DMV helps residents understand local-government decisions and identify useful next steps before proposals are finalized.
The prototype includes two complementary experiences.
Scan My Locality
Users can browse a demonstration feed of source-linked decisions relevant to Loudoun County and Virginia. Items are organized into three categories:
- Public Money
- Privacy & Surveillance
- Community & Infrastructure
Each item explains why it was flagged, what is being proposed, its current status, which government bodies and departments are involved, what information remains unclear, and where residents can find the official source. There is no actual scraping for this currently.
Analyze a Document
Users can paste an agenda item, public notice, procurement proposal, land-use document, resolution, or policy excerpt.
PublicBrief produces a structured civic brief containing:
- A five-second summary
- The proposed action
- Current decision status
- Important dates
- The decision-making body
- Affected groups
- Financial and revenue considerations
- Privacy and surveillance considerations
- Community and infrastructure considerations
- Missing or unclear information
- Questions residents could ask
- Public-participation options
- A neutral public-comment draft
- Short excerpts grounding the findings in the supplied source
PublicBrief is not designed to tell residents what position to take. Its purpose is to help them understand the decision, verify the evidence, and participate more effectively.
How I built it
I built PublicBrief DMV as a solo hackathon project using:
- Next.js
- TypeScript
- Tailwind CSS
- Vercel
- A server-side large-language-model integration
- Structured JSON validation for AI output
The application uses a one-page editorial interface inspired by modern public-information publications rather than a traditional government portal or generic chatbot.
For the document analyzer, the server sends the user-provided text to the AI with a strict structured-output schema. Instead of asking for a general summary, the prompt requests specific civic information such as decision status, responsible entities, participation opportunities, unresolved questions, and supporting evidence.
The locality scanner currently uses curated demonstration data drawn from official public sources. The data is separated from the interface so future versions can replace the curated feed with locality-specific agenda integrations.
A future ingestion architecture could normalize different public systems behind a common adapter:
interface AgendaSourceAdapter {
fetchMeetings(): Promise<Meeting[]>;
fetchAgendaItems(meetingId: string): Promise<AgendaItem[]>;
}
This would allow PublicBrief to support systems such as Legistar, CivicPlus, HTML agenda pages, PDF packets, and state legislative sources without depending on one universal scraper.
Preventative security and responsible AI
Because PublicBrief deals with public decisions, trustworthy behavior was a core design requirement.
I added safeguards so the application does not simply trust either the pasted document or the model response.
Prompt-injection protection
The pasted document is treated as untrusted evidence, not instructions. The model is explicitly told not to follow commands contained inside the source text.
Source-grounded output
The model must distinguish between:
- Documented in the source
- Potential implication
- Not specified
When information is missing, PublicBrief labels it rather than inventing a date, official, vendor, policy, or participation process.
Structured validation
Both incoming requests and AI-generated responses are validated server-side. Arbitrary model-generated HTML is not rendered.
Protected credentials
The AI API key remains in server-side environment variables and is never exposed to the browser.
Abuse prevention
The application limits input size and repeated requests to reduce accidental duplicate submissions and public endpoint abuse.
Safe civic guidance
PublicBrief does not automatically send emails, contact officials, or take actions on behalf of users. Contact links come from curated government information rather than AI-generated URLs.
The interface also reminds users to verify dates, procedures, and decision details with the issuing government body.
Challenges I faced
Defining a realistic hackathon scope
The larger vision involves continuously scanning city, county, district, and state sources. Local governments, however, publish information through many different platforms and document formats.
Building a reliable DMV-wide ingestion system during a short hackathon would have created a broad but unfinished project. I narrowed the prototype to:
- A curated Loudoun and Virginia demonstration feed
- A fully functional manual document analyzer
- A clear roadmap for locality-specific adapters
This allowed me to demonstrate the complete resident experience without claiming live coverage that the prototype does not yet provide.
Going beyond generic summarization
A basic AI summary would not meaningfully address the problem. I had to determine which outputs actually help a resident make sense of a decision.
The most useful structure was not simply “What does this document say?” but:
What is being decided, where is the proposal in the process, who holds each role, what evidence supports the analysis, what is missing, and what can the resident do next?
Handling uncertainty
Government documents frequently omit context. A resolution may mention an approval without explaining later implementation, project-level effects, or future participation opportunities.
It was important for the tool to say that information is unavailable rather than filling the gap with a plausible answer.
Balancing urgency with neutrality
PublicBrief is inspired by concern about decisions involving surveillance, data centers, infrastructure, and public resources. However, the product should not assume every proposal is harmful or tell residents what to believe.
I designed the output to raise source-grounded questions and identify potential implications while keeping the resident in control of the conclusion.
Creating a readable interface
The analyzer produces a large amount of information. I had to prioritize the most important content through:
- An At a glance section
- Clear decision status
- Category-specific analysis
- Separate facts and implications
- Expandable evidence
- Action-oriented questions and participation guidance
What I learned
I learned that the hardest part of civic technology is often not access to information, rather it is turning fragmented public information into a structure residents can use.
I also learned that responsible AI requires more than a disclaimer. Trust has to be designed into the system through:
- Constrained prompts
- Structured output
- Request and response validation
- Explicit uncertainty
- Source evidence
- Safe link handling
- Clear limits on automated action
Most importantly, I learned that a focused prototype can communicate a much larger product vision. PublicBrief DMV does not yet continuously monitor every jurisdiction, but it demonstrates the full workflow from public document to civic understanding and participation.
What’s next
Future development could include:
- Live agenda monitoring for additional DMV jurisdictions
- Legistar and CivicPlus integrations
- Virginia General Assembly data
- Address-to-district matching
- Verified representative lookup
- Notifications before hearings and votes
- Historical tracking from proposal to final decision
- Comparisons between proposed and adopted policy language
- Community-organization dashboards and shared watchlists
The long-term goal is to give residents access to the kind of early decision intelligence that well-resourced organizations already use—while keeping the experience transparent, neutral, and grounded in official sources.
Log in or sign up for Devpost to join the conversation.