# Claude Impact Lab LA: Community Changed the Code

> Source: <https://dev.to/earlgreyhot1701d/claude-impact-lab-la-community-changed-the-code-1mg2>
> Published: 2026-08-16 00:32:10+00:00

Eighty minutes into building with three people I had met that morning, I renamed the idea I brought with me.

```
21:05  Rename the product to Civiq and credit the team
```

I wrote that commit message myself. By then the idea had four authors.

Some context on the room. The [Claude Impact Lab](https://luma.com/claude-d8nj) is part of Claude Community, the run of local events where people who use Claude get together in person. This one followed a Claude Conversation held earlier in Los Angeles, where people talked through what AI is doing to their jobs. The Impact Lab takes what came out of that conversation and turns it into a build day. You get the problem brief, you form a team, you have the day, you demo at the end. Travis Johnson, a Claude community ambassador, hosted with Evan Grenda at Intersections LA. Developers and non-developers both, and they meant it.

What I brought was not a project. It was an idea and a spec for it. No code, nothing built, nothing running.

The idea comes out of something that is true in most cities. Your city government publishes what it intends to do before it does it. Agendas go up ahead of the meeting, and any resident can read them, show up, and speak on an item before the vote. That right exists. Using it takes work, which is probably why every time I used it I would give up on what I was looking for.

In [Ventura](https://www.cityofventura.ca.gov/agendacenter) it means 21 separate boards and commissions, each with its own page, posting PDFs that run long and read like they were written for the people already familiar with the subject matter. Because they were. So if you want to know whether anyone is voting on something a block from your house, you go looking, board by board, document by document. And you have to already know the words the city uses for the thing you would call a pothole.

Agenda Watch was going to make all of that searchable in plain language, with every answer carrying a receipt back to the page it came from, so nobody has to take the tool's word for anything.

In use that is a small thing. You ask a question about an item on a city agenda the way you would say it out loud. Is there anything about short term rentals? You get back the agenda items that match, each one carrying the group that met, the meeting date, the item number, the page range, and a link to the source PDF. You read the plain-language version, then you click through and check the original yourself.

Search, and receipts. That is the whole solution to an opaque search.

I wrote the spec for a Google hackathon and then found out I could not enter, because I am a government employee. So it sat. A plan with nowhere to go.

The first commit in that repo is from the build session at the Claude Lab. The core of CiviQ was written that day, by four people who had just met.

When I got there, I was not worried about building a project. I have been building for a while now and I know what I can do with [Claude Code](https://www.claude.com/product/claude-code). I was worried about the other part. I build alone because I am shy, and alone is where I am comfortable. Idea, plan, implement, present, all of it me. I had done a group build once, about a year ago. Since then, solo.

And under that, the worry I'm trying to get better at voicing so it becomes less of a worry. What are engineers going to think of an AI-assisted builder? Am I going to be taken seriously in a room with people who can write the lines themselves?

Partway into the build, [Jesus Gutierrez](https://www.linkedin.com/in/gutierrezje/) started filing GitHub issues against the repo. Corrections, changes, improvements. One after another while I was in the editor.

I had never had that happen before in my builds. Not once. My repos are places I go alone, and the issues tab is a thing other people's projects have. I remember thinking, is this a normal thing that builders do all the time to contribute to each other's projects? Is this how it works?

It is normal. It is how teams track work without tapping each other on the shoulder every four minutes. I had to look it up afterward to be sure, which tells you exactly how much collaboration my building had involved up to that point. Ha!

The gap was not technical. I was not missing a skill I could have studied. I was missing something you only run into when there is somebody else in the repo with you.

What I got wrong before I arrived: I had built the day up in my head as a room of strangers I would have to perform for.

Everyone there came to be around other people, to work for and to work with community. They showed up open, curious, willing to help, wanting to work together. Being easy with people is their strength and it is my weakness, and in that room their strength did the work. I did not have to become outgoing. I just had to be with people who already were.

The "real engineers" fear never got tested. Nobody I worked with that day was auditing anybody. That judgment was mine. I brought it in with me and need to let it go.

I met [Frances Méndez](https://www.linkedin.com/in/francesmendez/) when I arrived. Jesus during the project brief. Alissa Street joined when we formed teams. Healthcare, computer science, government, entrepreneurship, in one team of four.

The schedule slipped, so what we had was about three hours to build and get to a presentation.

Originally I had intended for Agenda Watch to be agentic. That was the entire reason I had specced it. Jesus looked at the clock and directed the build to something that would exist by demo time. The commit is right there:

```
20:13  Move superseded Python plan into docs, add live URL to README
```

My plan, moved into a folder, timestamped, by me, because he was right.

Then everyone did the thing they were best at. Frances took the PRD and built the front end. Jesus co-directed the build and kept filing issues. Alissa orchestrated the presentation and sharpened what we were saying. I drove Claude Code.

Thirteen commits in about eighty minutes. Fixing a wrong meeting date and a dead demo query. Stopping the chat endpoint from returning a 500 when the index could not be queried. Making identifier queries like "Ordinance 2026-004" route to exact matching instead of getting broadened into mush. Calibrating a floor so the tool could say it had nothing, then walking that floor back from 0.70 because it was eating answers that were fine.

Three hours across four people is closer to ten person-hours, which is a good part of why any of that was possible.

I've thought about this a lot this week. The building was never the problem. I know how to do that part alone and I have been doing it alone for a year. What I could not do alone was the part that made it better. Somebody filing issues so work got tracked instead of interrupted. Somebody saying three hours means not agentic. Somebody turning it into a presentation. Somebody building the front end while I was in the backend. None of that is a gap in code. It is a gap that only shows up when you are not alone, and you cannot see it from inside solo work.

Somebody posted about the day on Instagram while we were sitting there, and it caught backlash. Not at us personally. At AI, and at the event for existing.

Team CiviQ watched it happen in real time. And then, instead of scrolling past it, the table talked about it. We talked about data centers. About what AI is doing to the neighborhoods we live in. About the fact that we were four people using AI to try to make a city's public record legible, being told that using AI was the problem.

Nobody at that table pretended the criticism was misplaced. We sat with it, and we supported each other through it, and then we kept building.

The event's own brief was what does AI mean for my job. That question did not stay on a slide. It showed up in the room, aimed at us, while we were working on it.

I am not going to argue with the people who are worried. Some of what they are worried about is going to happen.

What I can show is what taking it seriously looks like at the level of a function. This is the part where building *for* people shows up, and it is how we hoped CiviQ could help people engaging with their local government. The constraints matter here, because the same pile of data can support a much worse product if we weren't as careful, and the worse one is easier to build.

Once you have every board's agendas, every posting date, and a transparent call whenever a document is not where it should be, you are about two queries from a leaderboard of which agencies are worst at posting on time. It would look authoritative. It would get shared. It would also be pointed at the wrong person, because the clerk uploading agendas for a small commission is not the reason a packet went up late, and a scoreboard cannot tell the difference between a person and a budget. So nothing counts that way. Nothing is ever called "late." When a document is missing, the tool says *not located at [url] as of [timestamp]* and stops talking.

**Nothing is ever sent to a government office.** The could-have-been next feature is a button that submits a resident's comment to the city. That button would make the tool speak to a government on a person's behalf, and if it garbled the comment or sent it after the window closed, the resident bears the consequences. You can follow a topic and get an email about it, and the email goes to you. There is no send-to-city code path anywhere in the repo, so there is nothing sitting there to accidentally turn on later.

**Dates, item numbers, and page ranges never touch a model.** The model is already rewriting item text into plain language, so having it also pull the meeting date out of the document is one sentence of prompt away, and it would be right most of the time. Most of the time is not good enough here. A wrong date means somebody shows up to a meeting that already happened, or misses the window to speak on the thing they care about. So meeting dates get parsed out of the URL, item numbers and page ranges come from the PDF's own text layer, and the model only rewrites prose.

Those three came from the Agenda Watch spec. The team changed the name and the scope, kept the constraints, and held the line on them all afternoon. That is the clearest evidence I have that the spec was worth bringing into the room.

The UI got cut. We built the backend first and ran out of clock, so what we demoed was thinner than what Frances had designed.

So I went home that night and finished it. Ported her front end onto the live backend on a branch, opened a pull request against my own repo, and merged it. I was careful not to break her work. Back in my comfort zone, alone at a laptop, except now I was finishing something for somebody else.

I also wrote the piece I like best, and I only thought of it because of the day. Residents say "pothole." A city agenda says "pavement" and "resurfacing," and the word pothole appears nowhere in it. So `lib/bridge.ts`

holds the translation between how people talk and how government writes, and feeds it into the search.

Four people from four different backgrounds spent that day translating for each other, and I went home and wrote a translation table.

There is also a defect sitting in the README right now. When the embedding API is unavailable, a safety floor gets bypassed and made-up queries come back with confident answers and full receipts. The retrieval evaluation drops from 17 of 17 to 10 of 17. I know about it, I have not fixed it, and it is written down rather than hidden.

I know. It is a cliche. It is the thing on the poster in the break room.

It is also what happened. Jesus, Alissa, Frances and I showed up, shared ideas, and built something. And we did not only share ideas about CiviQ. We shared what we do, where we come from, what we are worried about, and what we think is coming. None of that happens from my couch when I work alone.

I am proud of what we built. I am prouder of who built it.

The CiviQ prototype is live at [civiq-phi.vercel.app](https://civiq-phi.vercel.app/) and the code is [on GitHub](https://github.com/earlgreyhot1701D/civiq). It covers 21 Ventura boards and commissions, 141 agendas, 707 items.

Thank you to Travis Johnson and Evan Grenda for hosting, and to Intersections LA for the room.

Next: the agentic version, the one I got talked out of, is going into the [Agents for Humans](https://agentsforhumans.devpost.com/) hackathon. Thirty days.

AI Assisted. Human Approved. Powered by NLP.
