PropertyOS
A landlord does not have a rent problem. They have a reconciliation problem.
A management platform for rental property — leases, invoicing, M-Pesa collection, metering, maintenance and arrears, on one record instead of four spreadsheets.
- Property management platform
- Architecture · Backend · Frontend · Deployment
- NestJS · Prisma · PostgreSQL · Next.js 14 · Daraja
- Live demo — seeded with six months of history
The money is knowable. Nobody has assembled it.
A landlord with twenty units already has every fact they need: who holds which lease, what was invoiced, what was paid, which meter moved. The facts just live in four places that never agree — a tenancy file, an M-Pesa statement, a meter notebook, and a maintenance WhatsApp group.
So the questions that actually matter go unanswered. Who is in arrears and by how long. Which unit costs more to run than it earns. Whether this month is normal.
The work is not collecting the data. It is refusing to let it separate.
One chain from lease to reconciled cash.
Every step writes to the same record, so arrears are a property of a lease rather than the output of an afternoon with a spreadsheet.
Organisations, properties and units, with role-based access over them.
Who occupies what, on what terms, from when.
Raised against the lease on a schedule, not typed out monthly.
M-Pesa via Daraja, matched to the invoice it settles.
Readings that turn into billable consumption rather than a notebook.
Requests, costs and history attached to the unit that generated them.
Arrears ageing, expenses and per-unit performance as queries.
Five phases, and the last one was security.
NestJS and Prisma over PostgreSQL, with a Next.js 14 command centre on top. Built in five phases: portfolio and RBAC; metering, M-Pesa and expenses; maintenance, communication and the tenant portal; forecasting, risk scoring and anomaly detection; then security hardening.
The fourth phase is the one that separates this from a ledger. The system scores tenant risk, forecasts income and flags anomalies — a consumption spike that looks like a leak, an expense that breaks its own pattern. The seeded demo deliberately plants both so the detection has something to find.
Phase five encrypts payment credentials and MFA secrets at rest, adds TOTP with lockout and rate limiting, and exposes health checks. Storing a landlord’s M-Pesa credentials in plaintext would have been the kind of decision that is invisible until it is catastrophic.
Verification is three re-runnable smoke suites — 67, 43 and 43 checks — rather than a claim that it works.
A command centre, not a CRUD grid.
Four screens carry the product: a portfolio dashboard, a property view, a Tenant 360 that puts one tenant’s whole history on one page, and a payments reconciliation screen.
property.brianomariba.com — the live demo, seeded with a full portfolio and six months of history.
What the system changes.
Arrears stop being an investigation. The question "who owes what, and since when" becomes a query against one record rather than a reconciliation between four sources that disagree.
The forecasting and anomaly work changes the posture from reporting what happened to flagging what is about to. A leak shows up as a consumption anomaly rather than as a water bill three months later.
Live portfolio metrics — to be published once in production use