Master outstanding items — updated 2026-03-08 (deep audit)
| ID | Item | Status | Notes |
|---|---|---|---|
| BQ-03 | Review / invoice / send 25 generated cert packages | Ready | 33 PDFs + 27 HTMLs on disk. 21 UND projects need driving log data first. |
| ID | Item | Status | Notes |
|---|---|---|---|
| BQ-10 | PMS → UOps migration (~111 projects) | Ready | Script work. 59 done, ~111 remain. Priority: outstanding cert obligations. |
| Item | Status | Notes |
|---|---|---|
| Auth system (JWT + bcrypt + SQLite) | Done | 10 endpoints, 8 users seeded |
| 5-domain Caddy routing | Done | works, management, icu, report, xxx |
| Role architecture (7 roles) | Done | DomainGuard + ProtectedRoute + role dispatch |
| Project list + detail + search | Done | Search, filter, sort, group, column visibility |
| User management (admin) | Done | Full CRUD + role/branch + password reset |
| 45-day access rule engine | Done | Backend filters in /portal/projects (inspection date + last_updated) |
| Branch scoping enforcement | Done | Frontend BRANCH_SCOPED_ROLES + backend account mapping |
| Item | Status | Notes |
|---|---|---|
| Dustin Morning View dashboard | Done | Revenue sparklines, invoices, triage, RFIs |
| Jacob Morning View dashboard | Done | AdminDashboard (owner minus RFIs/triage) |
| GOA dashboard (triage in/out counts) | Done | Revenue, invoices, recent completions |
| Scheduler dashboard | Done | Inspections by weekday, open RFIs, branch-scoped |
| Scheduler Assistant dashboard | Done | Same as scheduler, read-only |
| Triage dashboard | Done | Inbox, summary, RFIs, recently closed |
| SSI/Permits dashboard | Partial | Component exists, "My Submissions" is shell (needs Field Submissions data) |
| Embedded FullCalendar (behind auth) | Not Built | Calendar.tsx has event parsing logic but no calendar UI |
| Calendar role-scoping (branch filter) | Not Built | Depends on FullCalendar |
| Item | Status | Notes |
|---|---|---|
| Document upload/download integration | Partial | Buttons exist in project detail but link to # (not wired to /local/* endpoints) |
| Cert display as HTML links | Not Built | Backend has /cert-gen/public/{id}, needs portal integration |
| Invoice display (GOA-gated) | Done | Shown in project detail for FINANCIAL_ROLES |
| GOA resend functionality | Partial | Buttons exist but not wired to endpoints |
| Sched. Assistant cert email | Not Built | |
| Cert/invoice delivery audit trail | Not Built | Comm Log tracks some deliveries |
| Post-production review queue (Jacob) | Not Built | |
| Draft → Approval workflow | Not Built | Needs cert "Draft" status in SS (can't add via API) |
| Item | Status | Notes |
|---|---|---|
| RFI system (Agent + Client RFI) | Partial | Dashboard shows RFI data; no lifecycle UI |
| RFI auto-generation triggers (6) | Not Built | |
| RFI escalation cadence | Not Built | |
| RFI ↔ SLA interaction | Not Built | |
| Schedule Change Requests | Partial | Backend: 3 endpoints + SQLite table. Frontend: no UI |
| Rush fee detection ($400 auto-flag) | Done | trip-charge system: /assess, /flag-missed, /scan |
| Cancel Project flow | Not Built | Needs "Client Removed" status in SS |
| Cancellation review queue | Not Built | |
| Portal notification system (bell/badges) | Partial | Bell polls every 30s, dropdown works. Center page is shell. Backend stubs (returns 0). |
| Item | Status |
|---|---|
| Manual escalation system | Not Built |
| Escalation routing table | Not Built |
| Threaded messages + attachments | Not Built |
| Hybrid meeting links | Not Built |
| Escalation ↔ Comm Log integration | Not Built |
| Item | Status |
|---|---|
| WhatsApp Business API integration | Not Built |
| Darius daily schedule push | Not Built |
| Same-day route change alerts | Not Built |
| Schedule change/cancel alerts | Not Built |
| Missed appointment reporting (WhatsApp) | Done |
| PSoW → ABSoW confirmation gate | Not Built |
| Product-by-product inspection checklist | Not Built |
| Photo upload via WhatsApp | Not Built |
| Drive log photo capture + OCR | Not Built |
| SOW completeness validation | Not Built |
| Item | Status | Notes |
|---|---|---|
| Fold intake into Scheduler workflow | Done | IntakeWizard: 5-step flow (Type→Upload→Review→Schedule→Confirm) |
| Fold triage intake into unlikely.icu | Done | TriageIntake: 2-path flow (existing project + new project) |
| SSI/Permits form workflow | Not Built | |
| SSI → frozen project → auto-RFI flow | Not Built |
| Item | Status |
|---|---|
| 30-day failed inspection auto-detection | Not Built |
| SLA tracking + breach alerts | Not Built |
| 45-day triage transfer automation | Not Built |
| Payment reconciliation workflow | Not Built |
| Audit log system | Not Built |
| Re-inspection invoicing (v2, v3) | Not Built |
| Mobile responsiveness pass | Not Built |
| Performance optimization | Not Built |
| ID | Item | Status | Notes |
|---|---|---|---|
| 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 |
| ID | Item | Notes |
|---|---|---|
| SS-1 | Add "Draft" option to Cert Status field | API can't modify single-select options. Must add in SS UI, then update config.py with value ID. |
| SS-2 | Add "Client Removed" option to Request Status field | API can't modify single-select options. Must add in SS UI, then update config.py with value ID. |
| BQ-04 | Delete Parent System field | Low priority cleanup |
| BQ-14 | Aging Certs Kanban view | May need Cert Age formula field |
| BQ-15 | 3 Permit reporting views | Config only |
| BQ-16 | Permit Expired filter on View 1 | Config only |
| BQ-20 | Calendar view in SS | Config only |
| ID | Item | Notes |
|---|---|---|
| BQ-18 | SSI Paperwork session with Dustin | Dedicated working session |
| BQ-21 | Legacy 80+ backlog | Use legacy-certify skill as capacity allows |
| ID | Item | Completed |
|---|---|---|
| BQ-01 | SmartSuite 403 fix | 2026-02-28 |
| BQ-02 | Triage ~130 legacy records | 2026-03-01 |
| BQ-17 | Emergency auto-calc (F2 + F3) | 2026-03-08 |
| BQ-19 | WTR/ENC billing bug | 2026-03-01 |
| F1 | Cert Delivery Email | /cert/deliver on VPS |
| F5 | Cert Package Versioning | |
| F6 | File Naming Convention | |
| F8 | Stripe Invoice Automation | |
| F9 | Google Calendar Sync | schedule.kulu.la |
| F11 | Permit Expiration Monitoring | |
| F16 | Kulu Agent (WhatsApp) | OpenClaw on VPS |
| F47 | Cert Delivery Email (Skill) | /cert/deliver |
| P1 | Portal Phase 1 Foundation | 2026-03-08 — 7/7 items complete |
| SS-old-1 | Production day fields in SmartSuite | 2026-03-08 — fields already existed (sebeofqg, sbcc60e547, total_prod_days_r) |
| SS-old-2 | Invoice "Draft" status in SmartSuite | 2026-03-08 — already existed (ax6gr was always "Draft", config label was wrong) |
| ID | Item | Reason |
|---|---|---|
| BQ-11 | Verify @theblkhse.com email | All email from operations@unlikely.pro |
| BQ-13 | F1 Zap brand routing | Zap killed; /cert/deliver handles it |
| BQ-22 | Replace F1 Zap with direct email | /cert/deliver IS the replacement |
| F7 | Drive Folder Structure | VPS local at /data/projects/ |
| F39 | Drive Folder Auto-Create | local_file_service.py |
| F10 | Product Deliverable Enforcement | Absorbed into Portal Phase 6 (SOW completeness) |
| F12 | RFI Escalation Timing | Absorbed into Portal Phase 4 (RFI escalation cadence) |
| F13 | Crew Deliverable Escalation | Absorbed into Portal Phase 4/5 (escalation system) |
| F14 | SOW Verification Workflow | Absorbed into Portal Phase 6 (PSoW→ABSoW gate) |
| F15 | Chatwoot | Replaced by portal comms (Phase 5) |
| F17 | Customer Portal | Same as BQ-23 / Portal Phase 7 intake |
| F18 | Escalation Cron Job | Absorbed into Portal Phase 8 (automation) |
| F38 | System Status Utility | Built as status.kulu.la |
| F42 | Project Intake | Absorbed into Portal Phase 7 |
| F43 | Trip/Schedule Zaps | Replaced by Portal Phase 4 (schedule changes) |
| F49 | Field Collection Portal | Absorbed into Portal Phase 6 |
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.
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.
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.
Fields already exist: sebeofqg (SOW Lines), sbcc60e547 (Projects), total_prod_days_r (rollup). Config.py updated with constants.
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.
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.
Request Status field (s115ab1815) needs "Client Removed" option. Must add manually in SmartSuite UI. Blocks Phase 4 Cancel Project flow.
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.
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.
No spec on EFT payout format, parsing, or matching algorithm. Phase 8 — not urgent, but currently a black box.
Each jurisdiction has different forms. No spec on how this works. Volume is ~1-2/month so can be manual for now.
Portal spec uses "Ready for Review" but this status doesn’t exist in SmartSuite. "Field Complete" (43 records) is likely the same thing.
Should be: SLA starts when the LAST visit covers remaining SOW and project enters Field Complete.
Frontend NotificationBell polls every 30s and renders dropdown. Backend returns stubs (0 count, empty array). Need real notification table + creation triggers. Phase 4 item.
| Metric | Value |
|---|---|
| API Endpoints | 145 |
| Route Files | 23 |
| SmartSuite Records | 1,380 |
| Portal Users | 8 |
| Project Dirs on Disk | 138 |
| Caddy Domains | 18 |
| Docker Containers | 4 |
| Disk Free | 143 GB (74%) |