⚙️ Internal Activity system · self-monitoring · 7-day retention
Loading…
👥 Customer Activity
Loading…
🔔 Pending Approvals 0
📈 Service Tier Breakdown ▼
📈 Revenue Trend — Monthly ▼
📈 Customer Growth ▼
💰 Failed Payments & Past Due ▼
🚫 Cancellations & Churn ▼
📍 Top ZIP Codes by Revenue ▼
🚚 Cans Not Out — Impact ▼
💰 Revenue Collected — Deposits ▼
System Health
—
Workers OK: —
D1 row counts: —
Integrations OK: —
Recent errors: —
A. Workers —
Worker
Status
Resp (ms)
Last cron
Probing 29 workers…
B. D1 Databases —
Counting tables…
C. Integrations —
Service
Status
Detail
Pinging integrations…
D. Recent Errors —
When
Worker
Action
Message
Loading error log…
Customer Lifetime Value
Median CLV
—
across active customers
Top-Decile CLV
—
90th percentile threshold
Avg Tenure
—
months since first paid invoice
Total Active LTV
—
sum of total_clv across list
#
Name
Plan
Tenure (mo)
Spent YTD
Spent Lifetime
Est. Remaining
Total CLV
Segment
Profile
Loading…
Heuristic: Estimated remaining CLV = monthly recurring × predicted retention months
(6 mo if tenure ≤ 12 mo, 12 mo if tenure > 12 mo). Tunable in D1 table clv_assumptions.
Lifetime totals are actuals from paid invoices only.
🚚 Routes
Route Calendar
🚚 Full Year 2026
🎯 Customer Density by ZIP
📈 Service Type Mix
📊 Quick Reports
Stops Per Route
Completion rates by route and day
Crew Efficiency
Stops/hour, time per stop, idle time
Cost Per Stop
$31.66 baseline — track actual vs target
Route Completion Rates
% completed on-time vs rescheduled
Route Balance
Overloaded vs light — find where to add stops
Underserved ZIPs
Low customer count — growth opportunities
Seasonal Volume
Load changes by month — plan crew & trucks
Profitability by Run
Revenue vs cost per Week + Day combo
🔧 Custom Report Builder
📊 Report Preview
💾 Saved Reports
👥 Customer Intelligence ● LIVE (D1)
Active Subscriptions
—
from D1
New This Year
—
from D1 date_added
One-Time Customers
—
from D1 plan_type
Problem Accounts
—
balance > $0
VIP (3+ Years)
—
date_added before 2023
Signup Sources
—
from D1 signup_source
★ Loyalty:from D1 date_added
📈 2026 Monthly New Customers
⚠ Problem Children — Accounts Needing Attention
📍 Top Service Areas
🎯 How They Found Us
💵 Financials ● LIVE (D1)
⚙
Loading QuickBooks data...
⚠ Showing cached data — QB connection issue
📈 2026 YTD — QuickBooks P&L
❄ January 2026 — Winter Shutdown (~3 weeks)
Operations suspended ~3 weeks. Jan reflects ~1 active week.
YTD Revenue
--
Net Income
--
Total Expenses
--
Margin
--
📈 YTD Expenses Breakdown — QuickBooks
📈 2025 Full Year — QuickBooks Actuals
Net Income
—
requires 2025 QB P&L query
Revenue
—
requires 2025 QB P&L query
Expenses
—
requires 2025 QB P&L query
Margin
—
requires 2025 QB P&L query
⚙
Loading AR Aging from QuickBooks...
⚠ Could not load AR data from QuickBooks
💰 AR Aging Summary ● Live
🔄
Year-over-Year — Coming Soon
Waiting on historical data. Will compare 2025 vs 2026 by month, route, and service tier.
💲 2026 Pricing Model
★ Annual Prepaid: Pay 12, get 13th FREE · New orders only · Existing grandfathered
⚠ EDITING MODE — Prices are editable. Click the lock to save changes.
Full Pricing Matrix — Per-Cleaning
🏷 NFC Gradual Price Increase Campaign
QUEUE ONLY · NO EMAILS SENT
What this is: 103 customers acquired from "Neighborhood Fresh Cans" (NFC) over a year ago are on grandfathered discounted pricing. Retention guarantee has expired. This page tracks the gradual lift-to-standard, queues notice records, and converts the "- NFC" suffix to an nfc_origin tag once a customer reaches standard pricing.
Total NFC
—
on grandfathered pricing
Annual Uplift Potential
—
if all raised to standard
Phase 1 (Small <10%)
—
$0–2 bumps
Phase 2 (Medium 10–20%)
—
$2–3 bumps
Phase 3 (Large >20%)
—
3 small steps each
Customer Audit — 0 customers
Name
Plan
Cans
Current $
Standard $
Gap $
Gap %
Phase
Visits/yr
Annual Uplift
Status
Actions
Loading audit…
🛠 Service Operations
Active Customers
—
from D1
Recurring Plans
—
from D1
Quarterly
—
from D1
With Schedule
—
from D1
📅 Stops by Day
📊 Cans Not Out — Trend
No Cans-Not-Out data yet. Tracking begins when the crew app goes live.
★ Google Reviews Summary
No review data yet. Tracking begins when review monitoring is enabled.
🔄 Skip Trends
No skip/cancellation data yet. Tracked from the cancellations table.
⚡ Automation Control Panel
ALL OFF
💲 Payment Escalation Rules (Day 0-28 ladder)
Loading…
🎄 Holiday Schedule (notify 8 days before)
Loading…
Affected customers
📣 Marketing Hub & Campaigns
Emails Sent (30d)
—
requires Brevo analytics sync
Open Rate
—
requires Brevo analytics sync
Click Rate
—
requires Brevo analytics sync
Conversions
—
requires attribution worker
Attributed Revenue
—
requires attribution worker
🎯 Marketing at a Glance
Ohio Clean Cans is the flagship account on the PlusAutomation platform. Every
customer-facing touch point is wired through COG — welcome emails, payment
recovery, review asks, referral invites, holiday notices, and day-of service texts.
The positioning, pricing, and feature copy for the Positioning & Copy
tab comes directly from the live sites plusautomation.ai
and bincleanersautomation.com.
That is the canonical source — do not drift.
Campaign KPIs above require the Brevo analytics sync and attribution worker to be deployed.
Real numbers will populate automatically once those are running.
🔧 Marketing Build Roadmap — 4 Phases
Status: The 6 sub-tabs above are scaffolding. Real builders are not yet wired.
Most of the pieces exist as standalone tools / workers already — the work is surfacing + unifying them here.
Campaigns list — Active / Scheduled / Past with status + recipient count + open/click.
Attribution — new cols on customers: last_campaign_id, campaign_source, signup_campaign_id.
Phase B — Growth Engine
Neighborhood Takeover manager — T-14 → T+14 coordinated sequence around every truck visit. Already LIVE as BCA private product at bincleanersautomation.com/neighborhood-takeover/.
Full spec with data-model + acceptance criteria: memory/project_marketing_buildout_spec.md.
When Howard says “start marketing Phase A” the session picks up exactly from this spec.
Campaign Engine
🚀 New Campaign
Select a segment to see estimated recipients.
📧 Active Campaigns
📅 Scheduled
📝 Past Campaigns
🎯 Preset Segments
Live counts from D1. Click “Use in Campaign” to pre-fill the campaign builder with that segment.
🔧 Custom Segment Builder
💾 Saved Custom Segments
📄 Template Library
Every customer-facing template, grouped by channel. Locked templates cannot be edited without Howard's approval. See the Templates tab for full edit access.
🌐 Public Sites & Landing Pages
🏠
Neighborhood Takeover has its own tab
The full NT system — EDDM postcards, OmniReach, lapsed outreach, approvals — now lives at the top-level Nbhd TO tile in the left nav.
What lives here: Customers who cancelled or went dormant 6+ months ago — eligible for “We miss you” reactivation outreach.
Eligible Pool
—
6+ mo dormant
Last Campaign
—
sent date
Reactivated MTD
—
this month
Opt-Out Rate
—
across all campaigns
Customer
Last Plan
Last Service
Months Gone
Lifetime $
Contacted
Actions
Click Refresh to load winback pool…
📝 Template Library
Click any template to edit. Saves persist live to D1 and stay in sync with the CRM. Locked items show a yellow banner before save.
📧 Email (0)
💬 SMS (0)
📡 Broadcast (0)
📄 Invoice (0)
📋 Notes (0)
📝 Job Notes (0)
📊 Reports & B2B Data Delivery
📚 Report Library
👤 Recipients
📅 Scheduled Sends
📋 Delivery Log
📊 Live Data
All available reports — pre-built templates plus any you've saved. Click Run Now to generate immediately, or use the Schedules tab to deliver on a recurring basis.
Loading reports…
B2B contacts who receive scheduled report deliveries. Apartment managers, property managers, vendor partners, etc.
Loading recipients…
Active recurring deliveries. Each schedule pairs a report with a recipient and a cadence. Pending Approval = first send needs Howard's manual approval before going live.
Loading schedules…
Audit trail of every report ever sent. Filter by status, retry failed deliveries, download archived files.
1,842 customers imported. Invoice migration: 14,750 of 39,000
37.8%
10
Go Live○ Not Started
Review everything, flip the switch.
Complete all steps above, then click GO LIVE to activate COG.
🎉 Discounts
What lives here: All three discount types in one place — Marketing Coupons (general promos), Referral Agents (customer-tied auto-tracking), Gift Certificates (dollar-value, single-use). All write a WooCommerce coupon under the hood so checkout, reporting, and redemption all just work.
Active Coupons
—
live on WooCommerce
Referral Agents
—
currently active
Gift Certificates
—
unredeemed
Redemptions MTD
—
month to date
Code
Type
Discount
Linked To
Used
Expires
Status
Actions
Click Refresh to load discounts…
+ New Discount
Auto-creates: WC coupon + referral_agents D1 row + referral link ohiocleancans.com/ref/<code>. Agent gets notified via Brevo on successful create.
🏠 Neighborhood Takeover
Active Takeovers
—
routes currently armed
Channels Fired (7d)
—
emails + SMS + posts
Signups Attributed (30d)
—
from NT campaigns
Avg CPA
—
per attributed signup
📡 Upcoming Route Dates — EDDM Order Window
Routes scheduled 14–25 days out. EDDM must be ordered by T‑17 (~3 days processing + 14 days delivery). Click Arm This to pre-fill the form.
Loading…
📅 Active Takeovers
Loading…
📋 Past Takeovers
Loading…
🚀 Arm New Neighborhood Takeover
Pick the truck visit date first — COG loads which routes run that day. Choose the route, ZIP, neighborhood name, and how wide to cast the net. Every channel holds for your approval.
🕑 T‑17 → T+14 Full Sequence
Day
Fire Date
Channel
Action
Est. Cost
Status
🔒 Each channel is held in “Pending Approval” until you approve it.
📞 EDDM Track 1 Calculator
Track 1 = new prospect neighborhoods adjacent to dense OCC clusters with similar home values. Never EDDM a ZIP you already serve.
✉ Lob.com Postcard Orders
LOB Environment:—Set LOB_ENV=live on nt-engine to mail real postcards.
⏳ Pending Touches — Approved Activations
Loading…
📝 Order History
Loading…
How this works: When an NT activation is approved, its T‑14 and T‑3 touches become eligible on their mail dates. Clicking Run Order Batch fires postcard_order on the nt-engine worker, which calls the Lob.com API, writes a row to postcard_orders, and marks the touch as ordered. OCC is tenant #1 on nt-engine.
📡 OmniReach — Multi-Channel Campaign Builder
Build a coordinated multi-channel campaign around a truck visit. Toggle channels on/off, pick send mode, and see the live cost estimate before launching.
Channels
Send Mode
📈 Est. Campaign Cost
Total Est.—
EDDM + handwritten use household count from armed ZIP.
📍 Proximity Reactivation — Tracks 2 & 3
Track 2 = lapsed/cancelled (free reactivation). Track 3 = active Q/BM/Seasonal between cleanings (add-on pitch). Zero incremental drive cost.
Loading…
Loading…
📧 “We’ll Be On Your Street” Email
Send a personalized reactivation email to inactive customers in the target ZIP. 90-day throttle prevents duplicate sends.
Enter a ZIP and click Find to preview recipients.
✅ Channel Approval Center
Every armed channel waits here for your one-click approval. Nothing fires automatically. Approve to send, Skip to drop.
Loading…
📅 Daily Route Marketing Rhythm — Next 14 Days
What fires each day based on armed takeovers. Every truck visit ripples T‑14 through T+2 across all channels.
Loading…
🔧 Neighborhood Takeover Builders — First Activation Suite
Click a tile to open the real builder in-panel. Drag images, edit copy, save designs — these are the files from Tools\_NT_PA_Sandbox\neighborhood-takeover-first-activation.
💡 Tip: Builders launch in a centered popup window. If a click does nothing, allow popups for this site in your browser.
🔒 Confirm Takeover Arm
Nothing sends automatically. Each channel sits in “Pending Approval” until you click Send.
🧰 Tools & Config
HAULER MANAGER
WASTE HAULERS
Name
Coverage ZIPs
Contact Phone
Status
Actions
Loading…
USER PIN MANAGEMENT
USER & PIN MANAGEMENT
Username
Role
Last Login
Status
Actions
Loading…
TAG MANAGER
TAG MANAGER
Tag
Category
Customers
Created
Actions
Loading…
SERVICE TYPE MANAGER
SERVICE TYPES & PLAN PRICING
Code
Label
Weeks
Can Pricing (1–8 cans)
Status
Actions
Loading…
Edit Service Type
CUSTOM FIELDS
CUSTOM FIELDS
Add arbitrary fields (garage code, dog name, gate combo, etc.) shown on customer, job, or invoice records.
Field Name
Display Label
Type
Applies To
Order
Status
Actions
Loading…
VENDOR LIST
VENDORS & SUPPLIERS
Name
Category
Contact
Phone
Email
Notes
Actions
Loading…
NOTIFICATION PREFERENCES
NOTIFICATION PREFERENCES
Event
Email
SMS
In-App
Select a user to load preferences…
CREW PERFORMANCE
…
into
any CC page that exposes window.OCC_CC_BASE / window.OCC_CC_TOKEN.
Data: Live D1 via CC worker endpoints:
?action=crew_perf_roster
?action=crew_perf_metrics&crew_user_id=&range=last_30|ytd
═══════════════════════════════════════════════════════════════════════
-->
Crew Performance
#
Crew
Stops (30d)
Stops YTD
Avg time / stop
Upsell YES rate
Cancellations handled
Complaints (refunds)
Loading roster…
Stops per day — last 14 days (all crew)
Loading trend…
—today
Metrics marked — are not yet computable.
Avg time/stop requires per-job start/end timestamps (not currently captured).
Upsell YES rate reads from cog_events where event_type='crew_upsell'.
Complaints proxy = refund count on paid invoices tagged to that crew's stops.
SQUARE REFUND
Square RefundPIN locked
Re-enter your PIN to unlock refund tools. Token expires in 15 minutes.
Square payments
Confirm refund
SQUARE RECONCILIATION
Square Reconciliation
CREDIT ADJUSTMENT
Credit / Adjustment
— Current balance:
New adjustment
Last 10 adjustments
ROUTE SETUP
ROUTES & ZIP COVERAGE
4 routes, garbage-day driven, ZIP → route. No truck column — Jason assigns game day.
Route
Label
Garbage Day
Recycling
ZIPs
Stops
Actions
Loading…
Edit Route
CREW SCHEDULER
CREW SCHEDULER
Weekly crew-to-route assignments. Mon-Fri, R1-R4. Stop counts pulled from jobs for that day.
…
Loading…
PREPAID RENEWAL MANAGER
PREPAID RENEWAL MANAGER
View, notify, and renew prepaid customers. Sends route through occ-api /proxy/brevo-send using the locked renewal template.
—
Total Prepaid
—
URGENT (≤1 left)
—
WATCH (≤4 left)
—
Due This Month
—
Due This Quarter
Urgency:
Customer
Plan
Left
Last Clean
Next Clean
Renewal
Status
Actions
Loading…
Mark Renewed
Confirms the new prepaid order was booked and paid. This updates the renewal tracker — it does NOT charge the card.
DATA IMPORT EXPORT
DATA IMPORT / EXPORT
Single-table export (CSV or JSON) and import with preview. For full-database backup, use the Bulk Import/Export widget.
Export
Import
BULK IMPORT EXPORT
BULK IMPORT / EXPORT
Export Entire Database
Streams every table as a single JSON archive. A history row is written to db_backups.
Restore From Backup
⚠ Restore is destructive. It replaces current table contents for every table in the archive. Dry-run preview is run automatically before any commit.
Backup History
When
Filename
Format
Tables
Rows
Size
By
Loading…
QUERY BUILDER
QUERY BUILDER
Saved Queries
Loading…
SELECT only. Max 10,000 rows. 30s timeout.
DATABASE SCHEMA
DATABASE SCHEMA
Tables
Loading…
← Pick a table on the left to see its schema.
INBOX SORTER
INBOX SORTER
Live view of occ-inbox-sorter categorizations from the last 7 days. Override a message to retrain future sorts.
—
Total 7d
—
Customer
—
Expense
—
Personal
—
Purchase
—
Delete/Spam
Recent (last 50)
Received
From
Subject
Auto
Override
Loading…
Training Rules (inbox_overrides)
Sender- or domain-level overrides. Takes precedence over the worker's default rules on future emails.
Type
Match
→ Category
By
Action
Loading…
GIFT CERTIFICATE ENGINE
GIFT CERTIFICATE ENGINE
⚠ Email policy: The GC code email is sent to the real purchaser (and optional recipient). Kill-switch + TEST_MODE in the worker will redirect to howard@ohiocleancans.com if sends are disabled. Confirm before clicking Create.
+ Create Gift Certificate
Redeem
All Certificates
Code
Amount
Balance
Issued
Expires
Status
Purchaser
Actions
Loading…
Edit Template
Template Name
Category
Subject (email/broadcast)
Trigger / Description
Template Body
Locked template. Editing will override Howard's locked content. Save will use force_unlock=true.
📊 Analytics & Widgets
9 widgets wired to D1. Each has its own card. Click Recompute where applicable to refresh data.
📈 Marketing ROI (Last 12 Months)
Loading…
📑 Event Log / Audit Trail
Loading…
📍 Service Area Manager
Loading…
🔗 Integrations (18)
Loading…
📅 Scheduled Reports
Loading…
⚠ Churn Risk — Needs Attention
Loading…
💰 Top 10 Lifetime Value
Loading…
👨 Crew Efficiency (This Week)
Loading…
B6 Route Optimizer: accessible via "Optimize Route" button on the CRM Schedule view. Not rendered here.
🗺️ Geocode Failure Triage —
Click "Run Sample" to bucket 20 random failed geocodes.
📉 Churn Signal Audit — sample 20 active customers
Click "Run Audit" to see which of the 5 signals actually fire on real data.
🔍 Account # Collision Audit 1,945 account_nums with multiple distinct customers — phantom rows clobber coords on the map