Skip to content

Core Workflow Overview

Hardhat Flow organizes work around a linear lifecycle: a Bid is created and approved, which automatically generates a Job, which is worked and completed, which triggers Invoicing, and finally Payment closes the loop.

Each entity — Bid, Job, Invoice — has its own independent status. The dashboard surfaces all three simultaneously so your team always knows where a piece of work stands.


Full Lifecycle at a Glance

[Bid Created]
     │
     ▼
[Bid Awaiting PO]  ──── PM or Owner submits bid, awaiting purchase order
     │
     ▼
[Bid Approved]     ──── Owner or Accounting adds PO number and approves
     │
     ▼ (automatic)
[Job: Ready to Start]
     │
     ▼
[Job: In Progress]  ──── PM advances when work begins
     │
     ▼
[Job: Completed / Needs Invoice]  ──── PM marks complete
     │
     ▼
[Invoice Submitted]  ──── Owner or Accounting creates invoice
     │
     ▼
[Partially Paid]    ──── First payment recorded, balance > 0
     │
     ▼
[Paid]              ──── Balance reaches zero
     │
     ▼
[Workflow Complete] ──── System-set automatically

Step-by-Step Lifecycle Description

1. Bid Creation

A Project Manager or Owner creates a bid with all project details: client, location, scope, pricing, and assigned personnel. The bid enters New Bid status.

2. Bid Submitted for PO

When the PM or Owner is ready to move the bid forward, they advance it to Bid Awaiting PO — signaling that a purchase order is expected from the client before final approval.

3. Bid Approval

Once the PO number is received, an Owner or Accounting user enters it and approves the bid. Status changes to Bid Approved.

4. Automatic Job Creation

The moment a bid is approved, the system automatically creates a linked Job. No manual step is required. The job inherits key details from the bid and starts at Ready to Start.

5. Job Execution

The PM advances the job to In Progress when field work begins. Supervisors and Badge Workers log updates and photos throughout. When work wraps up, the PM marks it Completed / Needs Invoice.

6. Invoice Creation

An Owner or Accounting user creates the invoice against the completed job. The invoice number is auto-generated and the tax rate is pulled from company settings.

7. Payment Recording

Payments are recorded individually against the invoice. Each payment reduces the balance due. If the balance remains above zero, the invoice moves to Partially Paid. When the balance hits zero, the system automatically sets the status to Paid and then Workflow Complete.


Full Status Transition Table

Bid Statuses

From Status To Status Who Can Trigger Conditions
New Bid Bid Awaiting PO PM, Owner None
Bid Awaiting PO Bid Approved Owner, Accounting PO number must be entered
Bid Approved (auto) Job Created System Triggers automatically on approval
New Bid Bid Rejected Owner None
Bid Awaiting PO Bid Rejected Owner None
New Bid Bid Cancelled Owner None
Bid Awaiting PO Bid Cancelled Owner None
Bid Approved Bid Cancelled Owner Only if no job work has begun

Job Statuses

From Status To Status Who Can Trigger Conditions
(Bid Approved) Ready to Start System Auto-created from approved bid
Ready to Start In Progress PM None
In Progress Completed / Needs Invoice PM None
Ready to Start Job Cancelled Owner None
In Progress Job Cancelled Owner None

Invoice / Payment Statuses

From Status To Status Who Can Trigger Conditions
(Job Completed) Invoice Submitted Owner, Accounting Job must be at "Completed / Needs Invoice"
Invoice Submitted Partially Paid Owner, Accounting First payment recorded, balance > 0
Partially Paid Paid Owner, Accounting Payment recorded, balance reaches 0
Paid Workflow Complete System Set automatically when balance_due = 0

Dashboard and Status Visibility

No single unified status

The dashboard displays Bid, Job, and Invoice statuses independently. There is no single "project status" field. You can always see at a glance where each entity is in its own lifecycle — for example, a job can be In Progress while its originating bid is read-only in Bid Approved state.


Blocked and Priority Flags

Both Bids and Jobs support two operational flags that work across the workflow:

Blocked Flag

  • Can be set on a Job by a PM or Owner.
  • Indicates work cannot proceed (waiting on materials, access, inspection, etc.).
  • Setting the blocked flag triggers an SMS notification to the PM and Owner.
  • Clearing the flag triggers an SMS notification to the PM.
  • The blocked flag does not change job status — it is an overlay indicator.

Priority Flag

  • Can be set on a Bid or Job by a PM or Owner.
  • Marks the work as high-priority for scheduling and field attention.
  • Setting the priority flag triggers an SMS notification to the PM and Supervisor.
  • Visible on dashboard lists so dispatchers and managers can sort and triage quickly.

Use these flags liberally

Blocked and Priority flags are designed to be lightweight signals — set and clear them freely as field conditions change. They do not affect status transitions or lock any records.