Unlikely Professionals | Unlikely Ops v2.0
Supabase data model · 55-product catalog · integrations · routing · lifecycles · escalations · versioning · reporting
Unlikely Ops · System Documentation

System documentation

Mostly, the Unlikely Professionals operations platform, as it runs in August 2026: Supabase as the record, unlikely-api (FastAPI + ARQ) doing the work, the Entirely portal at unlikely.engineer where people act. This replaces the February 2026 SmartSuite-era model (11 tables, Zapier, Drive, Stripe, Chatwoot, Kulu), none of which survives.


System

Overview

Data of record: Supabase (cloud Postgres; sole source of truth since 2026-04-09; SmartSuite retired 2026-07-28, never to be reactivated). API: unlikely-api (FastAPI v2, 63 routers) with an ARQ worker and scheduler on the VPS, Redis for the queue. Portal: Entirely v2 at unlikely.engineer (7 roles plus client and field). Files: /data/projects on the VPS (60 GB, 39,135 registered files). Field input: unlikely.pics, unlikely.pl, Kilroy on Telegram. Outbound: Gmail (operations@unlikely.pro), Telnyx SMS, portal notifications. Public: unlikely.report.

System

Design principles

1 · Every column earns its place

A column exists because a service reads or writes it; legacy SmartSuite attributes nothing reads stay inside raw_data only.

2 · No orphan fields (with known exceptions)

products.division / product_name are NULL on every row (code derives division from the code prefix); cert_packages is dormant; projects.stripe_invoice_id and site_visits.calendar_event_id outlived their integrations. Listed here so they get cleaned up, not rediscovered.

3 · Computation lives in services, not the database

Invoice math in invoice_service.build_invoice_context (the portal never shows a stored total); cert readiness in the 14-check cert_validate; outstanding items in needs_engine; the nightly stuck-project scan in pipeline_shepherd.

4 · One write path

All Supabase writes go through the write service (never direct); field input only through unlikely.pics, unlikely.pl and Kilroy; outbound only through Gmail, Telnyx, portal notifications. Nothing outbound without explicit permission.

5 · Audit trail by default

audit_log.db, write_guard_audit.db, project_status_events, per-record cert_invoice_state history (drafted / approved / sent, version), email_tracking.db delivery ledger (per-recipient tokens, opens, clicks, downloads), comm_log, cert_access_log.

Data model

Tables at a glance

Supabase public schema, the tables that matter operationally (there are about 40 tables and views in total, plus SQLite side stores under /data/portal-auth). Column counts and row counts read live on 2026-08-21.

SQLite side stores (/data/portal-auth): audit_log, write_guard_audit, chat, conversation_log, email_tracking (tracking_tokens, opens, clicks, downloads), payment_tracking (payments ledger), portal_users, sow_gate (absow_confirmations), field_inspections, invoice_numbers, reconciliation, financial_recon, pierlog escalation log, cert_invoice_state/*.json (per-record cert + invoice state).
TablePurpose today
projects6,035 rows, 55 columns. One row per project; status, cert/invoice state, permit, jurisdiction, brand, review type, hold and triage overlays.
sow_lines1,983 rows. One row per product on a project: permitted qty (PSoW), as-built qty (ABSoW), inspected, post_production, production days.
products55 rows. Catalog with unit_price; behavior (add-ons, parents, specs, production days) lives in config.py.
accounts12 rows (JES Baltimore, Manassas, Richmond, Triage, Virginia Beach, Roanoke, West Virginia; Groundworks North Haven, Corporate, Hooksett; Unlikely Professionals; Founders Waterproofing). Routing defaults in config.
contacts94 frozen rows. Live people are portal users (portal_users.db, 34 users) and the config routing maps.
site_visits928 rows, 16 columns. Visit status, purpose, timing, assigned tech, requested and scheduled dates.
project_files39,135 rows. Every file under /data/projects: category, source, sha256, GPS. Replaces Field Submissions.
project_needsNeeds engine (since 2026-08-08): pier_logs, photos, documents, hold_followup, cert_blockers; first/last seen, notify count, resolved, dismissed. Replaces Crew Deliverable Requests.
rfis1,515 rows (4 open). Manual RFIs remain; automatic creation retired.
comm_log2,878 rows. Channel Portal / Email / Internal; types Escalation, Cert Delivery, Status Update, General, Scheduling.
project_status_eventsEvery status change (request, cert, invoice, hold, triage, work lane), since migration 031.
cert_access_log8,419 rows. One per hit on unlikely.report (cert, index, landing, 404, gone, cert_pdf).
cert_packagesDormant (4 rows from Feb 2026). Cert state now lives in cert_invoice_state JSON, email_tracking.db and projects.cert_status / cert_public_url.
tracker_permitsRegional open-permits tracker (JES workbook uploads; overdues, closures).
ppdr_stagingDesk Review Prep staging rows for post-production desk reviews.
invoice_ledgerInvoice number allocation (v2 format built 2026-08-10, cutover pending).
document_extractionsFleet document-extraction results (migration 033), Sonnet 5 since 2026-08-10; OCR queue.
absow_proposalsClaude-generated as-built proposals for desk reviews.
pierlog_discrepanciesPier log parse discrepancies (type, counts).

What happened to the eleven SmartSuite tables

ThenNow
Projects (59 fields)projects (55 columns); formulas and rollups moved into services
SOW Lines (34)sow_lines (20 columns) + sow_gate.db as-built confirmations
Products (16)products (11 columns) + config PRODUCT_CATALOG / ADDON_TRIGGERS / PARENT_SERVICE_MAP / PRODUCT_SPEC_REGISTRY
Accounts (14)accounts (12 rows, title only) + config CERT_ROUTES, INVOICE_ROUTES, ACCOUNT_CODES, ACCOUNT_PROJECT_PREFIX, INVOICE_BRANCH_CODES
Contacts (12)contacts (94 frozen rows) + portal_users.db + config routing maps
Site Visits (28)site_visits (16 columns) + field_inspections.db open_inspections
Field Submissions (14)retired; project_files + the upload routes
Crew Deliverable Requests (22)retired; project_needs (needs engine, since 2026-08-08)
RFIs (20)rfis (nearly all Resolved) + portal project_messages type=rfi; automatic RFIs retired
Cert Packages (29)dormant; cert_invoice_state JSON + email_tracking.db + projects.cert_status / cert_public_url + CERTS files
Communication Log (12)comm_log + chat.db + conversation_log.db
Data model

Key columns

The columns people actually query. Full DDL lives in /opt/unlikely-api/migrations.

projects

GroupColumns
Identityid, smartsuite_id (24-char hex; the key every other table uses), project_id (BAL-/MAN-/RIC-/NOR-/HKS-/VAB-/ROA-/WVA-/UPR-/FWP-#### from 9000), title, account_ss_id, branch_code, customer_number (retired 8/11), bc_job_number
Site and permitaddress, jurisdiction (AHJ), state, permit_number, permit_issue_date, permit_expiration_date, code_cycle, property_owner, project_type (Residential / Commercial)
Pipelinerequest_status (8 values), on_hold, hold_since, hold_follow_up_date / note, needs_followup, review_type (Field Inspection / Desk Review), work_lane (production / closeout), triage_* (status, assigned_date, notes, originating_branch, review_type, blocked_reason), declined_*
Cert and invoicebrand (blackhouse / unlikely), cert_status (Not Started / Draft / Approved), cert_public_url, inspection_date, production_days, invoice_number, invoice_status (Not Invoiced / Sent / Paid), invoice_total, date_invoice_sent
Scopescope_changed, scope_change_notes, absow_reconciled_at / by, prior_cert_project_id
Legacystripe_invoice_id (unused), drive_link, raw_data, ss_created_at, ss_updated_at, synced_at
Derived at read timepermit expiry (cert check 4), inspection coverage (checks 1 / 3), open RFIs (check 2), cert blockers (all 14 checks), visit rollups, invoice totals

sow_lines

GroupColumns
Identityid, smartsuite_id, project_ss_id, product_ss_id, title
Quantitiesquantity (PSoW), quantity_unit, as_built_qty (ABSoW), inspected, inspected_date, notes (text + spec JSON)
Billingpost_production (2x), production_days, production_days_confirmed, production_days_source (system_calc / owner_manual / dustin_override)
Legacy slugs in raw_dataSOW_STATUS, SOW_CONFIRMED, SOW_MODIFIED, SOW_INSPECTION_METHOD, SOW_INSPECTION_TIMING, anchor spec fields

site_visits

GroupColumns
Identityid, smartsuite_id, project_ss_id, title
Schedulerequested_date, scheduled_date, assigned_tech
Outcomevisit_status (Scheduled / En Route / On Site / Completed / Cancelled / No-Show), visit_purpose (Initial Inspection / Follow-Up / Re-Insp / Add Scope / Post-Production Inspection), inspection_timing (In Production / Post Production), visit_outcome (free text)
Legacycalendar_event_id, raw_data
Side storesmissed_appointment_flags → ADM-MISS; failed_inspection_flags; open_inspections (opened / suspended / completed)

project_files

GroupColumns
Identityid, project_id (= smartsuite_id), filename, category (PHOTOS / PIERLOGS / PERMITS / PERMIT_PACKAGE / PLANS / CERTS / INVOICES / OTHER)
Provenancesource (upload, intake_upload, cert_generator, invoice_generator, archive_*, whatsapp-rob historical), source_path, mime_type, size_bytes, sha256, gps_lat / gps_lon, created_at, linked_at

project_needs

GroupColumns
Needproject_ss_id, need_type (pier_logs / photos / documents / hold_followup / cert_blockers), detail
Lifecyclefirst_seen, last_seen, notify_count, last_notified_at, resolved_at, resolved_via, dismissed_at / by / note

comm_log

GroupColumns
Messagelinked_project, sent_at, direction (Inbound / Outbound / Internal), channel (Portal / Email / Internal), message_type (Escalation / Cert Delivery / Status Update / General / Scheduling), from_field, to_field, subject, content
Data model

Product catalog

55 products across 8 service divisions plus add-ons, admin fees and the production-day pseudo-product; 44 are billable, 11 are $0 documentation sub-components. The catalog is what we inspect; the county narrows it (Arlington = special inspections only; retaining walls everywhere). Prices read from the products table on 2026-08-21.

Pricing rules. Service lines bill qty 1 per product type; add-ons at as-built quantity; 2x for desk-review projects or post_production lines (and their add-ons, and PRD-DAY); ADM never doubles; $5,000+ routes to owner review. $0 rows are skipped on invoices.

Dependencies (code-enforced)

ParentAuto-addedRule
UND-PUSH, UND-HELIADD-BKFLalways (ADDON_TRIGGERS)
UND-SLABADD-SLABalways
ANC-WALL, ANC-CHANADD-BKFLalways
WTR-BSMTADD-SLAB + ADD-WSEALalways; qty = WTR-BGUT lin ft; exception = confirmed-not-built line
SUP-COLSUP-FTR-CIPinvoice-time auto-add when no SUP-FTR-* line exists; footer specs in SOW notes (24x24x24, 12/12 concrete / aggregate)
FND-ABC, FND-AREA, FND-FTR, FND-WALLADD-BKFLinvoice-time unless FND-BKFL / RTW-BKFL present
WTR sub-componentsWTR-BSMT or WTR-CRWL parentparser / write service auto-create (WTR-BGUT = basement signal)
ENC sub-componentsENC-SYS parentauto-create

UND · Underpinning 3

Production days and pier logs apply to all three. Default manufacturer Supportworks.

CodeProductUnitUnit priceProduction daysNotes
UND-HELIHelical Pilepier$400yesadds ADD-BKFL; pier log required
UND-PUSHPush Pierpier$400yesadds ADD-BKFL; pier log required
UND-SLABSlab Pierpier$400yesadds ADD-SLAB; pier log required

ANC · Anchors 2

CodeProductUnitUnit priceProduction daysNotes
ANC-CHANChannel Anchorchannel$400yesadds ADD-BKFL
ANC-WALLWall Anchoranchor$400yesadds ADD-BKFL

BRC · Bracing 3

CodeProductUnitUnit priceProduction daysNotes
BRC-CFRPCFRP Strapstrap$400yes
BRC-PINWall Pinpin$400no production days
BRC-STEELSteel Bracebrace$400yes

SUP · Support 10

CodeProductUnitUnit priceProduction daysNotes
SUP-BANDBand Boardsection$300
SUP-COLAdjustable Columncolumn$400SUP-FTR-CIP auto-added at invoice when no footer line; footer specs in SOW notes
SUP-FLOORSubfloorarea$300
SUP-FTR-CIPPier Footer (CIP)footer$300
SUP-FTR-PREPier Footer (Precast)footer$300
SUP-JOISTFloor Joistjoist$300
SUP-LBEAMLumber Beambeam$300
SUP-RIMRim Joistsection$300
SUP-SBEAMSteel Beambeam$400
SUP-SILLSill Platesection$300

FND · Foundation 12

CodeProductUnitUnit priceProduction daysNotes
FND-ABCABC Foundationcomponent$450invoice auto-adds ADD-BKFL unless FND-BKFL / RTW-BKFL present
FND-AREAAreawayareaway$300invoice auto-adds ADD-BKFL unless FND-BKFL / RTW-BKFL present
FND-BKFLFoundation Backfillarea$300
FND-FTRContinuous Footerfooter$300invoice auto-adds ADD-BKFL unless FND-BKFL / RTW-BKFL present
FND-GSLABGround Slabslab$300
FND-PFTRPier Footerfooter$300
FND-PORCHPorchporch$300
FND-SSLABStructural Slabslab$300
FND-STOOPStoopstoop$300
FND-WALLFoundation Wallwall$300invoice auto-adds ADD-BKFL unless FND-BKFL / RTW-BKFL present
FND-WWELLWindow Wellwindow well$0documentation only; $0: documentation line, skipped on invoices
FND-XWTRExterior Waterproofingarea$300

WTR · Water Management 9

Two billable parents (WTR-BSMT, WTR-CRWL); seven $0 sub-components document what was installed and require a parent line (WTR-BGUT is the definitive basement signal).

CodeProductUnitUnit priceProduction daysNotes
WTR-BGUTBasement Guttergutter$0sub-component, requires parent WTR-BSMT; $0: documentation line, skipped on invoices
WTR-BSMTBasement Water Managementsystem$300adds ADD-SLAB + ADD-WSEAL (qty = WTR-BGUT lin ft); parent for WTR-BGUT
WTR-CDRAINCrawlDraindrain$0sub-component, requires parent WTR-CRWL; $0: documentation line, skipped on invoices
WTR-CRWLCrawlspace Water Managementsystem$300parent for crawlspace sub-components
WTR-DISCDischarge Lineline$0sub-component, requires parent WTR-CRWL; $0: documentation line, skipped on invoices
WTR-DTILDrain Tiletile$0sub-component, requires parent WTR-CRWL; $0: documentation line, skipped on invoices
WTR-LATLateral Lineline$0sub-component, requires parent WTR-CRWL; $0: documentation line, skipped on invoices
WTR-SPITSump Pitpit$0sub-component, requires parent WTR-CRWL; $0: documentation line, skipped on invoices
WTR-SUMPSump Pumppump$0sub-component, requires parent WTR-CRWL; $0: documentation line, skipped on invoices

ENC · Encapsulation 4

ENC-SYS is the billable parent; three $0 sub-components require it.

CodeProductUnitUnit priceProduction daysNotes
ENC-CSEALCrawlSealseal$0sub-component, requires parent ENC-SYS; $0: documentation line, skipped on invoices
ENC-DEHUMDehumidifierunit$0sub-component, requires parent ENC-SYS; $0: documentation line, skipped on invoices
ENC-RINSRigid Insulationpanel$0sub-component, requires parent ENC-SYS; $0: documentation line, skipped on invoices
ENC-SYSEncapsulation Systemsystem$300parent for ENC-CSEAL / DEHUM / RINS

RTW · Retaining Walls 6

All six at $450. Retaining walls are inspected everywhere we work.

CodeProductUnitUnit priceProduction daysNotes
RTW-BKFLRetaining Wall Backfillarea$450
RTW-FTRRetaining Wall Footingfooter$450
RTW-RAILRailingrailing$450
RTW-SOILSoil Bearingtest$450
RTW-WALLRetaining Wallwall$450
RTW-WTRRetaining Wall Waterproofingarea$450

ADD · Add-ons 3

Auto-attached by ADDON_TRIGGERS; quantity follows the as-built.

CodeProductUnitUnit priceProduction daysNotes
ADD-BKFLBackfilllocation$300
ADD-SLABSlab Patch/Repairpatch$300lin ft when triggered by WTR-BSMT
ADD-WSEALWallSealmembrane$300lin ft when triggered by WTR-BSMT

ADM · Administrative 2

Administrative fees, qty 1, never doubled.

CodeProductUnitUnit priceProduction daysNotes
ADM-MISSMissed Appointmentfee$400missed appointment; consolidated into one line with dates; never 2x
ADM-RUSHEmergency Servicefee$400added at intake when inspection is under 24 h out; never 2x

PRD · Production 1

Billing pseudo-product; not in config PRODUCT_CATALOG.

CodeProductUnitUnit priceProduction daysNotes
PRD-DAYProduction Dayday$600auto-inserted from production days (UND/ANC/BRC only; min 1, max 12); 2x when post-production
Systems

Integrations and channels

What replaced the seven February integrations, and the channels people actually hear from.

Cert generator (unlikely-api)

replaces the Codex-C / blackhouse-docs skill

/cert-gen/* and the portal draft button. Reads projects, sow_lines, products, accounts, site_visits, project_files and the files under /data/projects/{id}/. Writes PDF + HTML to CERTS/, registers them, sets cert_public_url (unlikely.report), updates cert_status. Jinja2 → Playwright/Chromium; pypdf appends Anne Arundel 210/215/240, Montgomery SIRC, Prince William, Fairfax, Arlington, Stamford CT, NC Appendix G.

Portal intake, action center and chat

replaces Chatwoot (never adopted)

Entirely portal at unlikely.engineer: Intake Wizard, intake requests, schedule-change requests, holding pool, cert/invoice workbench, review queue, payments, Outstanding Items, custom WebSocket chat and notifications. Writes projects, sow_lines, site_visits, comm_log, project_files; chat and notifications in SQLite.

Kilroy field agent + unlikely.pics / unlikely.pl

replaces Kulu on WhatsApp

Kilroy (Hermes, Telegram; Dustin and Darius only) calls /whatsapp/inspection/* and /field-media/upload. Photos and pier logs enter only through the per-stop unlikely.pics/s/{PROJECT-ID} link (GPS preserved, Vision proposal) and unlikely.pl (pier log parse). Writes site_visits (arrival, completion, No-Show), sow_lines (as-built, inspected), comm_log notes, project_files. Outbound field messages: WhatsApp hook (down since 2026-07-27) → Kilroy Telegram → Telnyx SMS.

Payments: remittance inbox, reconciliation, Revolut

replaces Stripe (removed 2026-03-30)

Invoices are PDFs emailed to Invoices@groundworks.com with branch CC. Remittance emails are polled (Tue/Thu afternoons), parsed, matched by the reconciliation scanner (7:15 AM ET) and smart reconciliation (10:00 AM ET; HIGH auto-applies and closes, MEDIUM parks, $5K+ always reviewed). Revolut API for the bank side. Payments page and RUBRIC Money tab show AR aging and collected revenue.

Calendar (Supabase only)

replaces Google Calendar

/calendar/* and the portal calendar (field and PPDR variants, drag-and-drop) read and write site_visits. Branch schedulers get a 6:30 AM ET SMS snapshot; the field inspector gets the day's schedule at 6:00 AM ET (Kilroy) with the API push defaulting to 8:00 AM.

File storage (VPS filesystem)

replaces Google Drive / Apps Script

/data/projects/{record_id}/{CERTS,PERMITS,PLANS,PHOTOS,PIERLOGS,INVOICES,OTHER} tracked in project_files; image optimization and EXIF GPS capture on upload; public cert hosting at unlikely.report. Google Drive is a read-only cold archive; Dropbox, blkhse Gmail and Xero are historical archives fuzzy-matched to projects.

Scheduler automation (ARQ)

replaces SmartSuite automations and Zapier

Eastern time. Interval: needs_watcher hourly, visit_completion_prompt 10 min (8 AM to 8 PM weekdays), media_auto_filer 30 min, remittance_inbox hourly Tue/Thu afternoons, bounce_scanner 2 h, document extraction hourly, OCR 30 min, ops_agent_tick 15 min, dead-letter 5 min. Daily: morning_ops 6:15, status_advancement 6:30, branch_schedule_morning_snapshot 6:30, pierlog_request 6:45, reconciliation_scan 7:15, pierlog_morning_escalation 7:15, closeout_burndown 7:20, daily_schedule 8:00, needs_digest Mon/Thu 8:00 (preview), financial_recon 8:00, smart_reconciliation 10:00, inspection_reminder 17:00, inspection_escalation 18:00, pierlog_followup 18:00, visit_eod_recap 18:30, pipeline_shepherd 2:15 weekdays, monthly_dispatch_draft 5:00 (acts on the last day of the month), trash_purge 3:00, knowledge_keeper Sun 1:00. RFI auto-escalation cron disabled 2026-08-08.

A\ C Code

permit parsing, extraction, Vision, Guy Friday

Permit parser at intake and on Reparse; fleet document extraction (Sonnet 5); Vision photo classification (in-situ gate, quantity proposals, media auto-filer); ABSoW proposals; cert pre-review agent; Guy Friday in the portal (Opus for owner/admin, Sonnet for staff, SQL engine, charts).

Google Maps / Routes / Address Validation

intake enrichment

USPS-grade address standardization, geocoding, AHJ (jurisdiction) lookup at intake; traffic-aware drive times at /ops/drive-time.

Channels

ChannelUsed for
Email (Gmail, operations@unlikely.pro)Certs, invoices, needs digest, notifications; remittance inbox in.
Telnyx SMS (+1 202 989 1100)Branch scheduler snapshot 6:30 AM, pier-log request chain, field fallback; 600-char chunks, 15/recipient/hour cap, opt-out honored.
Kilroy TelegramDustin and Darius only: daily field schedule, EOD recap, briefings, photo proposals, permit-expiry check.
Portal notifications + chatIn-app feed, WebSocket chat, escalation threads; consolidation, DND, offline fallback via notification_router.
unlikely.picsPer-stop and permanent photo upload links; Vision proposals; closeout.
unlikely.plPier log upload (/log/{pin}); Vision parse; crew lookup by permit + job number or address.
unlikely.reportPublic cert view with Download PDF; per-customer index; hits logged.
WhatsApp hook (dormant)First link in the field-message chain; dead since Rob/OpenClaw shut down 2026-07-27.
Systems

Contact and cert routing

Deterministic per-account maps in config.py (CERT_ROUTES, INVOICE_ROUTES, BRANCH_SCHEDULERS, ESCALATION_ROUTING, BRANCH_DIGEST_RECIPIENTS). Names as of 2026-08-21; Stephaney's tiers fall to Dustin after 2026-08-31.

Who gets what

EventRecipientChannelFallback / notes
Pier log requestBranch scheduler (Baltimore Julia Marketis; Manassas Zoe Kelley; New Haven Kai Perkins) [VERIFY: Richmond, VB, Roanoke, WV have no SMS scheduler entry]Telnyx SMS 6:45 AM ET with upload link6 PM follow-up SMS; 7:15 AM next-day escalation SMS to the same scheduler
Photos / permits / plans / hold decisionBranch digest contact (Baltimore Julia + Nicole; Manassas Zoe + Lily; New Haven Kai; Virginia Beach Ronnie Stamp; default Stephaney until 8/31 then Dustin)Email digest Mon/Thu 8 AM ET with no-login upload linksPREVIEW MODE: digests go to Dustin only until he flips it live
RFI sent (manual)Branch scheduler tier of ESCALATION_ROUTING, else active portal schedulers for the branchPortal notification (email optional)Office manager at Day 3, GM at Day 5 if the escalation scan is run by hand
RFI escalationOffice manager → GM per account (Baltimore Nicole Lovo, no GM; Manassas Lily Jacobs → James Carey; North Haven Shejdie Childs; Hooksett Jeff Corso; Richmond / Roanoke / WV / Triage Stephaney until 8/31 then Dustin; VB scheduler Ronnie)Portal notification, email_pending flag at Day 5Daily cron disabled since 2026-08-08; POST /portal/rfi/escalation-scan only
Invoice sentInvoices@groundworks.com (dSilo ingests)Email from operations@unlikely.proBranch CC: Nicole (BALT), Lily (MANA), Jo Woodward (RICH), Kai (NHAV, Corporate), Jeff Corso (Hooksett), Candice Yi (VB); Founders Waterproofing → Tyler Rasmussen; PPDR and triage projects bill the originating branch
Cert package deliveredCERT_ROUTES by account: Baltimore Julia + Nicole (+ ipbpri@aacounty.org for Anne Arundel); Manassas Permits.Inspections + Madison Carter + Zoe Kelley, CC Lily; Richmond Stephaney; North Haven / Corporate Kai; Hooksett Jeff Corso; Founders WP permits@; Unlikely Pro per-send recipientEmail, per-recipient tracked copies, cert link on unlikely.reportPPDR desk reviews and any JES project completed on or before 2025-12-31 route to JES Triage (Stephaney TO, Permits.Inspections CC); VB adds Ronnie Stamp CC until 9/1 then Ronnie alone; legacy archived certs are served from the portal archive, not re-sent
Schedule confirmationBranch schedulers (BRANCH_SCHEDULERS)SMS snapshot 6:30 AM ET weekdays (today + tomorrow)Schedule changes requested and approved in the portal; Darius gets the daily schedule at 6:00 AM ET via Kilroy (API push 8:00 AM)

Certifier and jurisdiction forms

JurisdictionForms auto-appendedCertifier
Anne Arundel MDForms 210 Footing, 215 Backfill, 240 Slab (240 only with slab scope)Charles Diehl, AIA
Montgomery MDResidential Special Inspections (SIRC) formCharles Diehl, AIA
Prince William VABuilding Inspection formJohn C. Valerio, PE
Fairfax VABuilding, Foundation, Retaining WallJohn C. Valerio, PE
Arlington VAStatement of Special InspectionsJohn C. Valerio, PE
Stamford CTCode Statement + Final Statement of Special InspectionsJohn C. Valerio, PE
North Carolina (statewide)Appendix G Design Professional Inspection form (field visits only)John C. Valerio, PE
All other MDnoneValerio, PE (MD #16657)
All other VAnoneValerio, PE (VA #044764)
All other CTnoneValerio, PE (CT #15080)
CA CO FL GA IL MI NH NY OH PA RI SCnoneValerio, PE (licensed, inert until a project arrives)
Workflows

Lifecycles

Project (8 statuses + flags), site visit (6, unchanged enum), SOW line, cert, invoice, triage.

IntakeScheduledIn ProgressField CompleteReady for CertCertifiedInvoicedClosed

Project lifecycle

StatusEntryWhat happensExit
IntakeIntake wizard submission, intake request approval, or email recoveryPermit parse, address validation, jurisdiction and certifier routing, SOW lines draftedApproved → Scheduled
ScheduledSite visit row with a dateAppears on the field and branch schedules; pier-log link minted for underpinning stopsVisit date arrives / arrival logged
In Progressstatus_advancement 6:30 AM on the visit day, or Kilroy arrival logInspection, photos and pier logs through unlikely.pics, ABSoW and inspected status, field notes to comm_logAll visits Completed (or reset to Scheduled with needs_return_visit)
Field CompleteAll visits CompletedAuto-validation 10-point checklist; blockers recorded as needs; SLA clock (3 business days)Validation passes
Ready for CertAuto-validation PASS, cert_status DraftAdmin drafts cert (version N), pre-review agent, QA guardrails, confidence routingCert approved
CertifiedCert Approved and sentDelivery through /cert/deliver after Dustin reviews the PDF; per-recipient tracking; invoice draftedInvoice sent
InvoicedInvoice emailedReconciliation scanner matches remittances; shepherd flags unpaid at 30 and 60 daysPayment matched
ClosedPayment matched (HIGH tier) or owner closeTerminal; owner may reopen

Flags and overlays

Flag / overlayMeaning
on_holdHolding Pool: hold reason, hold since, follow-up date, stale close-out, convert to desk review; shepherd flags > 30 d
cancelledCancel Requests; legacy rows may carry the old Cancelled status
needs_return_visitSet when a visit date passes without completion; shepherd auto-clears after 14 d
needs_followupOwner to-do
review_typeField Inspection / Desk Review (selects the cert document set and 2x pricing)
work_laneproduction / closeout (migration 042, 2026-08-18)
triage_statusReceived / In Review / Blocked / Complete for the pre-2026 backlog (completion ≤ 2025-12-31)

Site visit lifecycle

StatusEntryExit
ScheduledVisit row created with date and assigned techArrival logged, or day passes (project resets to Scheduled if not completed)
En RouteOptional, rarely usedArrival
On SiteKilroy arrival log with photoCompletion
CompletedCompletion call, idle completion prompt, or EOD recap reply
CancelledOffice cancels before the visit
No-ShowTech reports no access; missed-appointment flag; ADM-MISS trip charge

SOW line

FieldValuesMeaning
SOW statusDraft, ConfirmedDraft from permit parse; Confirmed after the SOW gate (PSoW vs ABSoW)
Inspection statusNot Inspected, Partially Inspected, InspectedSet from the field; 100% coverage (excluding ADM / PRD) required by auto-validation
Modified / as-built qtyboolean + numberAs-built differs from permitted; ABSoW drives cert and invoice
Timing / methodIn Production or Post Production; In Situ or Desk ReviewPost Production bills 2x; per-line post_production flag
Production daysnumberOnly UND / ANC / BRC generate production days
Workflows

Escalations

Only the chains that actually run. The February crew-deliverable ladder (T+6h/24h/48h/72h) and the RFI priority timers do not exist in code.

Pier log chain

6:45 AM ET request SMS with upload link → 6:00 PM follow-up → 7:15 AM next-day escalation SMS to the branch scheduler; idempotent per project and date; Baltimore caps at office manager. Cert blocked by validation while logs are missing.

Outstanding items (needs engine)

Photos, permits/plans, hold follow-up (30 d), cert blockers computed hourly; watcher auto-resolves and notifies Dustin + Jacob; Mon/Thu 8 AM digest (preview mode); waive via Outstanding Items (owner/admin).

RFI ladder (manual RFIs, scan off cron)

Day 1 portal reminder; Day 3 Escalated + office manager; Day 5 GM + email_pending; Day 7+ every 2 business days. Shepherd reports RFIs aging 3 to 7 days (info) and 7+ (critical).

Permit expiration

Shepherd: ≤ 30 d warning, ≤ 14 d critical, expired critical (owner alerts + branch digest); cert_validate check 4 blocks generation; intake soft-flags; no override or exemption path; no auto-RFI to the client.

Field day

8:00 AM schedule (Kilroy 6:00) → 5:00 PM open-visit reminder → 6:00 PM escalation → 6:30 PM EOD recap; completion prompts every 10 min.

Money and holds

Unpaid 30 to 59 days notify owner; 60+ escalate; on hold over 30 days follow-up; cert approved but undelivered after 3 business days.

Workflows

Cert versioning

The Revision / Major Revision / Addendum scheme (v1.1, v2.0, v1.0-A, Superseded) never shipped. What runs:

Version number

Integer per portal draft: v1, v2, v3 … (API default "1.0" when called directly; early certs used 1.0 / 1.1 / 2.0). Filename {address}_{project_id}_CertPackage_v{N}.pdf.

Which file is current

Newest PDF by mtime; /cert-gen/pdf/{id} serves it; cert_public_url on unlikely.report always shows the current package; prior PDFs remain on disk.

Resend labelling

Subject "{address} - Permit Number {permit}" plus "UPDATED (vN)" where N is the send count from CERTS/sent_log.json; body notes it is an updated version; comm_log entry "Cert Delivered [UPDATE], v{cert version} (send #N)".

Review rule

Dustin sees every regenerated PDF before any resend. No Superseded / Void status, no Addendum form; a regenerated package re-covers all current SOW lines.

Surfaces

Reporting

The nineteen SmartSuite views are gone. Where each need is answered today:

Not currently reported anywhere found: revenue by product, post-production premium revenue, waived-needs audit, deliverable response times by account. Permit exemptions do not exist as a concept.

Command Center / Workbench

Owner pipeline + action queue; stage filters; cert drafting aging; ready for cert.

Branch Dashboard

Per-branch aging > 30 d, open RFIs, RFIs aging > 3 d, inspections this month, avg days to close.

Outstanding Items + Pier Log Tracker

Needs engine queue; per-project pier-log status and age.

Owner Analytics + /portal/reporting

Revenue snapshot and monthly breakdown; 12 endpoints: revenue, revenue/trend, sla-compliance, cert-velocity, branch-comparison, pipeline-snapshot, invoicing-gap, production-accuracy, scope-complexity, reinspection-rates, certifier-workload, seasonal-patterns.

Payments · Smart Recon · RUBRIC Money

Invoice ledger, AR aging by branch, collected revenue since inception ($2.96M / 2,395 invoices as of 8/08), parked matches.

Delivery Ledger · Cert Board

Per-recipient sends, opens, link clicks, downloads; download log with version.

Permit expiry

/ops/permit-expiry, shepherd permit rules, PermitTimelineChip on the project page.

Tracker / The Backlog / Missing Certs

Regional open-permits tracker (mirror at unlikely.ltd), missing-certs sweep, desk-review prep.

Pipeline Shepherd + firm stats

2:15 AM weekday JSON reports at /data/shepherd; firm stats (projects, site visits, jurisdictions served) at /data/firm-stats/stats.json feeding unlikely.pro and unlikely.place.

Guy Friday + RUBRIC dashboard

SQL engine, Tufte charts, user-activity lookups (owner); RUBRIC tabs Pulse / Health / Outbox / Money / Queues.