Toggle to see BUILD vs DESIGN differences

How It Fires

Sales task → Won ClickUp Automation Make.com webhook Remote trigger — Claude Orchestrator --unattended --triggered-by={userId}

Can also be run manually: /project-setup-orchestrator sunshine kebabs. Interactive mode asks questions; unattended mode makes safe default choices and logs every decision.

Required Fields on the Sales Task

0

Phase 0 — Pre-flight Validation

GATE
Run by Claude (orchestrator) • ~10 sec
  1. Detect mode — interactive vs unattended
    The orchestrator reads $ARGUMENTS for --unattended and --triggered-by={userId}.

    Interactive (Michael running it manually): can ask questions, wait for file uploads, pause for decisions.
    Unattended (Make.com trigger): never blocks — uses safe defaults, logs every decision made, reports them in the completion comment.
  2. Find sales task + project folder in ClickUp
    Resolves the project from any of: task ID, task URL, job number (e.g. 260306), or partial name (e.g. sunshine kebabs).

    Searches the Sales Deals list (900301389267) for the task, and the SBI PROJECTS space (54603442) for a folder with a matching job number prefix.
  3. Check all 7 required custom fields
    Every field is checked for a value before any write operation runs. If any required field is empty, setup is blocked at this gate.

    FieldBlocks if missing?
    Contact NameYes
    Email PrimaryYes
    Contact NumberYes
    Deal ValueYes
    Job AddressYes
    Construction PlansYes
    Approved ProposalYes
    Buildsoft (BUILD)Yes
    Job Type / Joinery PlansWarn only
  4. Detect project type — BUILD or DESIGN
    Checked in order, first match wins:
    1. Folder/task name contains DESIGN or CERT & DESIGN → DESIGN
    2. Folder/task name contains BUILD → BUILD
    3. Check the Job Type custom field label
    4. Unattended fallback: default to BUILD and log the decision
    5. Interactive fallback: ask the user

    Project type drives downstream behaviour: DESIGN skips Phases 2 & 3, uses a simplified schedule and a 60/40 claim split.
  5. If fields missing → post blocking comment, STOP
    In unattended mode, the orchestrator posts an assigned comment on the sales task (using the ClickUp REST API, assignee = the person who triggered it, notify_all: true).

    The comment appears in the salesperson's Assigned Comments tray. They can't miss it.

    Recovery: salesperson fills the missing fields, toggles the status off Won and back to Won. The webhook fires again, the orchestrator runs again, pre-flight now passes, and Phases 1-4 proceed.
  6. Wait for folder provisioning (poll up to 3 min)
    When the Make.com scenario fires, it creates the project folder from the SBI PROJECT TEMPLATE with return_immediately: true — ClickUp then provisions the 10 lists asynchronously.

    The orchestrator polls GET /v2/folder/{folderId}/list every 10 seconds until all 10 lists exist, then checks for the Project Doc. Max wait 3 minutes. If still incomplete, it logs a warning and continues with whatever's ready.
1

Phase 1 — Sales Handover

AUTOMATED
Sub-skill /sales-handover • ~2 min
  1. Folder renamed — YYMMDD BUILD/DESIGN Project Name
    Make.com has already created the folder from template (10 lists + Project Doc). The orchestrator finds it by job number prefix and renames.

    Examples:
    260306 BUILD Natural Foot Podiatry Erina Fair
    260317 DESIGN Tracey Fletcher Wamberal

    The schedule list (List 06) is also renamed to include the full folder name.
  2. Template tasks customised with job name
    Placeholders across List 02 (Design) and List 08 (Procurement) are replaced with the job name.

    List 08 parent tasks:
    300 {Job Name} BUILD LABOUR
    301 {Job Name} PM/OFFICE/SALES
    302 {Job Name} CAD/Design LABOUR
    303_304 {Job Name} JOINERY/FACTORY LABOUR

    Writes are directed at the original List 08 (the one without "copy" in the name).
  3. Project Doc populated — client details, plans
    Page 1 of the ClickUp Doc is populated with:
    • Client name, email, phone
    • Job address
    • Construction plans reference table (links from sales task)
    • Joinery plans reference table (if joinery in scope)

    This becomes the site team's reference document.
  4. Sales task multi-listed into List 01, prefixed "SOLD"
    Three writes in sequence:

    1. Multi-list the original sales task into List 01 — same task in both Deals and the project folder.
    2. Prefix the task name with SOLD — visible in both locations.
    3. Rename the ADD WON sales Task placeholder in List 01 and mark it done.

    Historically the multi-list step was sometimes missed — the sub-skill now enforces both parts.
  5. Progress claims created in List 04
    Claims are created and assigned to Gail. Dollar amounts are calculated from Deal Value (incl GST).

    Claim%Stage
    Progress Claim 140%Deposit
    Progress Claim 230%Start on Site
    Progress Claim 320%Practical Completion
    Progress Claim 410%Final
    Claim%Stage
    Design Deposit Invoice60%Deposit
    Design Final Invoice40%Final
    Example task name: Progress Claim 1 - Deposit 40% ($31,600 incl GST)
  6. Schedule set in List 06 (sequential phase dates)
    BUILD — 5 high-level tasks dated from dateSold:
    TaskStartEnd
    JOB SOLDDate Sold
    08 ProcurementDate Sold+ 7 days
    07 Pre-Manufacture+ 7 days+ 14 days
    09 Manufacturing+ 14 days+ 21 days
    10 SITE WORKS+ 14 days+ 21 days
    Pre-Manufacture and Manufacturing are sequential (not parallel) — Pre-Mfg produces drawings/material calcs, then Manufacturing builds.
    DESIGN — simplified schedule:
    • JOB SOLD — due date = Date Sold
    • Design Start — due date = Date Sold
    • Design Finish — due date = + 3 weeks
    • Build-phase task dates cleared


    Never touched: JOB SOLD, 10.1 SITE WORKS, and all site subtasks — those are PM-owned once set.
  7. Site works tasks created from proposal scope BUILD ONLY
    The signed proposal and cost budget are read to extract the scope of works. This is broken into 5-10 sequential install tasks, created as subtasks of the 10.1 SITE WORKS parent task in List 06 (NOT at the top of List 10).

    Task names reference actual materials and quantities from the proposal. A scope summary is posted as a comment on the Completions_Punchlist task in List 10.
  8. Handover task assigned — Chadd, Gemma, Gail, Michael
    BUILD: The "Handover between SALES and PM" task in List 05 gets a due date within 2 days and is assigned to the full team.

    DESIGN (when salesperson = designer): handover is skipped — same person doing the work.
2

Phase 2 — Cost Budget

BUILD ONLY AUTOMATED
Sub-skill /budget-cost-sheet • ~1 min
  1. Buildsoft file located + copied
    The Buildsoft Excel file is found at G:\Shared drives\SBI JOB FILES_Share\{project}\1.2 COST SHEETS\.

    Always work on a copy. SheetJS writeFile corrupts Buildsoft's parameterised formulas — the original must never be touched directly.
  2. Pre-flight — verify Qty, Rate, Total values exist
    Why: A Buildsoft with cost-code structure but no numbers generates a $0 budget.

    The check looks for at least one line with Qty > 0, Rate > 0, Total > 0. If empty:
    Interactive: ask user to Price / Mark N/A / Generate stub
    Unattended: mark budget as "pending" — skip Phase 2 & 3, log it, continue to Phase 4
  3. SBI Cost Budget tab generated
    A new "SBI Cost Budget" sheet is added to the working copy with two tables:

    Cost Sheet Summary (top) — one row per cost code with Budget, Rate/hr, Hours Allowed, Man Days.
    Cost Sheet Detail (bottom) — every line item with Qty × Rate = Budget.

    Footer: Total Cost, Markup, Overhead Recovery (66%), Budgeted Profit (33%), Sell ex-GST, GST, Sell incl-GST.
  4. Styled PDF exported with two donut charts
    The tab is formatted and exported via Excel COM automation to a single-page PDF with two donut charts side-by-side:
    Cost Breakdown — one slice per cost code category
    Sales Breakdown — Cost vs Overhead vs Profit vs GST

    Saved next to the source xlsx as SBI Cost Budget - {project name}.pdf.
3

Phase 3 — Procurement

BUILD ONLY AUTOMATED
Sub-skill /budget-to-procurement • ~30 sec
  1. Cost codes read from SBI Cost Budget tab
    Each cost-code category and its budget amount is extracted from the Summary table. Zero-budget categories are skipped. Labour codes (300-304) are excluded — no external procurement.
  2. One task per cost code in the original List 08
    Writes target the List 08 whose name does NOT contain "copy" — template duplicates are left alone.

    Task name: {code} {Job Name} {CATEGORY}
    Example: 310 Sunshine Kebabs BUILD Materials

    On re-runs: existing tasks are matched by cost-code number and updated in place — no duplicates.
  3. Budget Allowance SBI set on each task
    The Budget Allowance SBI custom field (ec6378ba) is set to the budget amount ex-GST from the cost sheet. This is the figure the PM tracks against when placing orders, and the dashboard uses it for Budget vs Actual bar charts.
  4. Procurement category + workflow assigned
    Each task is categorised for filtering and reporting:
    CodeCategory
    310Build Works Supplier
    315, 317Joinery Procurement
    320-330Contractors
    Workflow set to Not Started. PM moves through: Quoting → Quoted → Approved → Ordered → Received → Paid.
4

Phase 4 — Dashboard

AUTOMATED
Sub-skill /project-dashboard • ~2 min
  1. Fresh ClickUp data fetched (REST API for custom fields)
    Every generation pulls live data — no caching. The ClickUp MCP strips custom field values, so budget/claims/invoice amounts are fetched via the REST API with $CLICKUP_API_TOKEN.

    Pulled: sales info, claims & variations (List 04), schedule (List 06), budget vs actual (List 08), procurement status, compliance (List 03), site works (subtasks of 10.1).
  2. HTML dashboard generated from template
    Self-contained HTML with inline CSS/JS and these tabs:
    Overview — health badge, phase indicator, key metrics
    Sales — client info, claims table, variations
    Financials — budget vs actual per cost code
    Procurement — workflow summary + task table
    Schedule — Gantt of phases and milestones
    Compliance — admin checklist
    Actions — next actions and blockers for Tuesday meeting
  3. Saved to shared drive + deployed to GitHub Pages
    Three destinations:
    1. Local working copy
    2. Shared drive — @Claude Dashboards/{jobNumber}-{slug}.html
    3. GitHub Pages — michael-sbi.github.io/sbi-dashboards/{slug}/

    Live within 1-2 minutes of git push.
  4. Attached to the current Projects Meeting task
    The dashboard URL is posted as a comment on the current Projects Meeting task (list 901612976091) so it surfaces in Tuesday's team review automatically.

Completion Summary Comment

NOTIFY
Posted on the sales task • tags Michael, Gail, Leah + trigger user
  1. ONE summary comment — posted after all phases run
    Posted exactly once after Phases 1-4 have all been attempted (including any that were skipped or failed). Never partial updates — only the single completion notification.

    Tagged users:
    • Michael Cook (48602901)
    • Gail Cook (48603029)
    • Leah Procter (100992399)
    Plus the person who moved the task to Won (--triggered-by)

    Everyone gets an in-app + email notification.
  2. Per-phase status — completed / skipped / failed
    Each phase shows its outcome clearly:

    ✓ PHASE n — ran successfully (with key stats: claim amounts, date range, budget total, etc.)
    ⏭ PHASE n — skipped, with reason (e.g. "Buildsoft not linked")
    ❌ PHASE n — failed, with error reason

    Plus a Needs Attention section listing anything flagged, missing, or deferred for follow-up.
  3. Manual steps list for Leah, Gail, PM team
    The comment also embeds the manual checklist — so no one has to hunt for what they need to do. Example:

    @Leah — Job folder in Shared Drive, Client Info Form, MB Contract
    @Gail — Xero project, deposit invoice, cost codes in Xero
    PM Team — Handover meeting within 2 days
!

Manual Steps Checklist

MANUAL
Flagged in the completion comment • Leah, Gail, PM Team

Leah

  • Job folder set up in Shared Drive
  • Client Information Form sent
  • Master Builders Contract sent

Gail

  • Xero project created
  • Deposit invoice sent
  • Cost codes set up in Xero

PM Team

  • Handover meeting within 2 days (BUILD)
  • Joinery project set up (if applicable)
  • Confirm no materials ordered before deposit paid

⚠ Re-run Safety — What the Orchestrator Never Touches

The orchestrator is safe to re-run on an existing project. It reads PM-owned state and writes only in narrow, well-defined places.

Who Does What

S
Salesperson
Fills fields, moves task to Won
M
Make.com
Webhook → creates folder → triggers Claude
AI
Claude Orchestrator
Pre-flight, Phases 1-4, completion comment
L
Leah
Drive folders, contracts, client forms
G
Gail
Xero setup, invoicing, cost codes
PM
PM Team
Handover, joinery, materials hold