ClearToPermit — municipal plan check
Permit-package review for cities / AHJs — applicants upload, staff review, humans keep the stamp.
Closed-beta landing: /cleartopermit (also cleartopermit.com)
- Status — Closed beta; municipal design-partner path (elevated)
- Brand — ClearToPermit (working)
- Assistant — Clara (secondary UI, not the product home)
- Public: convert, educate, and search (ClearToPermit / city process)
- Signed-in: workspace-aware (packages, status, findings, search)
- Partner cities — named only in internal ops, not in public docs
(Same plan-reading technology family as Estym8 construction takeoff — different product, buyers, and assistant. Details: suite map.)
For partner review (Paul / design partners)
Read in this order (landing mirrors the story at /cleartopermit):
- Dual-sided model
- Canonical workflow
- Dashboard
- Clara
- Multi-city access
- City settings
- New city onboarding
- Learn from misses
- Who may upload
- MVP capabilities
- Design-partner workflow · Golden packages · City questionnaire · Success metrics
Dual-sided model — upload, review, status
ClearToPermit is one product with two human sides on the same package:
| Side | Who | What they do |
|---|---|---|
| Submitter | Permit applicant (owner / A/E / GC) or city staff when they upload | Upload the package directly; look up status; get notified on changes |
| City staff | Front desk, examiners, building official | Act on notifications; approve, deny, return, add / edit findings; record permit issued — humans take every outcome action |
How the loop runs (ClearToPermit assists; only two human sides — submitter and city staff):
| Step | Who | What happens |
|---|---|---|
| Upload | Submitter (or staff) | Package enters ClearToPermit — no staff re-import as the default path |
| Draft review | ClearToPermit | Completeness + citation-backed draft findings only — never auto-approves, auto-denies, auto-returns, or auto-issues |
| Notify | ClearToPermit | Notifies the appropriate city staff (and, when relevant, the applicant) that findings are ready for human action — with deep links when messaging ships |
| Act | City staff (or applicant, for their next steps) | Humans take the action: approve, deny, return incomplete, add/edit findings, resubmit, record permit issued |
Typical path
- Someone uploads the package; status becomes Submitted
- ClearToPermit runs a draft review
- The right staff get notified of draft findings
- Staff act — for example: send to review, return incomplete, submit deficiencies, issue, or deny
- The applicant is notified of that staff decision
Rules that do not bend
| Rule | Meaning |
|---|---|
| No automatic outcomes | ClearToPermit only drafts and notifies. Approve, deny, return, issue, and “findings sent to applicant” happen only when a human acts. |
| Upload is intake | Packages enter by user upload (applicant or staff). MVP does not depend on staff re-importing sets from another system. |
| Staff keep the stamp | The product shows status after humans act. It never stamps or issues by itself. |
Package status (illustrative)
Statuses are package-level and appear in the UI + audit trail. Reasons attach when denied / returned.
| Status | Meaning | Who sets it |
|---|---|---|
| Submitted | Plan set / package uploaded and received | Upload |
| Draft ready | System finished draft review; staff notified (draft findings in audit — not yet an official return/deny) | System (notify only) |
| Returned — incomplete | Returned with reason (e.g. missing A/B/C) — applicant notified | Staff |
| In review | Staff sent package to review; reviewer name or unassigned | Staff |
| Findings / corrections | Staff submitted deficiency findings; applicant notified | Staff |
| Resubmitted | Applicant uploaded a revised package | Applicant upload |
| Permit issued | Issuance recorded (stamp stays with city) | Staff |
| Denied | Denied with reason | Staff |
What the audit trail should record (in order)
- Draft findings from ClearToPermit
- Staff notified
- Human actions (return, in review, findings, issued, or denied)
- Applicant notified after staff act
Who may upload (accounts)
“Direct upload” still means a signed-in submitter tied to a jurisdiction (which city’s checklist applies) — not an anonymous public dropbox. That keeps packages private, routes the right checklist, and prevents spam uploads.
Account creation in production (recommended):
| Role | Prod account policy |
|---|---|
| City staff | Always gated — invited / approved by the city (or ClearToPermit admin for the jurisdiction). Never open self-serve staff signup. |
| Submitters (owner, A/E, GC, expeditor) | City-configurable. Closed beta / early prod: request access or invite. Later: a city may allow open self-serve signup for that jurisdiction, or keep invite-only. |
| Anonymous | Never — login required to upload or see package status. |
During the closed beta, gate everyone (staff + submitters):
- Request access
- Approval
- Invite
Do not open public registration until a city explicitly wants public applicant self-serve.
Who is allowed to upload plans?
It depends on the jurisdiction and permit type — not one global rule:
- Many cities accept uploads from the applicant of record (owner) or their authorized agent (architect, engineer, design firm, GC expeditor).
- Some permit types effectively require a licensed design professional (architect / engineer) as the submitter or as a required party on the package.
- Cities often still want a named applicant of record even when the firm uploads the drawings.
ClearToPermit should model submitter role (owner / architect / engineer / firm / GC / staff) and let the city’s rules decide who may create a package for that permit type — not hard-code “owners only” or “architects only.” Ask each design partner who may upload for the pilot permit type.
City permit system (Accela / Tyler / etc.)
ClearToPermit speeds the review workflow; it does not replace the city’s system of record. Yes — integrate over time so status / issuance can sync or deep-link, without making ClearToPermit the permit ledger. Pilot can record permit issued inside ClearToPermit first; official write-back to Accela/Tyler is a later integration when the city wants it.
Notifications & messaging (phased)
| Phase | What |
|---|---|
| MVP | Notify staff when draft findings are ready; notify applicant when staff take an action (email + in-app) |
| Next | Stronger staff alerts (email; in-app) when a package needs action |
| Later | SMS + richer messaging: staff notes to each other and to the applicant |
Deep links (required when notifications / messaging ship)
Every notification about a package, status change, or finding should open the signed-in user on that package, and when relevant on the specific finding (or message thread).
- Applies to staff alerts (“package needs action”) and applicant notices (“deficiencies submitted,” “permit issued”)
- Prefer stable app URLs with package id + finding id (optional message id)
- Avoid generic inbox-only links
Submission surface (MVP): packages are uploaded from inside the signed-in app (dashboard or package page). No anonymous dropbox, email-in, or staff re-import as a first-class path. Additional channels (city-site deep link, Accela/Tyler handoff, firm API) only when a design partner needs them — and they still create a real ClearToPermit package under a jurisdiction.
Canonical workflow — build to this
Treat this as the product spine. New screens, roles, and settings must fit this loop — do not invent parallel intake or auto-decision paths.
- Sign in
- Land on the dashboard (home for every role)
- Choose / confirm city when the user has more than one
- Upload the package (signed-in; city rules say who may submit)
- Status: Submitted
- ClearToPermit draft review (completeness + citation-backed findings)
- Notify the right staff (and applicant when relevant)
- Humans act (approve, deny, return, edit findings, send to review, or record issued)
- Notify the other side; update status and audit trail
- Applicant resubmits if asked — then the loop continues until issued or denied
Build rules:
- One home after login — every user lands on the dashboard (see below), not a blank chat or a random deep page.
- Jurisdiction first — every package belongs to exactly one city / AHJ. Checklist, who-may-submit, notifications, and staff queues are scoped to that city.
- Draft, then notify, then humans act — never skip notify; never auto-set Returned / Denied / Issued.
- Role-shaped dashboard — submitters see their packages and upload; staff see their city’s queue and actions. Same product, different primary widgets.
- City settings drive defaults — who may submit, completeness checklist, adopted codes / local restrictions, notification targets, etc. live in city settings, not hard-coded product logic.
- Adhere while we create — if a feature doesn’t serve this workflow, park it (lead-magnet pages, SoR sync, SMS, etc. come later without changing the spine).
Post-login dashboard
All users land on a dashboard once logged in. That is the default home for submitters and city staff (and ClearToPermit admins).
| Role | Dashboard emphasizes |
|---|---|
| Submitter | Packages they’ve uploaded (or are party to); status; upload new / resubmit; notifications; cities they’re approved to submit to |
| City staff | Packages needing action for their city; draft-ready queue; in-review assignments; recent human actions; link into package detail to act |
| City admin (staff with settings rights) | Same as staff, plus entry to City settings |
| ClearToPermit admin | Cross-city ops (invite/approve access, jurisdiction setup) — not the city stamp |
Dashboard principles:
- Primary navigation: Dashboard · Packages · (City) Settings · Account — Clara is always available as secondary help, never the home screen.
- Empty states teach the next step (e.g. “Upload a package to [City]” or “No packages need action”).
- Notifications and deep links return the user to the package (and finding when relevant); after sign-in with no deep link, always dashboard.
- Do not make chat, settings, or a single package the post-login default.
Clara — public (sales) and signed-in (workspace)
Clara is ClearToPermit’s assistant. The product is still workflow-first — Clara is not the home screen. Public Clara converts and educates; signed-in Clara is extremely useful on real work.
Two modes
| Mode | Where | What Clara can do |
|---|---|---|
| Public (marketing / conversion) | Landing, brief, contact, funnel pages | Sales + education + search over ClearToPermit product/docs topics; convert to request access. No live packages or private city data. |
| Signed-in workspace | Dashboard, package pages, settings (help) | Answer + search the user’s workspace — packages, status, findings, failures, settings they can see; current page context. |
Search (both modes)
Clara is a search surface, not only Q&A. Users should be able to ask in natural language and get finds + links (or clear “not found”).
| Mode | Search over |
|---|---|
| Public | Product topics, workflow explainers, closed-beta / access info, public brief concepts (how review works, who may submit, notifications, city onboarding). Point to Request access / brief / contact. |
| Signed-in | Packages (by name, address, permit type, status, id), findings / concerns, audit events, notifications, city settings the user may see, “packages needing my action,” errors/failures. Respect membership + role. |
Search results should prefer deep links into the right package, finding, or settings section. If nothing matches, say so and suggest a narrower query or the UI filter.
Public Clara bar (sales, marketing, education)
Public Clara’s job is to turn interested visitors into closed-beta subscribers (request access → invite) while staying 100% on ClearToPermit — not Estym8 takeoffs, not generic AI chat.
She should:
- Convert — when intent is clear (city staff, A/E, GC, innovation lead), guide to Request access, Product brief, or Contact; explain closed beta (gated accounts, no charge while evaluating) without pressure or fake scarcity
- Educate on the city’s process — in plain language for cities and submitters: who uploads, completeness vs discipline review, draft then notify then humans act, status the applicant sees, resubmittal, and permit issued
- Search / find — help visitors locate the right product answer or page topic quickly (“where do I request access?”, “how does resubmittal work?”)
- Answer product questions — dual-sided model, who may submit, multi-city membership, city settings, notifications, what is / isn’t automated, Revit path (honest), Accela/Tyler (speed layer, not replacement)
- Stay on brand — ClearToPermit outcomes and trust (staff keep the stamp; never automatic approve/deny/issue). Brief mention of Estym8 only if the user asks about construction takeoffs / GC estimating, then return to ClearToPermit
- Not invent a specific city’s unpublished checklist or claim live package access
Success for public Clara = the visitor understands the workflow and knows the next step to join (request access / talk to us).
Signed-in bar (build to this)
Clara should be able to answer and search, in plain language, for things like:
- What am I working on? — packages on their dashboard / in the open city; current package when they’re on a package page
- Find a package / finding — “find the TI on Main St,” “packages in Draft ready,” “open finding about egress,” “show returned incomplete this week”
- What’s the status? — Submitted, Draft ready, In review, Returned, Findings out, Issued, Denied — and who last acted
- Why did this fail / get returned / stall? — upload errors, processing failures, completeness gaps from the draft, staff return reasons, missing required files — grounded in audit trail + findings, not guesswork
- What do these draft findings mean? — explain citation-backed comments; point to sheet / checklist item when available
- What should I do next? — resubmit, wait for staff, open a finding, check city settings (admin) — guidance only
- Who was notified / who needs to act? — when that data exists on the package
- Find in settings (city admin) — “where do we set who may submit?”, “show our NEC edition”
Context Clara must use (when available):
- Current user, role, and approved cities
- Current city filter / open jurisdiction
- Open package (and finding / message when deep-linked)
- Package status, audit trail, draft vs staff-submitted findings
- Processing / upload error records (why a run failed)
- City settings that affect the user (e.g. who may submit) — explain, don’t silently override
- Search index over the above (authorized scope only)
Hard limits (still non-negotiable)
- Clara never approves, denies, returns, issues, or otherwise changes official package outcome.
- Clara never invents violations or statuses — if data is missing, she says so and points to where to look.
- Clara only searches and sees packages and cities the user is authorized for (same membership rules as the UI).
- Staff and submitters get role-appropriate answers and search hits (staff may see draft queues; submitters don’t see other applicants’ packages).
UX
- Floating Clara (or equivalent) on signed-in surfaces — always one click away from the work.
- Prefer package-scoped answers when a package is open; otherwise dashboard / city scope.
- Treat “find / search / show me / where is” as first-class intents — return ranked results + deep links, not only prose.
- Offer short next steps and deep links into the UI (“Open findings”, “View audit”) rather than long essays.
- Public Clara must not claim she can see live packages until the user is signed in; she may still sell, educate, and search public product topics.
Success for signed-in Clara = the user rarely leaves the product to ask “what’s going on?” or dig through lists — Clara can answer and find it from their workspace.
Multi-city — jurisdiction membership
Yes — support multiple cities, and track which cities each person is approved for.
ClearToPermit is multi-tenant by jurisdiction (city / AHJ):
| Concept | Rule |
|---|---|
| City / jurisdiction | Tenant: checklist, staff, settings, packages |
| User account | One person (email) may belong to one or more cities |
| Membership | Per city: role(s) + approval status (requested / approved / revoked) |
| Package | Always tagged to exactly one city |
| Staff | Typically belong to one city (or a shared-services AHJ); invite-only for that city |
| Submitters | May be approved for several cities (e.g. an A/E firm serving more than one AHJ) — they pick the city when uploading |
Access rules:
- A user may upload or see packages only for cities where their membership is approved (plus any package they’re explicitly a party to under that city’s rules).
- Closed beta: ClearToPermit / city admin approves city membership after request access — do not assume “signed up once = all cities.”
- If a user has one approved city, skip city picker and use it. If multiple, require an explicit city choice before upload (and default the dashboard filter to last-used or primary city).
- City staff must not see other cities’ packages or settings unless they have membership there.
This is how we keep multi-city honest without a global anonymous inbox.
City settings
Each city needs a Settings area (city admin / authorized staff) for defaults that shape intake and review. Product logic reads these settings; it does not hard-code one city’s rules for everyone.
MVP settings (minimum):
| Setting | Why |
|---|---|
| Who may submit | By role and/or permit type (owner, A/E, firm, GC, staff) — city’s rules, not one global rule |
| Account / invite policy for submitters | Invite-only vs city-allowed self-serve (staff always invite-only) |
| Completeness checklist | What “draft ready / incomplete” is measured against |
| Codes & restrictions | Adopted code editions, local amendments, and jurisdiction restrictions the draft review should respect (see below) |
| Notification defaults | Who gets notified when draft findings are ready (role, queue, named users) |
| Permit types in pilot | Which package types this city accepts in ClearToPermit |
| Branding / display name (light) | City name on submitter UI so the jurisdiction is obvious |
Codes & restrictions (city-defined)
Cities configure what “correct for us” means in Settings — not a single national default baked into the product.
| Configure | Examples |
|---|---|
| Adopted code editions | IBC / IRC / NEC / NFPA / energy / accessibility editions the city is on |
| Local amendments | City / county amendments that change or add to the base codes |
| Restrictions & policies | Submittal requirements, sheet/document mandates, zoning or overlay notes that affect completeness or common deficiencies for this jurisdiction |
| Checklist ↔ code links | Map completeness / review checklist items to citation language staff expect on comments |
| Enable / disable rule packs | Turn on only the packs this city wants in the pilot (start narrow; deepen after trust) |
Draft findings should cite against this city’s configured pack (edition + amendments + restrictions), and label confidence honestly (suggested vs proven). Staff still confirm or dismiss — settings shape the draft; they never auto-issue.
Next settings (after MVP):
- Reviewer assignment defaults (named vs unassigned queue)
- Required parties on a package (e.g. applicant of record even when firm uploads)
- Richer amendment / restriction editors and pack versioning
- Accela/Tyler or SoR deep-link / sync toggles when integration exists
- Messaging / SMS prefs
- Promotion queue for learn-from-misses candidates (see below)
Settings principles:
- Only city admin (or ClearToPermit admin acting for the city) changes jurisdiction settings.
- Changes are audited (including code pack / restriction edits).
- Submitters see the effect of settings (e.g. “You may upload as Architect for [City]”) — not the full admin console.
- Code packs are per city — one city’s amendments do not silently apply to another jurisdiction.
New city onboarding
Short answer: A new city cannot fully self-serve from a cold public signup today. Someone must create the jurisdiction and complete minimum setup before that city uses ClearToPermit. A live meeting is recommended for design partners / first pilots; it is not a forever requirement for every city forever.
Closed beta / design partners (now)
| Step | Who | Required? |
|---|---|---|
| Request access / sales conversation | City + ClearToPermit | Yes — gated beta |
| Kickoff call (workflow, who uploads, pilot permit type, codes) | City + ClearToPermit | Strongly recommended — fastest way to get checklist/codes right; can be async questionnaire if the city prefers |
| Create jurisdiction in ClearToPermit | ClearToPermit admin (or tooling) | Yes — before any packages |
| Invite city admin | ClearToPermit | Yes |
| City settings seed — who may submit, completeness checklist, codes/restrictions, notification defaults, pilot permit types | City admin + ClearToPermit assist on first city | Yes — minimum before real packages |
| Invite city staff | City admin (or ClearToPermit for them) | Yes before staff review |
| Approve first submitters (or city invites them) | City / ClearToPermit | Yes in closed beta |
| Smoke package (optional but wise) | Both | Recommended before opening the pilot queue |
Until the jurisdiction exists and minimum settings are in place, submitters should not be able to upload “to” that city.
Later (scale)
Aim for assisted self-serve city onboarding, not a mandatory sales meeting for every AHJ:
- City requests access. ClearToPermit approves and creates the jurisdiction (or the city admin finishes a guided setup wizard after invite).
- City admin finishes Settings (codes, checklist, who may submit). ClearToPermit provides templates / defaults they can edit.
- City admin invites staff and (if allowed) submitters.
- Optional success call / office hours — helpful, not a hard gate.
Staff accounts stay invite-only. Full open self-serve for creating a new city tenant is a product decision for later — not closed-beta default.
What “setup” must include (minimum)
- Jurisdiction record (name, display)
- At least one city admin
- Who may submit + submitter invite policy
- Completeness checklist (even a short pilot list)
- Codes & restrictions seed (editions + known local amendments for the pilot type)
- Notification defaults (who gets draft-ready alerts)
- Pilot permit type(s) in scope
Without those, draft review and notify have nothing honest to run against.
Meeting vs async
| Prefer a meeting when… | Async / wizard is enough when… |
|---|---|
| First design partner, complex codes, multi-department | Template checklist fits; city admin is technical |
| Political / innovation stakeholders need alignment | City already filled the discovery questionnaire |
| Accela/Tyler or process edge cases | Simple TI pilot, one permit type |
Policy for now: ClearToPermit ops handles jurisdiction create + first invite; city finishes Settings (with our help on the first one). Do not promise “sign up and upload tomorrow” for a brand-new city with zero setup.
Learn from misses — human-gated
Cities will catch things the draft review missed. That should make the next package better — without silent autopilot or inventing violations.
In product (staff action):
- Staff add a missed finding on the package (sheet / pin optional, description, optional code or checklist cite, severity).
- Finding is stored on the audit trail as staff-origin (distinct from AI draft) and can go out with deficiencies when staff submit.
- Staff can also dismiss or edit AI draft findings (false positives) — those signals matter too.
Learning loop (after MVP trust — human-gated):
| Signal | What we do |
|---|---|
| Recurring staff-added misses (same checklist item, sheet class, or restriction) | Propose a candidate rule / checklist / prompt improvement for this city |
| Repeated dismissals of an AI concern | Propose tuning or suppress for that city’s pack |
| Confirmations of AI concerns | Strengthen confidence for that city’s pack |
Guardrails (non-negotiable):
- No silent learning into live city packs — a city admin (or ClearToPermit ops with city approval) reviews and promotes candidates.
- Learning is per jurisdiction by default — one city’s misses do not rewrite another city’s codes.
- Never treat approve/deny/issue outcomes as automatic “train the code checker” labels.
- Opt-in anonymized cross-city learning only with explicit contract language later.
- Still draft + notify + humans act — learning improves drafts; it never auto-returns or auto-denies.
Success: “We missed X once; after promotion, we draft X next time” — with a clear human approval step in City settings or an ops promotion queue.
Staffing positioning — empower reviewers, never replace them
ClearToPermit makes government reviewers more efficient and better at their jobs. It does not replace plan examiners, eliminate front-desk or discipline review roles, or take the stamp.
| We say | We never say |
|---|---|
| Copilot / assistant for staff | “AI replaces plan check” |
| Catch incompletes and obvious conflicts faster so humans spend time on judgment | “Automate approvals” / “cut headcount” |
| Better consistency, citations, audit trail, back-check | “No human needed” |
| Reviewers stay accountable; AI drafts, humans confirm | “AI stamps the permit” |
Sell capacity and quality for the people already doing the work, not workforce reduction.
UX principle — workflow with AI assist, not a chatbot
| We build | We do not lead with |
|---|---|
| Stage-shaped UI (upload, draft review, notify, humans act, notify again) | A blank chat box as the home screen |
| Staff / applicant action surfaces after notification (approve, deny, return, edit findings, issue) | “Ask AI anything” as the primary metaphor |
| Notifications of findings and of human-taken status changes | Freeform chat with no path to a work product |
| Public Clara converts + educates on ClearToPermit / city process; signed-in Clara grounded in real packages | Chatbot-as-product, Estym8 pitch, or public Clara pretending to see live work |
Submitters get upload + status + notify-on-change. Staff get draft findings and a clear path to take action. AI drafts and notifies; humans drive every outcome — including permit issued. The system never acts automatically. Clara explains the work; she does not change outcomes.
One-liner
Upload a package. ClearToPermit drafts findings and notifies the right people. Humans approve, deny, return, or issue — then the other side is notified. Staff keep the stamp. Not a bid estimate. Never automatic outcomes.
Job (and what it is not)
| This product does | This product does not |
|---|---|
| Direct package upload by applicant or staff (no staff re-import as default) | Require city staff to re-key / re-import sets as a separate intake step |
| Draft review + notify the appropriate staff or applicant | Silent queues with no notification |
| Humans take every outcome action (approve, deny, return, edit, issue) | Auto-approve, auto-deny, auto-return, or auto-issue |
| Completeness + citation-backed draft findings | Produce a construction BOM or bid estimate |
| Notify again when a human changes status | Leave people guessing until they check back |
| Submitter status lookup (including permit issued) | Replace the plans examiner’s stamp judgment or their job |
| Human-in-the-loop confirm / dismiss / escalate | Invent violations without drawing or code evidence |
| Native Revit / BIM alongside PDF (flagship) | Pretend glyph-only PDF review equals a relational model |
Success = time-to-human-action + deficiency quality + trust + notify-the-right-person — not “FTEs removed.”
Revit / BIM (flagship)
Commercial and institutional packages increasingly include Revit. ClearToPermit treats native .rvt / BIM import as a headline capability: model inventory, completeness against jurisdiction rules, and Revit ↔ PDF consistency over time. PDF remains required for field inspectors where the city already works that way. We do not claim full model QA until a pilot spike proves extract and a first rule pack on real packages.
Scale — TI through large packages
One product, scale-adaptive: fast on small tenant-improvement packages; same workflow stages on multi-building / phased sets via classify → processing order → discipline or area bundles. Prove trust on a bounded permit type first; architect for large packages from day one.
Who buys / who uses
| Role | Need |
|---|---|
| City manager / innovation lead | Throughput, cycle time, credible “faster permitting” |
| Building official / plan-check staff | Get notified of draft findings; take action (approve / deny / return / edit / issue) in the city’s process |
| Planning / zoning (later) | Completeness vs required exhibits |
| Applicant / A/E / GC (submitter) | Upload once; get notified of findings / status; look up status (including when a permit is issued); resubmit when asked |
Buyer = municipality (or shared-services plan-check). Users = (1) submitters who upload, get notified, and track status, and (2) city staff who act on notifications. City staff may also upload when appropriate; the default path is not “applicant submits elsewhere → staff re-imports into ClearToPermit.”
Shared engine, separate product
ClearToPermit reuses the same plan-set reading spine as Estym8 (folder/PDF ingest, classify, sheet intelligence, organic evidence for conflicts). It does not ship city cost estimating, and it does not reposition Estym8 as city software. Separate product surface, auth, pricing, and roadmap.
Competition (honest)
Municipal AI plan review is not an empty category (e.g. Archistar, CivCheck, Blitz, Govstream, Symbium, CodeComply). ClearToPermit’s wedge is messy multi-file package intelligence, citation-backed comment log, resubmittal back-check, and a serious Revit path — with humans keeping the stamp. We do not claim an empty field for “AI for cities.” Suite-wide, we claim no AI-first portfolio peer on one greenfield spine (see suite map).
Core capabilities
MVP (first pilot slice)
- Post-login dashboard as home for every role (submitter queue vs staff action queue)
- Multi-city membership — user approved per city; package always belongs to one city
- City settings — who may submit, checklist, codes & restrictions, notification defaults, pilot permit types
- Direct upload from the app (signed-in; jurisdiction-scoped) — multi-PDF / folder;
.rvtwhen provided - Status starts at Submitted
- Draft review against the city’s configured codes / checklist — notify staff only; no auto return/deny/issue
- Staff action surface: approve, deny / return (with reason), add / edit findings (including missed findings) — humans take every outcome action
- In review with reviewer name or unassigned (staff-set)
- Append-only audit trail (system draft vs human actions)
- Email + in-app notify the right party of findings / status (staff on draft ready; applicant after staff act)
- Workflow UX — not chatbot-first; signed-in Clara workspace-aware (status, findings, failures, next steps) — secondary UI, high usefulness
Next (after MVP trust)
- Resubmittal back-check (original + comments + revised)
- Stronger notification routing (role / assignee)
- Deeper codes / amendments / restrictions packs + versioning in City settings
- Human-gated learn-from-misses — promote recurring staff-added patterns into that city’s pack
- Stronger Revit object-level checks and Revit ↔ PDF consistency
Later
- SMS + in-app notification prefs
- Messaging (staff ↔ staff notes; staff ↔ applicant), with deep links to package + finding / thread
- Accela/Tyler (or city SoR) integration — sync/deep-link status & issuance; ClearToPermit remains the speed layer, not the replacement ledger
- Parcel/zoning feasibility · multi-department routing analytics
Where AI earns its keep
High value early: draft completeness + citation-backed findings against city-configured codes, notify the right person, package overview for staff, audit trail separating drafts from human actions.
After trust: back-check triad; richer code / restriction packs; human-gated promotion of staff-missed patterns so we don’t miss the same issue twice.
Not for AI alone (never automate): stamp authority, approve/deny/return/issue, inventing violations without evidence, silent learning into live city packs.
Design-partner workflow (discovery — captured)
Patterns from municipal design-partner discovery (city name private). Treat as illustrative until a partner confirms their own process.
| Fact | Implication |
|---|---|
| Front desk reviews first for completeness | Completeness agent is the MVP wedge |
| Plans submitted electronically only | Digital-native intake |
| Incomplete → rejected at front desk; complete → review | Two stages: completeness gate, then discipline review |
| Revit OK for desk review; PDF still required for field | Dual artifact path |
| Disciplines: planning, civil, building, fire, traffic; environmental as required by project type | Multi-discipline comment log; environmental conditional |
Golden evaluation packages — city architect path
Design-partner ground truth: plan sets the partner city already reviewed and approved, plus the audit trail (comments / deficiency history). Optionally include rejected / incomplete front-desk examples.
| We use the sets for | We do not use them for |
|---|---|
| Completeness + conflict + comment-draft eval vs city record | Rubber-stamp approval training |
| Measuring false positives / misses vs staff-documented outcomes | Replacing examiner judgment |
| Mixing TI-scale and larger packages | Claiming PE stamp or auto-issuance |
Intake asks: mix of small and larger packages; electronic PDF (and .rvt if any); audit trail per package; anonymization and FOIA-safe handling; no public republish of plan sets.
City discovery questionnaire
Status: [ ] open · [~] partial · [x] answered. Frame as staff efficiency, not job replacement. Use with each design-partner city (do not publish the city’s name in public materials).
Must-have (locks MVP)
- Completeness checklist — Front-desk complete vs reject list today? Can we get a copy?
- Pilot permit type — First package type? (commercial, TI, residential, site, …)
- 90-day win — What would make the city say this worked?
- Who clicks — Front desk only for phase 1, or building/fire from day one?
- System of record — Accela / Tyler / other? Export-only OK for pilot? Integration later vs in-app “permit issued” only?
- [~] Golden packages — Approved sets + audit trail via city architect (count, TI vs large, reject samples, transfer path still open) 6b. [ ] Who may upload — For the pilot permit type: owner, A/E, design firm, GC expeditor? License required?
High value
- Environmental — As required by project type (trigger list still open)
- Routing — Parallel or sequential? Who consolidates comments?
- Comment format today — Spreadsheet, portal, letter? Sample deficiency package?
- Codes / amendments — Editions + local amendments on comments?
- Revit in practice — How often? Who opens models?
- PDF for field — Who publishes the inspector set?
- Resubmittals / back-check — How are comments closed today?
- Liability line — What must never be automated?
Nice-to-have
- Volume — Packages/month; % rejected at front desk; cycle time
- Procurement — Design partner / MOU / RFP timeline?
- [~] Stakeholders next — City architect intro; permit tech, building official, fire, IT
- Competitors already seen — Archistar / CivCheck / Blitz / Accela AI demos?
Success metrics
| Metric | Why |
|---|---|
| Time to first deficiency list | Staff speed |
| Recall vs city audit-trail comment classes | Pilot accuracy on golden packages |
| False-positive rate on unsupported flags | Trust |
| Completeness gate on reject samples | Front-desk value |
| Resubmittal cycles per permit | Outcome for city + applicant |
| “Would use again” | Product-market fit |
Risks (summary)
Draft + notify only · humans take every outcome action · never auto-approve/deny/return/issue · separate SKU so Estym8 stays estimator-focused · start with checklist + few high-value amendments · prove with design-partner packages before platform overbuild · ship PDF path first while Revit spike runs.
Related
Internal execution notes (backlog IDs, naming shortlist, engineering dry-runs) live in the repo only — not on this public page.