When Inmobiliaria Levante (real client, name changed) hired us last summer, their daily operations looked like a small ecosystem maintained by hand:
- 3 Google Sheets for listings, one per neighborhood
- 1 Excel for the matching of buyers to properties
- 1 Trello board for offers and negotiations
- 1 WhatsApp Business account for client communication
- 1 Holded for invoicing
- 1 calendar in Outlook
- And a shared Dropbox folder holding 4,800 photos in sub-folders nobody trusted
Every Monday morning the office manager spent 2.5 hours copying data from the Excels into a "weekly KPI report" PDF the boss read while he drank his coffee.
Eleven months later we had quietly replaced almost all of it with a single, custom-built internal app. 2,400 hours/year saved. Listings went up the same day they were captured instead of waiting an average of 4 days. The boss stopped asking for the Monday PDF — because the dashboard was live on the wall TV.
This is the story of that build, what we did right, what we got wrong, and why custom software still beats off-the-shelf for a specific kind of company.
Why we didn't pick a SaaS off the shelf
The first thing we did wasn't to write code. It was to rule out existing solutions. We asked the team:
- "Have you tried Idealista Tools, Witei, Inmovilla?" → Yes, two of them. "Closer to our needs but the workflows still feel forced. We bend our process to the tool, not the other way around."
- "Why didn't you stay?" → "Because exporting our data was a nightmare and the price scaled per agent in a way that punished us when we hired."
This is the honest test for custom software: if 3 mainstream SaaS already sort of fit, custom is the wrong answer. Buy SaaS, accept 80% fit, move on.
But for Inmobiliaria Levante, three things tipped it:
- They had a unique commission-split logic (per agent, per property, per buyer-source) that no SaaS modelled correctly.
- They had a partnership pipeline with 4 local mortgage brokers and 2 reform companies that needed live data sharing — something no SaaS exposed.
- The boss was 58, had used 3 PMSes in 20 years, and flatly refused to pay €99/month/agent forever for a tool he didn't own.
Custom won.
What we built (and the order we built it in)
We worked in 9 sprints of 1 week each, every Friday demoing to the whole team in their office over coffee.
Sprint 1 — auth, roles, multi-tenant base
We started with the unsexy infrastructure. Auth with email + Google for agents. Role-based access (admin, agent, mortgage partner, reform partner, read-only owner). Audit log on every write. PostgreSQL with row-level security for partner separation.
This week looked like nothing visible. Boss was nervous. We held our ground.
Sprint 2 — listings module + photo pipeline
The single most-used module. We built:
- A listings form with smart defaults from postcode (catastro reference auto-pulled via the Catastro API).
- An iPhone photo upload flow so agents could shoot a property and publish in 4 minutes flat. EXIF data feeds GPS, room count, area where available.
- An automatic WebP/AVIF conversion + watermark pipeline (hosted on a tiny serverless function — costs us €1.40/month).
- A privacy-friendly face/license-plate auto-blurring step (one of the unexpected favorites — the boss had had a complaint two years prior).
Sprint 3 — buyers + matching engine
Each buyer has a search profile. The engine matches every new listing against all active profiles in milliseconds. Three minutes after a property is captured, an automatic WhatsApp message goes to the right buyers with a personal note from their assigned agent.
The WhatsApp Business API integration (via the official Cloud API) was the single biggest behavioral change in the company. Open rates: 94%. Reply rates: 38%. Compare to email blasts they used to do (12% / 1.5%).
Sprint 4 — offers + negotiation timeline
Replaced Trello. Each property has a vertical timeline of offers, counter-offers, files, signatures, with Slack-style mentions to keep all internal comms in context. We pulled in Docusign via API for digital signatures.
Sprint 5 — Holded integration
The dreaded one. Holded's API is functional but not the smoothest in Spain. We built a bidirectional sync: deals closed in our app create draft invoices in Holded with the right VAT, the right commission split, and the right tag for the boss's quarterly tax filing. The accountant cried tears of joy.
Sprint 6 — agent commissions + automated payouts
This is where custom destroyed the off-the-shelf options. We modeled their exact rule: agent gets 40% of the commission normally, 50% if the buyer came from their personal network, capped at €X/month, with a quarterly bonus if a team-level revenue target is hit. The system calculates this automatically and produces a payout report on the 1st of each month, ready for SEPA.
Sprint 7 — dashboards + the wall-TV view
Live KPIs streamed to a dashboard pinned to a TV in the office. Visits this week, listings captured, offers in progress, pipeline value, agent leaderboard. Updates in real time. Within two weeks the team's behavior changed without a single management memo — competition, gamified.
Sprint 8 — partner portal
A scoped-down view of certain listings exposed to mortgage brokers and reform companies. They can leave quotes, request photos, mark interest. Replaces an awful WhatsApp group of 19 people.
Sprint 9 — search, exports, admin polish
Algolia-powered search, a one-click GDPR data-export endpoint, and a clean admin panel for the boss. We also did a small piece for compliance: automatic deletion of buyer data 24 months after their last activity, a checkbox he didn't know was missing until we mentioned it.
What we got wrong (so you don't repeat it)
We won't pretend everything was smooth. Two real mistakes:
- Sprint 3 went over by 4 days because we underestimated the WhatsApp Business approval process. Lesson: start the API approvals on day one of any project that touches WhatsApp, Apple Pay, or Stripe. Bureaucracy waits for nobody.
- Sprint 6 had a tiny rounding bug that under-paid one agent by €4.20 in his first commission run. He noticed in 3 minutes (commissions are personal, of course). We added a property-based test that month — would never have happened in production with what we test now. Painful, useful lesson.
The numbers, after 11 months
| Before | After |
|---|
| Time from capture → publish | 4 days avg | same day |
| Agent admin hours / week | ~9 / agent | ~2 / agent |
| WhatsApp open rate | 12% (email) | 94% |
| Listings published / month | 38 | 71 |
| Offers managed in tool | 0 (Trello) | 100% |
| Monthly KPI report | 2.5h manual | live, real-time |
| Tooling cost / month | €647 (mixed) | €89 (hosting) |
| Hours saved / year (team) | — | ~2,400 |
| Average sale cycle | 71 days | 52 days |
At an average loaded cost of €18/hour for an agent's admin time, the saved hours alone are €43,200/year. Build cost was paid back in 4.1 months.
When custom software is the right call (and when it isn't)
Build custom when:
- You have a process that's a real differentiator, not a copy of a competitor's
- 3+ existing SaaS already sort-of-fit but require workarounds you do every week
- Per-seat pricing penalizes your growth
- Your data + workflow IP is a moat
- You're willing to commit to ownership: maintenance, evolution, hiring or partnering long term
Buy off-the-shelf when:
- Your processes are 80%+ standard for your industry
- You're early-stage, pre-product-market-fit, and need to learn first
- You have less than €15k–€20k of build budget
- You don't have anyone who can be the internal product owner
We will tell clients to buy SaaS about a third of the time. No, that's not a typo. We turn down those projects gladly.
Curious whether your business is the custom case?
We do a free 2-hour discovery workshop for SMBs who think they've outgrown spreadsheets. We'll map your real processes, run the buy-vs-build math with you, and tell you the honest answer — even if it's "stay on Notion for another year".
Book a discovery call or explore our custom software services.
Spreadsheets don't scale. Process does.