eTracer — operator portal
Internal only. Built to answer four questions in order: is anything broken, what happened to this customer, why did the engine decide that, and what is the state of the business. Deliberately not styled like the customer app — horizontal nav instead of a sidebar, a darker bar, and an ADMIN pill, so the two are never confused in a tab strip.
A1 · Health
The landing screen. Answers “is anything wrong?” in under two seconds.
With problems — the attention strip leads
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
Needs attention4 items
Maple Ridge Interiors — QuickBooks connection needs re-authentication (failing 6h) Open tenant
1 parse failure in the last 24h — CIBC notification, amount field not extracted Open parser
Northside Flooring — delivery dropped to a disabled inbox (mike@) Open tenant
daily-summary cron last ran 27h ago — expected every 24h Open system
This strip renders only when something is wrong — a healthy system shows nothing here at all
Recurring revenue Our money — not customers’ Stripe · synced 2m ago Refresh Open in Stripe ↗
Committed MRR
$1,890.00
24 active subscriptions
Trialing (not yet revenue)
$575.00
9 trials · converts Aug 6–22
At risk (past due)
$190.00
3 tenants · billed, not collected
ARR (committed × 12)
$22,680.00
no growth rate — 6 months of data
Base plans $1,715.00 · 11 Solo · 9 Crew · 4 Fleet Extra inboxes $175.00 · 7 × $25 Computed from subscriptions.tier — reconcile against Stripe before you quote it
Tenants
38
active · excludes deleted
Matched value
$412,880.50
customer volume · auto + manual
Queue depth
17
awaiting a human · all tenants
Reversals
3
last 30 days
Payment composition
Auto-matched 64%Manual 21%Awaiting 9%Unmatched 6%
Subscription composition
Trialing 9Active 24Past due 3Canceled 2
Connection composition
Healthy 31Needs reauth 5Disconnected 2
Proportions, not trends — a 13-month line chart on 6 data points would read “dead product”. Space reserved for when volume is real. No headline match-rate: a confident wrong number is worse than none. Revenue is split three ways for the same reason — one blended MRR figure would hide that trials aren’t paying yet and past-due wasn’t collected.
Healthy — the strip is absent entirely, not an empty state
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
Recurring revenue Our money — not customers’ Stripe · synced 2m ago Refresh Open in Stripe ↗
Committed MRR
$1,890.00
24 active subscriptions
Trialing (not yet revenue)
$575.00
9 trials · converts Aug 6–22
At risk (past due)
$190.00
3 tenants · billed, not collected
ARR (committed × 12)
$22,680.00
no growth rate — 6 months of data
Base plans $1,715.00 · 11 Solo · 9 Crew · 4 Fleet Extra inboxes $175.00 · 7 × $25 Computed from subscriptions.tier — reconcile against Stripe before you quote it
Tenants
38
active · excludes deleted
Matched value
$412,880.50
customer volume · auto + manual
Queue depth
9
awaiting a human · all tenants
Reversals
0
last 30 days
Nothing above the stats = nothing is wrong. The operator learns to scan for the strip’s presence, so it must never render an empty “no issues” state.
A2 · Tenants
A scanning surface. Dense, sortable, with status colour used sparingly so exceptions pop.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
Search business name or owner email…
AllActiveTrialingPast dueSuspendedDeleted
Business / ownerPlan · subscriptions.tierSubscriptionCRM connectionInboxesCreated
Northside Flooringmatt@northsideflooring.ca Crew Active QuickBooks · healthy 3 Mar 4, 2026
Maple Ridge Interiorsdana@mapleridge.ca Solo Active QuickBooks · reauth 1 Apr 18, 2026
Cedar & Co. Bookkeepingops@cedarco.ca Fleet Active Xero · healthy 12 Jan 22, 2026
Bright Path Plumbingsam@brightpath.ca Solo Trialing FreshBooks · healthy 1 Jul 19, 2026
Harbour Electricjo@harbourelectric.ca Crew Past due Zoho · healthy 2 Feb 9, 2026
Old Mill Tileinfo@oldmilltile.ca Solo Deleted — disconnected 0 Nov 2, 2025
Plan column reads subscriptions.tier (Stripe mirror) — never tenants.plan, which is retired. Soft-deleted rows stay visible and struck through, never hidden.
A3 · Tenant detail
Everything about one customer on one screen, because support arrives as “customer X says Y”.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
Tenants / Northside Flooring Active
Identity
OwnerMatt Kelly · Owner
Emailmatt@northsideflooring.ca
CreatedMar 4, 2026
Business typeCorporation
Billingfrom Stripe · 2m ago
TierCrew — $75 / mo
StatusActive
Period endsAug 22, 2026
Extra inboxes0
Cancellation
Contributes to MRR$75.00 / mo
Read-only — Stripe owns plan changes; a writable field here re-diverges on the next webhook
Connections
QuickBooks Online
Northside Flooring Ltd · synced 4m ago
Healthy
jobs@northsideflooring.ca
u_7f3k9q2w@in.etracer.ca · filter active
Forwarding
accounts@northsideflooring.ca
u_7f3k9q2w@in.etracer.ca · filter active
Forwarding
mike@northsideflooring.ca
disabled Jul 20 · deliveries dropping
Disabled
Activity
Matched (30d)128 · $48,920.00
Unmatched now2
Receipts pending2
Last paymentJul 23 · 3:12 PM
Last sign-inJul 23 · 8:04 AM
A3b · Impersonation
The most dangerous thing in the panel — designed to be impossible to forget you are doing it.
Typed confirmation · full access only
Impersonate with full access?
You will be able to change this customer’s live data.
• Every mutation is written to the audit log and cannot be bypassed • The session is cookie-bound and expires on exit • Read-only impersonation covers almost every support case — use that first
Type the business name to confirm
Northside Flooring
Active session — banner is fixed, unmissable, and exit is always one click
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
You are impersonating Northside Flooring — full access. Every action is logged. 14:22 elapsed
Customer app, seen as the customer
The banner above is fixed and unmissable for the entire session — it is not a subtle chip. Exiting is always one obvious click, never buried in a menu.
A4 · Reversals
Every un-booking and the story of why.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
TenantPayerAmountInvoiceTypeWhenInitiated by
Northside Flooring Cedar Electric $2,148.00 INV-1043 Clean undo Jul 23 · 4:02 PM customer
Cedar & Co. R. Halliday $1,300.00 INV-8821 Correction Jul 22 · 11:14 AM customer
Harbour Electric M. Osei $740.25 INV-3310 Credit memo · refused Jul 21 · 9:38 AM system
i
“Refused” is not an error state
Harbour Electric’s accounting period is locked, so the reversal could not be posted. The system declined honestly and told the customer why, instead of writing something wrong. Style it informational — grey, not red. A red row here would train the operator to panic at correct behaviour.
A5 · Parser diagnostics
Interac email is the raw input to everything — and the one screen where a careless design choice creates a privacy problem.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
!
Redacted by default
This screen touches real customer financial email. Lists show structure and outcome only — never payer names, amounts or reference numbers. Raw content sits behind an explicit Show raw action, is never bulk-exportable, and every reveal is audit-logged.
Sending bankResultDetailWhen
CIBC Failure amount field not extracted · new template? 27m ago Show raw
Tangerine Partial payer name empty · amount + ref OK 3h ago Show raw
RBC Success all fields extracted 4h ago Show raw
TD Success all fields extracted 5h ago Show raw
Scotiabank Success all fields extracted 6h ago Show raw
Per-bank success ratelast 30 days
RBC
100% n=212
TD
100% n=188
Scotiabank
99% n=96
BMO
98% n=74
CIBC
94% n=63
Tangerine
91% n=22
Credit unions grouped once each has n>20 — small samples are labelled, never rounded into confidence
A6 · Matching
The explain-yourself screen, plus a simulator that can never be mistaken for live.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
Why this matched Northside Flooring · Jul 23 · $2,147.50 → INV-2201 Auto-booked
The amount matched an open invoice to the cent, the payer’s last name matched the customer on that invoice, and eTracer had already learned this payer from a confirmed match in June. No other open invoice was within $50. Confidence landed at 0.97 — above the 0.95 auto threshold — so it booked without asking.
Amount exact — $2,147.50 = INV-2201 to the cent
+0.40
Learned payer — Paula Sutton → Ray Sherman, confirmed Jun 11
+0.30
Name match — surname “Sutton” on the invoice contact
+0.15
Unique amount candidate — no other open invoice within $50
+0.12
Message field hit — memo “kitchen reno — final” had no invoice #
+0.08
Timing proximity — invoice sent 3 days ago — outside the 48h decay
+0.05
Final score 0.97 auto ≥ 0.95 · confirm 0.75–0.94 · manual < 0.75
Reads as a narrative first, floats second — this is what you paste to a customer disputing a booking
◆ Simulation — nothing here changes live behaviour Replaying 1,284 historical matches
Amount exact
0.40
Learned payer
0.30
Name match
0.15
Unique candidate
0.12
Would auto-book
1,096 +18
Would need confirm
142 −12
Would go manual
46 −6
Saving stores a proposal only — promoting it to live is a separate, deliberate step on System
A7 · System
Small screen, highest stakes in the product.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
!
These are circuit breakers, not preferences
Each switch affects every customer at once. Turning one off asks for confirmation; turning it back on does not — recovery should never be slower than the failure.
auto_match_enabled Live
Platform-wide kill switch for automatic matching. Payments keep arriving and queue normally — nothing books itself until this is back on.
Last changed May 2, 2026 · 09:14 by operator
cron_enabled Live
Scheduled jobs: daily summaries, trial reminders, connection health sweeps, receipt retries.
Last changed Apr 11, 2026 · 17:40 by operator
maintenance_banner Stopped
Shows a message at the top of every customer’s app. Currently: “Scheduled maintenance Sunday 2–4am ET.”
Last changed Jul 18, 2026 · 22:03 by operator
A8 · Audit log
Every administrative action, permanently.
etracer Admin operator MK
HealthTenantsReversalsParserMatchingSystemAudit
All actionsImpersonationSuspend / deleteSystem switchesWeights Jul 1 – Jul 23, 2026
TimestampActorActionTenantDetail
2026-07-23 16:40 operator impersonation.mutate Northside Flooring undid match INV-1043 while impersonating
2026-07-23 16:22 operator impersonation.start Northside Flooring full access · typed confirmation
2026-07-22 10:05 operator tenant.suspend Harbour Electric past due 14 days
2026-07-18 22:03 operator system.maintenance_banner enabled · “Scheduled maintenance Sunday 2–4am ET”
2026-07-02 08:31 operator tenant.purge Old Mill Tile purged scheduled purge completed · 0 records retained
Read-only, permanently
No edit, no delete, no exceptions. An audit log you can curate is not an audit log. There is no bulk export and no row menu — deliberately.
Rows outlive their tenant
The purge row above holds no customer data and its tenant link is dead — struck through, greyed, unclickable. It proves the purge happened, which is the whole point.