Client & Candidate Communication: Weekly Project Status Report: Generator & Distributor
Prompt: Weekly Project Status Report — Generator & Distributor (uses template from previous prompt)
Description: Pulls live Clockwork data for each active retained search, populates the saved template, generates a formatted PDF per project, and emails it to the client contacts. Runs weekly with no manual data entry.
Frequency: Weekly (suggested Friday afternoon or Monday morning)
Connectors: Clockwork Recruiting, Gmail / Outlook
Prompt: (copy/paste the prompt below into your chat in your LLM)
Generate and distribute the weekly project status reports for all my active retained searches.
Prerequisites: The template must exist at /Status Reports/templates/project-status-template.md. If not, stop and ask me to run that prompt first.
Session setup (do once, cache): Load business-rules and domain knowledge, resolve my identity via clockwork_get_current_user, and cache: firm users (Partner/Recruiter/Researcher/Admin) → userId → name; statuses → statusId → {name, category, rank}; note categories → categoryId → name.
Step 1 — Load the template.
Step 2 — Pull my active retained searches in one call: list_projects(user_id=<me>, status=active, project_type="Retained", include=lead,owner,client_company,closing_reason). Filter out isInternal = true.
Client visibility filter (confirm once before processing): "I'll include only stoplightStatus = green candidates and notes in each report. Keep red and none excluded, or override for specific projects?" Don't carry an override across projects without re-confirming.
For each project:
- get_project with ?include=lead,owner,client_company,project_type,closing_reason,placement → name (as <Company> \ <Project>), client, description, dates. If isConfidential = true, omit the client name and alert me before distribution.
- list_candidacies with include=person,status,overview_note,assessment_note,next_steps_note. Filter: green only; rank >= 100 only.
- get_candidacy_notes over the last 7 days with include=author. Filter: green notes independently.
- For movement language, use get_candidacy_status_history to cite concrete stage changes this week.
Step 3 — Populate a copy of the template per project, replacing every {{PLACEHOLDER}}. Computed fields: totals by status.category and status.name; days since startedAt; most recent note date this week; 2–3 spotlight candidates (highest status.rank among green candidacies with non-empty assessment notes); count of excluded candidacies (red + none) for the footer. Leave "static / fill manually" placeholders as-is or use a firm default.
Step 4 — Generate a PDF per project (reportlab, clean formatting). Save to /Status Reports/YYYY-MM-DD/[Client] - [Role] - Status Report.pdf.
Step 5 — Identify recipients via get_project_clients (the authoritative per-search client contact list with names and emails). Don't search people by company name. If it returns no contacts, flag the project and ask me to confirm recipients.
Step 6 — Draft one Gmail per project to the confirmed recipients: subject [Client Company] \ [Role] — Search Update — [Date]; body a 2–3 sentence summary (green content only); attach the PDF.
Present each draft for review — don't send automatically. If I say "send all", send all approved drafts.
Step 7 — After sending, log a note on each project's most recent candidacy recording the date the update was sent and to whom. Use note category "Client Communication" if it exists.
Output a summary table: <Company> \ <Project> | Recipients | PDF path | Candidates shown (green) | Candidates excluded (red/none) | Email status (Draft / Sent / Flagged).
Adapt It: Run for a single client or a subset of searches Switch the deliverable to a branded HTML email instead of a PDF attachment Change cadence to biweekly Add a fee/payment status line for clients who track spend Stop at the draft stage and hand off sending to an assistant