Case study
Rent collection that runs without the owner checking.
How a 42-unit property operation moved tenant tracking out of the owner's head and into a system.
In production today
Mission House Realty · 42 units · Indianapolis, IN · Live since April 2026
Five-page summary of the build, with architecture and results. Print-ready, share-ready.
The problem
Status lived nowhere.
The owner of Mission House Realty was running a 42-unit operation on a property management software setup, several spreadsheets, and a stack of email rules. Smart, organized, conscientious — the kind of operator who responds to tenant texts on Saturday because that's just who he is.
He also had, until our first build, no place where the state of the operation lived outside his own head. He knew which tenants paid on time, which were running late, which work orders had been confirmed, which renewals were coming up — because he was holding it in working memory.
On Monday morning he would sit down and reconstruct that picture from the artifacts. Two payment channels (Zelle email notifications, GoHighLevel + Stripe webhooks). A partially-updated spreadsheet. Three or four browser tabs. His phone, with the most recent tenant texts. He could rebuild the picture. It just cost him real focus to do it, every week, before he could start the work that was actually his job.
What we built
A single source of truth, then everything else.
The first build wasn't the dashboard. The first build was the single source of truth the dashboard would draw from — a tenant tracker with a row for every unit and columns for the things the owner actually wanted to know: rent status, last payment, last contact, renewal date, current notes.
Two payment channels feed this tracker automatically. Zelle email notifications get parsed; GoHighLevel + Stripe webhooks fire on checkout events; both routes update the same row. The owner does not have to remember to update anything. The tracker is updated by the events themselves.
On top of that tracker: a 7-stage reminder engine that runs daily at 8 AM, plus a Monday morning digest that lands in the owner's inbox before he sits down to work.
How the system flows
Zelle email notifications
Inbound · payment channel 1
GoHighLevel + Stripe webhooks
Inbound · payment channel 2
Tenant Tracker
Single Google Sheet · 42 units · source of truth
7-stage Reminder Engine
Daily 8 AM · stages 1–5 → tenant
Day 6 → Owner alert
Human follow-up needed
Monday Digest
Owner email · 8 AM
The result
What the system handles now.
Stages 1–5 of rent follow-up run on a schedule.
The reminder engine sends each stage automatically. Escalation to the operator happens only at stage 6, when a tenant has gone five reminders without responding — the moment a human conversation is the right next move.
Tenant status lives in the tracker, not in memory.
The tracker is the system of record. Both payment channels update it on their own. Status questions get answered from a single place rather than through the operator's recall.
The Monday operational picture is generated, not reconstructed.
Every Monday at 8 AM, the digest lands in the inbox before the workday starts. Status of every unit, anything overdue, anything coming up that week — produced by the system rather than rebuilt by hand each week.
"We built the Monday-morning dashboard before anything else — because tenant status had been living in the owner's head, not in any tool. The dashboard moved it out of his head and into a system."
That's the difference between automation that gets built and automation that gets used. 400+ hours sitting next to a real operator and seeing what actually matters.
The pattern transfers
The architecture is independent of the platform underneath.
Mission House runs on GoHighLevel and Sheets. But the architecture — payment channels feed a single tracker, tracker drives a reminder engine, owner gets the Monday digest, day-six handoff — is independent of the platform underneath. The same shape applies on top of Buildium, AppFolio, Rentec, DoorLoop, TenantCloud, or whatever else you're running.
The Operations Audit is where we map this pattern (and the four others on our partnership menu) to your specific stack.
Ready?
Stop being the one who chases every text.
The Operations Audit is the lowest-risk way to see how we work. $1,500. Four business days. Written deliverables you can act on — with us or without us.