Last updated: June 2026
This document is the authoritative reference for how a job flows through the system from first contact to completion. It covers both the internal staff dashboard and the client-facing contracts system, maps what each tool handles, and lists what still needs to be built.
The platform is two separate applications that share a MySQL database and are served from the same domain:
┌─────────────────────────────────────────────────────────────────┐
│ INTERNAL DASHBOARD (staff only) │
│ /internal/ │
│ ───────────────────────────────────────────────────────────── │
│ • Job/client records (client-brief.php) │
│ • Dashboard and search (dashboard.php) │
│ • Planning data lookup from THE LIST (list_lookup) │
│ • Council application forms (council_forms/) │
│ • Manila folder label printer (manilla_folder.php) │
│ • Google Drive job folder creation (client-brief.php) │
└─────────────────────────────────────────────────────────────────┘
│ shared MySQL │ shared PHPMailer │ shared CSS
┌─────────────────────────────────────────────────────────────────┐
│ CONTRACTS SYSTEM (staff + client-accessible) │
│ /contracts/ │
│ ───────────────────────────────────────────────────────────── │
│ • Contract creation & signing (contract.php — client) │
│ • LOA creation & signing (loa.php — client) │
│ • Application progress tracker (progress.php — client) │
│ • Contracts admin (contracts-admin/ │
│ contracts-admin.php — staff) │
│ • Application timeline editor (edit_application.php — staff) │
└─────────────────────────────────────────────────────────────────┘
Key rule: The internal dashboard is never shown to clients. The contracts system is what clients interact with — it is the only client-accessible part of the platform.
Phone/email enquiry
│
▼
┌─────────────┐
│ Stage 1 │ ENQUIRY Create job record, assign DRG
└─────────────┘
│
▼
┌─────────────┐
│ Stage 2 │ SETUP Physical folder, Drive folder
└─────────────┘
│
▼
┌─────────────┐
│ Stage 3 │ BRIEF Site visit, scope, LIST data
└─────────────┘
│
▼
┌─────────────┐
│ Stage 4 │ ONBOARDING LOA → Contract → Deposit
└─────────────┘
│
▼
┌─────────────┐
│ Stage 5 │ PLANNING Zones/codes, council assessment
└─────────────┘
│
▼
┌─────────────┐
│ Stage 6 │ DESIGN Drawings, 3D, energy/fire reports
└─────────────┘
│
▼
┌─────────────┐
│ Stage 7 │ APPLICATIONS DA/BA forms, lodge with council
└─────────────┘
│
▼
┌─────────────┐
│ Stage 8 │ POST-APPROVAL Tender set, QS, close out
└─────────────┘
Trigger: Phone call, email, or website contact from a potential client.
Goal: Create a job record and capture enough to begin.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 1.1 | Click Create Enquiry | Internal | dashboard.php |
✅ |
| 1.2 | System assigns next DRG number | Internal | create_enquiry.php |
✅ |
| 1.3 | Enter client name, phone, email | Internal | client-brief.php |
✅ |
| 1.4 | Enter site address (Google Maps autocomplete) | Internal | client-brief.php |
✅ |
| 1.5 | Record enquiry source (referral, web, etc.) | Internal | client-brief.php |
❌ Field missing |
| 1.6 | Note initial scope / building description | Internal | client-brief.php → Scope |
✅ |
What needs building:
Trigger: Decision made to proceed — site visit booked or formal scope requested.
Goal: Create the physical and digital job infrastructure.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 2.1 | Print manila folder label, file physical folder | Internal | manilla_folder.php?drg=XXXX |
✅ (not linked) |
| 2.2 | Create Google Drive job folder | Internal | client-brief.php → Create Job |
✅ (needs API key in .env) |
| 2.3 | Save Drive folder link back to job record | Internal | (after Create Job) | ❌ Not saved |
Drive folder naming convention:
[02] Design / [06] Projects {YEAR} / {DRG} - {Client Surname} /
e.g. [02] Design / [06] Projects 2026 / 3048 - Truscott /
What needs building:
client-brief.php action bar (links to manilla_folder.php?drg={drg})details table. Show an Open Drive Folder button on the client brief.PROJECTS_PARENT_FOLDER_ID in .env to the ID of the [06] Projects {YEAR} parent folder.Trigger: LOA sent (or about to be sent); site visit arranged.
Goal: Confirm the full project scope and pull accurate planning data.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 3.1 | Complete site visit | Off-system | — | — |
| 3.2 | Tick Site Visit done checkbox | Internal | client-brief.php |
✅ |
| 3.3 | Confirm/enter site address | Internal | client-brief.php |
✅ |
| 3.4 | Click Planbuild → auto-fills PID, Title ID, zones, codes, area | Internal | client-brief.php |
✅ |
| 3.5 | Confirm planning data is correct | Internal | client-brief.php |
✅ |
| 3.6 | Record design style, build type, scope, budget | Internal | client-brief.php |
✅ |
| 3.7 | Record registered owner (must match title) | Internal | client-brief.php |
✅ |
| 3.8 | Determine if DA is required — tick if yes | Internal | client-brief.php |
✅ (see note) |
| 3.9 | Determine if BA is required — tick if yes | Internal | client-brief.php |
✅ (see note) |
| 3.10 | Record if exempt development (no DA/BA needed) | Internal | client-brief.php |
❌ Field missing |
Note on DA/BA checkboxes: These mean "we are responsible for handling this application", not "the application has been received". They drive whether the applications workflow in Stage 7 is triggered.
What needs building:
Trigger: Scope confirmed, client ready to formally engage.
Goal: Get LOA signed, sign the contract, receive deposit — and give the client their first look at the contracts system.
This stage involves both systems. The internal dashboard prepares the data; the contracts system handles client-facing document signing.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 4.1 | Create LOA in contracts admin | Contracts | contracts-admin/contracts-admin.php |
✅ |
| 4.2 | Email LOA link to client (link + PDF attachment) | Contracts | Contracts admin → Email link | ✅ |
| 4.3 | Client receives email, clicks link, signs LOA | Contracts | loa.php (client-facing) |
✅ |
| 4.4 | LOA signed status updates in contracts admin | Contracts | contracts-admin.php |
✅ |
| 4.5 | Tick LOA Signed in internal dashboard | Internal | client-brief.php → Checklist |
✅ (manual — see below) |
| 4.6 | Invoice deposit (once LOA returned / contract signed) | Off-system | Accounting software | — |
| 4.7 | Create contract in contracts admin, email link | Contracts | contracts-admin/contracts-admin.php |
✅ |
| 4.8 | Client signs contract | Contracts | contract.php (client-facing) |
✅ |
| 4.9 | Request title copy | Internal | client-brief.php → Checklist |
✅ (checkbox) |
| 4.10 | Request original plans (if alteration) | Internal | client-brief.php → Checklist |
✅ (checkbox) |
| 4.11 | Tick documents received as they arrive | Internal | client-brief.php → Checklist |
✅ |
What needs building:
loa.php, it should automatically update the loa_signed flag in the internal details table.client-brief.php to the matching contracts admin record for that job.progress.php in /internal/) purpose needs clarifying — if it tracks invoice milestones it should be linked from the client brief. Recommend renaming it to payment_plan.php to avoid confusion with contracts/progress.php.Trigger: Brief and site data confirmed.
Goal: Understand planning requirements and communicate with council if needed.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 5.1 | Review planning zones and codes (from LIST data) | Internal | client-brief.php |
✅ |
| 5.2 | Generate planning report | Internal | client-brief.php → Planbuild output |
✅ |
| 5.3 | Draft planning request text for council | Internal | client-brief.php → Planning request modal |
✅ |
| 5.4 | Send planning inquiry to council (if needed) | Off-system | Email / council portal | — |
| 5.5 | Record if DA required (already done in Stage 3) | Internal | client-brief.php |
✅ |
| 5.6 | Record if BA required (already done in Stage 3) | Internal | client-brief.php |
✅ |
| 5.7 | Record if exempt development | Internal | client-brief.php |
❌ |
Trigger: Planning confirmed, brief locked.
Goal: Produce drawings and documentation for approval.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 6.1 | Draft floor plans (external software, not in-browser) | Off-system | Archicad / Chief Architect | — |
| 6.2 | Tick Draft Floor Plan done | Internal | client-brief.php → Checklist |
✅ |
| 6.3 | 3D concepts | Off-system | External software | — |
| 6.4 | Tick 3D Concepts done | Internal | client-brief.php → Checklist |
✅ |
| 6.5 | Renders (if requested) | Off-system | External software | — |
| 6.6 | Tick Render Set done | Internal | client-brief.php → Checklist |
✅ |
| 6.7 | Fire report (if required) | Off-system | External consultant | — |
| 6.8 | Tick Fire Report received | Internal | client-brief.php → Checklist |
✅ |
| 6.9 | Energy assessment | Off-system | External consultant | — |
| 6.10 | Tick Energy Report received | Internal | client-brief.php → Checklist |
✅ |
| 6.11 | Upload all files to Google Drive job folder | External | Google Drive | ⚠️ No direct link from job |
Note: The in-browser floor plan editor (planner/) is a work-in-progress and is not currently used for production drawings.
What needs building:
Trigger: Design documentation complete, ready to lodge.
Goal: Prepare and submit council applications; give the client visibility of the progress.
This is where the two systems come together most closely. The council forms are prepared in the internal system; the application progress tracking is in the contracts system.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 7.1 | Fill council application forms (pre-filled from job data) | Internal | council_forms/form_XX.php |
✅ (not linked) |
| 7.2 | Create application record in contracts system | Contracts | admin_dashboard.php → new |
⚠️ Manual, separate step |
| 7.3 | Lodge DA with council (email or council portal) | Off-system | — | — |
| 7.4 | Lodge BA with council | Off-system | — | — |
| 7.5 | Update application stage to "Submitted" | Contracts | edit_application.php |
✅ |
| 7.6 | Client receives email notification, can view progress | Contracts | progress.php (client-facing) |
✅ |
| 7.7 | Update stages as council acknowledges, processes, decides | Contracts | edit_application.php |
✅ |
| 7.8 | Add correspondence (emails, calls, notes) to timeline | Contracts | edit_application.php |
✅ |
| 7.9 | Client views progress and correspondence | Contracts | progress.php (client-facing) |
✅ |
Council forms currently available:
What needs building:
client-brief.php, pre-filled with the DRG (e.g. council_forms/form_39.php?drg={drg}).client-brief.php should create the application record automatically when DA/BA is ticked.Trigger: DA/BA approved by council.
Goal: Complete construction documentation and formally close the job.
| # | Action | System | Page | Status |
|---|---|---|---|---|
| 8.1 | Prepare tender set | Off-system | External software | — |
| 8.2 | Tick Tender Set done | Internal | client-brief.php → Checklist |
✅ |
| 8.3 | Quantity survey (if required) | Off-system | External consultant | — |
| 8.4 | Tick Quantity Survey done | Internal | client-brief.php → Checklist |
✅ |
| 8.5 | VR concepts (if requested) | Off-system | External software | — |
| 8.6 | Tick VR Concepts done | Internal | client-brief.php → Checklist |
✅ |
| 8.7 | Issue final invoice | Off-system | Accounting software | — |
| 8.8 | Mark job as complete / archive | Internal | — | ❌ Not built |
What needs building:
completed_date timestamp on the job record| Q | Answer | Actioned In |
|---|---|---|
| Q1.1 Referral source field? | Yes, add it | Stage 1 — build list |
| Q1.2 Auto-create HubSpot deal? | HubSpot deals not used — remove | Stage 1 |
| Q2.1 Drive folder naming? | [06] Projects YYYY / DRG - Surname / |
Stage 2 |
| Q2.2 LOA sent as link or print? | Link + PDF attached to email | Stage 4 |
| Q3.2 Site visit — date or checkbox? | Checkbox only | Stage 3 |
| Q4.1 When is deposit invoiced? | Once LOA returned or contract signed | Stage 4 |
| Q5.1 What does DA/BA tick mean? | We are responsible for handling it | Stage 3 / 7 |
| Q5.2 Exempt development? | Needs a field adding | Stage 3 / 5 |
| Q6.1 In-browser planner used? | Not currently — WIP | Stage 6 |
| Q7.1 Council forms pre-filled? | Yes they are | Stage 7 |
| Q8.1 Job close-out step? | Needs building | Stage 8 |
The two systems share a database and config but are not yet connected in the UI. Here is every gap:
| Gap | Impact | Effort |
|---|---|---|
| No link from internal client brief → contracts admin for that job | Staff must manually navigate between systems | Low |
| LOA signed status not auto-synced from contracts → internal | Manual double-entry | Medium |
| Creating a DA/BA job in internal does not create an application record in contracts | Staff forget to create the tracker | Medium |
| Council forms not linked from client brief | Forms exist but are typed-in URLs | Low |
| Drive folder ID not saved after creation | No "Open Drive Folder" button | Medium |
| No "Back to Dashboard" nav on any page except dashboard | Navigation is broken | Low |
| Manila folder not linked from client brief | Staff must remember URL | Low |
| No job archive / close-out | Dashboard grows without end | Medium |
| No referral source field | Can't track enquiry origins | Low |
| No exempt development flag | No way to record this outcome | Low |
Work in rough priority order:
client-brief.php — buttons for: Manila Folder, Contracts Admin, Council Forms (Form 2, 20, 39, 60, 71a, 71b, 80), Floor Planner (disabled for now)client-brief.php and details tableclient-brief.php and details tableprogress.php title from "Client Onboarding Form" to "Payment Plan Tracker"details table: council_ref, lodgement_date, decision_date, approval_dateprogress.php link for a job directly on the internal client brief