UP Build Status

Master outstanding items — updated 2026-03-08 (deep audit)

2026-03-08 Deep Audit: Comprehensive audit of SmartSuite, API (145 endpoints), portal frontend, and databases revealed significant progress not previously tracked. Phase 1 is 100% complete. Phase 2 is 67% complete. Invoice status labels corrected (ax6gr = "Draft", not "Invoiced"). Production day fields already exist. Multiple Phase 4/7 items partially built.
26
Done
37
Code Items
7
Manual SS
2
Ops/Ongoing
3
Decisions
2
SS Changes

Track A — Cert Pipeline (Revenue Impact)

IDItemStatusNotes
BQ-03 Review / invoice / send 25 generated cert packages Ready 33 PDFs + 27 HTMLs on disk. 21 UND projects need driving log data first.

Track B — Data Migration

IDItemStatusNotes
BQ-10 PMS → UOps migration (~111 projects) Ready Script work. 59 done, ~111 remain. Priority: outstanding cert obligations.

Track C — Portal (8 Phases)

Phase 1: Foundation ✓

7/7 — 100%
ItemStatusNotes
Auth system (JWT + bcrypt + SQLite)Done10 endpoints, 8 users seeded
5-domain Caddy routingDoneworks, management, icu, report, xxx
Role architecture (7 roles)DoneDomainGuard + ProtectedRoute + role dispatch
Project list + detail + searchDoneSearch, filter, sort, group, column visibility
User management (admin)DoneFull CRUD + role/branch + password reset
45-day access rule engineDoneBackend filters in /portal/projects (inspection date + last_updated)
Branch scoping enforcementDoneFrontend BRANCH_SCOPED_ROLES + backend account mapping

Phase 2: Dashboards + Calendar

6/9 — 67%
ItemStatusNotes
Dustin Morning View dashboardDoneRevenue sparklines, invoices, triage, RFIs
Jacob Morning View dashboardDoneAdminDashboard (owner minus RFIs/triage)
GOA dashboard (triage in/out counts)DoneRevenue, invoices, recent completions
Scheduler dashboardDoneInspections by weekday, open RFIs, branch-scoped
Scheduler Assistant dashboardDoneSame as scheduler, read-only
Triage dashboardDoneInbox, summary, RFIs, recently closed
SSI/Permits dashboardPartialComponent exists, "My Submissions" is shell (needs Field Submissions data)
Embedded FullCalendar (behind auth)Not BuiltCalendar.tsx has event parsing logic but no calendar UI
Calendar role-scoping (branch filter)Not BuiltDepends on FullCalendar

Phase 3: Documents, Certs & Invoices

2/8 — 25%
ItemStatusNotes
Document upload/download integrationPartialButtons exist in project detail but link to # (not wired to /local/* endpoints)
Cert display as HTML linksNot BuiltBackend has /cert-gen/public/{id}, needs portal integration
Invoice display (GOA-gated)DoneShown in project detail for FINANCIAL_ROLES
GOA resend functionalityPartialButtons exist but not wired to endpoints
Sched. Assistant cert emailNot Built
Cert/invoice delivery audit trailNot BuiltComm Log tracks some deliveries
Post-production review queue (Jacob)Not Built
Draft → Approval workflowNot BuiltNeeds cert "Draft" status in SS (can't add via API)

Phase 4: RFIs + Schedule Changes + Cancellations

2/9 — 22%
ItemStatusNotes
RFI system (Agent + Client RFI)PartialDashboard shows RFI data; no lifecycle UI
RFI auto-generation triggers (6)Not Built
RFI escalation cadenceNot Built
RFI ↔ SLA interactionNot Built
Schedule Change RequestsPartialBackend: 3 endpoints + SQLite table. Frontend: no UI
Rush fee detection ($400 auto-flag)Donetrip-charge system: /assess, /flag-missed, /scan
Cancel Project flowNot BuiltNeeds "Client Removed" status in SS
Cancellation review queueNot Built
Portal notification system (bell/badges)PartialBell polls every 30s, dropdown works. Center page is shell. Backend stubs (returns 0).

Phase 5: Escalations + Real-Time Comms

0/5 — 0%
ItemStatus
Manual escalation systemNot Built
Escalation routing tableNot Built
Threaded messages + attachmentsNot Built
Hybrid meeting linksNot Built
Escalation ↔ Comm Log integrationNot Built

Phase 6: WhatsApp + Field Protocol

1/10 — 10%
ItemStatus
WhatsApp Business API integrationNot Built
Darius daily schedule pushNot Built
Same-day route change alertsNot Built
Schedule change/cancel alertsNot Built
Missed appointment reporting (WhatsApp)Done
PSoW → ABSoW confirmation gateNot Built
Product-by-product inspection checklistNot Built
Photo upload via WhatsAppNot Built
Drive log photo capture + OCRNot Built
SOW completeness validationNot Built

Phase 7: Intake Folding + SSI

2/4 — 50%
ItemStatusNotes
Fold intake into Scheduler workflowDoneIntakeWizard: 5-step flow (Type→Upload→Review→Schedule→Confirm)
Fold triage intake into unlikely.icuDoneTriageIntake: 2-path flow (existing project + new project)
SSI/Permits form workflowNot Built
SSI → frozen project → auto-RFI flowNot Built

Phase 8: Automation + Polish

0/8 — 0%
ItemStatus
30-day failed inspection auto-detectionNot Built
SLA tracking + breach alertsNot Built
45-day triage transfer automationNot Built
Payment reconciliation workflowNot Built
Audit log systemNot Built
Re-inspection invoicing (v2, v3)Not Built
Mobile responsiveness passNot Built
Performance optimizationNot Built

Standalone Features (Not Portal-Tied)

IDItemStatusNotes
F4 Inspection Coverage Update Not Built Needs F40 formula fixes first
F40 Formula Field Fix Batch Manual SS SmartSuite UI task, blocks F4
F45 Stripe Product Catalog Sync Not Built
F46 Cert Pipeline Pre-Fetch Not Built Optimization — pre-stage data for batch cert gen
F46b Cert PDF Formatting Polish Backlog Visual refinements to cert output
F48 NotebookLM Knowledge Base Spec'd Documentation / training tool

Manual SmartSuite UI Tasks

IDItemNotes
SS-1Add "Draft" option to Cert Status fieldAPI can't modify single-select options. Must add in SS UI, then update config.py with value ID.
SS-2Add "Client Removed" option to Request Status fieldAPI can't modify single-select options. Must add in SS UI, then update config.py with value ID.
BQ-04Delete Parent System fieldLow priority cleanup
BQ-14Aging Certs Kanban viewMay need Cert Age formula field
BQ-153 Permit reporting viewsConfig only
BQ-16Permit Expired filter on View 1Config only
BQ-20Calendar view in SSConfig only

Ops / Ongoing (Not Code)

IDItemNotes
BQ-18SSI Paperwork session with DustinDedicated working session
BQ-21Legacy 80+ backlogUse legacy-certify skill as capacity allows

Completed

IDItemCompleted
BQ-01SmartSuite 403 fix2026-02-28
BQ-02Triage ~130 legacy records2026-03-01
BQ-17Emergency auto-calc (F2 + F3)2026-03-08
BQ-19WTR/ENC billing bug2026-03-01
F1Cert Delivery Email/cert/deliver on VPS
F5Cert Package Versioning
F6File Naming Convention
F8Stripe Invoice Automation
F9Google Calendar Syncschedule.kulu.la
F11Permit Expiration Monitoring
F16Kulu Agent (WhatsApp)OpenClaw on VPS
F47Cert Delivery Email (Skill)/cert/deliver
P1Portal Phase 1 Foundation2026-03-08 — 7/7 items complete
SS-old-1Production day fields in SmartSuite2026-03-08 — fields already existed (sebeofqg, sbcc60e547, total_prod_days_r)
SS-old-2Invoice "Draft" status in SmartSuite2026-03-08 — already existed (ax6gr was always "Draft", config label was wrong)

Obsolete / Superseded

IDItemReason
BQ-11Verify @theblkhse.com emailAll email from operations@unlikely.pro
BQ-13F1 Zap brand routingZap killed; /cert/deliver handles it
BQ-22Replace F1 Zap with direct email/cert/deliver IS the replacement
F7Drive Folder StructureVPS local at /data/projects/
F39Drive Folder Auto-Createlocal_file_service.py
F10Product Deliverable EnforcementAbsorbed into Portal Phase 6 (SOW completeness)
F12RFI Escalation TimingAbsorbed into Portal Phase 4 (RFI escalation cadence)
F13Crew Deliverable EscalationAbsorbed into Portal Phase 4/5 (escalation system)
F14SOW Verification WorkflowAbsorbed into Portal Phase 6 (PSoW→ABSoW gate)
F15ChatwootReplaced by portal comms (Phase 5)
F17Customer PortalSame as BQ-23 / Portal Phase 7 intake
F18Escalation Cron JobAbsorbed into Portal Phase 8 (automation)
F38System Status UtilityBuilt as status.kulu.la
F42Project IntakeAbsorbed into Portal Phase 7
F43Trip/Schedule ZapsReplaced by Portal Phase 4 (schedule changes)
F49Field Collection PortalAbsorbed into Portal Phase 6

Decisions Needed (Blocking)

#1 — 45-day rule: which date? Decision

Portal uses inspection_date + last_updated (within 45 days = visible). Triage scan uses permit issue date. These measure different things. Current portal implementation is reasonable — need to confirm it matches business intent.

#2 — Who advances status after field inspection? Decision

Darius is WhatsApp-only. After inspection, project needs to move Scheduled/In Progress → Field Complete. Options: (a) Darius via WhatsApp/Kulu command, (b) auto-advance when SOW completeness = 100%, (c) Jacob manually. Spec implies (b) via Phase 6, but no interim process defined.

#3 — WhatsApp production transport Decision

Spec recommends WhatsApp Business API but no decision made. Options: (A) WhatsApp Business API (official), (B) OpenClaw/Kulu bridge (current), (C) Twilio. This blocks ALL of Phase 6. OpenClaw works for prototype but isn’t production-grade.

SmartSuite Changes Needed (Manual UI)

#1 — Production day fields Resolved

Fields already exist: sebeofqg (SOW Lines), sbcc60e547 (Projects), total_prod_days_r (rollup). Config.py updated with constants.

#2 — Invoice "Draft" status Resolved

Already exists! ax6gr was always "Draft" in SmartSuite. Config.py had it mislabeled as "Invoiced." Also discovered "Not Invoiced" (xmcJK) and "Partial" (OxONn) values. Config.py corrected 2026-03-08.

#3 — Cert "Draft" status SS UI Task

Cert Status field (s6f8178f84) needs a "Draft" option. API cannot modify single-select choices. Must add manually in SmartSuite UI, then add value ID to config.py. Blocks Phase 3 Draft→Approval workflow.

#4 — "Client Removed" status SS UI Task

Request Status field (s115ab1815) needs "Client Removed" option. Must add manually in SmartSuite UI. Blocks Phase 4 Cancel Project flow.

#5 — Invoice version tracking Resolved

Cert Packages table already has version field (sqtnojgf) with v1.0, v1.1 etc. Invoice send_count tracked in cert-gen pipeline. Full re-inspection invoicing (v2, v3) planned for Phase 8.

Workflow Gaps

#1 — Drive log path for BQ-03 (revenue blocker) Process Gap

21 UND projects need driving logs for cert completion. /cert-gen/upload-drivelog/{id} with Claude Vision OCR exists, but no defined process for WHO gets the logs and HOW they get uploaded. This is the current blocker for BQ-03 revenue.

#2 — Payment reconciliation is unspecified Process Gap

No spec on EFT payout format, parsing, or matching algorithm. Phase 8 — not urgent, but currently a black box.

#3 — SSI county PDF generation unspecified Process Gap

Each jurisdiction has different forms. No spec on how this works. Volume is ~1-2/month so can be manual for now.

Spec Clarifications Needed

#1 — "Ready for Review" vs "Field Complete" Clarify

Portal spec uses "Ready for Review" but this status doesn’t exist in SmartSuite. "Field Complete" (43 records) is likely the same thing.

#2 — SLA clock start for multi-visit projects Clarify

Should be: SLA starts when the LAST visit covers remaining SOW and project enters Field Complete.

#3 — Notification backend Clarify

Frontend NotificationBell polls every 30s and renders dropdown. Backend returns stubs (0 count, empty array). Need real notification table + creation triggers. Phase 4 item.

System Stats

MetricValue
API Endpoints145
Route Files23
SmartSuite Records1,380
Portal Users8
Project Dirs on Disk138
Caddy Domains18
Docker Containers4
Disk Free143 GB (74%)