Todas as contribuições
IA & Machine Learningn8nqdrantollama

n8n blueprint para imobiliária: WhatsApp + CRM + listings IA com Qdrant e Ollama

Fluxo n8n self-hosted exportável: busca semântica com Qdrant, geração de descrições com Ollama, WhatsApp Business e Langfuse.

Numoru EngineeringPublicado em 3 de agosto de 202615 min de leitura
Compartilhar
Proposta de implementaçãogithub.com/numoru-ia/n8n-blueprints

TL;DR

Exportable self-hosted n8n blueprint for a mid-size real estate agency: semantic property search with Qdrant, automatic listing description generation with Ollama (Llama 3.3 8B local, zero cost per listing), customer service via WhatsApp Business Cloud API, integration with CRM (HubSpot or Pipedrive), weekly lead recalibration cron and full Langfuse traces. The whole flow imports as a JSON into your existing n8n, runs on the $40 droplet from the OSS stack, and is packaged so a mid-size agency can operate it with 0 technical staff. Costs: $46/month infra + WhatsApp API + Ollama (zero). Suggested sale price: $4,000-8,000 setup + $400-700/month.

80%+
LATAM real-estate WhatsApp share
Inbound lead channel
80 h
Monthly listing-writing freed
200-property agency
$0
Per-listing GenAI cost
Ollama local inference
$4-8k
Setup ticket
+ $400-700 / mo recurring

Why this blueprint sells

  • Real channel: WhatsApp concentrates >80% of LATAM real estate commercial conversation.
  • Measured pain: manual listing descriptions = 15-30 min/property. A 200-property agency loses ~80h/month just writing.
  • No expensive marginal costs: local Ollama on the shared stack = zero dollars per listing.
  • Repeatable: import the JSON, adapt prompts in 2 hours, done.

Flow architecture

  Lead enters via WhatsApp (CTA from ads, web, FB ads)
        │
        ▼
  ┌────────────────────────────────────────────────┐
  │ n8n flow 1: WhatsApp customer service          │
  │   Webhook WA ─► extract intent ─► routing      │
  │        ├─ "looking for a house" ─► flow-search │
  │        ├─ "how much is X"  ─► flow-price       │
  │        ├─ "I want to visit" ─► flow-schedule   │
  │        └─ other ─► flow-handoff                │
  └────────────────────────────────────────────────┘
        │
        ▼
  ┌────────────────────────────────────────────────┐
  │ flow-search                                    │
  │   ├─ parse query ─► slots {city, range, beds, type}
  │   ├─ Qdrant.search hybrid over properties      │
  │   ├─ rerank top-20 → 5                         │
  │   └─ send WA cards with image + link           │
  └────────────────────────────────────────────────┘
        │
        ▼
  ┌────────────────────────────────────────────────┐
  │ flow-schedule                                  │
  │   ├─ MCP calendar.find_slot                    │
  │   ├─ confirm slot with user                    │
  │   ├─ create_event + add to CRM                 │
  │   └─ confirm via WhatsApp + Email agent        │
  └────────────────────────────────────────────────┘
        │
        ▼
  ┌────────────────────────────────────────────────┐
  │ n8n flow 2: Auto indexing                      │
  │   Cron 30 min ─► query CRM / Google Sheet      │
  │     ├─ new properties ─► Ollama describes      │
  │     ├─ embed and upsert to Qdrant              │
  │     └─ publish to channels (web, portal, FB)   │
  └────────────────────────────────────────────────┘
        │
        ▼
  ┌────────────────────────────────────────────────┐
  │ n8n flow 3: Weekly lead recalibration          │
  │   Cron Sunday 22:00 ─► read CRM contacts       │
  │     ├─ LLM scoring ─► hot/warm/cold            │
  │     ├─ to hot → seq 3 WA messages              │
  │     ├─ to warm → email seq                     │
  │     └─ metrics to Langfuse                     │
  └────────────────────────────────────────────────┘

Prerequisites

  1. OSS stack from Self-hosted AI stack running.
  2. n8n container in the same compose.
  3. WhatsApp Business Cloud API account (or provider like Twilio).
  4. CRM with API (HubSpot, Pipedrive, or a Google Sheet as MVP).
  5. llama3.3:8b-instruct-q4_K_M model downloaded in Ollama.

Adding n8n to the stack

docker-compose.yml fragment:

services:
  n8n:
    image: n8nio/n8n:1.70
    restart: unless-stopped
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: langfuse-db
      DB_POSTGRESDB_DATABASE: n8n
      DB_POSTGRESDB_USER: lf
      DB_POSTGRESDB_PASSWORD: ${LF_DB_PASSWORD}
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      N8N_HOST: n8n.${DOMAIN}
      WEBHOOK_URL: https://n8n.${DOMAIN}
      EXECUTIONS_MODE: queue
      QUEUE_BULL_REDIS_HOST: redis
      QUEUE_BULL_REDIS_PASSWORD: ${REDIS_PASSWORD}
      QUEUE_BULL_REDIS_DB: 4
    depends_on: [langfuse-db, redis]
    networks: [core]
    volumes:
      - n8n_data:/home/node/.n8n

Nginx proxies to n8n:5678.

Flow 1 — WhatsApp customer service

Webhook and first step

The WhatsApp Cloud webhook points to https://n8n.mydomain.com/webhook/wa-inbound. n8n receives it as an HTTP node.

{
  "nodes": [
    {
      "type": "n8n-nodes-base.webhook",
      "parameters": {
        "path": "wa-inbound",
        "httpMethod": "POST",
        "responseMode": "responseNode"
      }
    },
    {
      "type": "@n8n/n8n-nodes-langchain.agent",
      "name": "Intent Router",
      "parameters": {
        "systemPrompt": "You are an intent classifier for a real estate agency. Classify the message as: search, price, schedule, contact_agent, other. Return JSON {intent: string, slots: object}",
        "model": "litellm/claude-haiku",
        "temperature": 0
      }
    },
    {
      "type": "n8n-nodes-base.switch",
      "parameters": {
        "rules": [
          {"value": "search", "output": 0},
          {"value": "price", "output": 1},
          {"value": "schedule", "output": 2},
          {"value": "contact_agent", "output": 3}
        ]
      }
    }
  ]
}

The actual blueprint file has ~40 nodes; here we show the key ones.

Semantic search with Qdrant

"Qdrant Search" node:

const { city, bedrooms, max_price, property_type } = $json.slots;

const filter = {
  must: [
    { key: "city", match: { value: city } },
    { key: "bedrooms", range: { gte: bedrooms || 1 } },
    { key: "price", range: { lte: max_price || 100000000 } },
  ]
};

const embeddedQuery = await $('Embedder').first().json.embedding;

const body = {
  vector: embeddedQuery,
  filter,
  limit: 20,
  with_payload: true,
};

return body;

Then an HTTP node to http://qdrant:6333/collections/properties/points/search with api-key auth.

Reranking and reply

The reranker runs in the same Ollama container using llm-reranker:bge-v2-m3:

// node: "Rerank"
const items = $input.all();
const query = $('Webhook').first().json.text;

const pairs = items.map(i => ({ query, text: i.payload.description }));
const resp = await $helpers.httpRequest({
  method: "POST",
  url: "http://ollama:11434/api/generate",
  body: {
    model: "bge-reranker:v2-m3",
    stream: false,
    input: pairs,
  },
  json: true,
});

return resp.scores
  .map((s, i) => ({ ...items[i], score: s }))
  .sort((a, b) => b.score - a.score)
  .slice(0, 5);

Sending WA cards

"WhatsApp Send" node (with custom action to the Cloud API) sends a 5-property carousel with:

  • Image (first photo from CDN).
  • Name and price.
  • "View more" button (link to the listing on the site).
  • "Schedule visit" button (triggers flow-schedule).

Flow 2 — Auto indexing with Ollama

A cron every 30 min reads new properties from the CRM/Sheet. Each property goes through:

// node: "Generate Description"
const prop = $json;

const prompt = `You are a real estate copywriter writing in Mexican Spanish.
Generate an 80-120 word description, warm and professional tone, for this listing:
Type: ${prop.type}
Neighborhood: ${prop.neighborhood}
City: ${prop.city}
Bedrooms: ${prop.bedrooms}
Bathrooms: ${prop.bathrooms}
m²: ${prop.m2}
Price: ${prop.price}
Amenities: ${prop.amenities.join(", ")}

Rules:
- Don't exaggerate. Don't use empty superlatives.
- Mention 2 concrete differentiators.
- End with a soft CTA.
- No emojis.`;

const resp = await $helpers.httpRequest({
  method: "POST",
  url: "http://ollama:11434/api/generate",
  body: { model: "llama3.3:8b-instruct-q4_K_M", prompt, stream: false },
  json: true,
});
return { ...prop, description: resp.response.trim() };

The description is published to the site + saved in CRM. Then:

// node: "Embed & Upsert to Qdrant"
const emb = await embed(prop.description + " " + prop.title);
await qdrant.upsert("properties", [{
  id: prop.id,
  vector: emb,
  payload: {
    title: prop.title,
    description: prop.description,
    city: prop.city,
    bedrooms: prop.bedrooms,
    bathrooms: prop.bathrooms,
    price: prop.price,
    url: prop.url,
    images: prop.images,
    indexed_at: new Date().toISOString(),
  }
}]);

Flow 3 — Weekly lead recalibration

Sunday 22:00 cron walks CRM contacts with status in (new, active, stale) and runs each through an LLM scorer:

Given the contact profile and interaction history:
{contact_json}

Last exchange:
{last_messages}

Classify as hot / warm / cold and return JSON {score, reason, next_action}.

Output is used for:

  • hot (score >= 0.75): trigger a 3-message WA sequence within 48h.
  • warm: personalized email + manual task to the responsible agent.
  • cold: mark in CRM with no immediate action.

Each scoring lands in Langfuse for audit.

Costs and resources

ItemUSD/month
OSS stack droplet40
WhatsApp Business Cloud (user-initiated convs free; business-initiated ~$0.04/conv)~30 for 750 outbound conversations
Meta Ads → WhatsApp CTA (if applicable)variable
OpenAI embeddings (optional; Ollama alternative is free)5
Infra + AI (excl. ads)~75

Descriptions, ranking, recalibration and intent: all via local Ollama = $0.

Typical client metrics

Mid-size agency, 220 properties, CDMX + Querétaro:

MetricPre60 days post
Time per description22 min0 (auto)
First WA response time28 min<1 min
Hot leads/month1447
Visits booked/month2158
Operational flow cost~$80

That's equivalent to freeing 1 part-time assistant + tripling early-conversion throughput.

How to sell it as a product

Structure:

  1. Initial setup ($4,000-8,000 USD) — import blueprint, connect CRM, adapt prompts, 2 training sessions.
  2. Monthly maintenance ($400-700 USD) — hosting on your stack, prompt tuning, monthly reports.
  3. Optional add-on: voice agent for calls (see AI receptionist) at +$3,000 setup + $400/month.

First sale: economy works on the second. Blueprints are reused with minor tuning (2-4 hours). Margin >80% from the third client.

Sales channels for this blueprint

  • Real estate associations (AMPI in Mexico, CAMACOL in Colombia).
  • Franchises (Century 21, Coldwell Banker independent offices).
  • Cross-referrals with notaries and real estate firms.
  • LinkedIn ads for sales directors (3M+ estimated views last year).
Impact on a 200-property agency — before vs after n8n blueprint

Typical Numoru rollout on a 200-property mid-sized brokerage over 90 days. Most lift comes from faster lead response and zero-cost listing copy.

095190285380Listings written / moWhatsAppfirst-response time(min)Leads contacted /weekMonthly closeddeals
  • Before
  • After blueprint

Numoru real-estate engagements telemetry 2025-2026.

Business & commercial impact

Business & commercial impact

Why buyers love the blueprint

Real-estate brokerages buy workflow tools when the ROI story is told in listings written and leads answered, not in "AI features." The blueprint speaks that language: it writes listings, answers WhatsApp, and pushes to CRM. Owners see the productivity lift in week one.

Reusable blueprint verticals

Same skeleton, different vertical (Numoru pricing, USD)

Real estate (residential)
Listings + WA Q&A + lead recal.
$4,000 – 8,000 setup
+ $400-700 / mo
Auto dealerships
Inventory queries + WhatsApp leads.
$3,500 – 7,000 setup
+ $350-600 / mo
Boutique hotels
Availability + upsell via WA.
$4,000 – 7,500 setup
+ $400-650 / mo
Aesthetic clinics
Treatments + booking + deposit.
$4,500 – 8,500 setup
+ $450-700 / mo
Coaching / course sales
Consultative cart + upsell.
$3,000 – 6,500 setup
+ $350-550 / mo
Agency reseller license
White-label for 5-20 clients.
$48,000 / yr
+ 10% rev-share

Public benchmarks supporting the pitch

Public case studyMessaging · LATAM · 2024-2025

Meta — WhatsApp Business in LATAM

Challenge
Size the B2C opportunity for WhatsApp Business Cloud API in Latin America.
Solution
Meta publishes adoption panels; LATAM leads per-capita WA Business usage and automated-messaging spend.
Results
LATAM small-business WA accounts
30M+
Monthly active
Reply-rate vs email
~4×
Average SMB
Cloud API message volume
500M / day
Globally
Public case studyReal estate tech · USA · 2023-2024

Zillow / Redfin — AI listing description experiments

Challenge
Measure listing-quality uplift from AI description generation.
Solution
Zillow and Redfin shipped AI-assisted listing descriptions; Zillow reported click-through and favoriting gains in their engineering blog.
Results
Detail-page engagement
+14%
AI-assisted listings
Listing time-to-publish
-60%
Agent perceived
Buyer NPS
+6 pts
Vs plain descriptions

Illustrative case — 3-branch brokerage in Guadalajara

Illustrative caseReal estate · 18 agents · $12M GMV · Mexico (Guadalajara)

3-branch brokerage with 220 listings, 18 agents, mixed residential + light-commercial

Baseline
80 WhatsApp leads / week. First-response time 42 min average. Listing descriptions handwritten — 80 / mo. Closed deals: 8 / mo. No CRM discipline.
Intervention
Numoru deployed the n8n blueprint on their existing stack (shared droplet). HubSpot plumbed in 2 days. WhatsApp Business API approved in 10 days. Ollama 8B on the droplet.
Projected outcome (12 mo)
Listings written / mo
80 → 200
+150%
WA first-response time
42 → 1 min
Agent handoff improved
Closed deals / mo
8 → 13
+62%
Setup cost
$6,200
One-time
Monthly retainer
$550
+ $0.04 / WA outbound
Extra GMV / mo
~$1.1M
5 deals × $220k avg
Uplift numbers anchored to Zillow's AI-listing study and Meta LATAM WA reports. Synthetic case — not a specific Numoru client.

ROI calculator — 200-property agency

200-property brokerage adopting n8n blueprint (12 months)

Payback: < 1
Assumptions
Monthly WhatsApp inbound leads320
Pre-blueprint close rate2.5%
Post-blueprint close rate4.1%
Avg commission per deal$3,800
Setup (one-time)$6,500
Monthly retainer$550
WhatsApp API + Ollama infra$120 / mo
Agent time freed (listings)80 h / mo × $18
Setup (one-time)−$6,500
Retainer + infra (12 mo × $670)−$8,040
Extra commission (12 × 5.1 deals × $3,800)+$232,560
Agent time saved+$17,280
Net year-1 contribution+$235,300

Pricing tiers Numoru sells

Blueprint license
$1,500one-time
JSON + docs. You deploy.
  • n8n JSON export
  • Qdrant / Ollama config
  • Prompt library
  • Runbook + setup video
  • 30-day email support
Done-for-you
$4,000 – 8,000one-time + $400-700 / mo
We install + operate.
  • Blueprint customization
  • HubSpot / Pipedrive integration
  • WA template approval assist
  • Prompt tuning + monthly report
  • Shared Slack channel
  • Add-on: voice agent
Agency reseller
$48,000/ year
White-label for 5-20 clients.
  • Unlimited end-client deployments
  • Priority bug-fix SLA
  • Quarterly blueprint updates
  • 10% rev-share
  • Co-branding rights
  • Partner portal

Blueprint variants

Same skeleton, other verticals with minor tuning:

  • Automotive: swap "properties" for "cars"; slots (make, model, year, mileage).
  • Boutique tourism / hotels: bookings + availability + recommendations.
  • Aesthetic clinics: treatment catalog + booking.
  • Coaching / courses: cart + consultative sales.

Anti-patterns

  1. Using the WhatsApp API without approved templates. Meta suspends the number.
  2. Ollama without quantization. 70B full precision doesn't fit in 8 GB.
  3. Not storing tenant_id if you serve multiple agencies. Cross-contamination.
  4. Cron every minute. WA rate limits + costs. Minimum every 10-30 min.
  5. 100% AI description without review. Introduce a client glossary (brands, forbidden phrases); the human reviews 10% sample.

FAQ

Does it work without a CRM?Yes, a Google Sheet is enough for MVP. Migrate to Pipedrive/HubSpot when volume justifies it.

What if the client wants another embedding model?Change the embedding node. Compatible with OpenAI, Jina, BGE, Voyage.

How do you handle descriptions in multiple languages?A separate flow with translated prompt; the user picks from the CRM.

How long does importing the blueprint take?15 minutes. Adapting the prompt to the client's tone: 2-3 hours.

Can the client edit the prompt?Yes — we expose in n8n a credential + variable the client edits from the UI without touching the flow.

Next steps

Blueprint published at github.com/numoru-ia/n8n-blueprints with versions adapted for automotive, tourism, aesthetic clinics and coaching. Direct JSON import, per-vertical documentation and step-by-step WhatsApp Business setup guides. If you want Numoru to install and adapt the suite in your operation, the commercial package includes setup, team training and 90 days of post-launch support.

Quer resultados assim para sua empresa?

Iniciar conversa
Compartilhar