Ein Claude Skill, der montags die Einstellungsaktivität aus dem ATS — Ashby, Greenhouse oder Lever — abruft, es gegen den Snapshot des letzten Montags vergleicht, einen deterministischen Funnel-Anomalie-Durchgang ausführt, Source-Channel-ROI einbezieht, wenn Budgetdaten bereitgestellt werden, und einen einseitigen Digest für den Head of Talent produziert. Der Digest nennt die drei höchst-prioritären Funnel-Anomalien, die Top-Rollen, aufgeschlüsselt nach per-Stage-Gesundheit, und eine einzige empfohlene Bitte für das Leadership-Team diese Woche. Ersetzt die Freitagnachmittags-Recruiting-Status-E-Mail, die niemand gerne schreibt oder liest, und vermeidet dabei bewusst den Rep-Leaderboard-Fehlermodus, in den Ops-Digests gleiten, wenn niemand dagegen schützt.
Wann verwenden
Ihre Recruiting-Org führt einen wöchentlichen Leadership-Rhythmus durch — Montag-Digest, Freitag-Recap oder ein äquivalenter fester Slot. Der Skill ist für den wiederkehrenden Fall gebaut; einmalige Executive-Snapshots sind den Setup nicht wert.
Sie können jeden Montag einen frischen ATS-Snapshot produzieren. CSV-Exporte aus Ashby, Greenhouse oder Lever sind gut; der Skill vergleicht strukturierte Zeilen, er benötigt keine API-Integration.
Sie haben mindestens 6 Wochen an vorherigen Snapshots gesammelt. Der Funnel-Anomalie-Schwellenwert verwendet einen nachgelagerten 6-Wochen-Mittelwert pro Rolle + Stage; unter 6 Wochen unterdrückt der Skill Anomalie-Flags statt bei kleinen Stichproben zu feuern.
Ein Recruiter, ein Recruiting-Ops-Inhaber oder der Head of Talent überprüft jeden Digest, bevor er irgendwohin geht. Der Skill schreibt digest.md auf die Festplatte und stoppt.
Ihre Rollenpriorität-Liste und Stage-SLAs sind aufgeschrieben (oder Sie sind bereit, sie einmal aufzuschreiben). Das references/2-role-priority-list-template.md des Bundles zeigt die Form; wenn Sie es nicht ausfüllen können, fällt der Skill auf alphabetisch zurück, was jede Woche falsch ist.
Wann NICHT verwenden
Auto-Veröffentlichung ohne Recruiter-Review. Der Skill schreibt eine Markdown-Datei. Es ist keine Slack-Post- oder E-Mail-Sende-Aktion irgendwo im Bundle definiert, und eine hinzuzufügen ist eine bewusste Scope-Erweiterung. Sensibler Inhalt — privilegierte Executive-Suchen, Ersatz-von-aktuellem-Mitarbeiter-Suchen, laufende Performance-Fälle — benötigt eine menschliche Lektüre, bevor er in einen Leadership-Kanal geht. Das Überspringen produziert innerhalb von vier Wochen organisatorisches Drama.
Kundenseitige Berichte. Pipeline-Metriken, Kandidatenzahlen und Stagnations-Rolle-Diagnosen sind intern. Board-Packs, die Recruiting-Zahlen benötigen, sollten ein separat erstellter, sanitisierter Pull sein; leiten Sie den Digest nicht in etwas weiter, das das People-Team-Slack verlässt.
Individuelle Rep-Performance-Reviews. Der Skill aggregiert nach Rolle, Funnel-Stage und Source-Channel. Er entfernt bewusst individuelle Recruiter- und Sourcer-Namen aus dem LLM-Kontext (siehe den Bias-Screening-Durchgang in apps/web/public/artifacts/weekly-recruiting-digest-skill/SKILL.md, Schritt 5). Pipeline-Gesundheit mit individueller Performance zu vermischen ist, wie ein Ops-Digest zu einem Backchannel-Performance-Review-Tool wird, das die meisten Betriebsräte und mehrere US-Staatsbeschäftigungsgesetze als automatisierte Arbeitnehmerbewertung behandeln.
Rollen mit unter 6 Wochen Pipeline-Geschichte. Anomalie-Erkennung benötigt eine nachgelagerte Mittelwert-Baseline; bei einer brandneuen Rolle berichtet der Digest den Zustand ohne Flags. Verwenden Sie die per-Rollen-Aufschlüsselung für diese, ignorieren Sie aber den leeren Anomalie-Slot.
Ersetzen der Recruiter-Coordinator-Rolle. Der Recruiting Coordinator macht Scheduling, Kandidatenkommunikation, Panel-Logistik und die menschlichen-Urteil-Teile des Digests. Der Skill übernimmt den Synthese-Schritt, nicht den Koordinations-Schritt.
Einrichtung
Bundle ablegen. Kopieren Sie apps/web/public/artifacts/weekly-recruiting-digest-skill/SKILL.md plus das references/-Verzeichnis in Ihr Claude Code Skills-Verzeichnis oder claude.ai-Custom-Skills-Setup. Der Skill heißt weekly-recruiting-digest.
Snapshot-Export planen. Konfigurieren Sie Ihren ATS, um einen wöchentlichen Export in einen bekannten Pfad abzulegen — jeden Sonntagnacht für einen Montagsdigest funktioniert für die meisten Teams. Die Schema-Spalten, die der Skill erwartet, sind in SKILL.md unter „Inputs” aufgeführt; fehlende Spalten stoppen den Lauf mit einem Schema-Fehler, anstatt still zu degradieren.
Rollen-Prioritätsliste ausfüllen. Kopieren Sie references/2-role-priority-list-template.md in Ihr eigenes Repo und ersetzen Sie die Beispielzeilen durch Ihre tatsächlichen offenen Rollen. Setzen Sie priority, target_time_to_fill_days, stage_slas_days und confidentiality pro Rolle. Der Recruiting-Ops-Inhaber bearbeitet dies wöchentlich; der Skill erfasst seinen SHA-256 in den Lauf-Metadaten, sodass wöchentliche Diffs im Retro sichtbar sind.
Optional: Source-Channel-Daten hinzufügen. Wenn Sie den Source-ROI-Abschnitt wollen, legen Sie die Channel-CSV gemäß dem Schema in references/3-source-channel-roi-definitions.md ab. Wenn nicht vorhanden, wird der Abschnitt weggelassen, nicht fabriziert. Dieselbe Definitionsdatei korrigiert die Mathematik für cost_per_qualified_applicant und qualified_rate, sodass WoW-Vergleiche ehrlich bleiben, wenn das Ausgabenreporting über Wochen aufholt.
Digest-Format kalibrieren. Bearbeiten Sie references/1-digest-format.md, um den Publikumsvorlieben Ihres Head of Talent zu entsprechen — Status-Vokabular (RAG vs. On-track / At risk / Blocked), Anomalie-Erklärungstiefe und die Konvention der empfohlenen Bitte-Formulierung. Die strukturelle Abschnittsreihenfolge und Spaltenüberschriften ändern sich nicht; nur die In-Vorlage-Prosa.
Trockendurchlauf mit zwei vorherigen Snapshots. Wählen Sie einen Montag von vor zwei Wochen plus den Montag davor, führen Sie den Skill aus und vergleichen Sie seinen Digest mit dem, den Ihr Team tatsächlich in dieser Woche verteilt hat. Die Numerik sollte reproduzierbar sein; die narrative Interpretation muss möglicherweise nicht übereinstimmen — passen Sie die Publikumspräferenz-Notizen an, wenn es driftet.
Was der Skill tatsächlich tut
Sechs Schritte, in Reihenfolge. Schritte 1-3 sind deterministische Vergleiche und Schwellenwertprüfungen; nur Schritt 6 verwendet das LLM für narrative Synthese. Die Reihenfolge ist bewusst — ein Modell frei über den rohen Pipeline-Zustand zu lassen, produziert einen Digest, der gut liest und falsch darüber ist, welche Zahlen sich bewegt haben.
Snapshots validieren und Prioritätsliste laden. Schema-Übereinstimmung zwischen aktuellen und vorherigen Snapshots bestätigen. Bei einer umbenannten Spalte stoppen, anstatt still zu remappen — stilles Remap ist, wie Stage-Konversionszahlen in einer Woche ohne echten Grund um 30% bewegen.
Per-Rollen-Pipeline-Gesundheits-Diff. Für jede offene Rolle: Netto-Pipeline-Änderung pro Stage berechnen, dieswöchige Konversion vs. nachgelagerter Mittelwert, Zeit-in-Stage gegen Rollen-SLA gemarkiert, Tage-offen vs. Ziel-Time-to-Fill. Das ist Arithmetik, kein LLM. Die Wahl, pro Rolle statt org-weit zu beleuchten, ist bewusst: Eine „Engineering-Funnel-Konversion ist 22%” verbirgt die Tatsache, dass zwei Senior-Backend-Rollen bei 8% sind, während drei Junior-Rollen bei 35% sind, was die handlungsfähige Form ist.
Funnel-Anomalie-Erkennung. Eine Stage als anomal flaggen, wenn die Konversion mehr als 2 Standardabweichungen vom nachgelagerten 6-Wochen-Mittelwert abweicht, wenn mehr als 30% der Stage-Kandidaten die SLA überschreiten, oder wenn die Top-of-Funnel-Tiefe bei einer kritischen Rolle mehr als 40% WoW sinkt. Auf 3 Anomalien pro Digest begrenzen; mehr macht den Digest zu einer Watch-Liste, die niemand liest. Der 2-SD-Schwellenwert statt eines flachen Prozentsatzes verhindert, dass der Skill bei normalem Kleinproben-Rauschen bei niedrigvolumigen Rollen feuert. Siehe Recruiting-Funnel-Metriken für die zugrunde liegenden Konversionsdefinitionen.
Source-Channel-ROI (nur wenn Daten bereitgestellt wurden). Cost-per-qualified-applicant und qualified-rate pro Channel mit den festen Definitionen in references/3-source-channel-roi-definitions.md berechnen. Jeden Channel flaggen, dessen Verhältnis sich um mehr als 25% bewegt hat, für den Recruiting-Ops-Inhaber, um die Attribution zu verifizieren, bevor gesendet wird. Der Punkt fester Definitionen ist Reproduzierbarkeit — Last-Touch-Zahlen bewegen sich, wenn ATS-Source-Werte umbenannt werden, und der Digest darf eine Konfigurationsänderung nicht als echtes Budget-Signal präsentieren.
Bias-Screening-Durchgang. Individuelle Recruiter-, Sourcer- und Hiring-Manager-Namen aus dem LLM-Kontext-Fenster vor Schritt 6 entfernen. Per-recruiter_id-Aggregationen existieren nur als Last-vs-Kapazitätsprüfungen (der Recruiter dieser Rolle hält 14 Reqs, Ziel ist 8), nicht als inter-recruiter-Vergleiche. Das Entfernen von Namen aus dem Kontext ist das, was zuverlässig individuelles-Rep-Ranking aus der Ausgabe fernhält; Prompt-Anweisungen zu „keine Einzelpersonen ranken” sind allein nicht zuverlässig genug.
Digest entwerfen. LLM-Schritt. Die deterministischen Ausgaben plus die Publikumspräferenzen nehmen und gemäß dem Format in references/1-digest-format.md entwerfen. Die Erzählung darf einen Konversionssinkfall interpretieren („Panel-Slot war zwei Wochen nicht verfügbar”) nur wenn die Interpretation in den Eingabe-Notizen ist; andernfalls lautet die Zeile „wahrscheinliche Ursache nicht in Pipeline-Daten — Recruiter zur Bestätigung”. Mit einem einzigen „Empfohlene Bitte” enden, das Publikum, Aktion und Rolle(n) nennt — oder dem wörtlichen „Kein Leadership-Ask diese Woche — Pipeline liegt im Soll”, wenn die Daten keine rechtfertigen. Niemals einen Ask erfinden, um den Slot zu füllen.
Das vollständige Schema für ATS-Eingaben, das wörtliche Ausgabeformat und die Bias-Screening-Begründung befinden sich alle in apps/web/public/artifacts/weekly-recruiting-digest-skill/SKILL.md.
Kostenrealität
Pro wöchentlichem Digest, mit Claude Sonnet 4.5:
LLM-Token — typischerweise 25-45k Eingabe-Token (zwei Snapshots, zusammengefasst durch die deterministischen Schritte + Rollenpriorität-Liste + Source-CSV + Skill-Anweisungen) und 2-4k Ausgabe-Token (der Digest selbst plus der Anhang). Bei Sonnet 4.5 landet das bei ca. 0,10-0,20 $ pro Digest. Ein volles Jahr wöchentlicher Digests ist 5-10 $ an Modellkosten. Der Modellausgaben ist Rundungsfehler gegen die eingesparte Zeit.
Recruiting-Ops-Zeit — der Gewinn liegt hier, nicht in den Modellkosten. Einen strukturierten wöchentlichen Digest von Grund auf manuell zu schreiben — den ATS ziehen, per-Rollen-Konversion berechnen, nach SLA-Verstößen suchen, die Tabelle formatieren, die empfohlene Bitte entwerfen, in Slack posten — sind 90-120 Minuten für einen Recruiting-Ops-Manager, der die Daten gut kennt, mehr für jemanden, der neuer ist. Den Entwurf des Skills zu überprüfen und zu bearbeiten: 15-25 Minuten. Das ist ca. 60-90 Minuten zurück pro Woche, oder ein voller Ops-Headcount-Tag pro Quartal.
Head-of-Talent-Zeit — der zweite Gewinn. Ein konsistenter, strukturierter Digest in derselben Form jeden Montag wird in 4-6 Minuten gelesen; eine freiformige wöchentliche Recap-E-Mail läuft 12-18 Minuten (oder, häufiger, wird übersprungen). Die empfohlene-Bitte-Zeile ist der Teil, auf den der Head of Talent handelt; der Rest ist Referenz für die Woche.
Einrichtungszeit — 30 Minuten, um das Bundle abzulegen und die Rollenpriorität-Liste auszufüllen, wenn die Prioritätsliste bereits in irgendeiner Form existiert (eine Notion-Seite, eine Tabelle). Näher an 2 Stunden, wenn die Prioritätsliste netto-neu ist und das Team sich darauf einigen muss, welche Rollen critical vs. high sind. Die Ausrichtung ist der schwierigere Teil; der Skill ist der einfachere Teil.
Snapshot-Speicher — trivial. Ein wöchentlicher CSV-Export aus Ashby oder Greenhouse ist in der Größenordnung von 1-5 MB. Ein Jahr Snapshots ist unter 250 MB; halten Sie sie in einem privaten S3-Bucket oder einem Repo-privaten Ordner.
Erfolgsmetrik
Verfolgen Sie drei Zahlen pro Quartal in Ihrem Team-Ops-Dashboard:
Digest-Lesequote. Welcher Anteil der benannten Empfänger öffnet den Digest innerhalb von 24 Stunden nach dem Versand. Im E-Mail-Tool oder durch Hinzufügen eines Ein-Pixel-Beacons verfolgen. Unter 70% bedeutet, dass der Digest zu lang, zu generisch ist oder zur falschen Zeit ankommt — Format korrigieren, bevor Abschnitte hinzugefügt werden.
Empfohlene-Bitte-Trefferquote. Welcher Anteil der wöchentlichen empfohlenen Bitten wird vom Leadership-Team innerhalb derselben Woche gehandelt. Unter 50% bedeutet, dass die Bitten vage sind (die Konvention der empfohlenen Bitte in references/1-digest-format.md umschreiben) oder zu klein, um an die Oberfläche zu kommen (dem Skill erlauben, „kein Ask diese Woche” häufiger zu schreiben).
Zeit-von-Anomalie-Flag-bis-Behebung. Wenn eine Funnel-Anomalie im Digest erscheint, wie viele Tage bis die zugrunde liegende Konversion oder SLA sich erholt. Die Durchsatzmetrik, die der Digest bewegen soll. Diese über 6-8 Wochen statt Woche-für-Woche beobachten.
vs. Alternativen
vs. Ashby Analytics-Dashboards — Ashbys Reporting ist hervorragend für den Recruiting-Ops-Inhaber, der live filtern und pivotieren möchte. Die Lücke ist die Synthese-Schicht: Der Head of Talent möchte kein Dashboard, er möchte eine Seite, die sagt „diese drei Dinge sind passiert, hier ist der eine Ask.” Wählen Sie Ashby Analytics, wenn Ihr Publikum das Recruiting-Team selbst ist; wählen Sie diesen Skill, wenn Ihr Publikum das Exec-Leadership ist und Sie die Synthese jede Woche für sie geschrieben haben möchten. Die beiden sind komplementär, nicht konkurrierend.
vs. Datapeople — Datapeople ist stark bei Job-Description-Bias-Scoring und Inbound-Funnel-Analytics. Anderes Problem. Verwenden Sie Datapeople upstream des Funnels (Jobangebote verbessern, Inbound-Disparitäten aufzeigen); verwenden Sie diesen Skill downstream (was über die offenen Rollen bereits passiert ist, synthetisieren). Datapeople zu kaufen beseitigt nicht den Bedarf an dem wöchentlichen Digest.
vs. einem manuell vom Recruiter-Coordinator geschriebenen Digest. Die Recruiter-Coordinator-Option funktioniert, wenn eine Person die Digest-Urheberschaft für unter 8 Wochen besitzt, bevor sie zur nächsten Sache übergeht. Sie scheitert, wenn das Format Woche für Woche driftet (verschiedene Abschnitte jeden Montag) oder wenn der Autor im Urlaub ist. Der Skill erzwingt Format-Konsistenz durch Struktur und entfernt den „dieser-Wochen-Autor-war-müde”-Fehlermodus. Koppeln Sie den Skill mit dem Recruiting Coordinator, der das zugrunde liegende Scheduling und SLA-Enforcement durchführt — er bleibt der Operator; der Skill ist der Synthesizer.
vs. einem hausgemachten SQL + Python-Skript gegen den ATS-Export. Gleiche Numerik, niedrigere Einrichtungskosten nur wenn Sie bereits eine Warehouse-Pipeline vom ATS haben. Die meisten Teams haben das nicht. Der Skill liefert den Bias-Screening-Durchgang, die festen Source-Attribution-Definitionen und die Konvention der empfohlenen Bitte; diese in-house neu aufzubauen ist weitere 2-3 Wochen Arbeit ohne klaren Payoff.
Fallstricke
Einzelne Recruiter oder Sourcer ranken — geschützt durch den Bias-Screening-Durchgang in Schritt 5, der individuelle Namen aus dem LLM-Kontext entfernt. Per-recruiter_id-Aggregationen existieren nur als Last-vs-Kapazitätsprüfungen. Das Ausgabeformat hat keinen Recruiter-Leaderboard-Abschnitt, und einen hinzuzufügen ist eine bewusste Scope-Erweiterung, die eine separate Skill-Einwilligungshaltung haben sollte (siehe auch Diversity Recruiting für warum per-individuelle Rankings mehr org-weites Drama als Einsicht produzieren).
Source-Attribution-Drift — geschützt durch die festen Definitionen in references/3-source-channel-roi-definitions.md und den nachgelagerten-4-Wochen-Mittelwert-Vergleich statt WoW. Jeder Channel, dessen Cost-per-qualified-applicant sich um mehr als 25% bewegt, wird für den Recruiting-Ops-Inhaber geflaggt, um zu verifizieren, bevor der Digest rausgeht. Die Verifikations-Checkliste stellt die drei Fragen, die ATS-Source-Picker-Neukonfigurationen und verzögertes Rechnungsreporting abfangen, bevor sie als echte Verschiebungen präsentiert werden.
False-Positive-Anomalie-Flags — geschützt durch die Unter-6-Wochen-Geschichte-Unterdrückung und den 2-Standardabweichungs-Schwellenwert statt eines flachen Prozentsatzes. Das harte Cap von 3 Anomalien pro Digest wird erzwungen, auch wenn mehr technisch bestehen würden, auf der Grundlage, dass drei die Obergrenze ist, die das Leadership-Team pro Woche handeln kann. Darüber hinaus wird der Digest überhaupt nicht mehr gehandelt.
Veraltete ATS-Daten — geschützt durch Schritt 1’s Prüfung, dass der aktuelle Snapshot innerhalb der letzten 24 Stunden datiert ist. Ein Digest, der auf drei-Tage-alten Daten läuft, widerspricht sich gegen jeden Exec, der gestern den ATS geprüft hat, und erodiert das Vertrauen schneller als das Überspringen des Digests vollständig.
Privilegierte oder sensible Rollen-Exposition — geschützt durch den confidentiality: restricted-Flag in references/2-role-priority-list-template.md. Eingeschränkte Rollen werden nur nach Team und Stage zusammengefasst — kein Rollentitel, keine Kandidatenzahl, wenn die Pipeline-Tiefe niedrig ist, kein Hiring-Manager-Name. Der Head of Talent entscheidet pro Lauf, ob eine eingeschränkte Rolle in die breitere Leadership-Version geht.
Auto-Send-Drift — geschützt durch das Fehlen jeglicher Send-Aktion im Skill-Bundle. Der Skill schreibt digest.md auf die Festplatte und beendet. Der Recruiting-Ops-Inhaber fügt nach einem abschließenden Lesen in den Kanal seiner Wahl ein. Das Verdrahten einer Auto-Send-Aktion an den Skill ist die häufigste Feature-Anfrage und der zuverlässigste Weg, sensible Inhalte vor dem falschen Publikum zu landen.
Stack
Das Skill-Bundle befindet sich unter apps/web/public/artifacts/weekly-recruiting-digest-skill/ und enthält:
SKILL.md — die Skill-Definition (Wann-zu-aufrufen, Eingaben, Sechs-Schritt-Methode, Ausgabeformat, Fallstricke)
references/1-digest-format.md — festes strukturelles Format plus bearbeitbare Publikumspräferenzen
references/2-role-priority-list-template.md — ausfüllbare per-Rollen-Prioritätsliste mit Stage-SLAs und Vertraulichkeits-Flags
references/3-source-channel-roi-definitions.md — feste Mathematik für Cost-per-qualified-applicant und qualified-rate plus die Attribution-Drift-Verifikations-Checkliste
Tools, die der Workflow voraussetzt: Claude (das Modell) und Ashby, Greenhouse oder Lever (das ATS). Koppeln mit dem Recruiting Coordinator, der Scheduling und SLA-Enforcement besitzt, und mit dem Teammitglied, das den wöchentlichen Export-Job besitzt. Siehe Time-to-Fill vs. Time-to-Hire für die Metrik-Definitionen, die die per-Rollen-Aufschlüsselung annimmt.
---
name: weekly-recruiting-digest
description: Pull the weekend's ATS pipeline state from Ashby / Greenhouse / Lever, diff it against last Monday's snapshot, and produce a one-page Monday-morning digest for the Head of Talent. Surfaces wins, funnel anomalies, source-channel ROI, and the single highest-value ask of the leadership team that week. Always stops at a recruiter-review gate before any send.
---
# Weekly recruiting digest
## When to invoke
Use this skill on Monday morning (or whenever the recruiting leader's weekly cadence runs) when the Head of Talent needs a one-page digest that synthesises last week's hiring activity and surfaces the one or two things the leadership team should actually do this week. Take a fresh ATS pipeline export, the prior week's snapshot, the priority list of open roles, and (optionally) sourcing-channel performance as input. Produce a Markdown digest plus a per-role drill-down appendix.
Do NOT invoke this skill for:
- **Auto-publishing without recruiter review.** The skill writes `digest.md` to disk and stops. There is no "send" or "post to Slack" action defined anywhere in the skill. The Head of Talent or the recruiting-ops owner reads the draft, edits any audience-sensitive content (privileged exec searches, replacement searches, in-flight PIP cases), and sends. AI-drafted-and-sent without review produces organisational drama within four weeks.
- **Customer-facing reports.** This is an internal leadership digest. Recruiting funnel metrics, candidate names, and stalled-role diagnoses are not for external partners, board decks without recruiter sign-off, or anything that leaves the people-team Slack. If a board pack needs recruiting numbers, run a separate, sanitised pull — do not forward this digest.
- **Individual rep-performance reviews.** The skill aggregates by role, funnel stage, and source-channel. It deliberately does not produce a per-recruiter ranking or a per-sourcer leaderboard. Conflating pipeline health with individual performance is how an ops digest turns into a backchannel performance-review tool, which it is not designed for and which most works councils and US state employment laws treat as automated worker evaluation.
## Inputs
- Required: `ats_snapshot_current` — path to a CSV or JSON export from the ATS dated within the last 24 hours. Must contain at minimum: `requisition_id`, `role_title`, `team`, `stage`, `candidate_id` (hashed or pseudonymous), `stage_entered_at`, `last_activity_at`, `source_channel`, `recruiter_id`, `hiring_manager_id`, `requisition_opened_at`, `target_start_date`.
- Required: `ats_snapshot_prior` — path to the equivalent export from the prior week's run. The skill diffs current against prior to identify what materially changed; without a prior snapshot the digest degrades to a static state-of-pipeline report and the "anomalies" section refuses to render.
- Required: `role_priority_list` — path to the file under `references/` that ranks open roles by business priority. The skill uses this to decide which roles get a per-role drill-down (top N) vs which get rolled up into a "remaining roles" summary line. Without a priority list the skill defaults to alphabetical, which is wrong every week.
- Optional: `source_channel_performance` — path to a CSV with `channel`, `cost_last_week`, `applications`, `qualified`, `hired_ytd` for source-channel ROI. If absent, the source-channel section is omitted rather than fabricated.
- Optional: `n_drilldown` — number of roles to drill down on, default 5, hard max 12. Above 12 the digest stops being one-page and the recruiting leader stops reading it.
## Reference files
Always read these from `references/` before generating the digest. Without them the digest is structurally inconsistent and the source-channel section conflates terms.
- `references/1-digest-format.md` — the literal Markdown layout the skill emits, including section order, heading levels, and the "Recommended ask" wording convention. Replace nothing structural; edit only the in-template prose around the Head of Talent's preferences.
- `references/2-role-priority-list-template.md` — fillable template the recruiting-ops owner edits weekly. Drives which roles get a drill-down and which get summarised.
- `references/3-source-channel-roi-definitions.md` — fixed definitions of `cost_per_qualified_applicant`, `qualified_rate`, and `hire_per_dollar` so week-over-week comparisons stay honest. Source-attribution drift is the most common reason last-touch numbers move when nothing real changed.
## Method
Run these six steps in order. Steps 1-3 are deterministic diffs and threshold checks; only step 4 uses the LLM for narrative synthesis. The order is deliberate — letting the model freelance over a raw pipeline state produces a digest that reads well and is wrong about which numbers actually moved.
### 1. Validate snapshots and load priority list
Open both ATS snapshots. Confirm the schema matches (same columns, same enum values for `stage` and `source_channel`). If a column was renamed between exports — common when an ATS admin reconfigures stages — halt and surface the diff to the user. Do not silently remap columns; that is how stage-conversion numbers move 30% in a week for no real reason.
Load `role_priority_list`. Validate that every role marked `priority: critical` exists in `ats_snapshot_current`. If a critical role has been closed or paused since the priority list was last edited, surface that for the recruiting-ops owner to update.
### 2. Per-role pipeline-health diff
For every open role in the current snapshot, compute against the prior snapshot:
- Net change in candidates per stage (entered − exited).
- Stage-conversion rate (this week's exits-to-next-stage divided by this week's entries-to-stage).
- Time-in-current-stage for every candidate, flagged if it exceeds the role's stage SLA (loaded from `role_priority_list`).
- Days-open versus the role's target time-to-fill.
These are arithmetic, not LLM. The deterministic step exists so the numbers in the digest are reproducible — re-running the skill on the same two snapshots produces identical numerics. The choice to drill down per role rather than aggregate org-wide is intentional: an aggregate "engineering funnel conversion is 22%" hides the fact that two senior backend roles are at 8% and three junior roles are at 35%, which is the actionable shape.
### 3. Funnel-anomaly detection
For each role in the top-N drill-down list, flag a stage as anomalous if any of the following hold:
- Stage-conversion rate this week is more than 2 standard deviations off the trailing 6-week mean for that role + stage. Below 6 weeks of history, suppress the flag and write "insufficient history" — do not flag on small samples, that is the false-positive mode.
- More than 30% of candidates in a stage exceed the stage SLA.
- Net pipeline depth at the top of funnel dropped by more than 40% week-over-week and the role is `priority: critical`.
Cap the anomaly list at 3 per digest. If more than 3 trigger, rank by priority weight from the role-priority list and drop the rest into the appendix. Three anomalies is the upper bound for what the leadership team can act on in a week; more turns the digest into a watch-list that nobody reads.
### 4. Source-channel ROI (optional)
Only run if `source_channel_performance` was provided. Compute, using the definitions in `references/3-source-channel-roi-definitions.md`:
- `cost_per_qualified_applicant` per channel, this week vs the trailing 4-week mean.
- `qualified_rate` per channel, this week vs trailing 4-week mean.
- Channels where `cost_per_qualified_applicant` moved more than 25% week-over-week, flagged for the recruiting-ops owner to verify attribution before the digest goes out.
Why ROI per channel rather than just spend: the spend number alone does not tell the Head of Talent whether to renew the LinkedIn slot or shift budget to the niche board. ROI per qualified applicant does, and that is the buying decision the digest exists to inform.
### 5. Bias-screening pass
Before drafting the narrative, scan the inputs for any text the LLM might use that names an individual recruiter, sourcer, or hiring manager in a way that ranks or evaluates them. Strip those names from the context window passed into step 6. The skill aggregates candidate volumes by `recruiter_id` only when computing per-role load (e.g. "this role's recruiter holds 14 reqs, target is 8"), and even then the output uses load thresholds against capacity, not inter-recruiter comparison.
The reason this is a separate explicit pass rather than a prompt instruction: prompt instructions to "do not rank individuals" are unreliable, especially when the input data implicitly ranks them (e.g. fill rates per recruiter). Removing the names from the context is what reliably keeps individual-rep-ranking out of the output.
### 6. Draft the digest
LLM step. Take the deterministic outputs from steps 2-4 and the audience preferences from `references/1-digest-format.md` and draft the digest. The narrative may interpret the numbers ("conversion dropped because the panel interview slot was unavailable for two weeks") only if that interpretation is in the input notes; otherwise write "likely cause not in pipeline data — recruiter to confirm".
End with a single "Recommended ask" — one sentence naming the one thing the Head of Talent should ask the leadership team to do this week. If the data does not warrant an ask, write "No leadership ask this week — pipeline is on track." Never invent an ask to fill the slot.
## Output format
```markdown
# Recruiting digest — Week of <YYYY-MM-DD>
Generated: <ISO timestamp> · Snapshot: <prior date> → <current date> · Roles drilled: <N>
## Pipeline health by role
| Role | Stage | Open since | Target TTF | Pipeline (curr) | Pipeline (prior) | Conversion (this wk) | Status |
|---|---|---|---|---|---|---|---|
| Senior Backend Engineer | Onsite | 47d | 35d | 4 | 6 | 50% (avg 65%) | At risk |
| Director of Sales | Hiring manager review | 22d | 45d | 2 | 2 | n/a | On track |
| ... | ... | ... | ... | ... | ... | ... | ... |
## Top funnel anomalies (3)
1. **Senior Backend Engineer · Onsite → Offer.** Conversion this week
30% vs trailing 6-week mean 62% (2.4 sd off). Likely cause not in
pipeline data — recruiter to confirm before next digest.
2. **Account Executive (NYC) · Recruiter screen → Hiring manager.**
55% of candidates in stage exceed the 5-day SLA. Net pipeline
stable; bottleneck is review throughput.
3. **Senior PM · Top of funnel.** Pipeline depth dropped 48%
week-over-week on a critical role. Source-channel mix shifted
away from inbound; see source section.
## Source-channel performance (last week)
| Channel | Cost | Qualified | Cost / qualified | vs 4-wk mean |
|---|---|---|---|---|
| LinkedIn Jobs | $4,200 | 18 | $233 | +18% |
| Niche board (Hacker News Who's Hiring) | $0 | 7 | $0 | flat |
| Agency (firm A) | $12,000 | 3 | $4,000 | +180% (verify attribution) |
| Referrals | $1,500 | 11 | $136 | -22% |
## Recommended ask
Ask the engineering leadership team to free a 90-minute panel slot for
Senior Backend Engineer onsites this week. The conversion drop is
schedule-driven, not candidate-quality-driven.
## Appendix — remaining open roles
| Role | Status | Notes |
|---|---|---|
| ... | ... | ... |
```
## Watch-outs
- **Ranking individual recruiters or sourcers.** *Guard:* step 5 strips individual names from the context window before the LLM drafts. Per-`recruiter_id` aggregations exist only as load-vs-capacity checks, not as inter-recruiter comparisons. The output format has no "recruiter leaderboard" section and adding one is a deliberate scope expansion that should be a separate skill with separate consent posture.
- **Source-attribution drift.** *Guard:* the channel ROI step uses fixed definitions from `references/3-source-channel-roi-definitions.md` and flags any channel whose cost-per-qualified moved more than 25% for the recruiting-ops owner to verify attribution before the digest goes out. Last-touch attribution moves easily when an ATS admin reconfigures source values; the digest must not present a configuration change as a real budget signal.
- **False-positive anomaly flags.** *Guard:* step 3 suppresses anomaly flags when the role has fewer than 6 weeks of history for the trailing-mean calculation. The cap of 3 anomalies per digest is enforced even when more would technically pass the threshold, to avoid the watch-list-nobody-reads failure mode. The 2-standard- deviation threshold rather than a flat percentage is what stops the skill from flagging normal small-sample noise on low-volume roles.
- **Stale ATS data.** *Guard:* step 1 halts if the current snapshot is older than 24 hours. A digest run on three-day-old data contradicts itself against any executive who checked the ATS yesterday.
- **Privileged or sensitive role exposure.** *Guard:* the role priority list has a `confidentiality: restricted` flag per role. Roles with that flag are summarised by team and stage only — no role title, no candidate names, no hiring-manager name. The Head of Talent decides per run whether to include any of those roles in the version that goes to the broader leadership team.
- **Auto-send drift.** *Guard:* the skill defines no `send`, `post_to_slack`, or `email` action. It writes `digest.md` to disk and exits. The recruiting-ops owner pastes into the channel of choice after a final read.
# Digest format — TEMPLATE
> Replace the in-template prose around the Head of Talent's
> preferences. Do NOT change the section order, heading levels, or
> table column headers — downstream readers (hiring managers, exec
> assistants, the board pack author) skim by structure, not text.
## Section order (fixed)
1. Header (week, snapshot dates, roles drilled count)
2. Pipeline health by role (top-N table)
3. Top funnel anomalies (max 3, ranked)
4. Source-channel performance (omit if data not provided)
5. Recommended ask (single sentence, or explicit "no ask this week")
6. Appendix — remaining open roles (rolled up)
## Audience preference notes
The skill reads this section to tune narrative tone. Edit per Head of Talent. Examples:
- **Numerics-first vs narrative-first.** The default is numerics-first (table, then one-sentence interpretation). If your Head of Talent prefers narrative-first, flip the order inside each role row's drill-down — the section structure stays.
- **Status labels.** Default vocabulary is `On track / At risk / Blocked / Paused`. If your team uses RAG (Red / Amber / Green) or `Healthy / Watch / Escalate`, edit the vocabulary list below and the skill picks it up.
- **Anomaly explanation depth.** Default is one sentence per anomaly. If your Head of Talent wants the full numerical comparison inline rather than just the deviation, set `anomaly_detail: full` in the skill's run config.
## Status vocabulary
Replace with your team's labels. The skill maps to these:
- `On track` — pipeline depth at or above target, conversion within trailing-mean band, no SLA breaches.
- `At risk` — one of: pipeline depth 20-40% below target, conversion 1-2 sd off mean, 20-50% of stage exceeds SLA.
- `Blocked` — pipeline depth >40% below target, conversion >2 sd off mean, or >50% of stage exceeds SLA. Anomaly should also be in the top-3 anomalies section.
- `Paused` — requisition explicitly paused by hiring manager. Do not flag conversion drops on paused roles.
## "Recommended ask" wording convention
Single sentence. Names the audience (engineering leadership, the exec team, the CFO, etc.), the action (free a slot, approve a counter, unblock a panel), and the role(s) it applies to. Past tense and adjectives are forbidden. Examples:
- Good: "Ask the engineering leadership team to free a 90-minute panel slot for Senior Backend Engineer onsites this week."
- Good: "Ask the CFO to approve the counter on the Director of Product candidate by Wednesday — competing offer expires Friday."
- Bad: "We should think about how to improve our panel scheduling." (No audience, no action, vague.)
- Bad: "Engineering hiring is generally going well." (Not an ask.)
If the data does not warrant an ask, the literal text is:
> No leadership ask this week — pipeline is on track.
Never invent an ask to fill the slot. The credibility of the digest depends on the recommended-ask line being true when it appears.
## Confidentiality handling
Roles flagged `confidentiality: restricted` in the priority list are summarised in the appendix as one row per restricted role:
- Team only (no role title)
- Stage only (no candidate count if pipeline depth ≤ 3)
- No hiring-manager name
- No anomaly drill-down (the anomaly is rolled into "stage SLA breach on a restricted role" if it would otherwise have surfaced)
## Last edited
<YYYY-MM-DD> — bump on every change to status vocabulary, audience preferences, or section order.
# Role priority list — TEMPLATE
> Replace this template with your team's actual role priority list
> before each weekly run. The skill reads this file to decide which
> roles get a per-role drill-down vs which get rolled up into the
> appendix. Without it the skill defaults to alphabetical, which is
> wrong every week.
## How the skill uses this file
- **Top-N drill-down selection.** The skill drills down on the top N roles ranked by `priority` (critical first, then high, then medium). N defaults to 5; configurable up to 12 in the skill run config.
- **Stage SLA loading.** The per-stage SLAs in the role rows are what step 2 of the skill checks against when computing "time-in-stage exceeded SLA".
- **Confidentiality flagging.** Roles with `confidentiality: restricted` are summarised, not drilled, regardless of priority.
- **Critical-role validation.** Step 1 of the skill validates that every `priority: critical` role still exists in the current ATS snapshot, and surfaces any that have been closed or paused since this file was last edited.
## Per-role rows
Edit weekly. Drop closed roles. Add new opens. The skill captures this file's SHA-256 in its run output so weekly diffs are visible in retro.
```yaml
roles:
- requisition_id: REQ-2026-118
role_title: Senior Backend Engineer
team: Platform
priority: critical # critical | high | medium | low
target_time_to_fill_days: 35
target_start_date: 2026-06-15
confidentiality: standard # standard | restricted
stage_slas_days:
recruiter_screen: 3
hiring_manager_review: 5
technical_screen: 7
onsite: 10
offer: 5
notes: "Senior IC backfill; previous incumbent leaves 2026-05-20."
- requisition_id: REQ-2026-141
role_title: Director of Sales
team: Revenue
priority: critical
target_time_to_fill_days: 60
target_start_date: 2026-08-01
confidentiality: restricted # exec search; appendix-only summary
stage_slas_days:
recruiter_screen: 5
hiring_manager_review: 7
panel_round_1: 14
panel_round_2: 14
offer: 10
notes: "Replacement search. Limit visibility to Head of Talent + CEO."
- requisition_id: REQ-2026-203
role_title: Account Executive (NYC)
team: Revenue
priority: high
target_time_to_fill_days: 45
target_start_date: 2026-07-01
confidentiality: standard
stage_slas_days:
recruiter_screen: 3
hiring_manager_review: 5
hiring_manager_call: 5
panel: 10
offer: 5
notes: "Two NYC HQ openings on same panel; share scorecard."
- requisition_id: REQ-2026-219
role_title: Senior Product Manager
team: Product
priority: high
target_time_to_fill_days: 50
target_start_date: 2026-07-15
confidentiality: standard
stage_slas_days:
recruiter_screen: 3
hiring_manager_review: 5
portfolio_review: 7
panel: 10
offer: 5
notes: "B2B SaaS PM background required."
- requisition_id: REQ-2026-244
role_title: Customer Success Manager
team: Customer Success
priority: medium
target_time_to_fill_days: 40
target_start_date: 2026-08-15
confidentiality: standard
stage_slas_days:
recruiter_screen: 3
hiring_manager_review: 5
panel: 7
offer: 5
notes: "Backfill, not net new."
```
## Priority-level definitions
To keep priority assignment defensible week-to-week:
- **critical** — revenue-blocking, leadership-blocking, or regulatory-deadline-driven. Every critical role drills down even if the priority list overflows N.
- **high** — important to the quarter's plan but not blocking. Drills down only if the top-N slots are not all consumed by critical roles.
- **medium** — normal-priority backfills and growth roles. Appendix by default.
- **low** — exploratory or speculative reqs (talent pipelining, pre-funding hiring). Appendix only; never drilled.
## Last edited
<YYYY-MM-DD> — bump weekly. The skill warns if this file is older than 7 days, on the assumption that a stale priority list produces a digest pointed at the wrong roles.
# Source-channel ROI definitions — FIXED
> Do not change the math in this file without updating the skill
> simultaneously. Source-attribution drift — where last-week's
> numbers move because someone reconfigured the ATS source picker,
> not because spend or quality actually moved — is the most common
> reason recruiting leaders lose trust in source-channel reporting.
> The point of fixed definitions is reproducibility week-over-week.
## Inputs the skill expects
The optional `source_channel_performance` CSV must have these columns. Missing columns disable the source section rather than fabricate values.
| Column | Type | Definition |
|---|---|---|
| `channel` | string | Source channel name. Must match the `source_channel` enum in the ATS snapshots exactly. |
| `cost_last_week` | number (USD) | Cents-precise cost attributed to this channel for the prior 7-day window. Excludes recruiter salary. |
| `applications` | int | Count of applications received via this channel in the prior 7-day window. |
| `qualified` | int | Count of those applications that passed the recruiter screen (entered `hiring_manager_review` or later). |
| `hired_ytd` | int | Count of hires year-to-date attributable to this channel. Used for the trailing comparison only, not for week-over-week. |
## Definitions (fixed)
### `cost_per_qualified_applicant`
```
cost_per_qualified_applicant = cost_last_week / qualified
```
Use only when `qualified >= 3`. Below that threshold the ratio is noise; the skill writes "n/a (insufficient volume)" and suppresses the comparison line.
### `qualified_rate`
```
qualified_rate = qualified / applications
```
Use only when `applications >= 10`. Below that threshold same as above — write "n/a (insufficient volume)".
### `hire_per_dollar`
```
hire_per_dollar = hired_ytd / sum(cost_last_week, last_52_weeks)
```
This is the trailing-year rollup, computed only when the YTD cost history is available. Used for "is this channel worth renewing?" buy decisions, not for weekly movement.
## Trailing comparison window
All week-over-week percentages compare against the trailing 4-week mean of the same metric, NOT the single prior week. Single-week comparison is dominated by holiday weeks, payroll-funded boost weeks, and one-off events. The 4-week mean smooths those without losing a real shift.
```
delta_vs_mean_pct = (this_week_value − trailing_4wk_mean) / trailing_4wk_mean × 100
```
A channel is flagged for attribution verification when:
```
abs(delta_vs_mean_pct(cost_per_qualified_applicant)) > 25
```
The 25% threshold is what catches real budget shifts and ATS reconfiguration noise, without flagging normal week-to-week jitter. Below 25% the digest reports the number without a flag.
## Source-attribution drift — what the verification step checks
When a channel is flagged, the recruiting-ops owner is asked to confirm before the digest goes out:
1. **Did anyone reconfigure the ATS source picker this week?** If a value was renamed (e.g. "LinkedIn" became "LinkedIn Jobs" while "LinkedIn Recruiter" stayed the same), the apparent shift is a data artefact, not a real change.
2. **Did spend reporting catch up from a prior week?** Some agency invoices land in the wrong week and inflate one week's cost while deflating the next. The skill cannot detect this; the recruiting-ops owner must.
3. **Was there a one-off boost?** Conference sponsorship, paid InMail credit-burn, referral bonus campaign. One-off boosts should be annotated in the digest's notes line, not presented as a sustained shift.
## Channels the skill assumes exist
Edit per stack. The skill validates that the `channel` values in the CSV match this list and warns on any unknown channel.
```yaml
known_channels:
- linkedin_jobs
- linkedin_recruiter
- referrals
- inbound_career_page
- niche_board_hn_who_is_hiring
- niche_board_other
- agency_firm_a
- agency_firm_b
- sourcing_juicebox
- sourcing_hireez
- event_sponsorship
- other
```
## Last edited
<YYYY-MM-DD> — bump on every change to math, thresholds, or the known-channels list. The skill refuses to run if this file is older than 90 days, on the assumption that source-channel definitions need a quarterly review.