Pretoria Paving
Strategic Financial Report

Break-Even, Cash Position & Strategic Levers

QuickBooks actuals (Feb–Jun 2026) combined with 15-month operations data and CRM pipeline analysis. This report models the financial impact of shifting to repair/restoration work, geo-narrowing, and fleet optimisation.
February – June 2026 (QBO)
Jan 2025 – Mar 2026
23 June 2026
R808k
Avg Monthly Revenue
R786k
Current Break-Even
R233k
YTD Net Profit
R559k
Cash in Bank
R647k
Target Break-Even
1

Current Financial Position

YTD Revenue
R3.60M
Feb–Jun 2026
YTD Gross Profit
R1.63M
45.3% avg GP margin
Monthly OpEx
R320k
Avg Feb–May (QBO)
YTD Net
R233k
6.5% net margin
Avg Revenue/Mo
R808k
Full months Feb-May

Monthly P&L — QBO Actuals Feb–Jun 2026

LineFebMarAprMayJun*YTD
SalesR669kR506kR950kR1,106kR364kR3,595k
Cost of SalesR171kR318kR469kR956kR54kR1,969k
Gross ProfitR498kR188kR480kR150kR310kR1,627k
GP Margin74.4%37.1%50.6%13.6%85.1%*45.3%
Salaries & WagesR196kR208kR223kR216kR61kR904k
All Other OpExR84kR137kR100kR115kR58kR494k
Net Earnings+R219k-R156k+R158k-R180k+R192k+R233k

* June is partial (1–23). GP margin artificially high — invoiced but COGS not yet captured. Jan QBO data unavailable (integration started Feb).

May: Highest Revenue, Worst Month

-R180k on R1.1M sales

COS hit R956k (86.5% of revenue). Large low-margin jobs consumed the entire month. Revenue alone does not equal profit.

Feb: Best Month of the Year

+R219k net profit

Low COS (25.6%) drove 74% gross margins. Higher proportion of smaller, higher-margin jobs. This is the month profile we want to replicate.

Understanding the Two Data Sources

This report draws from two systems that measure profitability differently. Neither is wrong — they serve different purposes:

Operations Sheet (Google Sheets) — per-job view. Every completed job has materials, casual labour, rubbish, tools allocated against it. GP margin: 33.4% average. This tells us which jobs and job sizes are most profitable.

QuickBooks (QBO) — monthly cash accounting. Cost of Sales only captures materials/bricks purchased. Casual labour sits in the "Salaries & Wages" expense line alongside permanent staff. GP margin after COS: 45.3%. This tells us monthly cash flow and overall business health.

The 12-point gap (45.3% vs 33.4%) is casual labour — it's a direct job cost on the ops sheet but an operating expense in QBO. Both are correct for their purpose. For break-even calculations, we use QBO margins (since QBO OpEx already includes casual labour). For job-level decisions, we use ops sheet margins.

Revenue Reconciliation — Why the Ops Sheet Shows ~R1M More

The ops sheet INVOICE row shows R4,591k YTD vs QBO Sales of R3,595k. The ~R996k gap is explained by three factors:

FactorAmountExplanation
January not in QBOR320kQBO integration started Feb; ops sheet has R320k invoiced in Jan
VAT (15%)R539kOps sheet = VAT-inclusive client invoices; QBO P&L = excl VAT
Invoice timing~R137kSame invoices allocated to different months across the two systems
Total gap~R996kFully reconciled — no missing revenue

Break-even calculations use QBO figures throughout — revenue and expenses on the same VAT-exclusive basis.

2

Break-Even Analysis

Current Break-Even
R786k/mo
R320k OpEx ÷ 40.7% GP*
Margin of Safety
2.8%
R22k above break-even
Break-Even Jobs
~15/mo
At R51k avg value
Historical Months Above BE
3 of 12
Multi-year avg: only Aug, Sep, Nov

Revenue vs Break-Even — 16-Month History R786k line

* The 40.7% GP margin is the weighted average of the four full QBO months (Feb–May): R1,316,373 GP ÷ R3,230,926 revenue. It excludes partial June where COGS haven't been fully captured. We use this (not the 45.3% YTD) because it's more representative of steady-state operations.

The Problem

Average monthly revenue (R808k) sits just R22k above break-even (R786k). That's a 2.8% margin of safety. One slow week or one badly-priced job tips the month into a loss. Looking at the multi-year historical averages, only 3 of 12 calendar months (Aug, Sep, Nov) average above R786k.

3

Where the Money Goes

Monthly OpEx Split R320k/mo

Fixed vs Variable

QBO AccountMonthly Avg% of OpExType
Salaries & Wages (permanent + casual)R210,77265.9%Semi-var
Advertising (Google Ads + media)R20,1676.3%Variable
Rent / Lease (Sapphire Ocean)R20,3136.4%Fixed
MVE — Fuel & OilR17,3745.4%Variable
Equipment Rental (Talisman etc.)R14,7214.6%Variable
InsuranceR8,6782.7%Fixed
All Other (bank, accounting, subs, etc.)R27,7278.7%Fixed
Total Monthly OpExR319,752100%
4

The Repair & Restoration Opportunity

Strategic Shift: Smaller Jobs = Higher Margins

The ops data tells a clear story: small jobs are dramatically more profitable than large ones. Jobs under R25k carry 44–56% margins vs 28–35% on large jobs. And with the Chryso Colourseal partnership now in place, we can add a high-margin restoration service that requires minimal materials, fewer casuals, and less transport.

GP Margin by Job Size Ops Sheet · 205 jobs

Revenue Concentration

Job SizeJobsAvg MarginCasualsDaily GPVerdict
<R5k (repairs)12 (6%)55.7%1–2HighTarget more
R5k–R10k (repairs)20 (10%)56.2%2–3HighTarget more
R10k–R25k (standard)73 (36%)43.7%3R8,567Bread & butter
R25k–R50k49 (24%)34.5%3–4Decent
R50k–R100k33 (16%)35.1%4–5Sweet spot (volume)
R100k–R250k12 (6%)35.7%5–6Selective
R250k+6 (3%)28.4%6–9Margin risk

Chryso Colourseal — The New Service Line

Partnership agreed with Chryso / Saint-Gobain (June 2026). Colourseal at R24.30/lit excl VAT. Training in progress. This enables a new "Paving Restoration" service: lift, repair, reinstall, and colour-seal existing paving.

Unit economics of a typical restoration job (100m² driveway):

ComponentCostNotes
Colourseal (14–20 litres)R340–R4865–7 m²/litre coverage
Deco Net / Concrete Stripper (prep)R150–R300Surface cleaning
Labour (1 day, 2–3 casuals)R600–R900R200–R300/casual/day
Transport (1 vehicle, local)R200–R400Centurion/PTA radius
Equipment (pressure washer)R0–R500Owned or hired
Total Direct CostR1,300–R2,600
Quote to clientR8,000–R15,000Repair + seal
Gross Profit per jobR5,400–R12,40068–83% margin

Revenue Impact: 8 Chryso Jobs/Month

+R80k revenue at ~75% GP

8 restoration jobs × R10k avg = R80k additional monthly revenue. At ~75% margin that's ~R60k GP. Demand source: dedicated Google Ads campaign targeting "paving repair/restoration Pretoria" + existing CRM re-engagement (765 expired quotes, many suitable for restoration rather than full repave).

Lower Resource Requirements

2–3 casuals, 1 vehicle, 1 day

No bricks to buy, no rubbish removal, minimal equipment. A single team can do 1–2 restoration jobs per day. Lower labour, lower fuel, lower risk.

5

Geo Narrowing: Centurion & Pretoria Only

Avg Job Distance
10.1km
Median: 8.8km
Wasted OOA Leads
350+
JHB/East Rand — 0% conversion
Monthly Fuel
R17.4k
QBO actual avg (Feb-May)
Potential Fuel Saving
R2.6–5.2k
15–30% from tighter radius

Conversion Rate by Area

Fuel Cost Reduction Model

ZoneRadiusLeadsConversionAction
Centurion Core0–10km244+6.7–25%Primary target
Pretoria East8–18km100+6.7–31%Secondary target
Pretoria Wider15–30km40+10–18%Selective
JHB / East Rand40km+350+0%Exclude from Ads

Tighter Radius = More Quotes Per Day

Average job is 10km from HQ. If we restrict Ads to Centurion + Pretoria East (0–18km), Rainier's team can do more site visits per day — 4–5 instead of 2–3. More quotes = more conversions at zero additional cost.

Vehicle Fleet Reduction

-R9k/month

Dropping 1 vehicle saves ~R5,543 installment + ~R3,500 fuel. With a tighter service area and more repair/restoration work (smaller crew, less equipment), 4 vehicles may be sufficient.

6

Break-Even Scenarios

What's Changed

Kyle resigned — R12,720/month comes off salaries immediately. Combined with a potential move to smaller premises at R12k/month (saving ~R4.3k vs Sapphire Ocean) and dropping one vehicle, total monthly savings reach R28.6k.

Scenario A — Current
R786k
Margin of safety: 2.8%
OpEx: R320k/mo
GP Margin: 40.7%
Revenue needed: R786k
Risk: One bad month = loss
Scenario B — Cost Restructure
R716k
Margin of safety: 11.4%
Kyle departure: -R12.7k/mo
Drop 1 vehicle: -R9k/mo
Cheaper premises: -R4.3k/mo
Geo fuel saving: -R2.6k/mo
New OpEx: R291k/mo
Scenario C — Full Shift
R647k
Margin of safety: 20.0%
All Scenario B savings
Job mix shift: GP to 45%
New OpEx: R291k/mo
Monthly buffer: R161k

Break-Even Scenarios vs Historical Revenue

ScenarioMonthly OpExGP MarginBreak-EvenMargin of SafetyKey Changes
A — CurrentR320k40.7%R786k2.8%No changes
B — Cost RestructureR291k40.7%R716k11.4%Kyle out, -1 vehicle, cheaper rent, geo
C — Full ShiftR291k45.0%R647k20.0%+ repair/Chryso mix shift
C + Chryso revenueR291k45.0%+R647k~25%+ R80k/mo restoration jobs

The Math

Moving from Scenario A to Scenario C drops break-even by R139k/mo. Kyle's departure (-R12.7k), dropping one vehicle (-R9k), cheaper premises (-R4.3k), and tighter geo (-R2.6k) save R28.6k in OpEx. Shifting the job mix toward repair/restoration lifts GP from 40.7% to 45%. Combined: break-even falls from R786k to R647k. That transforms a business that loses money 56% of months into one profitable in 10 of 12.

7

Cash Position & Runway

FNB Business
R319k
Operating account
FNB Call
R230k
Reserve account
VAT Payable
R125k
Current liability
Runway
~5 weeks
At R320k/mo burn rate

Balance Sheet Summary

Cash Runway vs December Risk

December Survival Fund

Need R640k by Oct 31

Two months of OpEx cover (R320k × 2) to survive Nov–Jan. Currently at R559k — need another R81k. Bank R50k/month from Jul–Oct peak season.

Net Cash Position

R370k after current liabilities

R559k total assets minus R189k current liabilities (VAT R125k + creditors R64k) = R370k. Under Scenario C (R291k/mo OpEx), that's ~5.5 weeks of runway.

8

Google Ads Performance (Mid-May Changes)

CPC Trend
R6.40→R2.80
56% reduction since Apr
Weekly Spend
R4,649
~R20k/month
CTR
6.75%
Up from 4.6% in Apr
Conv. Data
Review
Display conv may be inflated

Ads Efficiency Trend — Apr to Jun 2026

CampaignApr SpendJun SpendTrendNotes
Search (PP Companies & Contractors)R2,934/wkR1,968/wk↓33%Fewer clicks but steady conversions
Performance MaxR1,151/wkR1,657/wk↑44%Conversions improving 3→20/wk
Leads Display/CIAR145/wkR1,024/wkNew178 conv/wk — likely inflated*
TotalR4,085/wkR4,649/wk↑14%

* The Leads Display campaign reports 178 conversions/week at R5.75 CPL. Display campaigns typically count view-through and micro-conversions — these are not quote form submissions. Recommend reviewing conversion actions in Google Ads to separate actual quote submissions from view-through signals.

CPC Down 56%

Average cost-per-click dropped from R6.40 to R2.80 since the mid-May changes. More clicks for the same budget — the campaign restructure is working.

Recommended: Scale with Geo

With geo-narrowing to Centurion + Pretoria, ad spend becomes more efficient — zero waste on JHB clicks (previously 350+ leads with 0% conversion). Same budget, better leads.

9

Seasonal Pattern & December Planning

Historical Revenue by Month (2019–2025) vs Break-Even Scenarios

December: ~R130k+ Cash Drain

December revenue averages R163k (7-year avg; worst: R53k, best: R373k) while OpEx stays at R320k. Under Scenario C (R291k OpEx), the hole shrinks to ~R130k. Must be funded from peak-month reserves.

Under Scenario C: 6 of 12 Months Profitable

At R647k break-even, historical averages show 6 months above break-even (Feb, May, Aug, Sep, Oct, Nov) vs only 3 currently. That doubles the profitable months and cuts the annual deficit in half.

10

Action Plan

#ActionImpactOwnerTimeline
Immediate (This Month)
1Geo-exclude JHB/East Rand from all Google Ads campaignsEliminate 350+ wasted leads/yearBrink + MarkThis week
2Review Display campaign conversion tracking — separate actual form submissions from view-throughAccurate performance dataBrinkThis week
3Complete Chryso credit application — Karen to submit to Kaylene + NolanUnlock COD orderingKarenThis week
4Set minimum 30% GP floor on R250k+ quotes — walk away below thatPrevent R100k+ monthly lossesJurie + RainierImmediate
5Kyle departure — do not replace. Absorb capacity into remaining team with tighter service area-R12.7k/mo permanent savingRainierEffective now
Short Term (July–August)
6Launch paving restoration service — Chryso Colourseal, Google Ads campaign, website pageR64k GP/month (target 8 jobs)Brink + RainierJuly
7Drop 1 vehicle — Kyle's departure makes 4 vehicles sufficient for tighter radius-R9k/mo (install + fuel)RainierJuly
8Move to smaller/cheaper premises — target R12k/mo rent vs current ~R16.3k-R4.3k/moJustinAt lease end
9Bank R50k/month into FNB Call from Jul–Oct peak season surplusR640k December bufferJustinJul–Oct
10Re-engage 765 expired quotes — WhatsApp/SMS follow-up sequenceNear-zero cost, +R162k rev potentialTia + automationJuly
Medium Term (Q3–Q4)
11Shift job mix — target 30%+ revenue from <R25k repair/restoration jobsGP margin 40.7%→45%Jurie + BrinkQ3 2026
12Scale Google Ads with revenue — cap at 3% of monthly revenueResponsive spend, no wasteBrinkOngoing
13Monthly QBO reporting — automated P&L pull, track actual vs break-evenData-driven decisionsBrinkOngoing

The Bottom Line

The business currently runs R22k above break-even — razor thin. With Kyle's departure (-R12.7k), dropping one vehicle (-R9k), cheaper premises (-R4.3k), and tighter geo (-R2.6k fuel), OpEx drops from R320k to R291k. Shift the job mix toward repair/restoration work (Chryso Colourseal at 80%+ margins) and break-even falls from R786k to R647k — a R139k improvement. The margin of safety jumps from 2.8% to 20%, and looking at historical averages, profitable months double from 3 of 12 to 6 of 12.