A warehouse with no map
Items had no assigned shelf. Finding a specific curtain rod or lamp meant walking the aisles.
Cost: Hours lost every week just locating stock.
A custom inventory and operations platform for a company that furnishes and maintains apartment properties — 15 modules, 5 roles, real-time everywhere, built and shipped in about six months.
▸ every shelf above is live. scroll to follow one item through the system.▍
Tropilux, a company that furnishes, maintains and turns over apartment units across multiple properties.
Discovery, permission design, UX, full-stack build, real-time infrastructure, backups, launch, and a complete user manual.
One source of truth for stock, requests, purchasing, returns, tasks and timesheets — used daily by warehouse, office and field staff.
Tropilux was running a growing multi-property operation on a patchwork that had stopped scaling. Inventory lived in a spreadsheet behind a basic form. Requests came in by text, paper, and whoever caught the warehouse manager first. Every process had its own form — and none of them talked to each other.
Items had no assigned shelf. Finding a specific curtain rod or lamp meant walking the aisles.
Cost: Hours lost every week just locating stock.
Requests, intake, timesheets and purchasing each had their own spreadsheet or paper form. Nothing reconciled.
Cost: No single number anyone trusted.
Tools went out to properties and never came back. Damaged items got replaced with no record of the damage. Stock counts drifted from reality with no way to trace why.
Cost: Unexplained losses, month after month.
Anyone could ask for anything in any quantity. High-value items went out on the same footing as a box of light bulbs.
Cost: Overspend and duplicate orders.
Supplier prices changed, but the “cost” of what a property used was a guess.
Cost: No way to bill accurately or spot waste.
The old form was clunky on a phone, so field staff skipped it. Data was incomplete because entering it was a chore.
Cost: The system was only as good as the people who bothered to use it.
[Quote from Tropilux about what it was like before — e.g. “We were ordering things we already had because nobody could find them.”]
We rebuilt the operation as a single web app — installable on a phone, live-updating, and permission-aware down to the individual button. Instead of digitizing the old forms, we redesigned each process around how the warehouse actually works.
Hover a room for a summary; select it for the full description.
Here's the life of a single 72-inch curtain rod — from purchase order to shelf to apartment and back. Every step is a screen in the app, and every step leaves a record.
Warehouse drafts a purchase order; Admin reviews and locks in quantity and unit cost.
The shipment arrives. Each receipt is recorded at its actual cost as its own lot — this is what makes costing honest later.
The item gets a shelf. Every item has one. Search shows it; the warehouse walks straight to it.
Field staff at a property open a request: building, unit, room, item, quantity, reason, photo. The app checks stock and warns if this unit just got the same thing.
Warehouse approves and hands it out. Stock is deducted from the oldest lot first, so the request is priced at what those specific rods actually cost.
One rod comes back unused. Nothing is credited until Warehouse physically accepts it — then it lands in the Used Pool with a condition and a shelf.
Six screens, one item, a complete trail of who did what and when — and a cost figure that's real.
Stock only moves at two moments: when the warehouse physically dispenses, and when it physically accepts a return. Nothing is credited back just because someone said it was coming.
Drag the divider, or use the arrow keys.
| Task | Before | After |
|---|---|---|
| Finding an item | Walk the aisles | Search, see the shelf, go get it |
| Requesting stock | Text the manager | Pick property, unit, room, item; photo optional; instant duplicate warning |
| High-value items | Same as everything else | Automatically routed to admin approval |
| Tools going out | Hope they come back | Flagged as returnable; tracked until accepted back |
| Cost of what a property used | A guess | Priced from the actual purchase batch (FIFO) |
| Field staff on a phone | Skipped it | Installed to the home screen, works like an app |
| Who changed what | Nobody knows | Every quantity change logged with the person and the source record |
| Permission | Admin | Office | Warehouse | Staff |
|---|---|---|---|---|
| See item costs | ✓ | ✓ | — | — |
| Approve requests | ✓ | ✓ | Partial (first-pass) | — |
| Dispense stock | ✓ | — | ✓ | — |
| Receive shipments | ✓ | — | ✓ | — |
| Edit inventory | ✓ | — | Photo & shelf only | — |
| Submit requests | ✓ | — | — | ✓ |
| Log timesheets | ✓ | ✓ | ✓ | ✓ |
| Run backups | ✓ | — | — | — |
Roughly 140 individual permission switches sit behind these four columns. Accounts can additionally be scoped to specific properties and inventory categories, so two people with the same role may see different data.
Oldest batch first. Reported costs stay accurate even as supplier prices move.
reduction in unexplained stock loss
saved locating and reconciling inventory
of field staff submitting requests through the app within the first month
properties and units managed in one system
Every item has a shelf, a photo, a quantity and a history. Low-stock alerts fire before something runs out, not after.
Returnable tools are tracked from dispense to acceptance. Damage is logged with photos and automatically spins up a replacement request and a maintenance task. Every count change names who made it and links to why.
FIFO costing means “what did this property use last month” is a real figure. Approval thresholds mean high-value items get a second look. Nightly backups to two destinations mean the data is safe.
[Quote from Tropilux about the result — e.g. “For the first time we can actually see what’s in the building.”]
Mapped every existing form, spreadsheet and text-message workflow. Wrote the permission matrix before writing any code.
Figma prototype of every module, reviewed with warehouse, office and field staff.
Real-time backend, five-role permission system, 15 modules, PWA install flow, photo pipeline, email notifications.
Role-by-role QA, live-update resilience, dual-destination backups with restore drills.
Shipped with a complete user manual covering every screen, status and edge case.
We shipped Tropilux with a complete user manual: sign-in and navigation, all fifteen modules, a roles-at-a-glance reference, and a status glossary. It's public.
We build systems like this for companies that have outgrown their tools.