Planit Consulting
An AI chat that makes 18,429 planning documents searchable, with source citations.
About Planit Consulting
Planit Consulting is a town planning and architectural design consultancy based at Innovation Place in Godalming, Surrey, serving London and the South East of England. It advises on planning applications, appeals, permitted development, certificates of lawfulness and rural and Green Belt schemes, alongside architectural design for new homes, masterplanning and agricultural and estate projects. Several of its planners hold RTPI (Royal Town Planning Institute) accreditation. A lot of its work sits in sensitive town and countryside locations such as the Surrey Hills National Landscape, where a scheme often hinges on prior cases and appeal outcomes, which is exactly what makes a searchable precedent archive worth so much.
The challenge
Planit Consulting had an archive of 18,429 .docx documents: planning statements, design and access, heritage, appeal, pre-app, cover letters and conditions. To find a precedent or a relevant passage, consultants had to open files and read them by hand. That is slow, error-prone Ctrl+F work, and on schemes that turn on prior cases and appeal outcomes it cost hours per piece of research. The archive held the answers, but nobody could get to them quickly.
The analysis
The corpus is heterogeneous: 14 document types spread across 3 tiers, from primary documents down to metadata-only files. A planning statement and a cover letter do not deserve the same treatment, so a single chunking strategy was never going to work.
Classification was step one. Without reliable typing, retrieval can pull the wrong kind of document and the whole tool loses trust. We classified the archive first, then reconciled the numbers: of the 18,429 .docx, 514 could not be reliably typed and were handled separately, leaving the classified set that was chunked into 95,592 searchable passages across 15,801 documents.
Embedding 95,000+ chunks is a real cost, not a rounding error. We chose OpenAI text-embedding-3-large (3072 dimensions) for precision over cheaper alternatives, and kept the spend in check by controlling cost at the chunk level rather than re-embedding blindly.
Consultants ask questions iteratively, one follow-up after another, so RAG without conversation history would have been unusable. Persisting conversations and messages in SQLite was part of the architecture from day one, not a feature bolted on at the end.
What we built
Document classification pipeline
Before anything could be searched, the archive had to be sorted. A Python pipeline classifies each .docx into one of 14 types across 3 tiers, from primary documents down to metadata-only files, so retrieval later knows what it is pulling.
- Classifies 18,429 .docx into 14 document types across 3 tiers (primary, secondary, metadata-only).
- The 514 documents that could not be reliably typed are split off and handled separately, instead of polluting the searchable set.
- Reliable typing is the foundation: it lets each document type get the chunking and retrieval treatment it actually needs.
Semantic chunking and embedding with cost control
Each classified document is split into passages with section detection, then turned into vectors. We used OpenAI text-embedding-3-large for precision, with the spend managed at the chunk level so the build stayed economical at scale.
- Semantic chunking with section detection produces 95,592 chunks from 15,801 documents.
- Embedding via OpenAI text-embedding-3-large (3072 dimensions), chosen for precision over cheaper alternatives.
- Oversized chunks get separate handling, and cost is controlled at the chunk level rather than re-embedding everything blindly.
ChromaDB vector store and FastAPI backend
The embeddings live in a persistent ChromaDB vector store, served by a FastAPI backend. This is the layer that turns a question into the handful of passages most relevant to it, in a fraction of a second.
- ChromaDB vector store with persistent storage holds all 95,592 chunks and their metadata.
- FastAPI backend exposes REST endpoints with CORS for the chat UI to call.
- Semantic retrieval finds passages by meaning, so a query surfaces the right precedent even when it does not share the exact wording.
Planit AI chat UI with conversation history
A React TypeScript chat interface, named Planit AI, is where consultants actually work. It is built for the way they ask questions, one follow-up after another, with a sidebar that keeps every line of enquiry organised.
- React TypeScript UI with a sidebar that groups conversations, plus rename and delete.
- Conversations and messages persist in SQLite, so a consultant can pick up an earlier line of questioning.
- Designed around iterative questioning, the way consultants narrow in on the precedent they need.
RAG answering via Claude with source citations
Claude reads the retrieved passages and writes the answer, with citations back to the original .docx. The citation is the point: every answer links to its source so a consultant can open the document and verify it.
- Claude answers from the retrieved passages, grounded in the firm's own documents rather than general knowledge.
- Every answer carries source citations back to the original .docx for verification.
- Consultants get the precedent in seconds and can always check it against the file it came from.
The blueprint
- 1 Classification
- 2 Chunking
- 3 Embedding
- 4 Vector DB
- 5 RAG chat
Results
Search time
Hours to seconds
From Ctrl+F across loose .docx to semantic retrieval that finds the passage in seconds.
Coverage
15,801 docs
95,592 searchable chunks with metadata, from an 18,429-document archive.
Citations
Per answer
Every answer links back to the original .docx, so consultants can verify it.
Daily work automated
About 40%
Planit's own estimate of the daily consultancy work the tool now handles.
Tech & tools
“We are genuinely amazed by how well this works. About 40% of our daily consultancy work is now automated. Finding relevant precedents that used to take hours now happens in seconds, with citations back to the original document so we can always verify.”
Janet Long
Founder, Planit Consulting
Part of our service: Custom Applications
Why teams build with TopDevs
- Fixed price, agreed up front
- 100% code ownership, no lock-in
- Prototypes in days, live in weeks
- Modern, AI-native & secure tech
Ready to build something that actually works?
Book a no-obligation call. We'll look at where the biggest win sits — fixed price, your code, no lock-in.
Start your own projectMore case studies
Simply
Recruitment SaaS
An AI recruitment suite, a native Salesforce app, a secure back-office and a marketing site. The full Simply stack, built end to end.
4-6 hrs/week
Recruiter time saved
Native Salesforce (Apex)
Integration
Mastone
Real estate
From spreadsheet to a full real-estate platform with WWS scoring and an investor portal.
100+ rules
Complexity
Full platform
Type
BBS Advocaten
Legal
A legal content pipeline that turns court RSS feeds into ready-to-publish blogs and social posts.
5+ hrs/week
Time saved
10x more content
Output