In productionDavines Perú

B2B WhatsApp sales agent

Handles salons on WhatsApp, qualifies them in conversation and hands the ready lead to the sales team.

41.33x
ROAS
S/34,571
sales
262
conversations
  • Built by me
  • In-house · AI Automation & Digital Marketing
  • In production
Try the bot on WhatsApp (opens in a new tab)
n8n
Cover of B2B WhatsApp sales agent

The problem

Every WhatsApp lead consumed human time before anyone knew whether it deserved a call.

My role

I built, in n8n, the agent that answers with real technical material, qualifies in conversation, stores state and hands the record to the advisor. When a person steps in, it goes quiet.

The close is done by Davines Perú’s commercial team. My system qualifies, structures and hands off the lead.

How it works

  1. Meta Ads

    Team campaigns, with my support

  2. WhatsApp

    The conversation comes in

  3. AI conversation

    Agent with RAG and memory

  4. Resources

    PDFs, technical material and videos

  5. Qualification

    Captures and saves the profile

  6. CRM + state

    Record ready to call

  7. Advisor

    Receives the lead and closes the sale

What I builtAnother team layer

What the person receives

  • WhatsApp conversation: the agent sends the price list as a PDF and offers to have an advisor contact the salon
    Prices · PDFPrices. Sends the price list as a PDF.
  • WhatsApp conversation: the agent sends a brand video and the technical PDF for the ENERGIZING line for hair loss
    Technical material · PDFBrand videoTechnical material and video. Asked about “hair loss”, it sends the technical PDF and a brand video.
  • Agent reply explaining the NOURISHING line and its salon use
    Technical materialTechnical answer. Explains the NOURISHING line and its salon use from the brand’s material.
  • Test conversation: the user picks “Talk to sales”, the bot asks whether they are a salon, stylist or distributor and asks for a name
    Advisor handoffHandoff to sales. With “Talk to sales” it asks the business type, asks for a name and starts recording the lead. Test-account run.

Behind the scenes

n8n
Crop of the n8n flow: authorship note, router, AI Agent, Postgres memory and Supabase vector store
The production canvas. The note carries my name as author.
See the full architecture (opens in a new tab)
n8n
Ingestion flow in n8n: Drive, PDF extraction, chunking, OpenAI embeddings and Supabase vector store
How knowledge gets in: the brand’s PDFs go into a vector store.

Structured state and CRM

sesiones_bot

  • chat_idtext
  • fase_actualtext
  • estado_conversacionvarchar
  • tipotext
  • salontext
  • ciudadtext
  • distritotext
  • estilistastext
  • marcatext
  • drivertext
  • lineastext
  • lineas_pendientestext
  • multimedia_enviadotext
  • reminder_enviadobool
  • bot_pausadobool
  • asesor_solicitadobool
  • updated_attimestamptz
State table in Supabase: phase, profile and whether the bot should stay quiet.

Current CRM state519 records

  • Initial interest294
  • Complete lead133
  • Ready to contact58
  • Partial lead32
  • Qualified lead2

CRM states, not a sequential funnel.

CRM sheet · columns

  • ChatID
  • Timestamp
  • Usuario
  • TipoPerfil
  • EstadoLead
  • Nombre Salon
  • Distrito
  • Ciudad
  • Telefono
  • Correo
  • Lineas
  • Prioridad
  • mensajeAsesor

Lead contact data is not published.

Ready to contact — Davines B2B

  • TypeSalon
  • Stylists3
  • Current brandAlfaparf
  • Driverdifferentiation and profitability
  • Lines of interestNaturaltech, Essential, OI
  • ChannelCall
  • Score85% → MEDIA
The record the advisor receives (real record, contact data omitted).

Evolution: from open conversation to buttons

n8n
Second phase in n8n: button router, button-state saving and price-list delivery
Phase 2: button router and synced prices, on the same agent.
See the full phase 2 (opens in a new tab)
WhatsApp button menu: Diagnose need, Get to know Davines, Price list, I'm already a customer and Talk to sales
The button menu, in a test run.

Team resultMay 2026 · internal Davines Perú report

  • 41.33xROAS
  • S/34,571sales
  • 262conversations
  • 3 → 10account openings, April → May
  • 28B2B leads
  • S/836.38Meta spend

Result of the full commercial system: ads, creative, agent and sales. My contribution is detailed below.

Team resultMay–July 2026 · verified in the same report

  • 878conversations
  • 18account openings
  • S/57,921sales
  • S/2,348.65spend
  • ~24.66xcombined ROAS

My contribution to the system

Meta Ads
I supported campaign execution, monitoring and optimization together with my manager.
Creative
I took part in creating and editing campaign assets, including video and AI-assisted content.
B2B conversational system
I designed and implemented the conversational system.
Qualification + state + CRM + handoff
I designed and implemented these automation layers.
QA and iteration
I tested conversations, found failures, fixed logic and iterated on the system.
Commercial close
The close was done by Davines Perú’s commercial team; my system qualified, structured and handed off the lead.

What I changed

The first version was open conversation and some prospects got lost explaining what they wanted. Phase 2 added buttons on top of the same agent.

Stack

  • n8n
  • WhatsApp Business
  • YCloud
  • OpenAI
  • Supabase
  • Vector Store
  • PostgreSQL
  • Google Drive
  • Google Sheets
Technical detail and decisions

How the knowledge gets in

The brand's technical and commercial PDFs are downloaded, extracted, split into chunks, turned into *embeddings* and stored in a vector store that the agent queries when it answers.

What each conversation stores

FieldWhat it is for
fase_actual · estado_conversacionWhere the conversation is in the journey
tipo · salon · ciudad · distrito · estilistasBusiness profile
lineas · lineas_pendientes · driverCommercial interest
multimedia_enviado · reminder_enviadoWhat was already sent, to avoid repeating
bot_pausado · asesor_solicitadoHandoff to a person