A 12-Month Roadmap to Becoming Vancouver's First AI-First Mechanical Contractor
Attn: Duncan Rowe
Prepared by Graham MacDougall, President | March 2026
Vision: Every decision at PPH is informed by AI. Every process has an intelligent layer. Not "we use some software" — the AI is the operating system.
Duncan — this plan lays out where I believe we need to go and how I intend to get us there. Everything below is my assessment of our current state, the opportunity in front of us, and the specific steps I'm proposing. I've built most of the foundation already. What I need from you is alignment on the direction and the restructuring required to execute it.
| Tool | Status | What It Does |
|---|---|---|
| Paris Command | LIVE | Financial dashboard, AI assistant, QBO sync, Teams daily digest, entity browse |
| PPH Safety (FLHA) | LIVE | Digital field-level hazard assessments, crew management |
| Quoting Tool | CONCEPT | Price book from EMCO, needs full rebuild |
| AP Automation | CONCEPT | Invoice processing, needs full rebuild |
| Capacity Mgmt | CONCEPT | Workforce planning, needs full rebuild |
| Knowify | EXTERNAL | Job costing, project mgmt (API broken, workaround sync) |
| QBO | EXTERNAL | Accounting (connected, auto sync every 4 hours) |
| Monday.com | EXTERNAL | Project tracking (API ready, not yet connected) |
| SharePoint | EXTERNAL | Document storage (53 docs cataloged + searchable) |
| Ceridian PowerPay | REPLACING | Payroll — NO API, switching to API-enabled provider |
PPH today operates like most construction companies: our data lives in 6+ disconnected systems. Decisions are made by gut and spreadsheets. The AI layer (Paris Command) can report on what happened — but it can't yet drive what happens next.
AI-first means: the AI doesn't just answer questions — it watches, alerts, recommends, and eventually acts. We stay in control, but the AI is the co-pilot for every operational decision.
I'm currently running PSG day-to-day while simultaneously building the technology platform for the entire Paris group. That's unsustainable — and Duncan, you've rightly flagged that PSG hasn't been getting my full attention. But the answer isn't for me to go back to 100% PSG operations. The answer is to structure things so PSG runs well and the technology gets built.
PSG is a 3-person team. It does not need a full-time Service Manager. It needs a competent day-to-day operator with a high-level manager checking in. My highest-value contribution to the Paris group is not dispatching service calls — it's building the AI infrastructure that will make every company in the group more efficient, more profitable, and harder to compete with.
| Role | Responsibility | Change |
|---|---|---|
| Aisley (CSR/Office Mgr) |
Day-to-day PSG operations • Customer service / dispatch • Vendor communication • Invoice/AP intake • Scheduling coordination • Routine staff issues |
Takes over as primary operator. Already knows the business. 3-person team is manageable. |
| Graham (Service Mgr → Strategic) |
High-level PSG oversight • Financial review (weekly) • Major client relationships • Escalations requiring owner authority • Strategic decisions |
Steps back to ~25% PSG time. 75% freed up for technology buildout. |
| Graham (75%) (Technology) |
Technology platform buildout • Paris Command development • AI tool deployment • Data integrations • Safety app refinement |
The work that benefits ALL Paris companies — not just one. |
I'm not getting distracted from PSG — I'm being deployed where the ROI is highest. Every tool I build — the financial dashboards, the AI assistant, the automated alerts, the daily digest — serves PSG, PPH, and the holding companies. If I stay in PSG operations full-time, none of this gets built, and the entire group stays on spreadsheets and manual processes.
As the AI tools come online, they reduce workload across the entire management team — not just mine:
| Person | Current Time Sink | AI Tool That Eliminates It |
|---|---|---|
| Duncan | Chasing financial reports, compiling KPIs manually, reconciling QBO data across companies | Paris Command dashboard + daily Teams digest + auto-calculated KPIs (already partially live) |
| Andrew (Ops Mgr) |
Tracking job status across systems, checking on crew utilization, manual scheduling coordination | Unified job view, smart alerts for at-risk jobs, capacity dashboard (Phases 2, 5, 6) |
| Aisley | Paper-chasing certifications, manual invoice entry, calling for status updates | Safety app cert module, AP automation, automated compliance tracking (Phases 1.5, 4) |
The result: As AI tools reduce your and Andrew's operational overhead, there's natural capacity for periodic PSG support if needed — not as a permanent assignment, but as flexible coverage. The tools make the whole management team more efficient, which makes the whole group more resilient.
Admin salaries and wages are Paris's #1 expense. The AI-first plan forces a decision:
My recommendation: Default to Option A with a hard reassessment at Month 6. By then, enough AI tools will be live to objectively measure who's more productive with the tools and who isn't keeping up. The data makes the decision — not gut feel, not politics. If someone is genuinely dead weight, that's a performance management issue we should address regardless of AI tools. We shouldn't let the tech plan become the excuse for a management decision that should happen on its own merits.
The AI-first approach helps here directly: When the tools track who's using them, how quickly tasks get completed, and where bottlenecks sit — we stop debating whether someone is pulling their weight. The system shows it.
Construction SaaS companies like Procore charge $100K+/year because they employ thousands of engineers to build and maintain features. AI has fundamentally changed that equation:
You're right that paying $100K/year for Procore today would be like signing a 3-year lease on a Blockbuster franchise in 2008. The thesis is correct — software costs are going to near-zero.
But the conclusion isn't "wait for someone else to build the AI-first CRM." The conclusion is: I'm already building it.
| Buy Procore | Wait for "AI-First CRM" | Build in Paris Command RECOMMENDED | |
|---|---|---|---|
| Annual Cost | $100K+/yr | $12K/yr Knowify while waiting | ~$600/yr infra + Graham's time |
| Timeline | 6-12 months to adopt | 2-3 years? Maybe never | 3-4 months per major capability |
| Data Ownership | Procore owns your data | New vendor owns your data | WE own it. Forever. In our DB. |
| AI Integration | Bolted on to legacy | Unknown | AI-native from day one |
| Customization | What they give you | What they give you | Exactly what PPH needs, nothing else |
| Competitive Advantage | Same as every other Procore user | Same as every other buyer | Proprietary. No competitor can buy this. |
| Risk | Overpaying for 3 years | Knowify data stays broken, no progress | Requires Graham's time investment |
The AI-first CRM we've been talking about — I'm the one building it. Paris Command already has 2,072 customers, 5,019 invoices, 726 jobs, an AI assistant, and a daily Teams digest. That's 60-70% of what Knowify does, with better AI than any tool on the market.
The remaining pieces (job entry, cost tracking, change orders, progress billing) are 3-4 focused build phases — not a moonshot.
We won't rip out Knowify overnight. We absorb it gradually:
Ceridian PowerPay has no API — it's a dead end for an AI-first operation. The plan:
Cost: ~$5-10/employee/month (roughly what PowerPay costs anyway)
Gain: Payroll data becomes part of the AI layer — labor cost analysis, overtime prediction, capacity planning all become possible
Where PPH is now: Layer 1 is solid. Layer 2 is live. Layer 3 just started (Teams digest). Layers 4-5 are the destination.
We've been trying for years to get the controller and management team to pick a few KPIs, track them, and improve on them. It's never stuck. I don't think this is a people problem — it's a systems problem:
| Reason It Failed | Root Cause |
|---|---|
| Data collection is manual | Someone has to pull numbers from QBO, cross-reference Knowify, check spreadsheets, compile a report. That's hours of work per week. Nobody wants to do it. Nobody does. |
| Nobody trusts the numbers | Revenue from QBO doesn't match job costs from Knowify. People argue about which system is right instead of acting on the KPI. No single source of truth = no trust. |
| KPIs aren't role-relevant | A foreman doesn't care about DSO. The controller doesn't care about crew utilization. When everyone gets the same dashboard, nobody uses it because 80% isn't their job. |
| No accountability loop | Someone picks a KPI in January, checks it in February, forgets by March. No system follows up. No system says "you're off target — here's why." |
Problem 1 → Auto-Calculated KPIs. The data already flows in from QBO (both companies synced), Knowify (248 customers, 726 jobs), and soon HCP and Monday.com. KPIs compute automatically from the unified database — nobody pulls anything. The number is just there, updated every sync cycle. Zero manual effort.
Problem 2 → Single Source of Truth + Data Confidence Scoring. Every KPI traces back to the unified data layer. Revenue comes from QBO. Job costs come from Knowify/HCP. There's no "which spreadsheet is right?" because there's only one database.
Each KPI displays a Data Confidence Indicator:
Nobody can dismiss a KPI by saying "those numbers are wrong" without the system either confirming or denying it. The confidence indicator kills the excuse.
Problem 3 → Role-Based KPI Menus. Each role gets a curated menu of KPIs relevant to their function. You pick 3-5 from your menu. You see what matters to you — nothing else.
Each person selects their KPIs once. They see them every time they open Paris Command. They see them in their morning Teams digest. The KPIs are theirs — relevant, personal, persistent.
The AI doesn't forget. It doesn't get busy. It doesn't avoid the awkward conversation.
Every previous attempt required someone to do the work of tracking KPIs. This system does the work automatically. The only human action required is:
The controller doesn't compile reports. The PMs don't fill out spreadsheets. You don't chase people for numbers. The system collects, calculates, validates, and delivers. People just have to look at it and act.
And if they don't act? The AI keeps flagging it. Every morning. "This KPI is still off target. Here's the trend. Here's what's causing it." The system doesn't give up, doesn't get distracted, and doesn't accept "I'll get to it next week" as an answer.
Before presenting this plan, I ran it through an adversarial review — four competing perspectives arguing for and against the AI-first approach given our constraints. I want to be transparent about the tensions and how I've resolved them.
1. Speed vs. Depth. I can't revamp all systems and processes in 6 months as a solo builder. Even the most aggressive position in the review had to concede that. But we're not on a hard clock — we're willing to take 3-5 years to reach maximum value. That means I can build this right instead of building it fast. The phases are sequenced by dependency and impact, not by an arbitrary deadline.
2. EBITDA vs. Multiple. Every dollar of EBITDA matters at exit — a buyer pays 4-6x on earnings. But the multiple itself is the bigger lever. A traditional mechanical contractor at 5x EBITDA caps out at $15M on $3M earnings. A contractor with proprietary AI ops tools and demonstrably better margins becomes a 6-7x company. On $3-4M EBITDA, that's $3-8M of incremental value. The resolution: build tools that DIRECTLY improve financial metrics. When we're ready to sell — whether that's in 2 years or 5 — the data proves itself.
3. Operational Independence. The tools aren't the risk — any developer can pick them up. The real bottleneck is operational. Right now, Duncan, you ARE the operations. Estimation runs through you. PM oversight runs through you. Major job decisions run through you. If we ever want the option to sell, a buyer doing diligence won't ask "what happens when Graham stops coding" — they'll ask "what happens when Duncan stops working 55-hour weeks?" If the answer is "the business slows down," the valuation takes a hit. The AI tools are part of the solution here: they systematize the knowledge that currently lives in your head, they automate the oversight you do manually, and they create a management layer that doesn't depend on any single person — including you. That's not about replacing you. It's about making the business resilient enough that it doesn't need any one person to function.
The original plan was comprehensive — 8 phases, full transformation. The stress test narrowed my focus:
Data foundation, KPI automation, AI-powered quoting, and AP automation. These directly improve margins and reduce overhead — the financial impact is measurable within months of deployment.
Job management replacement, workforce intelligence, predictive analytics, autonomous operations. These compound on the foundation and represent the full vision. We have time to build them right.
PPP membership growth. Recurring service revenue at $2K average annual value is extremely valuable — both for cash flow now and for valuation whenever we decide to sell. 1,000 memberships = $2M of predictable annual revenue. This runs alongside the tech buildout, not in conflict with it.
Nothing in this plan risks PSG profitability. If the choice is between shipping an AI tool and hitting our financial targets, the financial targets win every time. The AI work should serve profitability, not compete with it. Where possible, the first tools I build are the ones that directly reduce overhead or improve margins — automated dispatch, job costing visibility, compliance tracking.
Even if we never sell, every tool I build needs to work without me in the room. I could get hit by a bus, go on vacation, or shift focus. The tools can't break when I'm not around. My approach:
If we do decide to sell, the story writes itself: "You're acquiring a mechanical contracting platform with AI-driven ops that produce X% better margins than industry average. The tech is production-proven, runs on zero-maintenance infrastructure, and is operated by the management team — not dependent on the founder." But more importantly, this resilience makes the business stronger whether we sell or not.
| What | Why | Effort |
|---|---|---|
| Connect Monday.com (PPH) | Project tracking data into the unified layer | 1 week |
| Connect HCP (PSG) | Service dispatch, job data (waiting on MAX plan API) | 2 weeks (blocked) |
| Automate Knowify sync | Currently manual script — needs scheduled worker | 1 week |
| Switch payroll provider | Replace Ceridian PowerPay with API-enabled Canadian payroll (Humi or Rise) | 2 weeks (incl. data migration) |
| Connect Confluence | SOPs, procedures searchable by AI assistant | 3 days |
What changes for PPH: You open Paris Command and see everything — not just financials. Project status from Monday, job costing from Knowify, payroll data from the new provider, documents from SharePoint and Confluence. One place.
| What | Why | Delivery |
|---|---|---|
| Job burn rate monitoring | Flag jobs burning budget faster than historical norm | Teams alert when detected |
| Customer payment pattern change detection | "Customer X usually pays in 15 days — this invoice is at 40 days, unusual" | Teams alert + dashboard badge |
| Revenue anomaly alerts | Week-over-week or month-over-month revenue drops flagged automatically | Morning digest enhancement |
| Margin drift warnings | "PPH gross margin dropped from 28% to 22% over last 3 months — here's why" | Weekly digest card |
| Stalled estimate aging | Estimates sitting >30 days with no activity | Daily digest + AI can list |
What changes for PPH: Instead of discovering a problem at month-end, the AI catches it in real-time. Your morning Teams message says "Job #4521 is 35% through timeline but 60% through budget — here are the cost categories driving it."
| What | Why | Impact |
|---|---|---|
| Rebuild price book engine | EMCO catalog with live pricing, supplier cost tracking, UPC matching, multi-supplier | Accurate material costs |
| AI material takeoff assist | "I need to quote a 4-story residential boiler room" → AI suggests material list based on similar past jobs | Faster estimates |
| Historical job comparison | "Show me the last 3 jobs similar to this scope and what they actually cost" | Better margins |
| Markup optimization | AI recommends markup % based on job type, customer history, current market, win/loss data | Higher win rate |
| Quote generation | Professional PDF quotes from the tool, not Excel | Professional image |
What changes for PPH: Estimating goes from "open Excel, call EMCO, check old quotes" to "describe the job to the AI, review its material list, adjust, and send." A quote that took 4 hours takes 45 minutes.
| What | Why | Impact |
|---|---|---|
| Invoice OCR + extraction | Scan/photo/email → structured data (vendor, amount, line items, PO number) | No manual data entry |
| Auto-match to jobs | AI matches invoice line items to the right job + cost code | Accurate job costing |
| Exception flagging | "This invoice is 22% higher than the PO" or "vendor not in approved list" | Catch errors before pay |
| Approval workflows | Route to right person based on amount, vendor, job | Faster payment |
| QBO sync | Approved invoices auto-push to QuickBooks | No double entry |
What changes for PPH: The bookkeeper stops manually entering invoices. Suppliers email invoices → AI processes them → you approve in the app → it posts to QBO. The AI flags anything unusual before money goes out the door.
This is not "build a CRM from scratch." Paris Command already has the data layer — 726 jobs, 248 customers, 200 invoices from Knowify are already in the database. This phase adds the write side: creating and managing jobs, not just viewing them.
| What | Why | Impact |
|---|---|---|
| Job creation + editing | Create jobs, set budgets, assign PMs, track status directly in Paris Command | PMs work in Paris Command not Knowify |
| Cost code tracking | Labor / material / sub breakdown per job — linked to invoices and payroll data | Real-time job costing without manual entry |
| Change order management | Track scope changes, cost impacts, approval chain — AI flags margin impact | No more spreadsheet change orders |
| Progress billing / draws | Generate draw requests from % complete, auto-populate from job cost data | Faster billing cycles |
| PM daily workflow | Morning view: "Your jobs today" — what needs attention, what's on track, what's at risk. AI-prioritized, not a list. | Replaces Knowify as the daily driver |
| Historical Knowify import | Full data migration — all jobs, costs, customers preserved in Paris Command | Clean cutover |
What changes for PPH: Our PMs stop logging into Knowify. They open Paris Command, see their jobs prioritized by the AI ("Job X needs a change order, Job Y's material delivery is late, Job Z is on track"), update status, and move on. The AI handles the analysis; humans handle the decisions.
Why this works: I'm not competing with Procore's 1,500-person feature set. I'm building exactly what our 85 employees actually use — job entry, cost tracking, change orders, billing. That's a focused scope, not a moonshot. And every feature is AI-native: the PM doesn't look at a spreadsheet of cost codes, they ask "Is this job on budget?" and get a real answer.
Knowify cost saved: $12,000/year — permanently.
| What | Why | Impact |
|---|---|---|
| Crew availability tracker | Who's on what job, who's available next week | No more whiteboard |
| Capacity forecasting | "Based on your pipeline, you need 2 more plumbers by June or you'll miss dates" | Hire ahead of demand |
| Utilization dashboards | Which crews are at 90%? Which at 50%? Where's the waste? | Balance workload |
| Skill matrix | Track certs, tickets, training — AI matches crew to job requirements | Right person on right job |
| Overtime prediction | "At current pace, overtime costs will hit $X this month" | Control costs |
| Labor cost per job | Payroll data (from new provider) linked to jobs — actual labor cost vs estimated, per crew | True job profitability |
What changes for PPH: We stop managing capacity on a whiteboard or in our heads. You ask the AI "Can we take on a 6-week mechanical job starting May 1?" and get a real answer based on current commitments and crew availability.
| What | Why | Impact |
|---|---|---|
| Cash flow forecasting | "Based on AR aging, payment patterns, and upcoming AP, your cash in 30/60/90 days will be approximately $X" | Plan ahead |
| Job risk scoring | Every active job gets a risk score (budget, timeline, complexity, crew experience) | Intervene early |
| Seasonal demand modeling | "Historically, your quote volume spikes 40% in March — you're understaffed" | Staff up early |
| Customer lifetime value prediction | Identify your best customers, predict who's at risk of leaving, recommend actions | Focus retention |
| Win/loss analysis | "You win 60% of residential but only 25% of commercial over $500K — here's why" | Bid smarter |
What changes for PPH: The Monday morning meeting isn't "what happened last week" — it's "here's what the AI predicts will happen this month and what we should do about it."
| What | Why | Impact |
|---|---|---|
| Auto-reorder materials | When job material list is approved, AI generates POs to preferred suppliers | No stockouts, no delays |
| Automated follow-ups | AI sends payment reminders, estimate follow-ups, customer check-ins on schedule | Faster collections, more wins |
| Smart scheduling suggestions | AI proposes crew assignments based on skills, location, availability, job requirements | Optimal utilization |
| Document generation | AI drafts change orders, progress reports, closeout packages from job data | Less admin time |
| Compliance monitoring | Track cert expirations, safety training due dates, insurance renewals — auto-notify before they lapse | Zero compliance lapses |
What changes for PPH: The office manager's job shifts from data entry and chasing paperwork to exception handling. The AI runs the routine; humans handle the judgment calls.
The competitive advantage isn't the software itself — it's the speed of decision-making. A company that catches a margin problem on day 3 instead of day 30 saves real money. A company that quotes in 45 minutes instead of 4 hours wins more work. A company that never misses a cert renewal or insurance lapse never gets shut down on a job site.
The question isn't "can we afford to build this?"
The question is "can we afford not to?"
Every year PPH waits is a year competitors could adopt this approach. The ones who move first build a compounding advantage — more data, smarter AI, faster decisions, better margins. The ones who wait are buying yesterday's software at yesterday's prices.
| Category | Cost | Notes |
|---|---|---|
| Infrastructure | ~$50/month | Cloudflare Workers Pro, D1, R2 storage |
| AI API costs | ~$100-300/month | Claude API for assistant, processing, analysis (scales with usage) |
| New payroll provider | ~$500/month | Humi or Rise People (replaces PowerPay — similar cost, adds API) |
| Development time | Graham's time | Built with Claude Code — no external dev team |
| External services | $0 new | QBO, Monday, SharePoint already paid for |
| TOTAL NEW COST | ~$650-850/month | Offset by $1,000/month Knowify savings once Phase 5 completes |
Not every phase carries equal weight. Here's how I've prioritized — by financial impact and dependency, not by an exit clock:
Builds the foundation, improves margins now
Compounds on the foundation
Every phase makes the business more profitable, more efficient, and more valuable. We build them all. The sequencing is about dependencies and impact — Phase 5 needs Phase 1's data layer, Phase 7 needs Phase 2's alerting framework, and so on.
This doesn't conflict with the tech buildout and it's one of the highest-value things we can do. Recurring service revenue at $2K average annual value is extremely valuable for cash flow and valuation. Growing the PPP membership base is a revenue quality play that strengthens the business independent of everything else in this plan.
Duncan, this isn't about buying software. It's about building a proprietary competitive advantage that no other mechanical contractor in Vancouver has. Every tool is custom-built for how we actually operate, connected to our actual data, and gets smarter over time.
I've stress-tested this plan hard. The adversarial review forced me to narrow the scope, prove the financial case, and address the owner-dependence question. What's left is a focused, realistic plan that does three things:
Step 1 is already done. The data foundation is live, the AI assistant works, and the daily digest lands in Teams every morning. Everything from here builds on what's already proven.
I need your support on two things: the PSG restructuring to free up my time, and alignment that this is the right use of that time. The alternative is I stay in PSG operations full-time, and everything in this plan stays on paper. I don't believe that's the best path for us.
Let's discuss.