The simplified status model: one linear project lifecycle with two boolean flags, plus sub-status tracks for certification and invoicing. Every status, every transition, every trigger, and who is responsible.
The primary lifecycle of a project, from intake through close. Stored in
SmartSuite field s115ab1815. Eight linear statuses plus two boolean
flags that can attach to any active status.
| Status | Value ID | Who Advances | Trigger | Auto? |
|---|---|---|---|---|
| Intake | go210 | Portal / Admin | Project created | Manual |
| Scheduled | jKK2p | Scheduler | Date set, calendar event created | Manual |
| In Progress | 0Xf2F | Inspector | Site visit started | Semi-auto |
| Field Complete | 1yplc | Inspector / Ops | Visit marked complete | Semi-auto |
| Ready for Cert | ogUeq | System | Cert validation passes all 10 checks | Auto |
| Certified | z1Tft | Ops Manager | Cert approved | Manual |
| Invoiced | 6yJZI | System | Cert + invoice sent | Auto |
| Closed | O1GXV | System / Admin | Payment confirmed (Stripe) | Auto |
Boolean flag. Freezes all auto-advance logic. Can be set on any active status. Set by Admin or Ops Manager. Remove to resume normal lifecycle.
Boolean flag. Terminal — project is permanently stopped. Set by Admin only. No further transitions are possible.
Tracks the certification document lifecycle within a project. Stored in
SmartSuite field s6f8178f84.
| Status | Value ID | Who Sets | Trigger |
|---|---|---|---|
| Not Started | ffypR | System | Default value on project creation |
| Draft | pD6PP | System | Auto Cert package generated |
| Approved | Ph6RR | Ops Manager | Cert reviewed and approved |
Tracks invoicing lifecycle. Tightly coupled to Stripe for payment confirmation.
| Status | Value ID | Who Sets | Trigger |
|---|---|---|---|
| Not Invoiced | xmcJK | System | Default value |
| Sent | PtYwM | System | Auto Invoice emailed + Stripe finalized |
| Paid | 2GdlH | System | Auto Stripe webhook payment_succeeded |
Triage is not a lifecycle stage — it is a flag that overlays the project status. The 45-day scan automatically assigns JES-account projects to triage when they have been in an active status for more than 45 days without advancing.
In Triage — Set by the 45-day scan. Freezes normal workflow until resolved.
Resolved — Internal review complete. System runs cert validation; if all 10 checks pass, project auto-advances to Ready for Cert.
Returned — Sent back to originating team for additional work.
Internal triage work (desk review, field visit, additional data gathering) is tracked in triage notes and the Comm Log. The triage flag does not change the project status — it gates whether auto-advance can fire.
The complete end-to-end automation from field completion through payment. Human actions are shown in warm/khaki; system automation in blue.
Cert and invoice delivery uses deterministic, account-based email routing. Each account has a fixed set of recipient addresses configured in the system. No manual email selection is required — the delivery endpoint looks up the project's linked account and routes to the correct contacts automatically.
| Account | Routing Rule |
|---|---|
| JES | Account-specific contact list; triage-eligible (45-day rule) |
| Fortis | Account-specific contact list |
| All Others | Account-specific contact list; fallback to project contact if no account contacts |
Email routing is configured per account in SmartSuite (Contacts table, linked to Accounts).
The /cert/deliver
endpoint resolves recipients at send time. Override addresses can be specified per-delivery
for one-off routing changes.
How the old PMS (Project Management System) statuses map to the new simplified model. This mapping was used during the PMS → Mostly migration and remains the reference for any legacy data lookups.
| PMS Status | New Project Status | Notes |
|---|---|---|
| Request Approved | Field Complete | |
| Deliverables Ready | Ready for Cert | |
| Deliverables Received | Certified | |
| Submitted to County | Certified | Was "Delivered" in old model |
| Request Archived | Closed | Was "Archived" in old model |
| Cancelled | Closed + cancelled flag | |
| On Hold | Keep current + on_hold flag | |
| Work in Progress | In Progress | New mapping |
| Job Scheduled | Scheduled | New mapping |
| Ready for Scheduling | Intake | New mapping |
| New Request | Intake | Pre-sales, imported anyway |
| Ready for Quoting | Intake | Pre-sales, imported anyway |
| Request Quoted | Intake | Pre-sales, imported anyway |