The independent broker’s operational bottleneck
Our stakeholder, “Gonzalo,” managed a portfolio of 120 properties using only Excel spreadsheets and WhatsApp. This manual workflow capped his capacity at roughly two closings per month. Every lead required him to manually search through three different spreadsheets to check availability, resulting in a response time averaging 4 hours—often too late to capture hot leads.
We needed to build Redprop not just as a “catalog,” but as an operational command center that would reduce this administrative overhead. The goal was specific: bring lead response time under 10 minutes and eliminate data redundancy.
Technical architecture decisions
As the Frontend lead, I prioritized maintainability and “shareability” over premature optimization. Real estate links travel through WhatsApp, so the URL had to be the single source of truth.
URL state management strategy
We initially managed filter state (price, location) in React context. This failed during user testing; agents couldn’t share specific search results with clients.
I refactored this using Nuqs to lift all state to the URL query parameters. This decision had two impacts:
- Shareability: Agents could send a precise link (e.g.,
?min_price=50k&zone=palermo) to a client, reducing back-and-forth messaging. - Performance: We decoupled the filter logic from the component tree, reducing unnecessary re-renders by approximately 30% on the main listing page.
Handling asynchronous data consistency
Standard useEffect fetching created race conditions when filters changed rapidly. We implemented TanStack Query to handle background caching. This was crucial for the “Admin” view—if an agent updated a property price in the dashboard, the cache invalidation strategy ensured the public view reflected this change immediately without a hard reload.
Methodology and delivery
We didn’t just “use Scrum”; we simulated a high-pressure agency environment. With only three weeks to MVP, we had to cut scope ruthlessly.
We replaced the standard ESLint/Prettier stack with Biome. On a CI pipeline running dozens of checks per day, Biome’s speed (linting in ~300ms vs 3-4s for ESLint) saved us cumulative hours of waiting time during Pull Request reviews. This efficiency allowed us to maintain a strict “Zero Warning” policy without slowing down development velocity.
Results
The project won 1st Place at the Foo Talent Demo Day, but the real metric was operational. The MVP reduced the time required to upload a new property from 15 minutes (manual cataloging) to 3 minutes.
Currently, I am refactoring Redprop towards v2.0, moving from a rigid MVP structure to a Clean Architecture approach. The focus is now on scalability: implementing unit testing with Vitest or Playwright to ensure zero regressions as we add complex features like automated valuation models.