Zum Inhalt springen
← Alle Projekte

ExtensionReach

Lead-Discovery- und Growth-Plattform: vier Laufzeitumgebungen auf einer Datenbank, drei KI-Agenten mit 31 Werkzeugen.

Rolle
Alleinentwickler, internes Werkzeug
Zeitraum
Januar bis Mai 2026
  • React 18
  • TypeScript
  • Supabase
  • Deno
  • Chrome MV3
  • OpenAI
  • Claude auf AWS Bedrock
  • Vercel
  • GitHub Actions

Worum es ging

Gebaut, um das eigene Distributionsproblem zu lösen: Wer sind die passenden Ansprechpartner, was ist über sie belegbar, und wie kommt daraus eine Nachricht, die keine Serienmail ist.

Vier Laufzeitumgebungen teilen sich eine Datenbank: eine PWA, zwei Chrome-Extensions und fünfzehn Edge Functions, dazu acht Workflows in GitHub Actions. Drei Agenten mit insgesamt 31 Function-Calling-Tools recherchieren, prüfen Aussagen gegen Quellen und schreiben Entwürfe; einer davon streamt über SSE durch einen zweifach authentifizierten Bedrock-Proxy. Die Ansprache auf LinkedIn läuft manuell und in menschlichem Tempo; die Agenten bereiten vor, ein Mensch gibt jede Nachricht frei.

Der Kern ist nicht die KI, sondern die Grenze um sie herum: Die Agenten dürfen alles vorbereiten und nichts absenden. Jede Nachricht an einen echten Menschen braucht eine Freigabe in der Oberfläche, jede erzeugte Behauptung einen zweiten, unabhängigen Prüfschritt, bevor sie gespeichert wird. Ein Sprachmodell erzeugt Plausibles, nicht Wahres, und die Prüfung gehört deshalb nicht in denselben Aufruf.

Zahlen

Laufzeiten auf einer Datenbank
4 Laufzeiten auf einer Datenbank
Function-Calling-Tools
31 Function-Calling-Tools
Plattformen, aus denen Leads kommen
9 Plattformen, aus denen Leads kommen

Einblicke

Batch Review. Der Kern des Ablaufs: jeder Lead mit aufklappbarer Recherche, drei bewerteten Entwürfen und der Freigabe, ohne die keine Nachricht das Haus verlässt.
Lead Discovery, LinkedIn. Suchprofil mit Titel, Region und Firmen, dazu die gefundenen Leads, einzeln oder gesammelt freizugeben.
Community Alerts. 626 Treffer aus fünf Plattformen, davon 462 aus Trigger-Begriffen, je mit Quelle, Priorität und Stichwort.
Email Outreach. Anreichern, erzeugen, prüfen, exportieren; Apollo.io holt Adressen zu Leads, die nur ein LinkedIn-Profil haben.
Carla. Das Tagesbriefing als gerendertes Markdown, mit Pipeline-Tabelle, Gesprächshistorie und Schnellaktionen.

Eine fremde Oberfläche ist keine Schnittstelle

LinkedIn ist eine React-Single-Page-App mit gehashten Klassennamen, und ein .click() löst dort nichts aus: Die Handler hängen an Pointer- und Mausereignissen mit echten Koordinaten. Die Extension sendet deshalb die vollständige Folge aus pointerdown, mousedown, pointerup, mouseup und click mit den Koordinaten des Zielelements, und erkennt Schaltflächen über aria-label statt über Klassennamen, weil semantische Attribute länger halten. Der Schritt, der am meisten gelehrt hat, kam danach: Ein Dropdown liess sich nicht auslesen, weil zwei Skript-Einspritzungen, eine zum Öffnen und eine zum Lesen, den Zustand dazwischen verlieren. Die Lösung war ein einziger injizierter Aufruf, der innerhalb der Seite auf das Rendering wartet und erst dann zurückmeldet. Aus einer Schleife mit Timeouts wurde ein Aufruf mit einer Antwort. Die Grenze zwischen zwei Ausführungen ist eine echte Grenze; wer sie übersieht, sucht den Fehler in der eigenen Logik.

Stack

Laufzeiten
  • React 18
  • TypeScript
  • PWA
  • zwei Chrome-Extensions nach Chrome MV3
  • Service Worker mit Job-Queue
  • Seitenpanel
  • Vercel
Datenbank
  • Supabase
  • Postgres mit 34 Tabellen
  • 38 Migrationen
  • Row Level Security je Rolle
  • Realtime
  • Storage
Edge Functions
  • 15 Funktionen in Deno
  • Bedrock-Proxy mit SSE
  • Signaturprüfung für Webhooks
  • pg_cron
KI und Recherche
  • Claude auf AWS Bedrock
  • OpenAI
  • Perplexity
  • 31 Function-Calling-Tools
  • Fact-Check als zweiter Aufruf
Externe Dienste
  • Apify
  • RapidAPI
  • Apollo.io
  • Telegram
  • HubSpot
  • Smartlead
Betrieb
  • GitHub Actions als Zeitsteuerung
  • Playwright als Renderer auf dem Runner

Status

Entwicklung im Mai 2026 eingestellt und nicht weitergeführt. Repository privat, Einsicht auf Anfrage.