Company Radar
Competitive Intelligence Orchestrator. Nimmt Firmennamen entgegen, führt parallele Recherchen über 8+ Plattformen durch, bewertet jede auf einer 0-100 Skala und erstellt einen strukturierten Radarbericht mit KI-Briefings.
Dies ist ein Orchestrierungs-Skill. Er delegiert die Datensammlung an bestehende opendirectory-Mikro-Skills und koordiniert deren Ausgabe – er ersetzt sie nicht.
Architektur
EINGABE: Unternehmensname(n) / URL(s)
|
[1. Profilphase] -- Web-Recherche zur Erstellung von Unternehmensprofilen
|
[2. Signal-Sammlung] -- Parallele Plattform-Recherche (8 Kanäle)
/ | | | | | \ \
GH TW RD HN PH YC WEB MEDIA
|
[3. Bewertungs-Engine] -- 4-dimensionale Heat Score (0-100)
|
[4. KI-Synthese] -- Erstellung von Executive Briefings
|
AUSGABE: Radarbericht + Tiefgehende Analysen je Unternehmen
Signalkanäle und ihre Opendirectory-Zuordnungen
| Kanal | Opendirectory-Skill | Erkenntnisse |
|---|---|---|
| GitHub | gh-issue-to-demand-signal + Web-Suche | Sterne, Forks, Commits, Releases, Versandgeschwindigkeit |
| Twitter/X | twitter-GTM-find-skill | Tweets, Erwähnungen, Engagement, Gründeraktivität |
reddit-icp-monitor, reddit-post-engine | Community-Stimmung, Schmerzpunkte, Hype | |
| Hacker News | hackernews-intel | Story-Erwähnungen, Punkte, Frontpage-Signale |
| Product Hunt | producthunt-launch-kit | Launches, Stimmen, Maker-Aktivität |
| YC Jobs | yc-intent-radar-skill / yc-jobs-scraper | Stellenausschreibungen, Einstellungsabteilungen, Wachstumssignale |
| Web / Presse | Tavily-Suche + competitor-pr-finder | Nachrichten, Produktankündigungen, Finanzierungsrunden |
| Preisgestaltung | pricing-finder | Preisänderungen, Stufen-Updates, Planstruktur |
| Marktposition | map-your-market | ICP, Wettbewerbslandschaft, Positionierungslücken |
Häufige Fehler
| Der Agent wird wahrscheinlich... | Warum das falsch ist |
|---|---|
| Skills nacheinander ausführen | Alle 8 Signalkanäle sind unabhängig. Müssen parallel laufen. |
| GitHub-Sternezahlen oder Einstellungszahlen erfinden | Jeder Datenpunkt muss auf ein bestimmtes Suchergebnis oder eine Skill-Ausgabe zurückgehen. Keine "ca. 500 Sterne". |
| Die Heat-Score-Berechnung überspringen | Der Radarbericht erfordert bewertete Ausgaben, nicht nur rohe Daten. Der Heat Score ist das Kernunterscheidungsmerkmal. |
| Unvollständige Berichte ausgeben, weil ein Skill fehlgeschlagen ist | Ein fehlgeschlagener Kanal blockiert nicht den gesamten Bericht. Bewerte, was vorhanden ist, und vermerke Lücken. |
| KI-Trainingswissen für Unternehmensbeschreibungen verwenden | Jede Unternehmensbeschreibung muss aus einer Live-Web-Recherche stammen, nicht aus dem Gedächtnis. |
| Aktivitätslevel aus Heat Scores vergessen | Der Heat Score hat explizite Schwellenwerte: Hoch (60+), Mittel (30-59), Niedrig (1-29), Inaktiv (0). |
Schritt 1: Setup-Prüfung
Prüfe, ob die erforderlichen API-Schlüssel für die vom Benutzer unterstützten Kanäle zugänglich sind:
if [ -z "$TAVILY_API_KEY" ]; then echo "TAVILY_API_KEY: NICHT GESETZT – erforderlich für Web-Anreicherung"; else echo "TAVILY_API_KEY: konfiguriert"; fi
if [ -z "$GITHUB_TOKEN" ]; then echo "GITHUB_TOKEN: nicht gesetzt – GitHub API auf 60 req/h begrenzt"; else echo "GITHUB_TOKEN: konfiguriert"; fi
Die orchestrierten Skills haben eigene API-Key-Anforderungen. Siehe SKILL.md jedes Skills für Details. Für den vollen Betrieb erforderlich:
TAVILY_API_KEY– Websuche und Unternehmensanreicherung (erhältlich unter app.tavily.com)GITHUB_TOKEN– GitHub API-Zugriff (erhältlich unter github.com/settings/tokens)
Fehlt TAVILY_API_KEY: Anhalten und den Benutzer informieren. Ohne ihn können Unternehmensprofilierung und Web-Anreicherung nicht ausgeführt werden.
Schritt 2: Eingabe parsen
Aus der Unterhaltung sammeln:
companies: Liste von Firmennamen/URLs zur Verfolgung (erforderlich, mindestens 1, maximal 10 pro Durchlauf)output_preference: "full report" (Standard), "alert-only", "briefing-only" oder "heat-score-only" (Ranglistentabelle + Scores, keine Tiefenanalysen)timeframe: "realtime" (Standard) oder "last-week" oder "last-month"
Wenn der Benutzer einen einzelnen Firmennamen angibt: Trotzdem die volle Radar-Pipeline ausführen. Einzel-Firmen-Radare sind gültig – das vollständige Profil holen.
Bei mehr als 10 Unternehmen: Dem Benutzer mitteilen: "Maximal 10 Unternehmen pro Radar-Scan. Ich lasse die ersten 10 laufen. Lass mich wissen, ob du welche austauschen möchtest."
Fragen, ob Unternehmen bekannte spezifische Handles haben:
- GitHub-Organisationsname (falls abweichend vom Firmennamen)
- Twitter-Handle
- YC-Batch (falls YC-Unternehmen)
- Product Hunt-Slug
Das spart Recherchezeit. Falls unbekannt, erkennt die Profilphase sie automatisch.
Schritt 3: Unternehmensprofilphase
Für jedes Unternehmen ein Basisprofil erstellen, bevor die Plattform-Recherche gestartet wird.
Schritt 3a: Erste Web-Anreicherung
Für jedes Unternehmen eine Tavily-Suche durchführen, um zu entdecken:
[Firmenname] offizielle Webseite twitter github linkedin producthunt yc gründer
Aus den Suchergebnissen extrahieren:
- Domain / Webseiten-URL
- Beschreibung (2-3 Sätze)
- Twitter-Handle (aus twitter.com/X.com-URLs in den Ergebnissen)
- GitHub-Organisation (aus github.com-URLs in den Ergebnissen)
- LinkedIn-URL
- Product Hunt-Slug
- YC-Batch und URL (falls zutreffend)
- Gründernamen und Twitter-Handles
Ausgabeformat: Für jedes Unternehmen ein Profilobjekt nach references/company-profile-format.md erstellen.
Schritt 3b: Mit Benutzer bestätigen
Die entdeckten Profile anzeigen und den Benutzer bitten, vor dem Fortfahren zu bestätigen oder zu korrigieren.
## Entdeckte Unternehmensprofile
| Unternehmen | Domain | Twitter | GitHub | YC Batch | Gründer |
|---|---|---|---|---|---|
| ... | ... | ... | ... | ... | ... |
Falsche Handles korrigieren, bevor ich mit der Signalsammlung fortfahre?
Auf Benutzerbestätigung warten. Diesen Schritt nicht überspringen – falsche Handles liefern falsche Signale.
Schritt 4: Parallele Signalsammlung
Jetzt die Recherche auf allen Plattformen parallel für alle bestätigten Unternehmen durchführen.
Signalsammlungs-Map
Für jede Plattform die passende Methode verwenden. ALLE Plattformen gleichzeitig ausführen – nicht sequenziell.
GitHub-Signal
Web-Suche (Tavily) verwenden, um die GitHub-Organisation zu finden, dann suchen nach:
github.com/[org] sterne forks commits
Extrahieren:
- Gesamtsterne über alle Repos
- Gesamt-Forks
- Aktuelle Commits (letzte 7 Tage)
- Aktuelle Releases (letzte 30 Tage)
- Letztes Push-Datum
- Primäre Programmiersprache
- Anzahl offener Issues
Oder den Skill gh-issue-to-demand-signal aufrufen, falls eine tiefere Demand-Signal-Analyse aus GitHub Issues gewünscht ist.
Twitter/X-Signal
twitter-GTM-find-skill oder Tavily-Suche verwenden:
twitter.com/[handle] site:twitter.com [firmenname] startup
Extrahieren:
- Anzahl aktueller Tweets (letzte 24h)
- Erwähnungsvolumen
- Gründer-Tweet-Aktivität
- Wichtige Themen/Hashtags
Reddit-Signal
reddit-icp-monitor-Ansatz oder Tavily-Suche verwenden:
site:reddit.com [firmenname] [produktkategorie]
Extrahieren:
- Anzahl Erwähnungen
- Beitragsbewertungen (Upvotes)
- Stimmung (positiv/negativ/gemischt)
- Wichtige Beschwerden oder Lob
- Relevante Subreddits
Hacker News-Signal
hackernews-intel-Ansatz oder HN Algolia API-Suche verwenden:
site:news.ycombinator.com [firmenname]
Extrahieren:
- Anzahl Stories
- Gesamtpunkte
- Frontpage-Stories
- Wichtige Themen
Product Hunt-Signal
producthunt-launch-kit-Ansatz oder Tavily-Suche verwenden:
site:producthunt.com [firmenname] products
Extrahieren:
- Aktuelle Launches
- Upvote-Anzahl
- Kommentare/Stimmung
- Launch-Häufigkeit
YC Jobs-Signal
yc-intent-radar-skill / yc-jobs-scraper-Ansatz oder Tavily-Suche verwenden:
site:workatastartup.com [firmenname] OR site:ycombinator.com/companies [firmenname]
Extrahieren:
- Anzahl offener Stellen
- Jobtitel/Rollen
- Abteilungsaufteilung (Engineering, Sales, Marketing, etc.)
- Standort/Remote-Status
Web-/Presse-Signal
Tavily-Suche verwenden:
[firmenname] funding announcement product launch news 2026
Extrahieren:
- Aktuelle Finanzierungsrunden
- Produkt-Launches
- Wichtige Einstellungen in der Presse
- Partnerschaftsankündigungen
Preissignal (optional, nur wenn der Benutzer Preisinformationen wünscht)
pricing-finder-Skill oder Tavily-Suche verwenden:
[firmenname] pricing plans 2026
Extrahieren:
- Preisebenen
- Änderungen der Planstruktur
- Kostenlos vs. bezahlt
Umgang mit Fehlern
- Wenn ein Kanal 0 Ergebnisse liefert, im Bericht als "Kein Signal erkannt" vermerken
- Wenn ein Skill nicht verfügbar ist (API-Key fehlt), als "Kanal nicht verfügbar" vermerken
- Niemals Daten aus dem Gedächtnis erfinden. Wenn nichts gefunden wird, als nicht gefunden markieren.
- Ein leerer Kanal macht den gesamten Bericht nicht ungültig.
Schritt 5: Heat Score-Berechnung
Das gebündelte Skript scripts/heat-score-calc.mjs verwenden, um jedes Unternehmen zu bewerten. Dieses Skript implementiert den 4-dimensionalen Bewertungsalgorithmus aus references/heat-score-methodology.md.
Ausführung
Alle Signaldaten in eine JSON-Datei mit diesem Schema sammeln:
{
"companies": [{
"name": "CompanyName",
"signals": {
"stars": null, "forks": null, "ph_votes": null,
"commits_week": null, "releases_month": null,
"active_shipping": false, "last_activity_days": null,
"tweets_24h": null, "mentions": null,
"reddit_posts": null, "reddit_score": null,
"hn_stories": null, "hn_points": null,
"youtube_videos": null,
"jobs": null, "dept_count": null,
"sentiment": null, "traction": null
}
}]
}
Jedes Feld mit dem gefundenen Wert füllen. Bei nicht gefundenen Werten null lassen – das Skript behandelt null als 0.
Dann ausführen:
node scripts/heat-score-calc.mjs --file signals.json
Oder per Pipe:
echo '{"companies":[...]}' | node scripts/heat-score-calc.mjs
Rückgabe
Das Skript gibt JSON mit Ergebnissen pro Unternehmen aus:
{
"generated_at": "2026-05-29T...",
"company_count": 3,
"companies": [
{
"name": "Vercel",
"heat_score": 89,
"level": "High",
"dimensions": {
"authority": { "score": 25, "max": 25, "breakdown": {...} },
"shipping": { "score": 25, "max": 25, "breakdown": {...} },
"social": { "score": 17, "max": 25, "breakdown": {...} },
"growth": { "score": 22, "max": 25, "breakdown": {...} }
},
"alerts": [...]
}
]
}
Jedes Unternehmen enthält:
heat_score– Gesamtscore 0-100level– Hoch (60+), Mittel (30-59), Niedrig (1-29), Inaktiv (0)dimensions– Score pro Dimension mit Maximum und detaillierter Aufschlüsselungalerts– automatisch erkannte bemerkenswerte Signale
Bewertungsregeln (im Skript implementiert)
Dies sind die Formeln, die das Skript anwendet. Sie sind hier zur Transparenz dokumentiert:
| Dimension | Signale | Max |
|---|---|---|
| Autorität | GitHub-Sterne (min(15, sterne/1000*3)), Forks (min(5, forks/200*2)), PH-Stimmen (min(5, stimmen/100*5)) | 25 |
| Shipping | Commits/Woche (min(10, commits*2)), Releases/Monat (5 falls >0), aktiv-Flag (5), Aktualität (5 falls <7d, 3 falls <30d) | 25 |
| Social | Tweets (5), Erwähnungen (5), Reddit-Beiträge (3) + Score (2), HN-Stories (4) + Punkte (3), YouTube (3) | 25 |
| Wachstum | Jobs (min(10, jobs*3)), Abteilungsvielfalt (min(5, dept_count*2)), KI-Stimmung (5), KI-Traktion (5) | 25 |
- Jede Dimension ist auf 25 begrenzt. Fehlende Signale geben 0. Niemals Daten schätzen.
- Vollständige Methodik und Randfälle in
references/heat-score-methodology.md.
Schritt 6: KI-Executive-Briefing
Für jedes Unternehmen mit einem Score über 0 (d.h. jedes Signal erkannt) ein KI-Executive-Briefing mit den gesammelten Daten erstellen.
Das Briefing muss Folgendes enthalten:
**Executive Brief: [Firmenname]**
**Kontext:** 1-2 Sätze, was sie tun und ihre Marktposition
**Heat Score:** [Score]/100 — [Aktivitätslevel]
**Aktuelle Aktivität:**
- Produkt: Wichtige Produkt- oder Launch-Signale
- Einstellungen: Einstellungsstatus, Abteilungen, bemerkenswerte Rollen
- Community: Stimmungszusammenfassung von Reddit/HN/Twitter
**Bedrohungsbewertung:**
- Wettbewerbsbedrohungslevel: [Niedrig / Mittel / Hoch]
- Begründung: 2-3 Sätze zur Begründung
**Schlüsselsignal (wichtigste Erkenntnis):**
Ein Satz zum wichtigsten Ereignis bei diesem Unternehmen.
**Datenvertrauen:**
Welche Kanäle gute Daten hatten vs. was fehlte.
Regeln:
- Jede Behauptung im Briefing muss auf gesammelte Daten zurückgehen
- Abschnitt "Datenvertrauen" ist Pflicht – ehrlich zu Lücken sein
- Bedrohungsbewertung sollte im Vergleich zu den anderen Unternehmen im Radar erfolgen, nicht im luftleeren Raum
- Jedes Briefing unter 250 Wörtern halten
Schritt 7: Radarbericht zusammenstellen und ausgeben
Alles in das strukturierte Radarbericht-Format kompilieren. Die exakte Ausgabestruktur aus references/radar-report-template.md verwenden.
Der Bericht sollte enthalten:
- Executive Summary – Zusammenfassung der wichtigsten Ergebnisse mit Rangliste der Unternehmen
- Heat Score-Rangliste – Rangliste aller Unternehmen
- Tiefgehende Analysen pro Unternehmen – Jedes Unternehmen mit vollständigem Profil, Signal-Daten, Score-Aufschlüsselung und KI-Briefing
- Signal-Alarme – Bemerkenswerte erkannte Ereignisse (Einstellungsschübe, virale Momente, Launches)
- Datenqualitätshinweise – Welche Kanäle Daten hatten, welche fehlten
Ausgabe im Markdown-Format, bereit zum Kopieren in Slack, Notion, Google Docs oder E-Mail.
Schritt 8: Optional – Wiederkehrenden Radar einrichten
Falls der Benutzer eine fortlaufende Überwachung wünscht:
- Die Unternehmensliste und API-Konfiguration speichern
- Einen Cron-Zeitplan einrichten (GitHub Actions oder System-Cron)
- Jeder Durchlauf erzeugt einen aktualisierten Bericht
- Alarme für Score-Änderungen konfigurieren (z.B. "Alarm, wenn ein Unternehmen um 20+ Punkte steigt")
Dieser Skill ist ein Orchestrator – jeder Durchlauf führt die vollständige Pipeline frisch aus.