Scope: labor cost & OT, crew productivity (rev/hour), and Fert service-line operational detail.
For company financial pace (Booked, Produced YTD, Invoiced YTD, Backlog) → Team Dashboard.
Fertilization · Service Lines & Rounds — operational detail (KPI headlines on Team Dashboard)
Loading round-level data from /api/data…
Monthly P&L · How we're doing month-over-month
Click any row to expand · QB actuals vs budget vs 2025
Loading monthly P&L…
Loading service-call data…
Labor · Week-to-Date by employee — who has OT room, who's at cap
Loading WTD labor…
Labor · YoY hours & overtime from QuickBooks Time
Loading labor data…
Crew Productivity · $/Hour by service line TSheets jobcode hours ÷ PBT service-code revenue · honest aggregates (no per-tech caveat)
Loading service_line_rph.json…
Revenue per Hour · since 3/24 (season) by technician production $ ÷ hours worked · top 20 · per-tech, caveated
Loading revenue-per-hour data…
—
Data status — loading…
🎉 NEW SALE —
Sales Dashboard — loading…
Summer Recovery Program
Aeration · Overseed · Gypsum · Lime — loading…
— of $100K goal
—
A&O program · plan vs booked vs produced
Season fulfillment, all reps — separate from the $100K campaign above.
Recent recovery sales
Lawn Care · Plan vs Booked vs Produced
data through —
How to read:Plan = annual revenue target from the Lawn Care Revenue Planning sheet · Booked = total \$ scheduled in RG for this season (sold but may not be done yet) · Produced = work actually completed · Gap to Plan = Plan − Produced (already-closed rounds like LR1 don't catch up just because late bookings land — produced is the real measure). Focus on services with the biggest gap.
Total $ + every program sold. Sorted by $. ZFC service calls excluded (see Operations).
📡 Live Ticker — Today
Per rep: total $ today + every program sold (ranked by $).
📋 Rep Scorecard · YTD / MTD / 4-week trend
active reps only (≥1 sale in last 4 wks) · sorted by YTD LP6
Rep
YTD LP6
YTD $ Net
MTD LP6
MTD $ Net
MTD OIC
Avg / week
Best week
Last 4 weeks
Trend
🎯 Cross-Sell Attach Rates
📥 Top Lead Sources YTD
LP6 & Mosquito by Channel — where each program is sold · green = new acquisition · grey = existing-customer upsell · YTD
📰 Recent Wins — last 15
📈 Net Growth — lawn care · weekly
—
Green up = $ sold · red down = $ cancelled (revenue left on cancelled programs) · marker = net. Lawn-care programs only — the one question: are we net-growing the book?
▶ 📡 Marketing Channels — YTD leads / revenue by source · CPL + ROAS pending spend data
📡 Marketing Channels — YTD
—
Channel
Type
Leads
Revenue
% rev
Avg ticket
CPL
ROAS
CPL + ROAS are blank until per-channel spend is wired in. To populate: edit MARKETING_SPEND_YTD in rebuild_scorecard_data_5_15.py with channel → $ spent, then refresh.
Sales Manager Focus — where revenue is leaking · who to call · who needs coaching
💸 Churn Watch — cancelled revenue YTD
—
📞 Cross-Sell Call Lists
—
🎓 Rep Coaching
—
▶ Show classic Week / YTD tiles + Sales-by-Rep tables + Daily / Source / Program detail
First-time setup: click 🔑 Sign in to estimator above, enter the team password, then come back here and click ↻ Reload panel. The login cookie carries across after that.
Lawn Care / OIC Scheduling· overdue rounds, credit holds & new sales · live from RealGreen, refreshed 6 AM
Scope: month-to-date production by division vs this month's budget.
Auto-advances on the 1st of every month. Same-month-last-year shown for context.
For YTD pace see Team Dashboard;
for finance/GAAP view see P&L vs Budget.
Produced vs goal — dashed line = where we should be today · green = produced · light = still to go
By division — production basis (crews completed)
Division
Month goal
MTD actual
vs goal $
% to goal
Pace today
LY same mo
YoY
$/day needed
Pace today = MTD actual ÷ (goal × days-elapsed-share). 100% = on a straight-line pace to hit the month's goal. $/day needed = remaining ÷ working days left. Colors per global key (top-right of breadcrumb).
Data status — loading…
2026 Forecast — what has to happen to hit EBITDA goal
— loading…
Live · re-runs daily at 4:15 AM
EBITDA bridge · year-end where the year still closes given YTD + plan
Looking forward — "how much will each division need to do per day to close the year-end gap?" For backward-looking YTD pace vs plan (where each division is RIGHT NOW), see the Team Dashboard pace grid.
Cost containment levers discretionary SG&A lines where pulling pace closes part of the EBITDA gap
Loading…
Assumptions in V1: work-week is Mon-Sat (Sundays excluded). Season windows + crew counts are config in build_forecast.py — tunable. EBITDA goal $959K is the 2026B Summary annual total. Discretionary-vs-locked SG&A classification is in SGA_CLASS. V2 adds: EVE schedule $ already-booked next 30/90d (replaces estimated capacity), estimator pipeline $ × historical close rate (replaces 'unknown future sales'), per-crew capacity from active roster.
Data status — loading…
Green Acres Group — 2026 Scorecard
— loading…
Annual goal: $4.83M
—
Profitability levers where the team can move the needle on June margin
Division performance vs budget and vs 2025 · click any card for service-line detail
—
▶ Yearly view — annual budget · booked for season · % sold · 2025 actual · plan vs 2025
Division
2026 Annual Budget
Booked for Season
% Sold
2026 YTD Produced
2025 Actual (FY)
YoY Growth
invoiced plan
total scheduled
of annual
RG produced YTD
invoiced
2026 YTD vs 2025 YTD
—
Loading service-call data…
▶ Labor · YoY hours & overtime — QuickBooks Time · YoY hours / OT% by division
Loading labor YoY…
▶ Revenue per hour · by technician — production $ ÷ hours, top 20, caveated
Revenue per hour · since 3/24 (season) by technician production $ ÷ hours worked · click Fert only for clean per-tech numbers (PBT credits each Fert tech per round; on landscape/mow it only credits the crew leader)
Loading revenue-per-hour data…
▶ 📜 Historicals — P&L by month — real QB monthlies · 2026 / 2025 / YoY · revenue / COGS / GP / EBITDA
Loading 2025 P&L…
▶ How services are bucketed into divisions — source-of-truth mapping
Division (as shown)
What's in the bucket
QB class
RG service codes
RG-code mapping lives in refresh_division_scorecard.py:54-61. QB-class mapping lives in parse_qb_pnl_by_division.py:55-63. If a code is missing here, it flows to Other on the production side and Not classified in QB on the GP side.
Data status — loading…
P&L Forecast — full-year landing & labor pace
— loading… —
Live · re-runs nightly
Scope: closed months = QuickBooks actuals; current month = backlog-anchored landing;
future months = budget under the chosen basis. For the GAAP/actuals view see
P&L vs Budget.
Full-year landing
— pick the basis for the remaining months
Loading…
Path to plan
— the levers between the honest landing and the plan, sized against real budget-vs-actual
Loading…
By month — revenue & EBITDA, actual / landing / forecast vs budget
Loading…
Cost watchlist — recurring costs that still hit before the current month closes
Loading…
Labor Planner
— per-employee hours & cost vs budget, this week & this month; dial each person to plan overtime before it happens
Loading…
2026 Labor Budget — Raise & Hire Tracker
Managers: edit proposed wages, add/remove employees. Budget tracks live. Baseline = 2025 actual wage. All costs = (wage × ST hrs) + (wage × 1.5 × OT hrs).
This Month — landing
— loading… —
Live · re-runs nightly
P&L vs Budget — 2026
Actuals from QuickBooks · Budget from 2026 Budget · 2025 shown for year-over-year comparison.
Budget vs actual — by month
Each cell shows 2026 actual $ on top, with two deltas below: ● vs 2026 budget, and ▲▼ vs 2025 actual. Current month is partial through today.
P&L Summary — YTD
Where the money goes
▶ More detail & breakdowns — drill-down by headline · COGS breakdown · year-over-year
Drill-down by headline
COGS Breakdown — 2026 YTD vs 2025
Year-over-Year — Jan–Mar
Data status — loading…▶ Show full monthly detail — every P&L line, every closed month + May