CommunityRecherche & Datenanalysegithub.com

karthikselvarjn/lead-signal-scout

Finde, verifiziere und bewerte potenzielle Kunden, erste Kunden, Early Adopters, Design-Partner, Beta-Tester oder Vertriebs-Leads für ein Produkt anhand öffentlicher Schmerz-, Nachfrage- und Timing-Signale.

Was ist lead-signal-scout?

Lead Signal Scout ist ein spezialisierter AI-Agent-Skill zur automatisierten Lead-Generierung und -Qualifizierung auf Basis öffentlich zugänglicher Quellen. Er wandelt eine Produkt-URL oder Beschreibung in eine geprüfte Shortlist von echten Interessenten um, bei der jeder Eintrag durch eine datierte, abgerufene Quelle belegt ist. Der Skill unterstützt verschiedene Modi wie `discovery` (für ungelöste Probleme), `pipeline` (für wiederkehrende Leads), `design-partners` (für Feedback-Geber), `b2b` (für Unternehmen mit geschäftlichem Auslöser) und `community` (für explizite öffentliche Anfragen). Die Tiefe der Recherche ist über `quick`, `standard` oder `deep` einstellbar. Ein strenges Sechs-Gate-System (Aufnahme, Verifikation, Screening, Aktualität, Qualifikation, Audit) stellt sicher, dass nur verifizierte, aktuelle und kaufwillige Kontakte aufgenommen werden. Der Skill integriert sich in Claude Code, Cursor und Codex und erzeugt am Ende eine vollständige Liste mit Score, Kanal, Unternehmen und Begründung sowie eine Audit-Prüfung über ein mitgeliefertes Skript.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/karthikselvarjn/lead-signal-scout-skill/tree/main/lead-signal-scout

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Lead Signal Scout

Verwandle eine Produkt-URL in eine Shortlist, bei der jeder Eintrag auf einer Seite sitzt, die der Agent geöffnet, gelesen und datiert hat, und zu jemandem gehört, der tatsächlich kaufen könnte. Unverifizierte, veraltete und unqualifizierte Interessenten schaffen es nie auf die Shortlist.

Sechs Gates sind obligatorisch. Das Überspringen eines einzigen macht die Ausführung ungültig; sage das, anstatt die Ausgabe zu liefern.

  1. Aufnahme (Schritt 1) – Recherchiere nicht, bis das Briefing einen schwachen Treffer ablehnen kann.
  2. Verifikation (Schritt 4) – Schreibe keinen Interessenten aus, dessen Seite nicht abgerufen wurde.
  3. Screening (Schritt 4) – Gib eine Abfrage, die Ergebnisse geliefert hat, nicht auf, ohne eine davon zu öffnen und den Grund zu notieren.
  4. Aktualität (Schritt 5) – Nimm kein Signal ohne Datum oder nach dem Stichtag in die Shortlist auf.
  5. Qualifikation (Schritt 6) – Nimm keinen Interessenten in die Shortlist auf, der kein eigenes Problem nachweisen kann, keine Kaufmöglichkeit hat, keinen nutzbaren Kontaktweg bietet oder in einem unternehmensgeführten Modus kein identifiziertes Unternehmen hat.
  6. Audit (Schritt 8) – Präsentiere keine Ergebnisse, bis validate_run.py BESTANDEN zurückgibt.

Schreibe jedes Prosa-Feld gemäß references/writing-rules.md. Ein Bericht, der wie generiert wirkt, wird ignoriert, egal wie gründlich die Recherche dahinter war.

Workflow

1. Aufnahme

Lies references/intake.md. Erstelle das Produkt-Briefing, frage dann einmalig in einer einzigen gebündelten Nachricht nach den vier Dingen, die eine Landingpage nicht verraten kann: Geografie, Preisspanne und Kaufmechanik, Ausschlüsse sowie vorhandene Kunden- oder Erfolgsdaten. Fahre mit gekennzeichneten Annahmen fort, wenn der Benutzer nicht antwortet.

Trage icp.price_band_source als user oder assumed ein. Das ist wichtig: Eine von dir erfundene Spanne darf niemanden ausschließen. Bei assumed bewerte commercial_fit nicht unter 3 aus Preisgründen. Eine Zahl, die niemand bestätigt hat, hat kein Recht zu entscheiden, welche echten Unternehmen fallen gelassen werden.

Setze max_age_days hier. Der Standardwert ist 120. Verwende 60, wenn die Signale Stellenanzeigen oder Lieferantensuchen sind, bei denen eine vier Monate alte Anfrage fast immer besetzt ist.

2. Modus und Tiefe festlegen

Der Modus bestimmt, was optimiert wird. Die Tiefe bestimmt, wie viele. Sie sind unabhängig voneinander.

ModusOptimiert fürGewichte (Schmerz / Fit / Kommerziell / Timing / Reichweite / Belege)
discovery (Standard)Ungelöste Schmerzen, vor Produkt-Markt-Fit28 / 22 / 10 / 14 / 13 / 13
pipelineWiederkehrender Lead-Fluss für ein verkaufendes Unternehmen22 / 20 / 20 / 14 / 12 / 12
design-partnersPersonen, die wahrscheinlich testen und Feedback geben24 / 18 / 6 / 10 / 24 / 18
b2bUnternehmen mit aktuellem geschäftlichem Auslöser14 / 20 / 26 / 18 / 11 / 11
communityExplizite öffentliche Anfragen und Diskussionen28 / 18 / 8 / 14 / 22 / 10

Die Modi b2b und pipeline weigern sich außerdem, einen Interessenten ohne identifiziertes Unternehmen auf die Shortlist zu setzen.

TiefeShortlist-LimitMindestabfragenMindestens geöffnete SeitenMindestabdeckung Bucket x Familie
quick510124 Buckets x 3 Familien
standard (Standard)1018205 Buckets x 4 Familien
deep2035357 Buckets x 6 Familien

Abfragen messen das Tippen, Seiten messen das Lesen, und nur eines von beidem findet Kunden. Trage die Anzahl in coverage.pages_opened ein, einschließlich Seiten, die nie zu Kandidaten wurden.

Kopiere das Profil für den gewählten Modus unverändert in das Run-JSON. Der Auditor berechnet jede Punktzahl neu und schlägt fehl, wenn die deklarierten Gewichte vom Profil des Modus abweichen.

3. Suche planen und durchführen

Lies references/search-playbook.md. Schreibe den Abfrageplan vor der Suche: welche Buckets, welche Quellfamilien, welche Formulierungen in den eigenen Worten der Zielgruppe. Protokolliere jede Abfrage und ihre Ergebnismenge, einschließlich derer ohne Ergebnisse. Sammle Kandidaten-URLs; schreibe noch keine Interessenten-Datensätze.

4. Verifizieren, bevor du schreibst

Lies references/verification.md. Rufe jede Kandidaten-URL ab, dann entscheide:

  • signal_confirmed – Seite abgerufen, Signal darauf vorhanden, dem genannten Interessenten zuzuordnen. Nur dies darf auf die Shortlist.
  • url_ok – abgerufen, aber das Signal ist vage, die Zuordnung ist abgeleitet, oder das Datum fehlt. Prüfebene.
  • unverified – nicht abgerufen, tot oder hinter einer Zugangssperre. Füge zu dropped mit Begründung hinzu und stopp. Schreibe es nicht aus.

Einen vollständigen Interessenten-Datensatz zu schreiben und dann zu verwerfen, weil die Seite 404 meldet, verschwendet den Großteil eines Runs. Rufe zuerst ab, schreibe dann.

Öffne, was du aufgeben willst. Jede Abfrage, die drei oder mehr Ergebnisse geliefert hat und keine behalten hat, benötigt einen note-Eintrag im Coverage-Eintrag, geschrieben nach dem Öffnen eines dieser Ergebnisse. Der Auditor lässt einen Run scheitern, bei dem die meisten aufgegebenen Abfragen keine Notiz haben.

Dies ist der Schritt, der entscheidet, wer auf der Shortlist steht, und er ist unsichtbar, wenn du ihn nicht aufschreibst. Ein Run, der 16 Abfragen protokolliert und jede Abdeckungsschwelle erfüllt, kann dennoch 75 Ergebnisse geliefert, 10 geöffnet und seine gesamte Shortlist aus drei anzeigenartigen Abfragen bezogen haben, während eine Seite mit Wettbewerbsbewertungen und drei veröffentlichte RFPs ungelesen blieben. Die Audit-Zeile wird das als volle Abdeckung bezeichnen. Überprüfe auch den Kontaktweg; verification.md beschreibt, was aufgezeichnet werden muss.

Recherche-Grenzen: nur öffentliche berufliche und geschäftliche Informationen; keine Umgehung von Logins, Paywalls, Zugriffskontrollen, Ratenbegrenzungen oder Robot-Einschränkungen; keine Datenmakler, durchgesickerte Datensätze, private Gruppen, persönliche E-Mail-Suche oder Telefonanreicherung; niemals auf geschützte Merkmale, Gesundheit, finanzielle Not, Politik, Religion oder Sexualität schließen oder abzielen.

5. Jedes Signal datieren

Das Timing wird aus dem Alter bewertet, daher kann ein undatiertes Signal nicht auf die Shortlist. Arbeite diese Liste ab und halte bei der ersten an, die eine Antwort liefert: ein sichtbares Veröffentlichungsdatum, einen relativen Zeitstempel auf der Seite umgerechnet in signal_age_days, oder einen in der URL codierten Zeitstempel. Notiere, welches du verwendet hast, in date_basis. verification.md gibt die Methode für jede an.

Schätze niemals ein Alter. Teilweise Daten wie 2026-08 werden zurückgewiesen, ebenso wie zukünftige Daten. Ein Shortlist-Eintrag, der auf einem geschätzten Datum beruht, ist genau der Fehler, den dieser Skill verhindern soll.

Notiere fetched_at und final_url für jeden bestätigten Interessenten. Der Auditor kann nicht zusehen, wie du eine Seite abrufst; diese Angaben machen eine unbelegte Behauptung aufwändiger als die korrekte Vorgehensweise.

6. Bewerten, filtern und deduplizieren

Lies references/scoring.md. Bewerte sechs Dimensionen von 0–5 anhand der geschriebenen Anker. Das Timing kommt vom Alter, gedeckelt durch die Spanne; ein benannter aktueller Auslöser erhöht die Obergrenze um eins.

pain_strength bewertet das eigene Problem des Interessenten, in der Aufgabe, die das Produkt erfüllt, in seinen eigenen Worten. Ein Problem ihrer Kunden, ein Problem, für das sie die Lösung verkaufen, oder ein Markttrend, zu dem sie kommentiert haben, erhält alles 0 Punkte. Jede Konsummarke startet Kampagnen; das ist kein Signal.

commercial_fit fragt, ob dieser Verkäufer diesen Käufer durch die Mechanik, die dieser Verkäufer hat, abschließen kann. Nicht, ob das Unternehmen groß ist. Milliardenumsätze, hundert Länder und ein veröffentlichtes Lieferantenportal sind Belege für eine Beschaffungs-Warteschlange, und für einen Self-Service- oder Gründer-geführten Verkäufer ergibt das 2 Punkte, nicht 4.

Wirf alles unter 50 weg. Leite alles in die Prüfebene um, das undatiert ist, älter als max_age_days ohne die drei still_open-Felder, in pain_strength 0 oder 1 ohne benannten trigger erreicht, in commercial_fit 0 oder 1 gegen eine benutzerangegebene Spanne erreicht, dessen einziger Kontaktweg inappropriate ist, oder dessen Unternehmen im Modus b2b oder pipeline nicht identifiziert ist. Nichts wird gelöscht; die Prüfebene zeigt jeden mit seinem Grund.

Notiere signal_type und purchase_readiness anstelle eines einzelnen Absichts-Labels. Jemand, der einen Designer einstellt, hat echte Absicht und keine Absicht, Software zu kaufen. Die beiden Labels haben Obergrenzen, die an die darunter liegenden Dimensionen gebunden sind: hiring kann nicht adjacent überschreiten, ein schmerzbasiertes Signal benötigt pain_strength von 3 für strong, strong benötigt commercial_fit von 3, und direct benötigt 4. Der Auditor setzt alle durch, denn das gemeinsame Ansteigen von Freitextfeldern ist der Weg, wie aus einer Launch-Ankündigung ein kaufbereiter Interessent wurde.

Eine Seite, die einen Freiberufler, Auftragnehmer oder Angestellten sucht, ist hiring, egal wie genau die Arbeit zum Produkt passt. Sie wählen eine Person aus, keinen Dienst, und hiring begrenzt die Bereitschaft auf adjacent. Das Einstellen einer Stellenanzeige als direct_request umgeht diese Obergrenze – so schaffte es ein Fünfzehn-Dollar-pro-Stunde-Freelance-Briefing einmal an die Spitze einer Shortlist. Das Erkennungsmerkmal liegt darin, wonach der Weg fragt: ein Portfolio, Lebenslauf, Zeugnisse oder eine Honorarliste bedeutet Einstellung; Umfang, Preis, Durchlaufzeit oder ein Testlauf bedeutet Kauf.

Dedupliziere anhand von dedupe_key. Lade ledger.json aus früheren Runs im selben Ausgabeverzeichnis und schließe aus, was es bereits aufgedeckt hat, sowie alles auf der Ausschlussliste des Benutzers.

Halte die Shortlist über Quellen verteilt: nicht mehr als die Hälfte aus einer Quellfamilie oder einer Domain. Welche Website auch immer am zuverlässigsten lädt, wird sonst den Run übernehmen, und eine Single-Source-Shortlist übernimmt die Verzerrung dieser Website.

Wenn mehr als 60 Prozent der Shortlist 80+ Punkte erreichen, wurden die Anker zu locker angelegt. Bewerte neu.

7. Wer, wo und wie erreichbar

Trenne company, person und handle. Das Unternehmen ist derjenige, der kaufen würde; die Person ist derjenige, der gepostet hat; der Handle ist ihr Plattform-Benutzername. Wenn kein Unternehmen sichtbar ist, setze company auf not identified und trage den Handle in handle ein, geschrieben wie die Plattform ihn schreibt (u/name). Die Ausgaben beginnen in diesem Fall mit dem Handle. Suche zuerst nach dem Unternehmen: Poster nennen es oft im Thread, in ihrem Profil oder in einem Link.

Gib jedem Interessenten eine channel_url: die Seite, die der Benutzer tatsächlich öffnet, um Kontakt aufzunehmen. Oft der Quellthread, manchmal ein Kontaktformular oder Profil. Öffne sie und notiere channel_evidence: ein kurzes Zitat oder die Überschrift der Seite, die zeigt, für wen der Weg gedacht ist. Ein auf der Shortlist stehender Interessent, der channel_fit: valid ohne dies beansprucht, fällt beim Audit durch.

Lieferanten- und Anbieterregistrierungsportale sind bestenfalls questionable, eine Warteschlange und kein Gespräch. Bewerber-, Presse- und Kundensupport-Wege sind inappropriate. Wenn der erste Weg, den du findest, die falsche Form hat, verwende einen weiteren Abruf, um nach dem richtigen zu suchen, bevor du den Interessenten abschreibst; große Websites vergraben die Geschäftsanfrageseite und stufen die Karriereseite höher ein.

Der Auditor liest channel_evidence, nicht nur die URL. Eine Stellenanzeige auf Reddit oder LinkedIn hat eine perfekt saubere URL und verrät sich nur durch die Worte: „Teilen Sie Ihr Portfolio und Ihren aktualisierten Lebenslauf“ ist ein Bewerbungsweg, egal wo er gehostet wird.

Lasse additional_source_urls leer, es sei denn, eine andere Seite zeigt dasselbe Signal. Es wird als „Auch gesehen auf“ dargestellt, daher würde das Eintragen der Kontaktseite dort eine Bestätigung behaupten, die nicht existiert.

Verfasse einen Eröffnungssatz pro Interessent auf der Shortlist, unter 90 Wörter, basierend ausschließlich auf der abgerufenen Seite. Sende, übermittle, verbinde, folge, kommentiere oder schreibe nicht in ein CRM, es sei denn, der Benutzer autorisiert dies separat in einem späteren Turnus.

8. Ausgaben erstellen und prüfen

Lies references/output-schema.md, schreibe run.json, dann:

python3 <skill-dir>/scripts/validate_run.py run.json
python3 <skill-dir>/scripts/build_outputs.py run.json outputs/

<skill-dir> ist das eigene Verzeichnis dieses Skills, das Verzeichnis, aus dem diese SKILL.md geladen wurde. Erstelle einen absoluten Pfad daraus. Verwende keinen relativ zum Arbeitsverzeichnis: Das Arbeitsverzeichnis ist das Projekt des Benutzers, nicht der Skill. Wenn der Host ${CLAUDE_SKILL_DIR} einsetzt, ist diese Variable genau dieses Verzeichnis.

Behebe jeden FEHLER und führe erneut aus, bis BESTANDEN ausgegeben wird. Gib die Audit-Zeile wortwörtlich in der endgültigen Antwort aus. build_outputs.py schreibt leads.csv (die operative Liste), leads-full.csv (alle Felder), report.html, brief.md und eine aktualisierte ledger.json. Behalte run.json daneben als Quelle der Wahrheit.

Ohne Python: Schreibe brief.md und leads.csv von Hand aus dem Schema und arbeite die Prüfungen des Auditors manuell ab.

9. Bericht

Gib die Audit-Zeile wortwörtlich in deiner Antwort und in brief.md zurück. Sie erscheint nicht in report.html bei einem bestandenen Run, denn ein grünes Banner mit der Aufschrift „in Ordnung“ ist nicht das, was jemand öffnet, um einen Interessentenbericht zu lesen.

Dann das Urteil, der Top-Interessent und absolute Pfade zu den Artefakten. Führe mit dem Verifizierten und Datierten an. Mache die Lücken sichtbar.

Qualitätsanspruch

  • Ein Interessent ohne abgerufene Quelle ist kein Interessent. Einer ohne Datum ist kein Lead. Einer, der nicht kaufen kann, ist ein Forschungsinterview. Einer, der kein eigenes Problem genannt hat, ist ein Marktsegment.
  • Ergebnisse, die aufgetaucht und nie geöffnet wurden, sind die eigentliche Ausgabe des Runs. Zähle sie und öffne diejenigen, die du überspringen wolltest.
  • Ein Run, der dreißig Kandidaten untersucht und keinen auf die Shortlist gesetzt hat, ist ein gültiges Ergebnis. Berichte es klar und knapp, anstatt aufzufüllen.
  • Zehn verifizierte, aktuelle Treffer sind besser als fünfzig generische.
  • Berichte, wonach gesucht wurde und was nichts gefunden hat, nicht nur, was gefunden wurde.
  • Personalisiere anhand der Quelle, niemals durch Erfindung.
  • Bezeichne alles als Hypothese. Ein öffentliches Signal ist keine Zustimmung, kein Interesse und keine Kaufabsicht."

Verwandte Skills