PlanCheck
Day 12 of 30 — Cogle GTM 3/3, the cluster closes
PlanCheck is AI-powered plan pre-qualification for county governments. Live today at plancheckers.com for the multi-tenant platform; running in production right now for one of the fastest-growing counties in the United States. It’s product 3 of 3 in the Cogle GTM cluster announced Saturday on Day 9, opened Sunday with CounselExpress, and continued yesterday with ChamberAdvance.
The working name in the repo is PlanCheck. The public-launch brand is PlanCheck in the wordmark, plancheckers.com in the URL — the .com was already reserved against the wordmark, and the plural carries the channel (one platform, many counties, many checkers). The domain rename closed alongside the Day 9 CogleGroup partnership announcement; the brand rename was lighter than the CasePulse → CounselExpress or ChamberEngage → ChamberAdvance moves on Days 10 and 11 because the wordmark didn’t need to change. Cluster discipline applied either way.
Today’s launch is the public marketing surface at plancheckers.com, the builder-self-service intake (open to any builder in Forsyth County right now, expanding to additional counties through cohort 2), and the public reference. The Forsyth County instance has been running through the pilot for the better part of the quarter; the deployment is the proof, the multi-county rollout is the launch.
What it does
PlanCheck is a multi-tenant SaaS with two user surfaces — builder-facing and county-admin-facing — and a single processing pipeline underneath. The builder is the daily user.
The builder workflow: A builder uploads a construction plan PDF through the builder portal. PlanCheck’s multi-pass AI pipeline reads it — text extraction with PyMuPDF, then parallel AI text analysis and AI vision analysis through Claude on AWS Bedrock — and produces, in under five minutes on average:
- A compliance report by department. Forsyth’s 212-item checklist runs across five departments: Engineering, Water & Sewer, GIS Addressing, and Planning & Community Development, Trees and Landscaping. The builder sees the score broken out the way the county will see it — because the report is built from the same checklist the county will use on the formal submission.
- A pass / partial / fail call on every item, with confidence scoring and evidence. “Pass” if the model’s confidence is ≥0.75; “Partial” if 0.40–0.74; “Fail” if <0.40. Every call comes with the specific text excerpt or page region that produced it, and the AI’s reasoning. Six of the 47 items are visual (north arrow, PE seal, contour lines, graphic scale, benchmark, origin of survey) and get the vision-analysis path with adaptive-DPI page rendering; the other 41 get the text-analysis path with a multi-pass batch strategy (3 passes — cover sheet, engineering, remaining — with 3 items per Bedrock call and a 70-second cooldown to respect rate limits).
- An HTML + PDF report with county branding (logo, primary color, county URL) that the builder can use as a self-correction guide before the formal submission, or attach to the formal submission as a pre-qualification artifact. The report is hosted on a signed-URL S3 path; the PDF is a download.
- A self-correction loop. Failed items show what’s missing and what evidence the county reviewer will look for; the builder fixes the drawing, re-uploads, and gets a new report. The marketing line on the hero page is “Pre-qualify building plans in minutes, not weeks” — and the in-minutes part is the cycle time, not just the per-submission time.
The county-admin workflow: County planning leadership uses an admin portal (no install, standard web browser, Cognito-authenticated) to manage the checklist (add / remove / reorder items by department, bulk-import from Excel, configure visual-item search terms), review aggregate submission analytics, and — optionally — view individual submission reports. Departments are configurable per county; the county five-department structure is not hard-coded.
The no-IT-required stack
Three architectural choices put PlanCheck on the right side of how a county actually procures and adopts software — distinct from the privilege framing CounselExpress carried on Day 10 and the member-data privacy framing ChamberAdvance carried on Day 11, but the same Bedrock-enterprise posture underneath:
- Air-gap design — zero integration to county infrastructure. No VPN, no API calls into the county’s existing permit-management system, no data sync, no scheduled job pulling from the county’s GIS layer. The county provides its checklist through the admin portal (or via a one-time CSV import during onboarding); the county views submission analytics through the admin portal; the county’s IT department has no deployment, maintenance, or security responsibilities. All data resides in PlanCheck’s AWS account. This is the architectural decision that eliminates the county-IT risk-review gate — the typical govtech procurement timeline blocker — and turns county adoption into a marketing-and-permitting-department conversation, not an IT-and-procurement conversation. The CIO security narrative is a one-pager because there’s nothing for the county CIO to integrate.
- Inference runs on AWS Bedrock, not the consumer Claude API. Same model. Same posture CounselExpress (Day 10) and ChamberAdvance (Day 11) launched on, for the same architectural reasons, for an additional reason that’s specific to PlanCheck: there’s no API-key management surface to expose (Bedrock auth is IAM, not API keys — the prototype’s exposed Anthropic key was the moment that locked the Bedrock-only decision), and Bedrock-routed inference sits inside the AWS commercial-contracting envelope that already covers the rest of the PlanCheck stack. The v2 architectural update went one step further: the keyword pre-filter from v1 was removed entirely. All 47 checklist items route to Claude. Prototype testing demonstrated that keyword and string matching are insufficiently accurate for the variable language in construction plan documents — abbreviations, draftsman shorthand, hand-lettered annotations, regional terminology — and the simpler all-LLM path is more accurate at a per-submission AI cost that’s negligible at the $99 price point.
- Multi-pass batch + parallel text-and-vision pipeline. The Step Functions workflow is: Extract → Parallel(AI Text, AI Vision) → Report → Notify. The text path runs the 3-pass batch strategy (cover sheet → engineering → remaining) with smart chunk selection that scores each page by indicator density and picks the right context window. The vision path renders the page image at adaptive DPI (150 down to 50 if API size limits trip) and runs the six visual items in parallel. Checkpoint/resume support means a Lambda timeout or rate-limit hiccup doesn’t lose work — the next invocation picks up at the last incomplete batch. The pipeline is the technical innovation; everything else is wiring around it.
Multi-tenant SaaS with per-tenant DynamoDB partition keys (TENANT#forsyth-ga), per-tenant S3 prefixes (s3://plancheck-uploads/{county_id}/), per-tenant Cognito User Pool groups, per-tenant KMS keys, per-tenant CloudWatch log groups. Cross-tenant query paths don’t exist in the API surface. The auditor explanation is one sentence.
The thesis behind the launch — third iteration of the line-professional shape, and the cluster closes
PlanCheck is the third product in the CogleGroup line built explicitly around line professionals doing skilled, repetitive, emotionally draining work inside regulated processes. Sunday’s CounselExpress runs that play for personal-injury attorneys reading 3,000 pages of medical records on a Saturday. Monday’s ChamberAdvance runs it for chamber engagement coordinators hand-emailing 800 members about an event nobody is the right fit for. Tuesday’s PlanCheck runs it for county planners reviewing the same site-plan checklist for the forty-third time this month.
The mechanism is different from Days 10 and 11. CounselExpress is used by the attorney directly; ChamberAdvance is used by the chamber staff directly; PlanCheck is used by the builder, and the county planner is the line professional the product is built to serve indirectly — by intercepting the bad submission before it reaches the planner’s queue. Three deliberately distinct line professionals, three regulated processes, three different commercial models layered on top of the same Velocity Process. The shape generalizes.
That shape — AI takes the part of the job nobody got into the work to do, and gives it back as time — is the Cogle line frame the audience has now heard for three days running, and today closes the run. Not “AI replaces the county planner.” The planner’s judgement layer — whether a variance is appropriate for the lot in front of them, whether the stormwater calc is conservative for the watershed they’re sitting in, whether the neighborhood is going to show up at the public hearing — stays human. The grinding layer (the same forty-third single-family site plan this month with the same missing-north-arrow on it) gets caught at the builder side, before the submission ever lands in the planner’s inbox. The planner gets cleaner submissions to review; the builder gets faster feedback; the county doesn’t pay.
This is also why PlanCheck lands on Tuesday and not on a different week, and not standalone. The cluster is the proof. By tonight the audience has seen the same shape run three times, in three deliberately different verticals — regulated legal, member organizations, local government — with three deliberately different launch hooks: a federal-court ruling, an in-revenue customer at the top of the national rankings, and an inverted commercial model deployed for a real county that evaluated eleven vendors and chose the narrowest one. Same Velocity Process. Same Bedrock posture. Same line-professional frame. Three checks in three days.
The CivCheck signal, and the structurally distinct entry
In October 2025, Clariti — a Vancouver-based government permitting platform — acquired CivCheck, the AI plan-review startup that had been doing free-to-cities, applicants-pay pricing since 2023. That acquisition validated the market category. AI plan review is no longer a thesis; it’s a category with at least one M&A comparable. The category leaders going forward are going to be the platforms that absorb CivCheck-style functionality and push into adjacent permitting workflows (Clariti’s bet), and the narrow specialists that occupy a focused position the platforms can’t reach without rebuilding (PlanCheck’s bet).
PlanCheck’s position is deliberately the narrow one: pre-submission pre-qualification only, builder-facing, no county IT involvement, no integration into the county’s existing permit-management software, designed to make every other system work better (Accela, Tyler EnerGov, OpenGov, Citizenserve, CityView, GovPilot) by ensuring submissions are complete before they enter the formal review process. We’re not trying to be a permitting platform. We’re trying to be the first ten minutes of every plan review, run before the planner ever sees the submission.
Forsyth County evaluated 11 vendors in November 2025 — CivCheck/Clariti, CodeComply, OpenGov, Accela, CityView, GovPilot, Citizenserve, CivicPlus, GeoCivix, MyGov, AutoReview.AI — before choosing PlanCheck. The reason was scope. The county had a specific problem (too many incomplete submissions, too many rejection cycles eating planner time) and didn’t want a platform replacement; they wanted the narrow tool that fixed the specific problem. That’s the entry point we built for, and that’s the entry point we’re rolling out from in cohort 2.
Pricing & business model
The commercial model is inverted from Days 10 and 11. Counties get it free. Builders pay per submission. This is the CivCheck-validated structure for the category, and it changes how procurement works — there is no county procurement, because there is no county spend. Counties sign a one-page service agreement; builders pay through Stripe when they upload.
A builder rejection cycle costs $500–$2,000 in carrying time and 2–4 weeks of schedule delay; a $49–$149 pre-qualification fee is a small fraction of that. The unit economics on the platform side are also favorable: COGS run about $0.91 per submission (Bedrock text ~$0.45 + Bedrock vision ~$0.40 + Lambda + S3 + transit), against $49–$149 revenue — gross margin clears 99% at scale once the $70/month fixed platform cost is amortized across the first 50+ submissions of the month.
The Velocity Process notes
What Claude Code handled: the React 18 + TypeScript + Vite + Tailwind builder portal (upload flow, status polling, report viewer, payment integration), county-admin portal (checklist editor with drag-drop reorder, departments management, submissions browser, tenant-config branding controls), and the public marketing landing page at plancheckers.com (hero with the live-in-Forsyth trust badge, the 47-items / 4-departments / <5-min / 24-7 stats row, the three-step How-It-Works, the two-sided-of-the-counter benefits section, the JSON-LD SoftwareApplication block plus the LLMs-meta machine-readable section for AI-engine discoverability); the Python 3.12 processing Lambdas (PyMuPDF extraction with smart-chunk-selection, multi-pass batch AI-text validation via Bedrock with the cooldown-aware checkpoint/resume logic, adaptive-DPI AI-vision validation via Bedrock for the six visual items, HTML/PDF report generation); the Node.js 20 API Lambdas (submission API, admin API, auth API), the AWS CDK v2 stack with per-construct files for API, Auth, Database, Storage, Processing, CDN, and Monitoring; the multi-tenant Cognito setup with builder/admin groups; the Step Functions workflow definition including retry configuration and the parallel-branch fan-out; the rename sweep from plancheck to plancheckers.com across Route53, CloudFront, ACM certificates, the og:url + canonical meta tags, and the JSON-LD url; the legacy PDF_Validator prototype dead-code inventory and migration plan from the direct Anthropic API to Bedrock InvokeModel.
What required human judgement: the LLM-only architectural decision — the v1 design carried a keyword pre-filter that the prototype work proved insufficiently accurate, and the v2 decision to route all 47 items to Claude (eating the ~$0.15 per-submission cost delta) was the right call but only became obvious after the prototype testing exposed how variable plan-document language actually is. The commercial-model decision — free to government, applicants pay was the model CivCheck validated and Clariti’s October 2025 acquisition cemented; choosing to follow that model rather than invent a county-procurement motion was the channel-motion bet, and it’s what makes county adoption a marketing-and-permitting conversation instead of an IT-procurement conversation. The air-gap design — the architectural answer to “what does the county CIO have to integrate” is nothing, and the value of that answer doesn’t show up in product specs; it shows up in how fast adoption can move and how many vendors got eliminated from the Forsyth evaluation on integration-burden grounds before PlanCheck ever entered the comparison. The narrow-scope positioning against the Clariti / Accela / Tyler / OpenGov platform category — we’re not a permitting platform, we’re the first ten minutes of every plan review, and resisting the temptation to expand scope on the marketing page was the editorial call.
What broke: the rename sweep from PlanCheck to plancheckers.com caught a stale reference in the Bedrock-prompt template on Sunday — the system prompt was still saying “You are a building plan review assistant for {county_name}” while the marketing site, the og:url, and the canonical link all moved to plancheckers.com. The fix was a 4-line update to backend/processing/ai_text/prompt.py and a redeploy of the Python processing Lambdas. The other near-miss: the marketing-site Footer attribution still read “Built by Silverback CTO” through Sunday — the Day 9 CogleGroup announcement reframed PlanCheck as a Cogle GTM product, and the Footer needed to say so. Patched Monday afternoon to “Built by CogleGroup.” Same lesson Days 10 and 11 learned about Footer-attribution drift, applied to a different product on the third consecutive morning. The cluster discipline is the cluster discipline; by Day 12 the rename-sweep grep and the Footer-attribution check are pre-flight habits, not near-misses.
What I’d do differently: lock the LLM-only architectural decision two weeks earlier. The prototype testing that validated removing the keyword pre-filter could have run as soon as the first 47-item Forsyth checklist was loaded — instead it ran in the back half of the build cycle, and the v1 spec carried the keyword pre-filter through several documents that had to be revised. The structural lesson is that architecture decisions on AI-pipeline products should be validated against real test data on day 3 of the build, not day 17; the cost of revising design documents is small but real, and Day 13 onward every Velocity Launch AI product gets a prototype-test gate inside the first 72 hours. The cluster has paid this tuition in three different shapes now — CasePulse → CounselExpress on rename, ChamberEngage → ChamberAdvance on rename, keyword-pre-filter → LLM-only on architecture — and the discipline travels forward.
What’s next this week
- Day 12 evening (tonight): Substack #4 drops — the Cogle GTM cluster recap. Three line professionals, three verticals, three commercial models, three days, one Velocity Process. The closing post for Week 2’s keystone arc.
- Day 12 evening (tonight): CounselExpress cohort 1 opens. First wave is Georgia PI attorneys in solo and small firms; expansion to other jurisdictions begins with cohort 2 in early June.
- Day 12 evening (tonight): PlanCheck cohort 2 of county onboarding opens. The Georgia metro-Atlanta map (Cherokee, Gwinnett, Hall, Cobb, Henry, Paulding, Barrow), plus Chatham (Savannah) and Columbia (Augusta), are the Year 1 target list — five counties on contract by end of Q3 is the operational goal. Inbound
hello@plancheckers.comis the demo-request intake. - Day 13 (Wed May 13): PodToSite — the Discoverability arc opens. Cogle cluster steps back; Websites-for-LLMs theme takes the week.
- Day 14 (Thu May 14): GEOPress — second Discoverability launch. WordPress plugin for GEO, 590M+ sites addressable.
Want to talk
If you’re a builder, engineer, architect, or land surveyor working in Forsyth County, Georgia — submit a plan today at plancheckers.com. The Forsyth pilot is free to builders through the pilot phase. Cohort 2 of county onboarding opens this month; additional Georgia counties come online through Q2 and Q3.
If you’re a county manager, planning director, or county commissioner — especially in Georgia, the Carolinas, Tennessee, or Florida for the first wave — there is no county procurement to start. The county-side conversation is a 30-minute discovery call, a one-page service agreement, a checklist-upload session, and a launch announcement to your builder community. The county pays zero; builders pay per submission. Email hello@plancheckers.com for a demo, or book through coglegroup.com/book-discovery-call.
If you’re a state association — county-commissioners association, planning-and-zoning association, regional planning commission — the multi-county rollout is built for exactly this. Book a discovery call with CogleGroup.
If you’re a mid-market operator with a regulated-review services line that AI is reshaping faster than your current provider can keep up — PlanCheck is the shape of what CogleGroup builds. The Cogle line frame generalizes; counties are the third vertical, not the only one. coglegroup.com is the parent firm. Calendar.
PlanCheck is co-built with the CogleGroup team — Jim Hasty as general partner — in partnership with Forsyth County, Georgia. Live now at plancheckers.com. The Cogle GTM cluster closes here. Tomorrow: PodToSite — the Discoverability arc opens.