Unlikely Ops · Revision log
What changed since v1
The February 2026 edition described a SmartSuite + Zapier + Google Drive + Google Calendar + Stripe + Chatwoot + Kulu/WhatsApp operation. Between March and August 2026 every one of those was replaced. The business process kept its shape; the tools, statuses, counts and several rules did not. This page is the record of the differences so nobody has to rediscover them.
Tech stack
| v1 said (Feb 2026) | Now (Aug 2026) | Since / evidence |
|---|---|---|
| SmartSuite, 11 tables, "Unlikely Ops" solution | Supabase (cloud Postgres) is the sole source of truth; 40+ tables and views. SmartSuite retired 2026-07-28, never to be reactivated. | 2026-04-09 cutover; 2026-07-28 retirement (CLAUDE.md §9) |
| Google Drive for certs, invoices, photos, permits | VPS filesystem /data/projects/{record_id}/{CERTS,PERMITS,PLANS,PHOTOS,PIERLOGS,INVOICES,OTHER}, tracked in project_files. Drive is a read-only cold archive. | 2026-02-25 migration (CLAUDE.md §10) |
| Google Calendar for scheduling | Portal Field Calendar over Supabase site_visits; Google Calendar disconnected. | scheduler.py:45; routes/calendar.py |
| Stripe for invoicing and payment tracking | In-house invoice PDFs (invoice_generator.py) emailed by Gmail to Invoices@groundworks.com with branch CC; payments by EFT; remittance inbox + 3-tier reconciliation; Revolut API. | git cf476d4 (2026-03-30), 7da3282 (2026-03-31) |
| Zapier integration layer; Google Apps Script PDF pipeline | No Zapier or Apps Script anywhere. Orchestration = ARQ worker + scheduler + Redis inside unlikely-api. | grep of /opt/unlikely-api, /opt/scripts |
| Chatwoot for client comms | Never adopted. Custom portal chat + notifications, Gmail, Telnyx SMS. | memory _superseded/project_chatwoot_setup |
| Kulu fieldtech agent on WhatsApp | Kulu retired 2026-03-25; Rob/OpenClaw WhatsApp shut down 2026-07-27; Kilroy (Hermes, Telegram) is the sole agent; photos and pier logs go only through unlikely.pics / unlikely.pl. | reference_ai_agents; feedback_one_upload_path |
| Codex-C / C4 Cowork for cert generation | cert_generator_v3 inside unlikely-api: Jinja2 → Playwright/Chromium PDF, pypdf forms. Guy Friday in the portal; Claude Code on the VPS. | CLAUDE.md §6, §13 |
| Gmail from dustin@ / inspections@unlikely.pro | All outbound email as operations@unlikely.pro. | config.py SENDER_EMAIL, BRAND_INFO |
Business rules and counts
| v1 said (Feb 2026) | Now (Aug 2026) | Since / evidence |
|---|---|---|
| Brand cutover January 28, 2026 | BRAND_CUTOVER = 2026-01-01; post-production desk-review certs are always Unlikely Professionals. | config.py:1451; cert_data_service.resolve_brand |
| Certifiers: Diehl (AA, Montgomery), Valerio (MD, VA, CT) | Same, plus Valerio NC PE #024172 (live 2026-08-09, expires 2026-12-31) and 12 licensed expansion states wired but inert. Diehl Approval ID B2022-103 is Anne Arundel only; Montgomery uses Inspector #1519. | config.py CERTIFIER_MAP |
| "17 eastern US states" | 16 active state licenses in CERTIFIER_MAP; live projects in MD, VA, CT; 8 JES/Groundworks branches served; 71 permit jurisdictions served, 405 in territory. | firm-stats; reference_ahj_definition_ruling |
| 44 products · 11 divisions | 55 products: 8 service divisions (UND, ANC, BRC, SUP, FND, WTR, ENC, RTW) plus ADD, ADM, PRD. | products table, config PRODUCT_CATALOG |
| 5 roles | 8 portal roles (up_owner, up_admin, scheduler, assistant, goa, goa_readonly, ap, triage) plus client and field. | services/portal_auth.py |
| County forms: AA 210/215/240, Arlington SSI | AA 210/215/240, Montgomery SIRC, Prince William, Fairfax (3), Arlington SSI, Stamford CT (2), NC Appendix G (field visits only). | config.py JURISDICTION_FORMS |
| Admin fees: trip, no-show, emergency | ADM-RUSH (< 24 h, $400) and ADM-MISS (missed appointment, $400); PRD-DAY $600/day (2x post-production). | products table; reference_invoicing_rules |
Statuses and lifecycles
| v1 said (Feb 2026) | Now (Aug 2026) | Since / evidence |
|---|---|---|
| Project: New Submission, Scheduling, Review Complete, Deliverables Ready, Delivered, Re-Opened, On Hold, Cancelled… (16-17 values) | 8 statuses: Intake → Scheduled → In Progress → Field Complete → Ready for Cert → Certified → Invoiced → Closed; flags on_hold, cancelled, needs_return_visit. | config.py PROJECT_STATUS_MAP; CLAUDE.md §8 |
| Cert status: Backlog, Awaiting Input, In Process, Ready for Seal, Complete, Submitted to Client | Not Started → Draft → Approved (portal overlays Sent and the review state). | config.py |
| Invoice status: Not Invoiced, Draft In Stripe, Invoiced, Paid | Not Invoiced → Sent → Paid. | config.py |
| SOW line: Draft, Confirmed, In Progress, Modified, Complete | SOW status Draft / Confirmed; inspection status Not / Partially / Inspected; modified flag + as-built qty; timing and method. | config.py |
| Cert versions v1.0 / v1.1 / v2.0 / v1.0-A with Superseded status | Integer per portal draft (v1, v2, …); newest file is current; resend subject carries UPDATED (vN) where N is the send count. | routes/cert.py; cert_delivery_log |
| Status flip to "Complete" triggers the cert email | Sending is an explicit portal action gated by preflight; email carries an unlikely.report link, no attachment. | routes/cert.py |
Escalations and gap detection
| v1 said (Feb 2026) | Now (Aug 2026) | Since / evidence |
|---|---|---|
| Crew deliverables: T+6h / 24h / 48h / 72h, waiver | Needs engine (2026-08-08): pier-log SMS 6:45 AM → 6 PM → 7:15 AM next day to the branch scheduler; Mon/Thu digest for everything else; waive from Outstanding Items; cert blocked by validation, not a timer. | services/needs_engine.py; pierlog_request_service.py |
| RFI priorities Standard / Urgent / Blocking with timers | Automatic RFI creation and timed escalation retired 2026-08-08 (1,484 stale RFIs closed). Manual RFIs remain; the Day 1/3/5/7 ladder exists in code but its cron is off. | project_needs_engine_rfi_replacement |
| Permit expiry: T-30 flag, 24 h override window, auto-RFI to client | Pipeline Shepherd: ≤30 d warning, ≤14 d critical, expired critical; cert_validate blocks; no override or exemption path; branch digest carries the finding. | services/pipeline_shepherd.py |
Open for Dustin
- States claim. The marketing site carries three numbers at once (17 "US service in" states, "licensed in 16 states", "25 US states" territory). This site uses 16 licensed / 71 served / 405 in territory. Pick one public figure.
- inspections@unlikely.pro. Every live surface sends as operations@unlikely.pro; does the inspections@ alias still exist in Workspace? If not, retire it from printed collateral.
- Stripe. Code removed it 2026-03-30/31 and CLAUDE.md was corrected today; confirm nothing Stripe-side is still live outside this repo (direct-client card payments, for example).
- Certifier review of record. v1 said the PE/AIA reviews each package before the seal; code shows the owner review queue as the gate. This site says "Dustin sees every PDF". Confirm whether Valerio / Diehl personally review each package.
- Client SOW confirmation. v1 had a client SOW-confirmation round-trip; no such step exists. Drop it, or is there an informal practice (Manassas scope calls) worth documenting?
- Permit-expiry outreach. No automation contacts the branch on expiry (internal alerts only). Is there a manual practice to document, and is an override / exemption path still wanted?
- Needs digest. Still in preview mode (Dustin only). Scheduler-card rows for the digest say [VERIFY] until it goes live to BRANCH_DIGEST_RECIPIENTS.
- Pier-log SMS coverage. BRANCH_SCHEDULERS has entries only for Baltimore, Manassas, New Haven. Confirm intended recipients for Virginia Beach (Ronnie?), Richmond, Roanoke, West Virginia.
- Daily field schedule time. Kilroy's Telegram cron fires 6:00 AM; the unlikely-api daily_schedule task defaults to 8:00 AM because DAILY_SCHEDULE_HOUR is unset. Which is canonical, and should the 8:00 default be set to 6?
- RACI letters. Intake and delivery Accountable cells (v1 had branch office staff Accountable on both).
- Fairfax. Intake auto-rejects Fairfax since 2026-03-30, yet three Fairfax forms remain configured and the Manassas territory list includes it. Which is policy?
- WV / DC certs. Served AHJs include Hampshire and Berkeley WV and DC with no active WV PE and DC pending (8/09 ruling: WV needs no sealed certs). How should routing and the coverage map label these?
- Product catalog. products.division / product_name are NULL on all 55 rows (sync slug mismatch; code derives from the code prefix). Want a one-time backfill? Also confirm the rate changes since February are intentional (BRC-PIN $300→$400, FND-ABC $600→$450, all RTW →$450) and whether the public number is 44 billable or 55 total.
- Payment terms. Groundworks AP net-days terms are not recorded anywhere found; state them if they exist.
- Versioning. The v1 Revision / Major / Addendum scheme never shipped; integers per draft today. Is that the intended final state?
- Triage card. Keep a separate desk-review-lane card after Stephaney leaves 8/31 (Ronnie Stamp takes the VB scheduler tier), or fold it into the scheduler card?