Why I Built Resida: Landlord Rules Change Faster Than Tools
I'm a software engineer who self-manages my rentals. Re-researching the law at every renewal, and finding no tool that helped, is why I built Resida.
Michael Dufel · Published
I'm a software engineer, a small landlord, and I manage my own rentals. No property manager, no assistant. When something needs doing, it's me.
Resida started as a list of things I was tired of doing by hand. This is that list.
The rules keep moving
The part of landlording that surprised me most wasn't the repairs or the tenants. It was how much the legal ground shifts underneath you, and how little warning you get.
Every lease renewal and every turnover, I found myself starting from zero:
- Late fees. What you can charge, when, and on what balance changes from state to state, and sometimes year to year.
- Pets and ESAs. What you can ask, what you can charge, and what you have to allow are different from the rules for ordinary pets, and the details have been moving.
- Required disclosures. Which ones apply depends on the state, and sometimes the city, and sometimes the age of the building.
- Rent increase notice periods. The number of days differs by jurisdiction, and it can depend on how large the increase is.
- Rent increase forms. In some places a letter isn't enough. Tacoma, for one, has a required form. Miss it and your notice may not count.
None of this is exotic. Each item is a small thing. But there are a lot of small things, they differ by location, and any of them can change between the last time you rented the unit and the next. So before every renewal or turnover I re-researched all of it: read the statute, check the city site, find the current form, compare it with last time's lease.
For someone with a day job and a few units, that's a real tax. It's also easy to get wrong without noticing, because the mistake only shows up later, when a notice is challenged or a fee is disputed.
The tools didn't help
I assumed software would take care of this. It mostly didn't.
The tools didn't inform. They gave me a place to store things, not a view on what applied. I still had to know what to ask before they were any use.
They didn't tell me what was due. A rent increase has a notice period. A renewal has a date. A deposit has a deadline. What I wanted was one place that said "this is coming up, and this is what it requires." What I got was a calendar I had to fill in myself.
They were bad at tracking state. Where is this unit right now? Has the notice gone out? Did the tenant sign? Is the deposit handled? I kept answering those from email threads and memory.
Lease generators stop halfway
The lease generators I tried got me part of the way and then stopped, which can be worse than not starting, because the output looks finished.
- City-level rules were missing. State-level clauses were there. City ordinances, which can add their own requirements, mostly weren't.
- Required disclosures were missing. The lease looked complete, but I'd still have to work out which disclosures applied and attach them myself.
So I'd end up doing the same research anyway, now with a document that suggested I didn't have to.
Tax time meant hunting for receipts
Expenses were the other recurring chore. Through the year, receipts and invoices land in a dozen places: contractor emails, store receipts, utility bills, a handyman's invoice. At tax time I had to round them all up, dig the rest out of my email, work out which property each one belonged to, and then assign a tax category to every line.
It's not hard work. It's just slow, and it all lands in the same few weeks. The tools I tried mostly wanted me to type each expense in by hand, which is the same chore with a nicer form.
Tenant messages lived in two places
Tenant communication had the same problem. Some conversations were in my email, buried in a busy inbox. Others were text messages on my phone. When I needed to know what I'd agreed to with a tenant three months ago, I'd search one, then the other, and sometimes neither had the full story.
Nothing about that is a disaster. But a landlord's record of what was said matters most exactly when something goes wrong, and that's the worst time to be scrolling through a phone.
There was no CRM for the front of the process
The other gap was before the lease even exists.
When a unit is vacant, the work is leads: someone messages about the listing, someone asks to see it, someone applies. I was juggling that across a listing site, text messages, my email, and a spreadsheet. Good prospects slipped through because I answered late, or because I couldn't remember who had applied and who had only asked a question.
I wanted what every sales team has and no small landlord seems to get: a pipeline. Who's interested, who's seen the unit, who applied, and who's waiting on me.
What I built
Resida is my attempt to close those gaps, for the size of landlord I am.
- Leases are built with a wizard that loads the clause and disclosure reminders for the unit's state and city, so I'm not rebuilding that list from scratch each time.
- Leasing tracks every lead, showing and application in one pipeline, from first message to signed lease.
- Expenses come in by forwarding a receipt or invoice to a Resida address. It reads the receipt, matches it to a property and unit, keeps the original, and assigns the IRS Schedule E category, so tax time is a report instead of a hunt.
- Tenant communication puts in-app chat and email in one inbox, organized by property and tenant, with the history searchable.
- The system keeps track of where things stand and what's coming up, so that doesn't live only in my head.
Then I added AI, carefully
Once everything was in one place, two jobs stood out as repetitive enough to hand off.
- Leasing inquiries. Most are the same few questions: is it available, what's the rent, are pets allowed, when can I see it? A leasing assistant answers from the listing and sends a showing link. Anything it can't answer comes to me, and I still decide who gets the unit.
- Repair requests. A repair coordinator triages the request, contacts a handyman from my list, schedules the visit, and keeps the tenant posted.
The obvious DIY route was to point a personal agent like OpenClaw at my inbox and let it run. I didn't. Those agents are powerful, but they're hard to secure. I should know, because I have spent 20 years developing security software. AI agents need guardrails, so that's what I built.