# Makki Demolition — Company Portal
## The one-hour walkthrough

**Read this live. It is a script, not a list of features.** Everything in *italics* is what you say out loud. Everything in `code` is what you click or type. The timings add to sixty minutes.

---

### Before you start — five minutes of setup, off the clock

| | |
|---|---|
| **Open** | the portal in a browser, on the sign-out screen |
| **Second device** | a phone, or a browser window pulled narrow to about 390px wide. You will need it twice |
| **The six logins** | `ali / owner` · `priya / books` · `ray / quotes` · `sam / site` · `dale / crew` · `theo / crews` |
| **The demo day** | the app runs on a fixed date, **2026-08-22**. Expiring tickets and overdue invoices are the same every time you open it. That is deliberate — the demo never goes stale |
| **Know before you speak** | every figure on every screen is demo data from a mock workbook. Say so in the first minute. Do not let anyone discover it at minute forty |

**The build you are showing — say this out loud before the first click.** Every screenshot in the deck and every screen in this script is the **private build v36-b11**, on this machine. The published website is a different, older build, **v32-nb6**. **Nothing here is live.** After v36-b11 was frozen for the pictures, one more batch of time-and-crew work was built and independently graded; it is on today's disk build and **it is not in any screenshot**. If you present from the current disk build rather than the frozen one, Start Day and Payroll will show more than the deck's pictures do — the list is under *Built since this build* at 0:50.

**Four labels are used throughout this script.** Say them when they matter:

- **WORKING** — real in this build. It does what you see it do.
- **SIMULATED** — the screen is real and the logic is real; the data behind it is demo seed data.
- **PLANNED** — not built. Named here as a gap, not shown as a feature.
- **BUILT SINCE** — on today's disk build and independently graded, but not in any picture in the deck. Say it exists and that you have not shown it. Never call it working on the strength of a picture you do not have.

---

## 0:00 – 0:05 · Open on the sign-in screen (5 min)

**Stay on the sign-in page. Do not log in yet.** This screen does more work than any other.

*"This is Makki's own portal. Six logins, one system. The point of the whole thing is on this screen: each person signs in and sees the business from their own seat — and what a seat must not see is left out of the projection that seat is handed. In this build that happens in the browser; there is no server behind it yet."*

**Point at the six cards, left to right, top row then bottom:**

| Card | Who | The line under it |
|---|---|---|
| **Owner** | Makki Demolition | Revenue, costs, profit & margin · every job · all receivables · every ticket |
| **Bookkeeper** | Priya Nair | Outstanding & money owed · GST and payments — **never a cost or a profit** |
| **Estimator** | Ray Colwell | Own quotes, own win rate — **never profit, never other people's jobs** |
| **Site lead** | Sam Reyes | Own jobs, budget vs actual cost, own crew's tickets — **never margin or receivables** |
| **Crew** | Dale Ferris | Where to be, what the job is, own tickets — **no dollar figure at all** |
| **Project manager** | Theo Marchetti | Own crews' jobs, budget vs actual — **never contract value, profit or margin** |

**Point at the struck-through lines on the cards.** *"Those aren't warnings. They're the design. We'll prove it later."*

**Say the honest frame now — this is the moment:**

> *"Everything you are about to see runs on demo data — a mock workbook, not Makki's books. The screens, the rules and the role boundaries are real and working. The numbers are illustrative. Where something isn't built yet, I'll say 'planned' and move on."*

**Point at the band under the logo:** *"Private company data portal — your data stays on your machine."* — **WORKING**, and literally true: there is no server behind this. We'll come back to what that costs us.

---

## 0:05 – 0:20 · The Owner (15 min) — the biggest slice

**Sign in `ali / owner`.** Seven groups on the rail; twenty-three pages under them.

*"The owner's seat holds nothing back. It's the only login in the system that sees cost, profit and margin."*

### 0:05 – 0:09 · Dashboard · the day at a glance

Land on **Dashboard**. Walk the tabs across the top of the page — `CRM`, `Projects`, and the rest.

**Point at, in this order:**
1. **Revenue, outstanding, profit** across the top — **SIMULATED**
2. **The job-site map of Calgary** — one pin per active job, coloured by status. Hover a pin: address, status, contract value. Click it: the job opens. — **WORKING** (the map tiles are live; the pin positions are generated from the demo addresses)
3. **Who is on site today**, per crew: started, site, men, safety talk done, hours confirmed — **SIMULATED**
4. **The overtime flag** — anyone over 32 hours this week, red at 40 — **WORKING** rule, demo hours

*"This is the screen he opens with coffee. Everything under it is one click."*

### 0:09 – 0:12 · Jobs · Jobs & P&L · one job

Open **Jobs · Jobs & P&L**. *"Every job: what it sold for, what it cost, what it made."*

**Click into one job.** Point at the cost breakdown — material, labour, subcontract, dump, tool rental, food, gas. Seven cost categories. — **WORKING**, demo figures.

*"Labour is about 45% of his cost. That's why it's broken out and not buried."*

Open **Jobs · Project Book** and click the job **510 56 Street SW** (`J0203`, Crew A, Sam Reyes).

**Walk the panes across the top — there are fourteen across three strips.** Don't open all of them. Open three:
- **Cost codes** — budget vs spent vs variance per code
- **Change orders** — draft · sent · approved; approving raises the revised contract
- **Photos** — before / during / after / closeout, taken from the phone

— **WORKING**, demo content. *"The photos and documents are placeholders until the owner hands over his real ones."* — **PLANNED** for real content.

### 0:12 – 0:16 · Money — and the point Omar wants made

Open **Money**. Five pages: `Overview` · `Collections` · `Payroll` · `QuickBooks` · `Reporting`.

**Start on Overview.** *"Revenue, profit and outstanding, as the portal counts them."*

**Then Collections — and slow down here.** Two panels sit above open receivables:

- **Completed and eligible to bill** — **4 jobs**. Each row shows the date the work was marked complete, who marked it, and the mark itself.
- **Awaiting completion — not billable** — **8 jobs**. The work date has passed, but nobody has said the work is finished.

*"This is worth a minute. The portal used to call a job finished because its status said 'open' and its work date had passed. A date is not proof the work finished. Twelve jobs were being handed over as ready to invoice; four actually are. Eight now sit in a list that says, plainly, nobody has marked this complete."*

— **WORKING** rule. The completion marks behind it are **SIMULATED** — authored for this demo on demo data, and the screen says so in its own heading. The real rule is the owner's to set.

**Then Payroll.** Hours per man per day and per job, the 32/40-hour flags, rate and pay, labour cost per job, `Approve this week`, `Export CSV`. — **WORKING**, demo hours. *"Approving records who approved it and when."*

**Then Reporting — the Reporting Centre.** *"Eighteen reports, in the app. Money, Jobs, Gear, Safety, People."*

**Open the Job costing report.** Bid against actual per job, with the cost lines.

**Say this plainly — it is the standing decision:**

> *"The operational money reports live inside the app. The owner opens the portal and reads his own numbers. He does not need to text anything to find out what he's owed. There is a nightly summary that can come to his phone, but that's a convenience — it is never the route."*

**Then QuickBooks.** *"Not connected."* The page shows what would sync — customers, jobs, invoices, payments, employees — and the CSV fallback.

— **PLANNED, and it is the number-one gap.** Connecting it is engineering, not a login. The owner authorises a supported connection on the QuickBooks side and never shares a password or credential with anyone; Makki implements and tests the integration; the provider and setup details are pending validation. Say it in those words: *"a login is not an integration — connecting it is real work, and it starts with his authorisation, never his password."*

### 0:16 – 0:20 · People · Team & Access — the proof

Open **People · Team & Access**.

*"This is the control panel for the whole thing. Every person, their trade, crew, phone, start date, day rate, tickets — and one switch per page per person."*

**Flip a switch off for someone. Then show 'What I can see' for that role.** The page is gone from their rail, and the app refuses to open it.

*"Switch every page of a group off and the group itself disappears. This is the 'toggle it live' move from the sales call we sat through — and here it actually changes that login."* — **WORKING**

**Then go to Tickets & Certs.** Nine ticket types — Asbestos Worker, Confined Space, Respirator Fit Test, Fall Protection, WHMIS, First Aid, H2S Alive, Ground Disturbance, Aerial Work Platform.

**Do one thing:** try **"Put a man on a crew"** with a man who lacks a ticket that crew's jobs need. *"Refused. Not warned — refused."* — **WORKING**

---

## 0:20 – 0:27 · The Site lead (7 min) — Sam Reyes, the morning

**Sign out. Sign in `sam / site`.** Twelve pages. *"Same app. Look at the rail — it's a different system now."*

*"Sam runs Crew A. He sees budget against actual cost on his own jobs. No profit. No margin. No contract value. No company receivables."*

### Start Day — the one screen that matters most in the field

Open **Start Day**. Walk it top to bottom, in order:

*(This is the v36-b11 Start Day, the one in the deck. On the current disk build the same page also carries a signature panel for the timesheet and a bulk crew-time control — **BUILT SINCE**, not pictured, listed at 0:50.)*

1. **Pick today's site.**
2. **The timesheet** — a row per man, hours editable, the week-so-far with the 32-hour flag. — **WORKING**
3. **The ticket block** — it fires per man against that job's required tickets. A man without the ticket the job needs is flagged, there, before he's on site. — **WORKING**
4. **The pre-job safety talk** — the checklist, then `Talk done — crew briefed`. — **WORKING**
5. **Site notes** — typed, or spoken. The browser's speech-to-text in **six languages** — English, French, Spanish, Arabic, Filipino and Punjabi. — **WORKING** (it uses the browser's own speech engine; accuracy varies by browser)
6. **Site photos** — straight from the phone camera into the job's photo log. — **WORKING**
7. **Send the end-of-day check to the crew** — *in-app.* **Nothing is texted.** The crew sees it when they open the app.

**Then Day links.** *"A no-login link for one man's day. Sam copies it and hands it over. It's signed and it expires — a tampered link or an old one is refused."* — **WORKING**. **Nothing is texted** — the link is shown on screen for him to pass on. Sending by text is **PLANNED** — deferred, unbuilt engineering: a sending service, a phone number Makki owns, and the testing that goes with them.

### Thirty seconds on the board

Open **Crew Board**. Drag a job to another day or another crew.

**Drag it onto a crew that lacks a required ticket.** *"The board refuses the drop."* — **WORKING**

---

## 0:27 – 0:33 · The Crew (6 min) — on the phone, not the laptop

**Switch to the phone now.** This is the half of the business that never sits at a desk.

**Sign in `dale / crew`.** Five pages, built for a thumb.

*"Dale is an abatement labourer on Crew A. Five screens, and no dollar sign anywhere in the app."*

**Switch the language picker to Arabic while they watch.** *"The whole interface flips, right to left. Four interface languages — English, French, Spanish, Arabic. On a Calgary abatement crew that is not a nice-to-have."* — **WORKING**. Switch it back.

1. **Today** — where he's working, what time, what the job needs. — **SIMULATED**
2. **End of Day** — *"Your hours today: 8 h — did you attend the safety talk?"* `Yes` / `No` / `My hours are wrong`.
   **Tap one.** *"That answer lands on Sam's sheet and on the owner's dashboard."* — **WORKING**
3. **My Schedule** — his week, this week's strip on top.
4. **My Tickets** — his own tickets, his expiries, and his **hard-hat QR code**.
5. **Forms** — whatever the site asks him to fill in. He fills; he never builds.

**Show the hard-hat code and scan it** (or open the scan page). *"An inspector scans the sticker on his hat and sees his live tickets. No login, no account, read-only."* — **WORKING**

*"Scroll it. Tap it. Every control on this login is at least 44 pixels — it's built for a glove, not a mouse."*

**Say the limit out loud:** *"There's no GPS clock-in. He confirms his hours; the phone doesn't track him."* — **PLANNED**, and worth saying as a choice, not an omission.

---

## 0:33 – 0:39 · The Project manager (6 min) — Theo Marchetti

**Back to the laptop. Sign in `theo / crews`.** Six pages.

*"This seat sits between the owner and Sam. Theo runs more than one crew — A and B — so his jobs are his crews' jobs and his schedule is his crews' rows."*

**Open My Jobs.** *"Budget against actual cost. He never sees the contract value, the profit or the margin."*

**Open My Crews.** His crews, his men, their tickets.

**Open Reporting.** *"He gets the Reporting Centre too — seventeen of the eighteen reports, and the budget side only. The contract side isn't in his copy."* — **WORKING**

**Open Messages.** In-app notes between the office and the field. *"Nothing leaves the device. Nothing is sent."* — **WORKING** as an in-app board; outbound messaging is **PLANNED** — unbuilt engineering, not a switch waiting to be flipped.

---

## 0:39 – 0:45 · The Bookkeeper (6 min) — Priya Nair, and the #1 pain

**Sign in `priya / books`.** Four pages. *"Four. That's the whole app for her."*

**This is the one the owner asked for by name.** Say it:

> *"His words were: the accountant sees what's outstanding and what needs invoicing — not costs, not profit. That is this login, and it isn't a setting we remembered to switch off."*

1. **Dashboard** — money only. No cost. No profit.
2. **Outstanding** — who owes what, by age.
3. **To Invoice** — finished work not yet billed. *"Same completion rule we saw in the owner's Collections — she gets the four, not the twelve."*
4. **Payments** — what came in, and when. Invoice value and GST; never a cost.

**Payroll hours** is a fifth page, **off by default**. *"If the owner switches it on she sees hours — never a rate."*

**Now prove the boundary.** Open **"What I can see"** on this login. It lists her pages, each one's purpose, and what it never shows.

*"The honest version of how this works: when Priya's screen is built, the profit field isn't hidden with styling — it is left out of the projection her page receives. That is what this demonstration shows, seat by seat. It runs in the browser with no server behind it, so this is a demonstrated role-specific view, not a security guarantee: server-side authorisation is not built and has not been verified."* — **WORKING** as a browser projection in this build; the server side is **PLANNED**

---

## 0:45 – 0:50 · The Estimator (5 min) — Ray Colwell

**Sign in `ray / quotes`.** Five pages.

1. **My Quotes** — his own quotes. *"His own. Not Nadia's."*
2. **Win Rate** — how many of his quotes turned into jobs. His own figure.
3. **Proposals** — turn a quote into a printable proposal: scope, inclusions and exclusions, price plus GST, terms, signature lines, under a DRAFT band.
   **Open one.** *"The owner prints it or saves it as a PDF and sends it himself. The app does not send it."* — **WORKING**, and the not-sending is deliberate.
4. **Bid vs Actual** — what he bid against what the job cost. **No sell price, no profit, no margin.** — **WORKING**

*"The owner can switch this tab off per estimator, from Team & Access, while you're standing here."*

---

## 0:50 – 0:57 · Where it actually stands (7 min)

**Go back to the sign-in screen.** Nothing to click now — this is the honest part, and it's why the demo is trusted.

### What is working

- Six logins, each handed its own projection in the browser — not hidden with styling
- Twenty-three owner pages, eighteen in-app reports, fourteen job panes
- The completion rule before billing; the ticket block before a man goes on site; the board that refuses a bad drop
- Start Day, End of Day, day links, hard-hat QR, the phone build
- Per-person page switches that really change a login
- CSV export out of payroll and the reports

### What is simulated

- **Every figure on every screen.** The source is a mock workbook — its own note reads *"MOCK data — figures are illustrative, not real dollars."* 578 jobs, 1,396 quotes, 14 people, 3 crews, 54 tickets on file
- The completion marks behind the billing rule — authored for this demo, not from the owner's books
- The branch roll-up on the HQ page — demo labels, not real branches
- Photos, documents and cost codes — placeholders until the owner hands over his own

### What is planned, and named

| Gap | What it needs |
|---|---|
| **QuickBooks** — the number-one gap | The owner authorises a supported connection on the QuickBooks side and never shares a password or credential. Makki implements and tests the integration — engineering, not a login. Provider and setup details are pending validation |
| **the owner's real data** | His workbook, migrated. Not specced yet |
| **A server, and real sign-in** | Today the role gating runs in the browser, as a projection — the forbidden fields are not put in the object a login receives. There is no server checking a password, no database, no backup. That is a build gap: it needs engineering, deployment and verification, plus the owner's decisions on hosting and ownership. Not built, not verified |
| **Anything that sends** | No texts, no emails, no invoices out. Everything is drafted; a person sends it. Sending is deferred, unbuilt engineering scope |
| **GPS clock-in, multi-approver payroll, regulator reports** | Not started |

### Built since this build, not pictured

The deck's screenshots are of **v36-b11**. The build on disk today is **v37-b5**: one more batch, time and crew, built and independently graded after the pictures were taken. **None of it is in a screenshot.** If it comes up, say it exists and that you have not shown it — **BUILT SINCE**, not WORKING:

- **Start Day — a signature on the timesheet itself.** The site lead signs a man's line with a PIN. The PIN is checked and never kept; the record shows who signed, when, and the last two digits only. A wrong PIN is refused.
- **Start Day — the whole crew in one move.** One control puts the hours and a cost code on every man on the sheet, with the company's seven cost codes on it.
- **Start Day — the three head starts come through the gate.** From the board, from the previous day, or flat: the men, their hours, their cost codes and where they came from, printed on the page. The board's man list is data now, visible to every login that may see it, not a note kept on one device.
- **Payroll — four more filters.** Office, project type, verify status and approval status, beside crew. Payroll by cost code now splits across codes instead of one line. The 32 / 40-hour thresholds are read from a register instead of being written into the code.
- **Job costing — two new columns for the owner.** Temporary labour and contracted labour, split out of the existing labour line by share of hours, never added on top of it.
- **The day link — a man enters his own hours** on his no-login page; another man's line is refused.
- **A time record carries more.** Cost code, break, per diem per man per day, asset time, labour kind and signature. An estimated-hours figure exists as a labelled synthetic fixture with no screen of its own yet.

All of it is demo data and says so on the page. Every figure in that batch is a synthetic fixture, labelled as such; the real crew assignments, cost codes, estimated hours and signature policy are still the owner's to give.

**Say the sign-in band's claim again, and now explain it:** *"Your data stays on your machine — that is true today because there is no server. It is also the thing that has to change before this goes live for real."*

---

## 0:57 – 1:00 · Close (3 min)

**One thought, not a recap.**

> *"You've just seen six people run the same company from six different seats, and in this build not one of them was shown a number they shouldn't. The screens are built and the rules work on demo data. What's left is real work: the AI seats, the integrations — QuickBooks first — the security a live system needs, pilot testing with the crews, and his own data and decisions."*

**Then stop talking.** Take the questions.

---

## If you are short on time

Cut in this order, and nothing else:

1. **The Estimator** (5 min) — fold his point into the sign-in screen's role cards
2. **The Project manager** (6 min) — say the seat exists and show the role matrix instead
3. **Owner · Project Book panes** (3 min) — name them, open none

**Never cut:** the honest frame at 0:00, the Bookkeeper boundary at 0:39, or the limits at 0:50. The demo is credible because of those three, not in spite of them.

---

## Questions you will be asked, and the honest answer

**"Is this live? Can I use it tomorrow?"**
No. It runs on this machine on demo data. Putting it live needs a host, a database, a real server-side sign-in and a backup — that is engineering, deployment and verification still to do, as well as decisions about money and ownership. It is a build gap, not only a hosting choice.

**"Is this the latest version?"**
The pictures are of private build v36-b11. The published site is an older build, v32-nb6, and nothing you have seen is live. One batch has been built since the pictures — time and crew — and it is on disk, graded, and not shown here.

**"Can it text my crew the schedule?"**
It drafts the message per man and shows it to you, marked not sent. Nothing in the system sends anything to anyone. Sending is deferred, unbuilt engineering — a sending service, a phone number the company owns, and testing — and a decision about how the business wants to operate.

**"Does it talk to QuickBooks?"**
Not yet, and it's the first thing to build. The page shows exactly what would sync. You authorise a supported connection on the QuickBooks side — you never share a password or credential — and Makki implements and tests the integration. The provider and setup details are pending validation.

**"Are these my numbers?"**
No. Mock data, start to finish. The shape of the business is right; the dollars are illustrative.

**"Can my bookkeeper see my profit?"**
Not in this build — and not because we switched it off. The profit figure is left out of the projection her login is handed, and her "What I can see" page says so. That is a demonstrated projection in the browser, not a security guarantee: there is no server behind this yet, and server-side authorisation is not built or verified.

**"What happens if I lose this laptop?"**
Today, you lose the demo. There is no off-machine backup — not built. That is on the list and it is an honest gap.
