Back

INMA

The CRM I built for Habita Barcelona.

Mar – Jun 2026

What it is for:

  • Answering every enquiry: each lead from the portals gets a WhatsApp from the agency within seconds, at any time of day.
  • Screening tenants: leads answer the owner’s requirements on a short form, so agents only talk to the people who fit.
  • Organising viewings: the lead books a slot from a link, with no calls.
  • Finding flats for tenants: a new paid service, the search service.

From manual replies to an automatic flow

The problem

  • Before:
    • Everything by hand: agents answered every enquiry from the portals on WhatsApp, one by one.
    • Screening by chat: they asked each person, message by message, whether they could be a good tenant, and then coordinated the viewings.
  • Too many to keep up with:
    • busy days bring 150 to 230 enquiries;
    • the record was 572 in a single day, in October 2026, most of them for one listing.
  • Time lost:
    • about 5 minutes of admin per lead;
    • an estimate from INMA’s product documentation, for an agency that gets 20 or more leads a day.

What changed

  • Now: on flats with the automatic flow switched on:
    • Automatic reply: the system answers every lead on its own, with nobody typing;
    • Self-screening: the lead fills in the form, and the answers arrive sorted by who meets the most requirements;
    • The agent comes in last: they only write the follow-up once the lead has filled in the form.
  • In September 2026: the agent sent a personal follow-up to 1 in 5 of the leads who got the automatic WhatsApp.

A more professional agency

  • Everything in one place: each lead’s messages, answers, viewing and notes are in one record, so any agent can pick up the conversation.
  • No mistakes: replies come from templates written once and reviewed, filled in with the right name, flat and links.
  • The same for everyone: every lead gets the same clear information about the flat and its requirements.

In use every day

  • Leads handled: more than 9,400 between January and October 2026.
  • Growing volume: from 360 leads a month in February to 1,805 in August.
  • Ready for other agencies: only Habita uses it today, but it is multi-tenant, with modules each company can switch on.

Deterministic on purpose

  • Written by people: every message is a template written by a person; no language model writes anything.
  • Only the details change: INMA fills in the name, the flat and the links.
  • Nothing made up: the agency always knows exactly what each lead received.

Under the hood

Each agency sees only its own data

  • Security in the database: 45 Postgres tables protected by 90 row-level security policies.
  • Encrypted personal data: ID numbers and bank accounts in contracts are stored encrypted (AES-256-GCM).

Signed integrations

  • Verified messages: what arrives from the portal emails, Resend and the public website is checked with an HMAC-SHA256 or Svix signature.

Tested before it changes

  • Automated tests: 554 in September 2026.
  • A safe rewrite: when I rewrote how leads come in, I compared the new code with the old one, real production emails included: 95 checks, 0 differences.

Bulk WhatsApp that resumes

  • In batches: campaigns go out in batches that pick up where they stopped if something fails.
  • Within Meta’s limits: sending respects Meta’s limits and waits longer between retries.
  • No double sends: each batch is locked while it is being sent, and the lock expires on its own.
Stack: Next.js React TypeScript Supabase PostgreSQL WhatsApp Cloud API Vercel Vitest