Como construí uma busca inteligente em ~3500 contatos em 2 horas
~3500 contatos num JSON. Founders, criadores, desenvolvedores. Encontrar algo específico: sofrimento.
A busca clássica procura palavras. A semântica procura significado.
antes: depois:
────────────────── ──────────────────
abre o arquivo escreve em linguagem natural
escreve jq recebe resultados
filtra por campos sem jq, sem filtros
boa sorte com booleano sem dor
“founders em Berlim que trabalham com AI” não é uma query de banco de dados. É uma pergunta. Perguntas merecem respostas, não sintaxe.
arquitetura:
┌──────────────┐ ┌────────────────────┐
│Claude Desktop│ ───▶ │ servidor MCP │
└──────────────┘ └─────────┬──────────┘
│
┌─────────────┴──────────────┐
▼ ▼
┌───────────────────┐ ┌───────────────────┐
│ Qdrant Cloud │ │ Embedding API │
│ (vetores) │ │ (significado) │
└───────────────────┘ └───────────────────┘
Local onde necessário. Nuvem onde escalável. Gratuito nos volumes atuais.
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. Os embeddings codificam o significado, não as letras.
O mapa não é o território. A palavra não é a intenção.
o que custou:
tempo de configuração ── ~2 horas
custo de indexação ── < $0,01
Qdrant Cloud ── gratuito
velocidade de indexação ── ~90 segundos
O CRM é agora uma conversa, não SQL. O valor estava sempre nos contatos. O acesso estava bloqueado pela sintaxe.
Os dados eram estáticos antes. O significado sempre foi dinâmico.
O embeddings não mudam os dados. Mudam como você se aproxima deles.
— Ilao Dzindin