BUILD_PLAN.md — Makki Demolition
Standard file in every client hive (Omar's decision 5a, 2026-09-10). This seat keeps it current; EazyLife's factory builds from it on Omar's say-so. Every line below comes from the deck, the portal build, the profile, or the Fieldflo call notes in profile/. Nothing invented.
1. What exists today
| Thing | Where | State | Verified how |
|---|---|---|---|
| Owner portal + deck (5 logins, role gating, tickets & certificates, hard-hat scan) | https://makki-portal-37c739cf.pages.dev (login-gated); copy in portal/ |
Live, mock data. Price now on the deck's Plan slide, live push pending Cloudflare login | Rendered locally 2026-09-10; live push blocked, on record |
| This hive (Chief of Staff seat, own instance, own Telegram bot) | ~/.openclaw-makki/ |
Live, verified end to end with Omar 2026-09-10 | Bot answered on Telegram 17:35 UTC |
| Assistant · Collector · Foreman's Voice · Ticket Keeper | tools/ |
Built and verified on mock data 2026-09-10 | Run by EazyLife's Chief of Staff, outputs checked |
| Portal rebuild to match what the owner liked in the Fieldflo demo (12 screens, 11 tasks) | portal/ops.js, portal/app-ops.js, portal/roles.js; docs in profile/ |
Built and verified 2026-09-10 ~20:40 UTC — NOT deployed. Pages link still serves the old build | 56 gating assertions + 83 headless checks, 0 JS errors, 53 screenshots in portal/_shots/2026-09-10/ |
| App build 2 — the seven Interface Plan items left "not built" (job photos, cost codes, change orders + T&M, closeout report, board drag-and-drop with the ticket block, timeline / Gantt, JHA + safety-document library) | portal/ops2.js, portal/app-ops2.js, portal/roles.js; walkthrough profile/Walkthrough_2026-09-15_app2.md; comparison updated |
Built and verified 2026-09-15 — NOT deployed. Omar's order on this line 06:11 UTC. Mock data; real photos, cost codes, change-order form and OHS documents still wait on the owner (§4). Open decision: estimator's new Bid vs Actual tab (spent vs his own bids, no profit) stays on or is switched off per person | 109 gating assertions + 133 headless checks, 0 JS errors, 75 screenshots in portal/_shots/2026-09-15/ |
Job-site map on the Dashboard — every active job as a status-coloured pin on an inline SVG map of Calgary with a downtown inset; hover = address + status (+ contract value, owner only); click = the existing job modal; legend by status / area; the site list stays. No map service, no key, no network call. Positions generated from the existing addresses (portal/geo.js, demo placements) |
portal/geo.js, portal/app-map.js, portal/roles.js (mapSites), portal/app.js, portal/app.css, portal/sw.js (v16-map); walkthrough profile/Walkthrough_2026-09-15_map.md; comparison updated |
Built and verified 2026-09-15 ~20:45 UTC — NOT deployed. Omar's order on this line 20:15 UTC ("Yes i want the map"). Owner 76 pins / bookkeeper 76 (no $) / site lead 21 / crew 21 / estimator none (holds no jobs). Real coordinates wait on the owner's data (§4) | 120 gating assertions (11 new) + 62 map browser checks + the existing 133-check suite, all passing, 0 JS errors; 13 map screenshots (map_*.png, phone_map_*.png) in portal/_shots/2026-09-15/ |
| Owner nav regrouped: 15 tabs → 7 groups (Dashboard · Jobs · Schedule · Money · People · Safety · Gear), accordion on the rail, sub-tab row on the phone; same 15 pages, same per-person switches, other four logins untouched; the cost-code table moved from the Dashboard to the Project Book with a summary card left behind (Omar, Telegram 2026-09-15 20:59 UTC: "seven tabs") | portal/roles.js (GROUPS, navGroups), portal/app.js, portal/app.css, portal/app-ops2.js; sw cache v17-tabs7; walkthrough profile/Walkthrough_2026-09-15_tabs7.md |
Built and verified 2026-09-15 — NOT deployed. Pages link still serves the 17:41 UTC build | _qa/gating_assert.cjs ALL 138 (18 new) · _build/verify_fieldops.cjs ALL 133 · _build/verify_map.cjs ALL 62 · new _build/verify_tabs7.cjs ALL 45 · 0 JS errors · 12 screenshots portal/_shots/2026-09-15/tabs7_*.png |
2. Website
- Has a public website today? unknown — not recorded anywhere in this workspace. Ask Omar / the owner.
- What it needs to do: not yet asked. (the owner's stated pain is internal: one login, busy-work automated, text it to run things. A public site was not discussed on the Fieldflo call or in the deck.)
- Brand: black + gold
#F3A400, Makki's real logo (profile/makki.json,portal/brand/). - Status: not started. Build only when the owner asks; App Builder (EazyLife) builds it to this file.
3. Agents — build order (agreed with Omar 2026-09-10)
| # | Agent | What it does for the owner | Needs from the client | Status |
|---|---|---|---|---|
| 1 | The Assistant | Exact answers from the business data, texted in plain English | nothing (mock) | Built |
| 2 | The Collector | Nightly: finished-not-invoiced, overdue by age, holdbacks; drafts invoices, never sends | nothing (mock) | Built; nightly schedule awaiting Omar's word on this line |
| 3 | The Foreman's Voice | A foreman's voice note becomes a filed daily report | nothing (mock) | Built |
| 4 | The Ticket Keeper | Expiring tickets, who is un-bookable, hard-hat codes | nothing (mock) | Built; weekly schedule awaiting Omar's word |
| 5 | The Estimator | Quotes in the owner's voice with his pricing rules; won → live job | The owner's past quotes / the assistant he trained | Not started |
| 6 | The Job Coster | Payroll hours onto the right job; budget vs actual live | Which payroll system the owner uses | Not started |
| 7 | The Safety Officer | OHS programs tied to the right site | The owner's existing OHS documents | Not started |
| 8 | The Clerk | Pulls invoices and costs from QuickBooks nightly; logs materials from a driver's text | QuickBooks "Allow" click | Not started |
4. Open asks to the client (each one unblocks a row above)
- Does Makki have a public website today, and does the owner want one? (§2)
- Past quotes, or access to the quoting assistant he trained (row 5)
- Which payroll system (row 6)
- Existing OHS documents (row 7)
- QuickBooks Online connect, one click, when we get there (row 8)
- The owner's Telegram id, so he can be added to this line
- Real job-site addresses / coordinates for the dashboard map (today's pins are demo placements for the mock addresses —
portal/geo.js). Comes for free once his job list is connected (row 8 / QuickBooks)
5. Rules for this build
- Mock data until Omar says the real data is connected; every figure carries a demo header.
- Nothing sends, publishes or contacts anyone. Build and stage; Omar ships.
- From now on every Makki build goes through EazyLife's factory and is counted by the meter (Omar's decision 3a). The rebuild already running tonight finishes as approved.
- One Fable build at a time, sized to a quarter of the weekly cap; Checker verifies on Opus.
Last updated: 2026-09-15 by the Makki Hive build seat (job-site map row in §1, ask 7 in §4)