CRM Migration + AI Agent

Multi-Language AI Sales Agent.

A global education brand with 100K+ students across Latin America had 5,400 inbound messages a month that nobody was reading. Three languages. One sales team. A revenue leak hiding in plain sight. Here's how we closed it.

$96K/moRevenue leak closed
309KContacts migrated
93%Classification accuracy

The problem

The company had grown across three language markets faster than its operations could keep up. Inbound messages were arriving in Spanish, Portuguese, and English. The sales team could read two of those three. The third was being routed to a queue that hadn't been processed in months.

The audit traced 5,400 unanswered messages a month, with a quantified revenue loss of approximately $96,000 a month from prospects who reached out, got no reply, and went elsewhere.

The approach

An AI sales agent built on Claude that could read, classify, and respond in all three languages. Tiered model routing to keep cost per interaction manageable. A 93% classification accuracy threshold validated against historical conversion data before launch.

Architecture Inbound message (ES / PT / EN) │ ▼ ┌──────────────────────────────┐ │ Language detection │ ← Haiku (cheap, fast) └──────────────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ Intent classification │ ← Sonnet (accuracy) │ (lead / support / spam / │ │ recovery / question) │ └──────────────────────────────┘ │ confidence >= 90%? ┌─────┴─────┐ YES NO │ │ ▼ ▼ Auto-reply Human review queue (in language) │ ▼ CRM update (GHL) + Langfuse log

The build

Phased over two engagements. Phase 1 was the audit and migration: 309,000 contacts cleaned and migrated into GoHighLevel from a fragmented data layer. Phase 2 was the AI agent: classifier, drafter, response loop, and the observability stack to monitor it in production.

Highlights:

The outcome

5,400 messages a month now handled. The $96K/month revenue leak closed in the first 60 days post-launch. 93% classification accuracy holding steady in production. The sales team went from drowning in inbox triage to actually closing the conversations that matter. Phase 2 surfaced an additional $2.7M annual opportunity from segments the previous fragmented data had buried.

💬

The structural shift: Inbound messages went from being a backlog problem to being a routed, classified, logged stream. Every interaction now generates structured data the team can act on. The AI didn't replace the salespeople; it gave them only the conversations worth having.

Tech stack

Claude API (Haiku + Sonnet, tiered routing), Trigger.dev (orchestration and webhooks), GoHighLevel (CRM), Supabase (agent state and queue), Langfuse (observability), Python (data migration and ETL). 309,000 contacts migrated from a fragmented mix of spreadsheets, legacy CRMs, and a custom internal tool.

Have a backlog of messages nobody's reading?

The same shape of problem shows up in education, professional services, and franchises. The discovery call maps yours.

Book a Discovery Call