Distress Dossier Template
What is the auto-generated dossier template for retailers showing operational distress signals?
Purpose
This recipe generates a personalized, evidence-based dossier for retailers showing operational distress signals — inventory write-downs, supply chain disruption, workforce instability, or financial deterioration. The output is a 2-page document that names specific signals with dates, quantifies business impact using industry benchmarks, and offers 3 graduated action options — ready for delivery to the decision-maker identified during enrichment. [src1, src2]
Prerequisites
- Enriched company profile available from
signal-library/retail/enrichment-mapping/2026— Retail Signal Enrichment Mapping - Signal detection report with scored signals available from
signal-library/retail/detection-rules/2026— Retail Detection Rules - Decision-maker contact (name, title, email/LinkedIn) from enrichment output
- Claude or GPT API key — from Anthropic Console or OpenAI Platform
- PDF generation tool — Puppeteer, WeasyPrint, or equivalent (free)
Constraints
- Every claim must be falsifiable. Each data point requires a specific source, date, and verifiable figure. A recipient must be able to fact-check any claim within 5 minutes. [src1]
- Diagnostic tone only. The dossier reads like a medical report: observation, interpretation, options. Never use phrases like "we can help you," "our solution," or "schedule a demo." [src2]
- Maximum 2 pages plus optional appendix. Distressed retailer executives are time-constrained; dossiers exceeding 2 pages see 40-60% lower read-through rates. [src3]
- All industry benchmarks must cite the study, year, and sample size. Unsourced benchmarks are indistinguishable from hallucination. [src4]
- All personalization fields must be populated from enrichment data. Never deliver a dossier with placeholder text. Partially personalized outreach performs worse than generic outreach. [src5]
Tool Selection Decision
Which path?
├── Output format = PDF AND review mode = auto-deliver
│ └── PATH A: Automated PDF — Claude API + WeasyPrint + email delivery
├── Output format = PDF AND review mode = human review
│ └── PATH B: Reviewed PDF — Claude API + WeasyPrint + review queue
├── Output format = HTML email AND review mode = auto-deliver
│ └── PATH C: Automated HTML — Claude API + HTML template + email API
└── Output format = Markdown AND review mode = human review
└── PATH D: Draft Markdown — Claude API + Markdown output + review queue
| Path | Tools | Cost | Speed | Output Quality |
|---|---|---|---|---|
| A: Automated PDF | Claude API + WeasyPrint | $0.02-0.10/dossier | 2-5 min | High — requires confidence threshold (score 8+) |
| B: Reviewed PDF | Claude API + WeasyPrint | $0.02-0.10/dossier | 5-15 min | Excellent — human catches edge cases |
| C: Automated HTML | Claude API + HTML template | $0.02-0.08/dossier | 1-3 min | High — inline rendering, no attachment friction |
| D: Draft Markdown | Claude API | $0.02-0.05/dossier | 1-2 min | Good — fastest for review-heavy workflows |
Execution Flow
Step 1: Assemble Input Data
Duration: 1-2 minutes per dossier · Tool: Python/Node.js script
Collect all required inputs from the enrichment and detection pipeline outputs into a single structured context object for the LLM. Required fields: company name, domain, revenue, decision-maker name and title, at least 2 signals with source, date, and data point.
Verify: All required fields populated — company name, at least 1 decision-maker, at least 2 signals with source+date+data_point. · If failed: If fewer than 2 signals, return to detection pipeline and lower threshold, or flag company for monitoring rather than outreach.
Step 2: Generate Executive Summary
Duration: 1-2 minutes · Tool: Claude/GPT API
Generate a 1-paragraph executive summary that names specific signals with dates and hooks the reader with quantified impact. Structure: Name 2-3 specific signals with dates → state what the pattern typically costs using industry benchmarks → close with a quantified impact statement.
Example output: “In Q3 2025, Acme Retail Corp disclosed $45M in inventory write-downs with days-inventory-outstanding rising from 95 to 132. In the following 30 days, 6 urgent supply chain roles appeared on LinkedIn and Indeed — 3x the normal hiring rate. Glassdoor supply chain team ratings dropped 0.8 points in Q4. Among the 127 retailers McKinsey tracked with this compound pattern, 12-18% margin erosion followed within 2 quarters.”
Verify: Summary contains at least 2 specific data points with dates. No promotional language detected. · If failed: Regenerate with stricter system prompt constraints if promotional language appears.
Step 3: Generate Evidence Pack
Duration: 2-3 minutes · Tool: Claude/GPT API
Generate one evidence entry per signal with 5 fields: source (exact document/page), date, data point (specific number), context (1-2 sentence conservative interpretation), and verification path (how to independently confirm).
Verify: Each signal entry has all 5 fields populated. Verification paths are actionable (e.g., “Search SEC EDGAR for CIK 0001234567, Form 10-Q, filed 2025-11-15”). · If failed: Remove any signal lacking a verification path — it was likely inferred rather than observed.
Step 4: Generate Impact Analysis
Duration: 1-2 minutes · Tool: Claude/GPT API
Quantify business impact using industry benchmarks with full citation. Show the math: “At $380M revenue, 12-18% margin erosion = $45.6M-$68.4M annual impact.” State time horizon explicitly and include confidence qualifier. [src1, src6]
Available benchmarks:
- Inventory distress: 12-18% margin erosion within 2 quarters (McKinsey State of Fashion 2025, n=127) [src1]
- Supply chain disruption: 3-5% revenue loss per quarter of sustained disruption (Bain 2025, n=89) [src6]
- Workforce instability: 2x turnover cost in affected function within 6 months (MIT Sloan 2024, n=214) [src7]
- DIO above 120 days: 15-22% higher carrying costs (IHL Group 2025, n=350) [src4]
Verify: At least 1 dollar-denominated impact figure derived from company revenue + benchmark range. Full citation present. · If failed: If revenue data missing, state benchmark as percentage with note.
Step 5: Generate Recommended Actions
Duration: 1 minute · Tool: Claude/GPT API
Generate 3 graduated options:
- Option 1 (Low commitment): Free 30-minute diagnostic call — verbal walkthrough of signal pattern and peer comparisons. No obligation.
- Option 2 (Medium commitment): Paid supply chain assessment with specific price range, duration, and deliverables.
- Option 3 (No action): Do-nothing trajectory modeling — factual projection of what happens if patterns continue for 2 more quarters. Not fear-mongering, a benchmark-based projection.
Verify: All 3 options present. Option 1 is genuinely no-cost. Option 3 cites a benchmark. No urgency language detected. · If failed: Strip urgency language and regenerate Option 3 only.
Step 6: Assemble and Format Dossier
Duration: 1-3 minutes · Tool: PDF generation (WeasyPrint/Puppeteer) or HTML template
Assemble generated sections into the final dossier format: Executive Summary + Evidence Pack on page 1, Impact Analysis + Recommended Actions on page 2, optional appendix with methodology note and benchmark references.
Output files:
distress_dossier_{company_slug}_{timestamp}.pdf— Formatted 2-page dossier ready for deliverydistress_dossier_{company_slug}_{timestamp}.json— Structured dossier data for programmatic processingdossier_qa_checklist_{company_slug}.json— Quality assurance results from verification checks
Verify: PDF renders at 2 pages or fewer. All personalization fields populated. All source citations present. · If failed: Reduce evidence pack to top 2 signals and regenerate.
Output Schema
{
"output_type": "distress_dossier",
"format": "PDF + JSON",
"sections": [
{"name": "executive_summary", "type": "string", "required": true},
{"name": "evidence_pack", "type": "array", "required": true},
{"name": "impact_analysis", "type": "string", "required": true},
{"name": "recommended_actions", "type": "array", "required": true},
{"name": "appendix", "type": "object", "required": false}
],
"personalization_fields": [
{"name": "company_name", "type": "string", "required": true},
{"name": "decision_maker_name", "type": "string", "required": true},
{"name": "decision_maker_title", "type": "string", "required": true},
{"name": "signal_dates", "type": "array", "required": true},
{"name": "signal_data_points", "type": "array", "required": true}
],
"expected_page_count": "2 + optional appendix",
"sort_order": "sections in fixed order: summary, evidence, impact, actions",
"deduplication_key": "company_name + generated_at"
}
Quality Benchmarks
| Quality Metric | Minimum Acceptable | Good | Excellent |
|---|---|---|---|
| Falsifiability rate | > 80% of claims have verifiable source | > 90% | 100% |
| Personalization completeness | All required fields populated | + industry-specific context | + competitor references |
| Benchmark citation accuracy | 1 cited benchmark with source | 2-3 benchmarks with n-counts | All benchmarks with full citation |
| Tone compliance | No “we/our/schedule” detected | + no superlatives or urgency | + reads as independent analyst report |
| Page length | 2 pages or fewer | 1.5-2 pages | 1.5 pages + focused appendix |
| Signal-to-noise ratio | 2+ signals with evidence | 3+ signals, all falsifiable | 3+ signals + trend analysis |
If below minimum: Regenerate the failing section with stricter system prompt constraints. If falsifiability rate is below 80%, audit each claim against the input data and remove any that lack a specific source.
Error Handling
| Error | Likely Cause | Recovery Action |
|---|---|---|
| LLM generates promotional language | System prompt not restrictive enough | Add explicit negative examples: “NEVER write: 'we can help', 'our solution', 'schedule a demo'” |
| Impact analysis lacks dollar figures | Revenue data missing from enrichment | Use percentage-only impact with note; flag company for manual revenue lookup |
| Evidence pack has unverifiable claims | LLM hallucinated data points not in input | Cross-check every data point against input JSON; remove unverifiable claims |
| PDF exceeds 2 pages | Too many signals or verbose generation | Limit evidence pack to top 2 signals by composite score; reduce executive summary to 3 sentences |
| Personalization fields contain placeholders | Enrichment data incomplete | Do not generate dossier — return to enrichment pipeline to fill gaps |
| LLM refuses impact projections | Safety filter triggered by financial predictions | Reframe as “industry benchmark range” rather than “prediction”; cite study explicitly |
| Benchmark data is outdated | Source study older than 2 years | Flag as “based on {year} data” and note recalibration recommended |
Cost Breakdown
| Component | Per Dossier | 50 Dossiers/Month | 500 Dossiers/Month |
|---|---|---|---|
| LLM API (Claude Sonnet) | $0.02-0.05 | $1-2.50 | $10-25 |
| LLM API (Claude Opus) | $0.05-0.10 | $2.50-5 | $25-50 |
| PDF generation (WeasyPrint) | $0 | $0 | $0 |
| Email delivery (SendGrid) | $0 | $0 (up to 100/day) | $15/mo |
| Total (Sonnet + free tools) | $0.02-0.05 | $1-2.50 | $10-25 |
Anti-Patterns
Wrong: Leading with product pitch
Dossier opens with “Our firm specializes in retail supply chain optimization” or closes with “We'd love to schedule a demo.” Result: recipient classifies the dossier as spam and never reads the evidence. Diagnostic credibility is destroyed in the first sentence. [src2]
Correct: Lead with their data, not your capabilities
Open with specific signals the recipient will recognize (“Your Q3 10-Q disclosed $45M in inventory write-downs”). The evidence sells the conversation — not the sender.
Wrong: Including speculative or unfalsifiable claims
Dossier states “Your supply chain is likely underperforming” or “Most retailers in your position struggle with inventory.” These claims cannot be verified and sound like generic sales copy. [src1]
Correct: Every claim cites source, date, and data point
“Your DIO increased from 95 to 132 days between Q2 and Q3 2025 (SEC 10-Q, filed 2025-11-15, page 23).” The recipient can verify this in 2 minutes.
Wrong: Overloading with signals
Including 6-8 signals to appear thorough. Result: the dossier exceeds 2 pages, buries the key insight, and the executive stops reading after page 1. [src3]
Correct: Top 2-3 signals that form a compound pattern
Select the 2-3 signals that together tell a coherent story. Inventory write-down + urgent supply chain hiring + declining Glassdoor scores form a narrative. Adding unrelated signals dilutes the message.
Wrong: Generic benchmark without attribution
“Companies in your situation typically lose 15% of their margins.” No source, no sample size, no year. Indistinguishable from a hallucinated claim. [src4]
Correct: Full benchmark citation
“Among 127 retailers tracked by McKinsey (State of Fashion 2025), those showing compound inventory + workforce distress signals experienced 12-18% margin erosion within 2 quarters.”
When This Matters
Use this recipe when the signal detection pipeline has identified a retailer showing inventory, supply chain, workforce, or financial distress signals and the enrichment pipeline has resolved the signals to a specific company with decision-maker contacts. This is the asset generation step between enrichment (upstream) and outreach delivery (downstream). Without the dossier, outreach lacks the evidence-based positioning that differentiates signal-driven selling from cold outreach.