How It Works
Search by meaning,
not by keyword
Petaluma Civic answers questions about local government by finding documents that mean the same thing — not just documents that share the same words.
Keyword search misses the point
Ask a traditional database to find documents about "road repair," and it looks for those exact words. Never mind that city planners call it "pavement resurfacing" or "arterial rehabilitation." Never mind that the agenda item approving a $2.3 million contract is filed under "Capital Improvement Program, Item 4c."
The words don't match, so the document disappears — even when it contains exactly what you were looking for.
Every word becomes a coordinate
Semantic search works differently. A language model — Voyage AI's voyage-3 — reads a piece of text and produces a list of 1,024 numbers called an embedding. These numbers encode meaning: the concepts present, the context, the relationships between ideas.
The phrase "road maintenance on Petaluma Blvd" produces an embedding close to "pavement resurfacing program" — because the model has learned they refer to the same thing. The words differ; the coordinates are nearby.
Meaning clusters in space
Visualize every document as a point in a 1,024-dimensional space. Documents about similar topics end up close together — not because they share words, but because they share meaning.
Search for "housing affordability" and your query lands in a cluster of agenda items and council votes about zoning, density bonuses, and developer fees. Ask about "environmental review" and the cluster shifts toward planning commission minutes and General Plan ordinances.
The dashed ring shows what "nearby" looks like — the documents most likely to contain your answer.
5,404 documents, all indexed
Every document in Petaluma Civic has been processed through Voyage AI and stored as a 1,024-dimensional vector in PostgreSQL, using the pgvector extension.
That's 1,900 ordinances going back decades. 1,443 agenda items from recent meetings. 1,506 chunks of spoken council transcript. 555 segments from meeting minutes PDFs — all chunked, embedded, and waiting for your question.
When new meetings happen, new documents are added to the index within days.
Three steps from question to answer
When you type a question, three things happen in under a second.
First, your question is embedded into the same 1,024-dimensional space as the documents. Then pgvector finds the 8 closest chunks by cosine similarity — the documents that most closely "mean" what you asked. Finally, Claude reads those 8 chunks and synthesizes an answer.
No hallucination. Every claim in the answer comes directly from a real Petaluma city document — which you can request as a source citation.
Ask the questions you actually have
This works for the kinds of questions that frustrate traditional government search: questions where you know what you mean, but not how the city recorded it.
Ask about council votes, permit history, budget decisions, zoning rules, developer agreements. Ask follow-ups. The examples shown are illustrative, but the documents are real — all from official City of Petaluma records.