Ilao Dzindin

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