edit_square igindin

Como construí uma busca inteligente em ~3500 contatos em 2 horas

Montei uma busca semântica no CRM com Qdrant Cloud e Claude Code. Agora em vez de filtros — simplesmente pergunto em linguagem natural.

Ilya Gindin
translate de  · en  · es  · fr  · ru
ler versao ilao dzindin arrow_forward

Acumulei ~3500 contatos de diferentes chats do Telegram. Founders, criadores, desenvolvedores — tudo em um JSON. Achar algo específico era um sofrimento.

Antes eu abria o arquivo, escrevia queries com jq, filtrava por campos. Quer encontrar “founders em Berlim que se interessam por AI”? Boa sorte com a lógica booleana.

Hoje montei uma solução que permite simplesmente perguntar: “Encontre founders em Berlim que trabalham com AI”. E receber uma lista.

O que ficou pronto

Um servidor MCP local que:

  • Pega meu CRM (JSON com contatos)
  • Transforma cada contato em um vetor via embeddings
  • Armazena tudo no Qdrant Cloud
  • Permite buscar pelo Claude Desktop em linguagem natural

Agora no Claude Desktop eu simplesmente escrevo:

“Encontre pessoas parecidas com este contato”

“Quais contatos trabalham com marketing e moram nos EUA?”

“Criadores com grande audiência”

E recebo resultados relevantes. Sem jq, sem filtros, sem dor.

Stack

  • Qdrant Cloud — tier gratuito, 1GB de armazenamento
  • Embedding APItext-embedding-3-small para embeddings
  • MCP (Model Context Protocol) — integração com Claude Desktop
  • TypeScript — para o servidor MCP

Arquitetura

┌─────────────────────────────────────────────────────┐
│  Mac                                                │
│  ┌──────────────┐      ┌──────────────────────┐    │
│  │Claude Desktop│ ───▶ │  MCP-сервер (node)   │    │
│  └──────────────┘      └──────────┬───────────┘    │
└───────────────────────────────────┼────────────────┘

                    ┌───────────────┴───────────────┐
                    │                               │
                    ▼                               ▼
        ┌───────────────────┐          ┌───────────────────┐
        │   Qdrant Cloud    │          │   Embedding API   │
        │   (vetores)       │          │   (embeddings)    │
        └───────────────────┘          └───────────────────┘

O servidor MCP roda localmente, mas os dados ficam na nuvem. Isso significa:

  • Busca rápida (Qdrant é otimizado para vetores)
  • Pode ser usado de qualquer dispositivo
  • Gratuito nos volumes atuais

Como montei

1. Parsing dos contatos

Coletei contatos de vários chats do Telegram via MTProto API. Fiz o parsing de cerca de 8 comunidades de diferentes temáticas — de técnicas a criativas. Obtive ~3500 contatos únicos.

2. Enriquecimento dos dados

A partir dos username + first_name brutos, extraí:

  • Papéis (founder, developer, creator)
  • Empresas
  • Localizações
  • Coortes por interesses

Após o enriquecimento, ~1500 contatos tinham dados suficientes para uma busca de qualidade.

3. Qdrant Cloud

Criei um cluster em cloud.qdrant.io — levou 2 minutos. O tier gratuito oferece 1GB, o suficiente para dezenas de milhares de contatos.

4. Indexação

Careguei os contatos enriquecidos no Qdrant — ~90 segundos para toda a base. Custo dos embeddings: menos de um centavo.

5. Servidor MCP

Escrevi um servidor MCP em TypeScript e conectei ao Claude Desktop. O servidor recebe uma consulta de texto, gera um embedding e busca os vizinhos mais próximos no Qdrant.

A configuração é o padrão do claude_desktop_config.json com três variáveis de ambiente (chaves de API e URL do cluster).

Reiniciei o Claude Desktop — pronto.

Por que busca semântica

A busca clássica procura por correspondências exatas de palavras. A semântica — por significado.

Escrevo: “pessoas que constroem produtos”

Encontro:

  • “founder of startup X”
  • “building my own project”
  • “indie hacker”
  • “запускаю свой сервис”

Mesmo que a palavra “produto” não apareça em lugar nenhum — vai encontrar pelo sentido. Os embeddings codificam o significado, não as letras.

O que vem a seguir

Atualmente os dados são estáticos — após o parsing é preciso reindexar. Planejo:

  1. Reindexação automática quando o CRM for atualizado
  2. Filtros — combinar semântica com condições exatas (por exemplo, por papel e cidade)
  3. Integração com outreach — buscar similares aos que já responderam

Resumo

O queQuanto
Tempo de configuração~2 horas
Contatos na base~3.500
Contatos com dados~1.500
Custo da indexação< $0,01
Qdrant Cloudgratuito

Vibe coding no estado mais puro: em vez de escrever filtros complexos, ensinei a AI a entender minhas consultas. Agora o CRM é uma conversa, não SQL.

← arrow keys or swipe →