Sync Health

Rent Manager mirror status — the foundation every workflow runs on
Automations live
Entities mirrored
8 / 8
Records in mirror
17,441
+214 last sync
API budget used
18 / 60
requests this hour
Invoice scans cached
11,240
76% of history

Recent sync runs

Nightly 6:00 AM + on-demand
Delta sync — 214 records updated across 8 entities
Today · 6:02 AM · 14 requests
OK
Document cache — 38 new invoice scans fetched
Today · 6:02 AM
OK
Bills page 12 — rate window pause, auto-resumed in 41s
Yesterday · 6:00 AM
Auto-retry

Mirror vs Rent Manager

Record counts reconciled after every run
Properties
38 / 38
Units
412 / 412
Leases
361 / 361
Bills
14,820 / 14,820
Work orders
1,203 / 1,203

Nightly cycle

Delta sync — changed records only
Properties → units → tenants → leases → ledgers → vendors → bills → work orders
✓ Done
Invoice scan caching
New bill attachments fetched once, stored, deduplicated
✓ Done
Reconciliation check
Mirror counts vs Rent Manager totals, per entity
✓ Done
Morning summary
One digest — what changed, what needs a look
✓ Done
Mirror-first by design: workflows and reports read the local mirror, never the live Rent Manager API. The API is touched only for nightly sync reads and low-volume work-order writes — so nothing here competes with the team's day-to-day Rent Manager use.
Sync run — today 6:02 AM

Delta sync run

Completed
Started
Today, 6:02 AM
Duration
22 min
Records updated
214 across 8 entities
API requests used
14
Rate pauses
0
Audit entry
AE-2214
Nightly delta pull: only records changed in Rent Manager since the previous cursor. Every upsert is idempotent — replaying a run can never duplicate data.

Entities, in dependency order

Properties · Units · Tenants
11 records updated
✓ Done
Leases · Ledgers · Vendors
27 records updated
✓ Done
Bills
168 records updated
✓ Done
Work orders
8 records updated
✓ Done
A field changed in Rent Manager appears in the mirror after the next cycle — and the mirror is replayable from any cursor if anything ever needs to be rebuilt.
Document cache — today 6:02 AM

Invoice scan cache run

Completed
New scans fetched
38
Skipped (hash unchanged)
3
Cache coverage
11,240 of 14,820 bills (76%)
Historical backfill
Paced overnight, most-likely audit years first
Audit entry
AE-2215
Each bill's invoice scan is fetched from Rent Manager exactly once and stored in the platform's document store — this cache is what makes audit packages assemble in seconds.

Backfill progress by year

Prioritized by audit likelihood
2025
100%
2024
100%
2023
71%
2022 and older
38%
Ongoing caching is light — a handful of new bills per property per month. The historical backfill is paced overnight under the API rate budget; if an audit request hits an un-cached year, those scans are fetched once on demand and every later request is instant.
Sync run — yesterday 6:00 AM

Delta sync run

Completed with auto-retry
Started
Yesterday, 6:00 AM
Records updated
189
Pause point
Bills, page 12
Pause duration
41s
Outcome
Resumed and completed
Audit entry
AE-2198
The sync engine reads the API's remaining-request headroom on every call and throttles itself before the limit is ever hit hard.
Failures that can't self-recover park in a dead-letter queue and surface here — nothing fails silently.
Accounts monitored
312
Flagged this month
2
▲ threshold 10%
Flagged overspend
$1,304
vs trailing average
Unmapped accounts
17
in cleanup queue

Watchlist — last 12 bills per account

Cadence-aware: quarterly accounts compare quarter-to-quarter
National Grid · #77134
BDA Courtlandville — Unit 4, retail · ledger 543 Electric
$1,840
+198%
National Grid · #12096
BDA Courtlandville — parking lot lights · ledger 543 Electric
$312
+22%
Ohio Edison · #5500142233
Sky Courtland — common area · quarterly cadence
$1,205
+3%

Review queue

This month
$
#77134 — +198% month-over-month, no seasonal explanation
BDA Courtlandville · Unit 4 · flag VF-0142
Flag
$
#12096 — +22%, consistent with winter lighting hours
BDA Courtlandville · parking lot · flag VF-0143
Flag
17 account numbers not yet mapped to a unit or property
From bill memo parsing · master sheet reconciliation
Cleanup
Detection is arithmetic — month-over-month and same-month-last-year percent change per account, with billing cadence learned from history so a quarterly bill never reads as a 3× spike. The AI writes only the advisory note under each flag; it never decides what gets flagged.
Flag VF-0142 — National Grid #77134

Variance flag VF-0142

Awaiting review
Account
National Grid #77134
Property
BDA Courtlandville — Unit 4, retail
Ledger
543 Electric
Previous bill
$618
Current bill
$1,840
Change
+198%
Same month last year
$645
Cadence
Monthly (12 consecutive bills)
Advisory note: no seasonal explanation — same month last year billed $645. Pattern is consistent with equipment left running, a meter issue, or a billing error. Worth a call to the provider or a site check.
96%
Advisory-note confidence — the variance math itself is exact

✓ Flag stands — needs a human decision

The numbers are certain; the cause isn't. Mark it reviewed once resolved, or escalate it with the full bill history attached.

Flags never resolve themselves — every one is closed by a person, and the close is logged.
Flag VF-0142 — reviewed

Flag lifecycle

Flag raised by variance engine
Nightly run, Jun 12
✓ Done
Advisory note generated
Seasonal check against last year
✓ Done
Reviewed and closed
Michelle · today
✓ Done
Watchlist follow-up armed
Next bill auto-checked
● Active
Every flag closure is written to the audit log with reviewer, timestamp, and resolution — the monthly report shows what was flagged, what it cost, and what it recovered.
Flag VF-0142 — escalated

Escalation record

Open — with PM
Escalated to
Property manager
Sent via
Email digest + dashboard alert
Attachments
12-month history, current bill scan
Escalated by
Michelle
Audit entry
AE-3025
Escalations carry everything needed to act — the history, the scan, and the advisory note — so the follow-up call to the provider takes minutes, not a file hunt.
Flag VF-0143 — National Grid #12096

Variance flag VF-0143

Awaiting review
Account
National Grid #12096
Property
BDA Courtlandville — parking lot lights
Ledger
543 Electric
Previous bill
$255
Current bill
$312
Change
+22%
Same month last year
$298
Cadence
Monthly
Advisory note: consistent with a seasonal swing — longer winter lighting hours; same month last year billed $298, within 5% of the current bill.
88%
Advisory-note confidence — the variance math itself is exact

✓ Likely seasonal — confirm and close

The threshold was crossed, so it flags — but last year's same-month bill suggests this is winter lighting, not waste.

Thresholds are configurable per client and per utility type — accounts with known seasonal swings can carry a higher bar.
Flag VF-0143 — reviewed

Closure record

Closed — seasonal
Reviewed by
Michelle
Resolution
Seasonal — winter lighting hours
Baseline updated
Yes — same-month comparison retained
Audit entry
AE-3031
Closures feed the monthly variance report: every flag, its resolution, and the running total of overspend caught.
Mapping cleanup queue

Unmapped accounts (first 6)

Parsed from bill memo · suggested match from address text
Account #ProviderMemo textSuggested matchBills held
88201National GridELEC 88201 COURTLND STE 9BDA Courtlandville — Suite 93
5500177810Ohio EdisonOE 5500177810 SKY CT COMMONSky Courtland — common area2
40412National GridGAS 40412— no address text —4
77202National GridELEC 77202 CRTLNDVILLEBDA Courtlandville — unassigned1
5500169004Ohio EdisonOE 5500169004 SKY CT UNIT 2Sky Courtland — Unit 22
61550City Water BoardWTR 61550— no address text —5

How mapping improves

Master sheet imported
The team's existing account → unit sheet (~95% complete)
✓ Done
Memo parsing fills gaps
Account numbers read from every synced bill
✓ Done
Cleanup queue resolves the rest
One-time human match per account
● Active
Unmapped accounts still have their bills synced and held — the moment a mapping lands, their full history joins the variance engine retroactively.
Requests this season
4
Avg package build
41s
from cached scans
Invoices bundled
1,872
Exceptions surfaced
9
missing scans, listed

Audit requests

February–April season
AR-2026-011 · Sky Courtland — CAM audit 2025, full category set
Insurance · Cleaning · Water · Electric · R&M · Taxes · Snow
Ready
AR-2026-012 · BDA Courtlandville — 2025, Electric + Water only
Requested today · building
Building
AR-2026-009 · Sky Courtland — 2024 retro request
Delivered May 28
Delivered
A typical package builds with zero live Rent Manager API calls — everything assembles from the mirror and the document cache, so audit season stops competing with day-to-day work.
AR-2026-011 — Sky Courtland CAM audit 2025

Audit request AR-2026-011

Package ready
Property
Sky Courtland
Year
2025
Categories
Insurance, Cleaning, Water, Electric, R&M, Taxes, Snow
Bills matched
214
Invoices found in cache
209
Exceptions
5 (listed, fetch queued)
Output
Bookmarked PDF (412 pp) + Excel index
Build time
38 seconds
Grouped category → vendor → date, files named to the auditors' convention, every invoice bookmarked.

✓ Package ready for delivery

The PDF and its Excel index reconcile — one index row per invoice, amounts tied to the ledger. Exceptions are on their own page, never silently dropped.

Delivery is by the team — the compiler assembles, a person sends.
AR-2026-011 — package contents

Excel index — sample rows

One row per invoice · amounts tie to the ledger
DateVendorCategoryLedgerAmountPDF page
2025-01-14Ohio EdisonElectric543$1,205.00212
2025-01-31CourtClean ServicesCleaning5210$860.0084
2025-02-07Summit Snow RemovalSnow5480$1,450.00391
2025-03-03City Water BoardWater5403$684.20158
2025-04-22Hartline InsuranceInsurance5110$3,912.0012
Row count equals invoice count, and every amount reconciles to its mirrored bill — the index is the auditors' checklist, generated rather than typed.
AR-2026-011 — exceptions

Missing scans

Bill dateVendorCategoryAmountStatus
2025-02-11Summit Snow RemovalSnow$1,450.00Fetch queued
2025-06-18CourtClean ServicesCleaning$860.00Fetch queued
2025-07-02City Water BoardWater$712.40Fetch queued
2025-09-30R&M — Apex PavingR&M$2,300.00No attachment in Rent Manager
2025-11-12Ohio EdisonElectric$1,188.75Fetch queued

Exception handling

Exception detected at build time
Bill matched, scan absent
✓ Done
One-off paced fetch queued
Under the API rate budget
● Active
Package rebuild on completion
Seconds, from cache
○ Pending
AR-2026-012 — BDA Courtlandville 2025

Audit request AR-2026-012

Building
Property
BDA Courtlandville
Year
2025
Categories
Electric, Water
Bills matched so far
96
Requested
Today, 9:14 AM
A narrower request — two categories, one property. Category sets are saved per client, so the standard CAM set and one-off narrow pulls are both one form away.

Build progress

Query mirror for matching bills
done
Collect cached scans
82%
Merge, bookmark, index
queued
Builds run from cache, so "Building" means seconds — this screen exists mostly so a request made mid-meeting is visibly moving.
AR-2026-009 — delivered

Audit request AR-2026-009

Delivered
Property
Sky Courtland
Year
2024
Invoices bundled
188
Exceptions
2
Delivered
May 28 — by the team
Audit entry
AE-4302
Retro-year request: 2024 scans were part of the historical backfill, so the package assembled from cache without touching the live API.
Every delivered package is retained with its index — a repeat or follow-up request re-issues instantly.
Emails today
23
Drafts awaiting approval
5
Work orders created
6
in Rent Manager
Escalated to a person
3

Inbox triage

maintenance mailbox · today
GAS SMELL near Unit 7 — Sky Courtland
Case TC-0191 · emergency keyword matched
Emergency8:02 AM
Leak under the back sink — Unit 4, BDA Courtlandville
Case TC-0187 · matched lease → tenant responsibility §7.2
Reply drafted9:31 AM
Pothole at the parking lot entrance — Sky Courtland
Case TC-0188 · landlord responsibility §11.3
Work order drafted10:15 AM
HVAC not cooling — Unit 12, Sky Courtland
Case TC-0190 · lease matrix not yet approved
Escalated11:40 AM

Today's classification mix

Tenant responsibility — reply drafted
9
Landlord — work order drafted
6
Escalated (emergency / low confidence)
3
Not maintenance — routed out
5

How a case moves

Classify & identify
Maintenance? Which tenant, which lease?
✓ Done
Categorize against the lease matrix
Issue type → tenant or landlord + clause
✓ Done
Draft the action
Reply with citation, or a work order
✓ Done
A person approves
Every send, every write — until trusted
● Active
Two hard rules: an emergency always escalates and never gets an auto-reply, and no reply sends without a citation to a clause a person has approved. Everything sent and every Rent Manager write lands in an append-only audit log.
Case TC-0187 — leak under the back sink

Case TC-0187

Reply drafted — awaiting approval
From
Courtland Deli (Unit 4, BDA Courtlandville)
Matched lease
NNN retail · active through 2027
Issue category
Plumbing — interior fixture
Responsibility
Tenant — lease §7.2
Matrix status
Approved (reviewed by Khyle)
Confidence
93%
Lease §7.2: "Tenant shall, at Tenant's sole expense, maintain and repair all interior plumbing fixtures and drain lines serving the Premises."

Email thread + drafted reply

Courtland DeliHi — there's a slow leak under the back prep sink, cabinet floor is getting soft. Can you send someone this week?
Drafted replyThanks for flagging it — under your lease (§7.2, interior plumbing fixtures), repairs to the prep-sink drain are the tenant's responsibility. So you can move fast, here are two local plumbers other tenants have used: Beacon Plumbing (315-xxx-xxxx) and R. Ellis & Sons (315-xxx-xxxx) — we don't vouch for either, but both service the plaza. If the leak reaches the wall or the unit below, tell us immediately and we'll treat it as urgent.
SystemVendor suggestions pulled from the maintained directory. Reply is held for approval — it cites approved clause §7.2.
Clause cited: §7.2Vendors from directoryHeld for approval
93%
Classification confidence

✓ Tenant responsibility — reply ready

The matrix for this lease was human-approved, the clause is quoted verbatim, and the vendors come from the directory. Approve to send, or escalate if this one feels contentious.

If the tenant pushes back on the responsibility call, the case auto-escalates to a person — the AI never argues the lease.
Case TC-0187 — reply sent

Case timeline

Email received & matched
9:31 AM
✓ Done
Classified via approved matrix
Plumbing — interior → tenant, §7.2
✓ Done
Reply drafted with vendors
Directory: Beacon Plumbing, R. Ellis & Sons
✓ Done
Approved & sent
Marie · 9:58 AM
✓ Done
Watching for pushback
7-day window
● Active
Every outbound email carries an idempotency key in the audit log — retries and re-approvals can never produce a duplicate send.
Case TC-0187 — escalated

Escalation record

Open — with operations
Escalated by
Marie
Reason
Reviewer judgment — tenant relationship
Attached
Thread, lease match, §7.2 citation, draft
Audit entry
AE-4105
Escalations preserve all the AI's work product — nothing is retyped, the person just decides.
Case TC-0188 — parking lot pothole

Case TC-0188

Work order drafted — awaiting approval
From
Lakeview Nails (Unit 9, Sky Courtland)
Issue category
Parking lot / common area
Responsibility
Landlord — lease §11.3 (common areas)
Matrix status
Approved (reviewed by Khyle)
Details gathered
Location, approximate size, photo attached
Confidence
95%
The AI ran one bounded follow-up to get location and a photo before drafting — no endless back-and-forth — and the follow-up question itself was one-click approved before it went out.

Detail-gathering exchange

Lakeview NailsThere's a pothole right at the parking lot entrance, customers keep hitting it.
AssistantThanks — that's on us to fix. Two quick things so the crew comes prepared: roughly how wide is it, and could you snap a photo?
Lakeview NailsMaybe 2 feet across, photo attached. It's right where you turn in from the road.
SystemDetails complete. Work order drafted for Rent Manager — held for approval.
Landlord responsibility §11.3Photo attachedWO draft ready
95%
Classification confidence

✓ Landlord responsibility — work order ready

Common-area repair under §11.3. The draft maps every gathered detail to Rent Manager's work-order fields; approving writes it via the API and confirms to the tenant.

Writes to Rent Manager are approval-gated until accuracy is proven, then graduate to automatic per category.
Case TC-0188 — work order created

WO-1042 — as written to Rent Manager

Open in Rent Manager
Property
Sky Courtland
Location
Parking lot — entrance from road
Category
Paving / common area
Description
Pothole ~2 ft across at lot entrance; tenant photo attached; customer traffic hazard
Reported by
Lakeview Nails (Unit 9)
Approved by
Marie · 10:42 AM
Idempotency key
TC-0188-wo1
Audit entry
AE-4110
Field mapping follows the team's own completed work orders, so what lands in Rent Manager looks exactly like what the team writes by hand.

After the write

Written to Rent Manager
Service Manager API · idempotency-keyed
✓ Done
Tenant confirmation sent
Cites the work order and next step
✓ Done
Status tracked from the mirror
Team updates in Rent Manager flow back
● Active
Case TC-0188 — escalated

Escalation record

Open — with property manager
Escalated by
Marie
Reason
Possible larger paving scope
Attached
Thread, photo, drafted work order
Audit entry
AE-4115
Case TC-0191 — emergency

Case TC-0191

With a person — 8:02 AM
From
Plaza Barber (Unit 7, Sky Courtland)
Trigger
Emergency keyword: "gas smell"
Escalated to
Khyle + maintenance line
Time to escalation
under 60 seconds from receipt
Auto-reply
Suppressed — by rule
Audit entry
AE-4090
The emergency keyword list (flood, gas, fire, no heat in winter, and the client's additions) is deterministic — it runs before any AI classification and cannot be overridden by the model.

Emergency path

Keyword matched on receipt
Deterministic — runs before any AI step
✓ Done
Person alerted on two channels
8:02 AM — email + phone
✓ Done
Case held for human handling
AI stands down
● Active
What counts as an emergency, and who gets the call, is set with the team at kickoff — and it's a hard rule, not a model judgment.
Case TC-0190 — escalated, no approved matrix

Case TC-0190

Escalated — matrix pending
From
Unit 12 tenant (Sky Courtland)
Issue category
HVAC
Why escalated
This lease's responsibility matrix isn't human-approved yet
Rule
No approved matrix → no auto-decision, ever
Audit entry
AE-4093
HVAC is exactly where NNN splits vary lease to lease — some put the rooftop unit on the tenant, some on the landlord with tenant maintenance contracts. The system refuses to guess.
41%
Would-be classification confidence

✓ Escalated — a person decides this one

The lease was extracted but its matrix awaits review. Approving the matrix unlocks automatic handling for every future email on this lease.

Low confidence is a feature: under the threshold, the AI's only move is handing the case to a person.
Lease matrix review — Sky Courtland Unit 12

Extracted responsibility matrix — awaiting approval

One-time review per lease · exact clause text attached to every row
CategoryResponsibleClauseConfidenceStatus
Plumbing — interiorTenant§7.297%Extracted
HVAC — rooftop unitLandlord (tenant service contract)§7.5(b)78%Needs review
Roof & structureLandlord§11.198%Extracted
Parking lot / common areasLandlord§11.398%Extracted
Storefront glassTenant§7.491%Extracted
Pest controlTenant (interior)§7.684%Needs review

Extract once, use forever

Lease ingested
Typed PDF or scan — read once
✓ Done
Human review — this screen
Approve or correct each row once
● Active
Matrix goes live for this lease
Auto-decisions unlocked
○ Pending
Low-confidence rows route to review first — the extraction never approves itself, and only approved matrices ever drive an automatic decision.
Interactive mockup · sample data