The spreadsheet that wouldn't die
Here's a conversation that happened this week:
Me: "So how do you track property keys?"
Agency manager: "Spreadsheet. Staff write their name when they take keys out."
Me: "Do they write when they return them?"
Manager: long pause "They're supposed to..."
This is the problem with physical asset tracking—it happens outside the software. Keys, meter readings, all the non-digital stuff gets tracked in notebooks, whiteboards, or (if you're lucky) spreadsheets that nobody keeps updated.
This week I built proper lifecycle tracking for all the physical aspects of property management. Keys, meters, photos, everything. Because if your software only tracks digital records, you're solving half the problem.
The key problem everyone has
Every letting agency has the same key management disaster:
Someone takes keys for a viewing. Forgets to return them. Another agent needs the same keys for maintenance. Spends 20 minutes asking "who has the Victoria Road keys?" Nobody knows. Eventually find them in someone's desk drawer.
Or worse: three people think they have the spare key. None of them actually have it. It's... somewhere.
Without accountability, keys disappear into desk drawers, coat pockets, car glove boxes. And when you need them urgently, good luck finding them.
This week I built proper key checkout: check keys out to yourself with expected return date, system tracks who has what, real-time updates show availability across all staff, automatic reminders when keys are overdue.
Simple concept. Massive improvement in practice. Because now when someone asks "who has the Victoria Road keys?" the answer is immediate and accurate.
The meter reading notebook
Utility meter readings are another operational pain point. Move-in inspections require recording meter readings. Move-out inspections require recording them again. These readings determine who pays utilities and prevent disputes about consumption.
So where do agencies track them? Paper forms. Notebook entries. Photos on personal phones. Occasionally a spreadsheet if someone's organized.
Then six months later a tenant disputes their utility bill and asks "what was the meter reading when I moved in?" Good luck finding that notebook page.
This week I added proper meter tracking: multiple meters per property (electricity, gas, water), readings with dates and optional photos, automatic consumption calculation between readings, complete history for every property.
Digital records with timestamps and photo evidence. If a dispute happens, you have proof. Not a lost notebook page.
The photo upload torture
Staff photograph properties. A lot. Inspections, condition reports, listing photos. Often from mobile phones at the property with patchy connection.
Previous implementation: upload one photo at a time. Each photo takes 10-15 seconds on mobile networks. Twelve photos? You're standing around for three minutes watching a progress bar.
This week I rebuilt photo uploads to work in parallel: upload five photos simultaneously, show individual progress bars for each, handle failures per-file (one failed upload doesn't block others), dynamically adjust concurrency based on connection quality.
Result: twelve photos upload in under a minute instead of three minutes. That's 75% reduction, which means agents spend less time waiting and more time working.
Is it glamorous? No. Does it save collective hours of staff time every week? Absolutely.
The technical challenges (there are always technical challenges)
Parallel uploads sound simple: just upload multiple files at once. Except:
Concurrency management: Upload too many simultaneously on slow connection, they all fail. Need dynamic adjustment based on success rate.
Progress tracking: Five files uploading, each needs individual progress bar updating smoothly. Alpine.js reactive state + fetch API progress events.
Partial failures: Third file fails, other four succeed. Can't block the successful uploads. Need per-file error handling with retry.
Mobile network reality: Connection quality varies. System needs to detect slow networks and throttle concurrency automatically.
Took several iterations to get right. But now it works reliably across different connection speeds without manual tuning.
The timeline that brings it all together
Here's the problem: inspections in one place, key checkouts somewhere else, meter readings elsewhere. Want complete property history? Check five different sections.
This week I added unified timeline: aggregates everything that happens to a property in chronological order. Inspections, key movements, meter readings, maintenance, tenancy events, all in one view.
Real-time updates using ActionCable (from last week's refactoring). Filter by event type if you want specific detail. Export to PDF for landlord reports.
Now when someone asks "what's happened with this property recently?" you've got one place showing everything.
What agencies actually get
If you're running a letting agency, here's what this week means for you:
Key accountability. Know who has which keys at any moment. Automatic reminders when keys are overdue. No more hunting through desk drawers.
Meter reading records. Digital record with photos and timestamps for every meter reading. Evidence if disputes arise. No lost notebook pages.
Faster photo uploads. Staff spend one minute uploading photos instead of three. Multiply by five inspections per day and that's real time savings.
Complete property history. Everything that's happened to a property in one chronological timeline. Perfect for handovers or landlord updates.
Mobile-optimized everything. Key checkout works on phones. Meter reading entry works on tablets. Photo uploads work on patchy connections. Because that's where this work actually happens.
What I learned
This week taught me that sometimes the most valuable features aren't the exciting ones.
Real-time collaboration? Exciting. Offline-first mobile? Exciting. Parallel photo uploads? Not exciting. But probably saves more actual time than the exciting features.
The best software doesn't just track digital records—it acknowledges that letting agencies work in the physical world. They have actual keys to manage, actual meters to read, actual properties to photograph.
If your software ignores that physical reality, users just work around it with spreadsheets and notebooks. And then you've failed to actually solve their problems.
Also: performance optimization is always worth doing. That three-minute photo upload delay? Barely noticeable for one upload. Multiply by thousands of uploads per month across multiple agencies and it's hours of wasted time. Fixing it saved more time than building a flashy new feature would have.
Next week: probably something more exciting. But at least now the operational foundation is solid.