Case studies/State and local government
A mid-sized city permit office running building, zoning, and right-of-way applications through the same inbox, with attachments missing on first review in three packets out of ten. We rebuilt the intake as a classified queue: LlamaParse on the forms, Azure AI Document Intelligence on scanned plans, attachment checks before the clerk ever opens the file.
| Permit # | Applicant | Type | Attachments | Address | Status |
|---|---|---|---|---|---|
| BLD-2026-04918 | Hartwell Construction | Building | 4/4 | 2418 Riverbend Dr | routed |
| ZON-2026-00742 | M. Alvarez | Zoning | 2/3 | 915 Pecan Hollow Ln | pending |
| ROW-2026-01284 | Cedar Ridge Utilities | Right-of-way | 3/3 | S Lamar & 14th | routed |
| BLD-2026-04919 | Northgate Homes LLC | Building | 4/4 | 1107 Sterling Oak | routed |
| ZON-2026-00743 | Bluebonnet Realty | Zoning | 3/3 | 308 W Magnolia St | flagged |
| ROW-2026-01285 | Travis Telecom |
| Right-of-way |
| 3/3 |
| Burnet Rd corridor |
| routed |
| BLD-2026-04920 | K. Okonkwo | Building | 3/4 | 4602 Live Oak Pl | pending |
| BLD-2026-04921 | Stoneleaf Builders | Building | 4/4 | 772 Highland Park | routed |
At a glance
One permit counter, three permit families, one system of record. The classifier and the attachment checklist were the parts the clerks wanted first.
The engagement
The stack
ISO 27001 · ISO 9001 · DPA and NDA signed at kickoff.
Before, the permit counter
The counter worked the way counters work when the process has carried the city through a decade of growth. Everything got accepted. The trouble showed up a week later, at plan review.
Building, zoning, and right-of-way applications all arrived in the same mailbox and the same portal drop. Clerks opened each one, figured out the type, and routed to the correct reviewer by hand. On a clean packet, 6 minutes of clerk time. On a misfiled packet, up to 20.
Pre-build baseline: 6 minutes per clean intake, 20 minutes per misfiled intake.
Each permit family requires a different attachment set. A building permit without a site plan, a zoning variance without a survey, a right-of-way application without owner authorisation: every one went to plan review and got kicked back to the applicant. Three in ten packets required a follow-up to the applicant before review could start.
Pre-build baseline: 30% of packets held at plan review for a missing attachment.
Counter clerks could not check attachments inside the 90-second window the counter allowed, so incomplete packets were accepted, logged, and kicked back later. Homeowners and small contractors then had to come back in person with the missing document, which was the complaint the council heard most.
Pre-build baseline: approximately 28% of counter intakes required a second in-person visit.
What we built
The pipeline follows the same five stages we run on every intake engagement. The classifier and the permit-family attachment rules are the parts we tuned against the city's own checklist.
Public portal webhook, counter scanner drop to SFTP, contractor mailbox polled on a 10-minute cadence. Every inbound assigned a single application ID before classification.
Document type tagged on ingest. Applications routed to one of three named queues. Classification confidence below 0.90 holds the application for a clerk tag.
Applicant details, parcel ID, project scope, and permit-type-specific fields (building use, zoning request, ROW segment). LlamaParse on typed forms, Azure AI Document Intelligence on scanned counter drops.
Each permit family has a named attachment list. Pipeline checks presence of site plan, survey, owner authorisation, and fee proof against the list. Missing items hold the application before it reaches the clerk.
Clean applications posted to Accela via the case API, routed to the correct plan reviewer. Source documents attached to the case file. Exceptions routed to a named clerk queue with the missing-item list in plain English.
After, the numbers the counter signs off
Same counter, same clerks, same plan reviewers. The pipeline classified the application and ran the attachment checklist before the clerk opened the file. What changed was the second-visit rate, not the staffing.
Clerks still own the exception queue. They still read every packet a reviewer flags. The difference is that the missing survey gets caught at the portal, not at plan review, and the applicant gets the missing-item list the same day the packet hits the counter.
From the desk
The second-visit complaint used to be the top line at every council meeting. The pipeline took it off the list.
Permit office supervisorMid-sized city, Texas
Handover
The engagement ends at a clean handover. The permit office runs the pipeline; Hexaa stays on call for a fixed retention period, then steps back.
Related cases
Each links to a named client, a named document, and the system the clean data lands in. We publish only what the client signed off to publish.
Commercial loan files extracted against the signed term sheet and posted into nCino with a full audit trail.
→Distribution · 2026Distributor · Prophet 21 order posting queueInbound purchase orders parsed and posted into Prophet 21, with the exception queue routed by named flag for the order desk.
→Higher education · 2025R1 research university · sponsored grants intakeNIH and NSF packets assembled against the funder template, with section ownership named and missing items surfaced for pre-award.
→Free 30-minute call
You'll leave with a clear next step.
A building permit needs a site plan and a survey. A zoning variance needs a narrative and a survey. A right-of-way application needs owner authorisation and a traffic-control sketch. The pipeline runs the checklist against the packet at intake, names the missing item, and holds the application before it reaches the clerk.