Wie ich eine intelligente Suche über ~3500 Kontakte in 2 Stunden gebaut habe
Semantische Suche im CRM mit Qdrant Cloud und Claude Code aufgebaut. Jetzt statt Filtern — einfach in natürlicher Sprache fragen.
Ich hatte ~3500 Kontakte aus verschiedenen Telegram-Chats angesammelt. Founder, Creator, Entwickler — alles in einem JSON. Etwas Bestimmtes zu finden war eine Qual.
Früher öffnete ich die Datei, schrieb jq-Queries, filterte nach Feldern. Willst du “Founder in Berlin, die sich für AI interessieren” finden? Viel Spaß mit der booleschen Logik.
Heute habe ich eine Lösung gebaut, die einfach erlaubt zu fragen: “Finde Founder in Berlin, die mit AI arbeiten”. Und eine Liste zu bekommen.
Was dabei herausgekommen ist
Ein lokaler MCP-Server, der:
- Mein CRM nimmt (JSON mit Kontakten)
- Jeden Kontakt per Embeddings in einen Vektor umwandelt
- Alles in Qdrant Cloud speichert
- Die Suche über Claude Desktop in natürlicher Sprache ermöglicht
Jetzt schreibe ich in Claude Desktop einfach:
“Finde ähnliche Personen wie dieser Kontakt”
“Welche Kontakte arbeiten im Marketing und leben in den USA?”
“Creator mit großer Reichweite”
Und bekomme relevante Ergebnisse. Kein jq, keine Filter, kein Schmerz.
Stack
- Qdrant Cloud — kostenloser Tier, 1GB Speicher
- Embedding API —
text-embedding-3-smallfür Embeddings - MCP (Model Context Protocol) — Integration mit Claude Desktop
- TypeScript — für den MCP-Server
Architektur
┌─────────────────────────────────────────────────────┐
│ Mac │
│ ┌──────────────┐ ┌──────────────────────┐ │
│ │Claude Desktop│ ───▶ │ MCP-сервер (node) │ │
│ └──────────────┘ └──────────┬───────────┘ │
└───────────────────────────────────┼────────────────┘
│
┌───────────────┴───────────────┐
│ │
▼ ▼
┌───────────────────┐ ┌───────────────────┐
│ Qdrant Cloud │ │ Embedding API │
│ (Vektoren) │ │ (Embeddings) │
└───────────────────┘ └───────────────────┘
Der MCP-Server läuft lokal, aber die Daten liegen in der Cloud. Das bedeutet:
- Schnelle Suche (Qdrant ist für Vektoren optimiert)
- Von jedem Gerät nutzbar
- Kostenlos bei den aktuellen Datenmengen
Wie ich es gebaut habe
1. Parsen der Kontakte
Ich sammelte Kontakte aus mehreren Telegram-Chats über die MTProto API. Ich parsete rund 8 Communities unterschiedlicher Themen — von technischen bis kreativen. Ergebnis: ~3500 eindeutige Kontakte.
2. Datenanreicherung
Aus den rohen username + first_name extrahierte ich:
- Rollen (founder, developer, creator)
- Unternehmen
- Standorte
- Kohorten nach Interessen
Nach der Anreicherung hatten ~1500 Kontakte genügend Daten für eine qualitativ hochwertige Suche.
3. Qdrant Cloud
Ich erstellte einen Cluster auf cloud.qdrant.io — das dauerte 2 Minuten. Der kostenlose Tier bietet 1GB, was für zehntausende Kontakte ausreicht.
4. Indexierung
Ich lud die angereicherten Kontakte in Qdrant — ~90 Sekunden für die gesamte Datenbank. Kosten für die Embeddings: weniger als ein Cent.
5. MCP-Server
Ich schrieb einen MCP-Server in TypeScript und verband ihn mit Claude Desktop. Der Server nimmt eine Textanfrage entgegen, generiert ein Embedding und sucht die nächsten Nachbarn in Qdrant.
Die Konfiguration ist die Standard-claude_desktop_config.json mit drei Umgebungsvariablen (API-Keys und Cluster-URL).
Claude Desktop neu gestartet — fertig.
Warum semantische Suche
Die klassische Suche findet exakte Wortübereinstimmungen. Die semantische — nach Bedeutung.
Ich schreibe: “Leute, die Produkte bauen”
Ich finde:
- “founder of startup X”
- “building my own project”
- “indie hacker”
- “запускаю свой сервис”
Selbst wenn das Wort “Produkt” nirgendwo vorkommt — es findet nach der Bedeutung. Embeddings kodieren Sinn, nicht Buchstaben.
Was als Nächstes kommt
Aktuell sind die Daten statisch — nach dem Parsen muss neu indexiert werden. Ich plane:
- Automatische Reindexierung bei CRM-Aktualisierungen
- Filter — Semantik mit exakten Bedingungen kombinieren (z.B. nach Rolle und Stadt)
- Integration mit Outreach — Ähnliche zu denen suchen, die bereits geantwortet haben
Zusammenfassung
| Was | Wie viel |
|---|---|
| Einrichtungszeit | ~2 Stunden |
| Kontakte in der Datenbank | ~3.500 |
| Kontakte mit Daten | ~1.500 |
| Kosten der Indexierung | < $0,01 |
| Qdrant Cloud | kostenlos |
Vibe Coding in Reinform: statt komplexe Filter zu schreiben, habe ich der AI beigebracht, meine Anfragen zu verstehen. Jetzt ist das CRM ein Gespräch, kein SQL.