Vertical SaaSLive
Deedstead
Leasing, maintenance, accounting and bank reconciliation for owners whose properties sit in separate LLCs — with the rules that protect financial history enforced by the database, not by application code.

The problem
Small multi-LLC portfolios fall between tools: too complex for spreadsheets, too small for enterprise property software. Their books also have to stand up per entity, which means history must not be editable after the fact — by a bug, a script or a well-meaning admin.
What we built
- Leasing, tenants, maintenance and vendor bills per property and per LLC
- Double-entry ledger with journal entries, reversals and period close
- Bank statement import and reconciliation bound to its evidence
- Append-only audit trail and a live pilot portfolio managed from the same screens
Engineering notes
Rules live where the data lives
Updating or deleting a posted journal entry, adding a line to it later, or committing an entry whose debits do not equal its credits is refused by PostgreSQL itself. The guarantee holds whether the write comes from the interface, a script or a console.
Corrections the way an accountant makes them
Mistakes are fixed with a reversing entry that leaves both records visible. Audit rows reject updates and deletes at the trigger level, underneath the application.
Closing the books actually closes them
After a period closes, writes dated on or before it are rejected. Reopening is possible, requires a reason and leaves an append-only record of who did it. A completed reconciliation locks the statement and every ledger line it was proved against.
By the numbers
- 116
- database guards
- 86
- distinct refusals
- 6
- bank statement formats
- 165
- tests passing
As published on deedstead.com