Prospect Analysis Orchestrator
Tier 0 Doctrine
- Tier: Hub (orchestrator that launches 5 parallel subagents)
- Authority: Owns the discovery briefing, composite scoring formula, and final report. Each subagent owns one scoring dimension only.
- Determinism first: All scoring uses declared weights, formulas, and grade bands. No LLM interpretation of scores. Company type detection uses signal tables, not judgment.
- No fabrication: Every data point must have a source URL or signal reference. Absence of data is scored (neutral 50), not invented.
IMO (Top-Level)
| Layer |
Responsibility |
| Ingress |
Target URL (schema validation only: must be well-formed URL; reject if empty) |
| Middle |
Discovery briefing compilation; 5 parallel subagent launches; weighted score aggregation; grade assignment; action plan generation; email draft; confidence assessment |
| Egress |
PROSPECT-ANALYSIS.md + terminal scorecard (read-only structured output) |
Constants
| Constant |
Value |
Authority |
| Subagent count |
5 |
Orchestrator architecture |
| Weight: Company Fit |
0.25 |
Composite score formula |
| Weight: Contact Access |
0.20 |
Composite score formula |
| Weight: Opportunity Quality |
0.20 |
Composite score formula |
| Weight: Competitive Position |
0.15 |
Composite score formula |
| Weight: Outreach Readiness |
0.20 |
Composite score formula |
| Grade A+ |
90-100 (Hot Lead) |
Grade band table |
| Grade A |
75-89 (Strong Prospect) |
Grade band table |
| Grade B |
60-74 (Qualified Lead) |
Grade band table |
| Grade C |
40-59 (Lukewarm) |
Grade band table |
| Grade D |
0-39 (Poor Fit) |
Grade band table |
| Subagent failure neutral score |
50 |
Error-handling contract |
| Confidence levels |
High / Medium / Low / Very Low |
Confidence rubric |
| Interior page cap |
5 key pages max |
Discovery scope limit |
| First email word limit |
100 words max body |
Outreach constraint |
| Bar chart width |
10 characters (Unicode block fill) |
Terminal display spec |
| Score formula |
Sum(dimension_score * weight) |
Composite score formula |
| BANT framework |
Budget, Authority, Need, Timeline |
Universal sales qualification (industry-agnostic) |
| MEDDIC framework |
Metrics, Economic Buyer, Decision Criteria, Decision Process, Identify Pain, Champion |
Universal sales qualification (industry-agnostic) |
| Action plan tiers |
Immediate (24-48h) / Short-term (1-2wk) / Long-term (1-3mo) |
Action plan structure |
Variables
| Variable |
Source |
Runtime |
target_url |
User invocation /sales prospect <url> |
Per-run |
company_name |
Extracted from homepage fetch |
Per-run |
company_type |
Detected via signal table (SaaS, Agency, E-commerce, Enterprise, SMB, Startup, or custom) |
Per-run |
industry_vertical |
Detected from site content and external signals |
Per-run |
discovery_briefing |
Compiled from fetched pages + script output |
Per-run |
pages_found[] |
URLs of accessible interior pages |
Per-run |
homepage_content |
Raw text from homepage fetch |
Per-run |
script_output |
JSON from analyze_prospect.py or "unavailable" |
Per-run |
company_fit_score |
Returned by sales-company subagent (0-100) |
Per-run |
contact_access_score |
Returned by sales-contacts subagent (0-100) |
Per-run |
opportunity_quality_score |
Returned by sales-opportunity subagent (0-100) |
Per-run |
competitive_position_score |
Returned by sales-competitive subagent (0-100) |
Per-run |
outreach_readiness_score |
Returned by sales-strategy subagent (0-100) |
Per-run |
prospect_score |
Computed composite (0-100) |
Per-run |
grade |
Derived from prospect_score via grade band table |
Per-run |
confidence_level |
Derived from subagent completion count + data richness |
Per-run |
failed_subagents[] |
List of subagents that failed or timed out |
Per-run |
existing_reports{} |
Pre-existing analysis files in cwd (cross-skill) |
Per-run |
action_plan |
Three-tier action items generated from synthesis |
Per-run |
first_email |
Copy-paste-ready outreach email under 100 words |
Per-run |
Workflow
BLOCK 1: Discovery & Briefing Compilation
Governed by: C&V
Constants: target_url schema (well-formed URL), interior page cap (5), company type signal table (6 categories), confidence levels (4 tiers).
Variables: target_url, company_name, company_type, industry_vertical, pages_found[], homepage_content, script_output, discovery_briefing, existing_reports{}.
Ingress: Receive target_url from user invocation. Validate: non-empty, well-formed URL. Reject immediately if validation fails.
Middle:
- Fetch homepage via WebFetch. If unreachable, try alternate formats (www/non-www, http/https). If all fail, HALT with error message -- do not proceed on zero data.
- Fetch interior pages (up to 5): About, Team, Pricing, Blog/Resources, Careers, Contact. Store URL, title, raw content, key data points for each accessible page.
- Detect company type using signal table below. Scan homepage, careers, pricing, and investor mentions. Assign best-fit category; note runner-up if ambiguous.
| Company Type |
Detection Signals |
| SaaS/Software |
Free trial CTA, pricing tiers, login link, API docs, integration marketplace |
| Agency/Services |
Case studies, portfolio, client logos, service packages, retainer pricing |
| E-commerce |
Product listings, cart/checkout, SKU counts, shipping/return policy |
| Enterprise |
500+ employees, multiple offices, compliance pages, procurement portal |
| SMB |
1-50 team, owner-operator signals, local focus, simple pricing |
| Startup |
Investor logos, recent founding year, beta language, accelerator badges |
- Identify industry vertical from site terminology, customer logos, case study industries, job posting requirements, compliance mentions. Assign primary vertical (variable, not hardcoded list).
- Run structured data extraction via
python3 scripts/analyze_prospect.py --url <url> --output json. If unavailable or fails, log error, continue with manual extraction, set script_output = "unavailable".
- Check for existing reports in cwd: COMPANY-RESEARCH.md, DECISION-MAKERS.md, LEAD-QUALIFICATION.md, COMPETITIVE-INTEL.md, OUTREACH-SEQUENCE.md. If present, flag for subagent consumption.
- Compile discovery briefing object with all gathered data: URL, company name, company type, industry vertical, pages found, page contents, script output, initial signals.
Egress: discovery_briefing object ready for subagent distribution.
Go/No-Go: Homepage must be accessible (at least 1 page fetched). If zero pages accessible after retries, HALT. If homepage fetched but interior pages limited, proceed with reduced confidence.
BLOCK 2: Parallel Subagent Dispatch
Governed by: IMO
Constants: Subagent count (5), subagent skill file paths, subagent weights, subagent failure neutral score (50).
Variables: discovery_briefing, existing_reports{}, company_fit_score, contact_access_score, opportunity_quality_score, competitive_position_score, outreach_readiness_score, failed_subagents[].
Ingress: Receive compiled discovery_briefing from BLOCK 1. Validate: briefing contains at minimum target_url, company_name, and homepage_content.
Middle:
Launch ALL 5 subagents simultaneously (parallel, not sequential). Each receives the full discovery briefing plus any relevant existing report.
| # |
Subagent |
Skill File |
Weight |
Output |
| 1 |
sales-company |
skills/sales-research/SKILL.md |
0.25 |
Company Fit Score (0-100): size fit, industry fit, growth trajectory, tech sophistication, budget signals |
| 2 |
sales-contacts |
skills/sales-contacts/SKILL.md |
0.20 |
Contact Access Score (0-100): decision makers identified, contact info accessibility, personalization anchors, warm paths |
| 3 |
sales-opportunity |
skills/sales-qualify/SKILL.md |
0.20 |
Opportunity Quality Score (0-100): BANT scorecard, MEDDIC assessment, buying signals, red flags |
| 4 |
sales-competitive |
skills/sales-competitors/SKILL.md |
0.15 |
Competitive Position Score (0-100): current vendor identified, switching costs, competitive gaps, win probability |
| 5 |
sales-strategy |
skills/sales-outreach/SKILL.md |
0.20 |
Outreach Readiness Score (0-100): personalization depth, trigger events, channel strategy, message-market fit |
Error handling per subagent:
- If subagent fails or times out: log failure reason, assign neutral score (50), append to
failed_subagents[].
- Continue with all available data regardless of individual failures.
Egress: Five dimension scores collected (actual or neutral-50 fallback). failed_subagents[] populated.
Go/No-Go: At least 3 of 5 subagents must return results. If fewer than 3 succeed, set confidence_level = "Very Low" and append prominent data-gap warning to report. Never halt on subagent failure alone -- always produce a report.
BLOCK 3: Score Synthesis & Action Plan
Governed by: CTB
Constants: Score formula (Sum(dimension * weight)), grade band table (5 bands), action plan tiers (3), first email word limit (100), confidence rubric (4 levels).
Variables: company_fit_score, contact_access_score, opportunity_quality_score, competitive_position_score, outreach_readiness_score, prospect_score, grade, confidence_level, failed_subagents[], action_plan, first_email.
Ingress: Receive five dimension scores from BLOCK 2. Validate: each score is integer 0-100.
Middle:
- Calculate composite Prospect Score:
prospect_score = (
company_fit_score * 0.25 +
contact_access_score * 0.20 +
opportunity_quality_score * 0.20 +
competitive_position_score * 0.15 +
outreach_readiness_score * 0.20
)
- Assign grade from band table:
| Range |
Grade |
Label |
| 90-100 |
A+ |
Hot Lead |
| 75-89 |
A |
Strong Prospect |
| 60-74 |
B |
Qualified Lead |
| 40-59 |
C |
Lukewarm |
| 0-39 |
D |
Poor Fit |
- Assess confidence level:
| Level |
Criteria |
| High |
5/5 subagents completed, rich public data, multiple sources confirmed |
| Medium |
4/5 completed, moderate data, some inference |
| Low |
3/5 completed, limited data, significant inference |
| Very Low |
<3 completed or major data gaps, mostly speculative |
Reduce confidence by one level for each failed subagent.
Generate action plan (three tiers):
- Immediate (24-48h): 3-5 specific outreach actions, LinkedIn connections, content to share, CRM notes.
- Short-term (1-2 weeks): follow-up sequence, additional research, stakeholder engagement, competitive prep.
- Long-term (1-3 months): relationship building, content nurture, event opportunities, referral approaches.
Craft first email using sales-strategy subagent findings: copy-paste ready, personalized with real data, under 100 words body, 2 subject line options (A/B), specific send target (name, title, company), clear low-friction CTA, recommended send timing and follow-up cadence.
Egress: prospect_score, grade, confidence_level, action_plan, first_email ready for report assembly.
Go/No-Go: Score must be computable (all 5 dimension scores present, even if neutral-50). Grade must map to exactly one band. If any computation fails, log error and report partial results with explanation.
BLOCK 4: Report Assembly & Output
Governed by: Circle
Constants: Output file name (PROSPECT-ANALYSIS.md), bar chart width (10 chars), Unicode fill character, terminal scorecard layout.
Variables: All variables from BLOCKs 1-3 assembled into final artifacts.
Ingress: Receive all computed values: discovery data, dimension scores, composite score, grade, confidence, action plan, first email, subagent detail sections. Validate: all required sections have content (even if partial).
Middle:
Write PROSPECT-ANALYSIS.md with these sections (structure defined in output template pointer):
- Header: company name, URL, date, type, industry, score, grade, confidence.
- Executive Summary: 3-5 paragraphs for sales leader. Lead with score/grade. Biggest opportunity, biggest risk, recommended approach, top decision maker, timing, go/no-go.
- Prospect Snapshot table.
- Score Breakdown table (5 dimensions with scores, weights, weighted values, key findings).
- Company Profile (from sales-company subagent).
- Decision Maker Map with buying committee table, text org chart, top 3 priority contacts (from sales-contacts subagent).
- Opportunity Assessment with BANT scorecard and MEDDIC assessment (from sales-opportunity subagent).
- Competitive Landscape with current solutions, switching costs, positioning angles (from sales-competitive subagent).
- Outreach Strategy with framework, channels, personalization, objection prep (from sales-strategy subagent).
- Prioritized Action Plan (3 tiers from BLOCK 3).
- Ready-to-Send First Email with subject lines, body, CTA, timing, follow-up.
Render terminal scorecard with condensed output:
- Company name, type, industry, URL.
- Prospect Score with grade and label.
- 5-dimension bar chart (10-char wide, Unicode block fill/empty).
- Key decision maker.
- Top 3 opportunities, top 3 risks.
- Single most important next step.
- File save confirmation.
Suggest follow-up commands: /sales outreach for full email sequence, /sales prep for meeting prep, /sales proposal for deal proposal.
Egress: PROSPECT-ANALYSIS.md written to cwd. Terminal scorecard displayed. No further mutations.
Go/No-Go: File must be writable to cwd. Terminal output must render without error. If file write fails, display full report in terminal as fallback.
Rules
- Never launch subagents sequentially -- all 5 must run in parallel.
- Never generate a report on zero fetched pages -- HALT if homepage is unreachable after retries.
- Never invent data points -- absence is scored as neutral (50) or noted as "not found," never fabricated.
- Never hardcode industry verticals in Constants -- industries are Variables detected at runtime.
- Never let a single subagent failure halt the entire pipeline -- assign neutral score (50), reduce confidence, continue.
- Never exceed 100 words in the first email body.
- Never use LLM judgment to override the composite score formula or grade band assignment -- scores are mechanical.
- Never modify the subagent weight allocation at runtime -- weights are Constants.
- Never skip the discovery briefing -- every subagent must receive the full briefing object.
- Never produce a report without a confidence assessment -- every report declares High, Medium, Low, or Very Low.
Reference Pointers
| Reference |
Location |
| Subagent: sales-company |
skills/sales-research/SKILL.md |
| Subagent: sales-contacts |
skills/sales-contacts/SKILL.md |
| Subagent: sales-opportunity |
skills/sales-qualify/SKILL.md |
| Subagent: sales-competitive |
skills/sales-competitors/SKILL.md |
| Subagent: sales-strategy |
skills/sales-outreach/SKILL.md |
| Output template |
PROSPECT-ANALYSIS.md (structure defined in BLOCK 4 Middle, section 1) |
| Structured data script |
scripts/analyze_prospect.py |
| Architecture doctrine |
templates/doctrine/ARCHITECTURE.md |
| Tool doctrine |
templates/integrations/TOOLS.md |
1---2name: sales-prospect3description: Prospect Analysis Orchestrator — produces a scored, prioritized, actionable prospect report by launching 5 parallel subagents and synthesizing their results into a unified PROSPECT-ANALYSIS.md. Trigger on `/sales prospect <url>`, or when any task requires full multi-dimensional prospect scoring from publicly available data. Industry-agnostic engine.4---56# Prospect Analysis Orchestrator78## Tier 0 Doctrine910- **Tier:** Hub (orchestrator that launches 5 parallel subagents)11- **Authority:** Owns the discovery briefing, composite scoring formula, and final report. Each subagent owns one scoring dimension only.12- **Determinism first:** All scoring uses declared weights, formulas, and grade bands. No LLM interpretation of scores. Company type detection uses signal tables, not judgment.13- **No fabrication:** Every data point must have a source URL or signal reference. Absence of data is scored (neutral 50), not invented.1415---1617## IMO (Top-Level)1819| Layer | Responsibility |20|-------|---------------|21| **Ingress** | Target URL (schema validation only: must be well-formed URL; reject if empty) |22| **Middle** | Discovery briefing compilation; 5 parallel subagent launches; weighted score aggregation; grade assignment; action plan generation; email draft; confidence assessment |23| **Egress** | PROSPECT-ANALYSIS.md + terminal scorecard (read-only structured output) |2425---2627## Constants2829| Constant | Value | Authority |30|----------|-------|-----------|31| Subagent count | 5 | Orchestrator architecture |32| Weight: Company Fit | 0.25 | Composite score formula |33| Weight: Contact Access | 0.20 | Composite score formula |34| Weight: Opportunity Quality | 0.20 | Composite score formula |35| Weight: Competitive Position | 0.15 | Composite score formula |36| Weight: Outreach Readiness | 0.20 | Composite score formula |37| Grade A+ | 90-100 (Hot Lead) | Grade band table |38| Grade A | 75-89 (Strong Prospect) | Grade band table |39| Grade B | 60-74 (Qualified Lead) | Grade band table |40| Grade C | 40-59 (Lukewarm) | Grade band table |41| Grade D | 0-39 (Poor Fit) | Grade band table |42| Subagent failure neutral score | 50 | Error-handling contract |43| Confidence levels | High / Medium / Low / Very Low | Confidence rubric |44| Interior page cap | 5 key pages max | Discovery scope limit |45| First email word limit | 100 words max body | Outreach constraint |46| Bar chart width | 10 characters (Unicode block fill) | Terminal display spec |47| Score formula | `Sum(dimension_score * weight)` | Composite score formula |48| BANT framework | Budget, Authority, Need, Timeline | Universal sales qualification (industry-agnostic) |49| MEDDIC framework | Metrics, Economic Buyer, Decision Criteria, Decision Process, Identify Pain, Champion | Universal sales qualification (industry-agnostic) |50| Action plan tiers | Immediate (24-48h) / Short-term (1-2wk) / Long-term (1-3mo) | Action plan structure |5152---5354## Variables5556| Variable | Source | Runtime |57|----------|--------|---------|58| `target_url` | User invocation `/sales prospect <url>` | Per-run |59| `company_name` | Extracted from homepage fetch | Per-run |60| `company_type` | Detected via signal table (SaaS, Agency, E-commerce, Enterprise, SMB, Startup, or custom) | Per-run |61| `industry_vertical` | Detected from site content and external signals | Per-run |62| `discovery_briefing` | Compiled from fetched pages + script output | Per-run |63| `pages_found[]` | URLs of accessible interior pages | Per-run |64| `homepage_content` | Raw text from homepage fetch | Per-run |65| `script_output` | JSON from `analyze_prospect.py` or "unavailable" | Per-run |66| `company_fit_score` | Returned by sales-company subagent (0-100) | Per-run |67| `contact_access_score` | Returned by sales-contacts subagent (0-100) | Per-run |68| `opportunity_quality_score` | Returned by sales-opportunity subagent (0-100) | Per-run |69| `competitive_position_score` | Returned by sales-competitive subagent (0-100) | Per-run |70| `outreach_readiness_score` | Returned by sales-strategy subagent (0-100) | Per-run |71| `prospect_score` | Computed composite (0-100) | Per-run |72| `grade` | Derived from prospect_score via grade band table | Per-run |73| `confidence_level` | Derived from subagent completion count + data richness | Per-run |74| `failed_subagents[]` | List of subagents that failed or timed out | Per-run |75| `existing_reports{}` | Pre-existing analysis files in cwd (cross-skill) | Per-run |76| `action_plan` | Three-tier action items generated from synthesis | Per-run |77| `first_email` | Copy-paste-ready outreach email under 100 words | Per-run |7879---8081## Workflow8283### BLOCK 1: Discovery & Briefing Compilation8485**Governed by: C&V**8687**Constants:** target_url schema (well-formed URL), interior page cap (5), company type signal table (6 categories), confidence levels (4 tiers).8889**Variables:** `target_url`, `company_name`, `company_type`, `industry_vertical`, `pages_found[]`, `homepage_content`, `script_output`, `discovery_briefing`, `existing_reports{}`.9091**Ingress:** Receive `target_url` from user invocation. Validate: non-empty, well-formed URL. Reject immediately if validation fails.9293**Middle:**94951. **Fetch homepage** via WebFetch. If unreachable, try alternate formats (www/non-www, http/https). If all fail, HALT with error message -- do not proceed on zero data.962. **Fetch interior pages** (up to 5): About, Team, Pricing, Blog/Resources, Careers, Contact. Store URL, title, raw content, key data points for each accessible page.973. **Detect company type** using signal table below. Scan homepage, careers, pricing, and investor mentions. Assign best-fit category; note runner-up if ambiguous.9899| Company Type | Detection Signals |100|--------------|-------------------|101| SaaS/Software | Free trial CTA, pricing tiers, login link, API docs, integration marketplace |102| Agency/Services | Case studies, portfolio, client logos, service packages, retainer pricing |103| E-commerce | Product listings, cart/checkout, SKU counts, shipping/return policy |104| Enterprise | 500+ employees, multiple offices, compliance pages, procurement portal |105| SMB | 1-50 team, owner-operator signals, local focus, simple pricing |106| Startup | Investor logos, recent founding year, beta language, accelerator badges |1071084. **Identify industry vertical** from site terminology, customer logos, case study industries, job posting requirements, compliance mentions. Assign primary vertical (variable, not hardcoded list).1095. **Run structured data extraction** via `python3 scripts/analyze_prospect.py --url <url> --output json`. If unavailable or fails, log error, continue with manual extraction, set `script_output` = "unavailable".1106. **Check for existing reports** in cwd: COMPANY-RESEARCH.md, DECISION-MAKERS.md, LEAD-QUALIFICATION.md, COMPETITIVE-INTEL.md, OUTREACH-SEQUENCE.md. If present, flag for subagent consumption.1117. **Compile discovery briefing** object with all gathered data: URL, company name, company type, industry vertical, pages found, page contents, script output, initial signals.112113**Egress:** `discovery_briefing` object ready for subagent distribution.114115**Go/No-Go:** Homepage must be accessible (at least 1 page fetched). If zero pages accessible after retries, HALT. If homepage fetched but interior pages limited, proceed with reduced confidence.116117---118119### BLOCK 2: Parallel Subagent Dispatch120121**Governed by: IMO**122123**Constants:** Subagent count (5), subagent skill file paths, subagent weights, subagent failure neutral score (50).124125**Variables:** `discovery_briefing`, `existing_reports{}`, `company_fit_score`, `contact_access_score`, `opportunity_quality_score`, `competitive_position_score`, `outreach_readiness_score`, `failed_subagents[]`.126127**Ingress:** Receive compiled `discovery_briefing` from BLOCK 1. Validate: briefing contains at minimum `target_url`, `company_name`, and `homepage_content`.128129**Middle:**130131Launch ALL 5 subagents simultaneously (parallel, not sequential). Each receives the full discovery briefing plus any relevant existing report.132133| # | Subagent | Skill File | Weight | Output |134|---|----------|-----------|--------|--------|135| 1 | sales-company | `skills/sales-research/SKILL.md` | 0.25 | Company Fit Score (0-100): size fit, industry fit, growth trajectory, tech sophistication, budget signals |136| 2 | sales-contacts | `skills/sales-contacts/SKILL.md` | 0.20 | Contact Access Score (0-100): decision makers identified, contact info accessibility, personalization anchors, warm paths |137| 3 | sales-opportunity | `skills/sales-qualify/SKILL.md` | 0.20 | Opportunity Quality Score (0-100): BANT scorecard, MEDDIC assessment, buying signals, red flags |138| 4 | sales-competitive | `skills/sales-competitors/SKILL.md` | 0.15 | Competitive Position Score (0-100): current vendor identified, switching costs, competitive gaps, win probability |139| 5 | sales-strategy | `skills/sales-outreach/SKILL.md` | 0.20 | Outreach Readiness Score (0-100): personalization depth, trigger events, channel strategy, message-market fit |140141**Error handling per subagent:**142- If subagent fails or times out: log failure reason, assign neutral score (50), append to `failed_subagents[]`.143- Continue with all available data regardless of individual failures.144145**Egress:** Five dimension scores collected (actual or neutral-50 fallback). `failed_subagents[]` populated.146147**Go/No-Go:** At least 3 of 5 subagents must return results. If fewer than 3 succeed, set `confidence_level` = "Very Low" and append prominent data-gap warning to report. Never halt on subagent failure alone -- always produce a report.148149---150151### BLOCK 3: Score Synthesis & Action Plan152153**Governed by: CTB**154155**Constants:** Score formula (`Sum(dimension * weight)`), grade band table (5 bands), action plan tiers (3), first email word limit (100), confidence rubric (4 levels).156157**Variables:** `company_fit_score`, `contact_access_score`, `opportunity_quality_score`, `competitive_position_score`, `outreach_readiness_score`, `prospect_score`, `grade`, `confidence_level`, `failed_subagents[]`, `action_plan`, `first_email`.158159**Ingress:** Receive five dimension scores from BLOCK 2. Validate: each score is integer 0-100.160161**Middle:**1621631. **Calculate composite Prospect Score:**164165```166prospect_score = (167 company_fit_score * 0.25 +168 contact_access_score * 0.20 +169 opportunity_quality_score * 0.20 +170 competitive_position_score * 0.15 +171 outreach_readiness_score * 0.20172)173```1741752. **Assign grade** from band table:176177| Range | Grade | Label |178|-------|-------|-------|179| 90-100 | A+ | Hot Lead |180| 75-89 | A | Strong Prospect |181| 60-74 | B | Qualified Lead |182| 40-59 | C | Lukewarm |183| 0-39 | D | Poor Fit |1841853. **Assess confidence level:**186187| Level | Criteria |188|-------|----------|189| High | 5/5 subagents completed, rich public data, multiple sources confirmed |190| Medium | 4/5 completed, moderate data, some inference |191| Low | 3/5 completed, limited data, significant inference |192| Very Low | <3 completed or major data gaps, mostly speculative |193194Reduce confidence by one level for each failed subagent.1951964. **Generate action plan** (three tiers):197 - Immediate (24-48h): 3-5 specific outreach actions, LinkedIn connections, content to share, CRM notes.198 - Short-term (1-2 weeks): follow-up sequence, additional research, stakeholder engagement, competitive prep.199 - Long-term (1-3 months): relationship building, content nurture, event opportunities, referral approaches.2002015. **Craft first email** using sales-strategy subagent findings: copy-paste ready, personalized with real data, under 100 words body, 2 subject line options (A/B), specific send target (name, title, company), clear low-friction CTA, recommended send timing and follow-up cadence.202203**Egress:** `prospect_score`, `grade`, `confidence_level`, `action_plan`, `first_email` ready for report assembly.204205**Go/No-Go:** Score must be computable (all 5 dimension scores present, even if neutral-50). Grade must map to exactly one band. If any computation fails, log error and report partial results with explanation.206207---208209### BLOCK 4: Report Assembly & Output210211**Governed by: Circle**212213**Constants:** Output file name (PROSPECT-ANALYSIS.md), bar chart width (10 chars), Unicode fill character, terminal scorecard layout.214215**Variables:** All variables from BLOCKs 1-3 assembled into final artifacts.216217**Ingress:** Receive all computed values: discovery data, dimension scores, composite score, grade, confidence, action plan, first email, subagent detail sections. Validate: all required sections have content (even if partial).218219**Middle:**2202211. **Write PROSPECT-ANALYSIS.md** with these sections (structure defined in output template pointer):222 - Header: company name, URL, date, type, industry, score, grade, confidence.223 - Executive Summary: 3-5 paragraphs for sales leader. Lead with score/grade. Biggest opportunity, biggest risk, recommended approach, top decision maker, timing, go/no-go.224 - Prospect Snapshot table.225 - Score Breakdown table (5 dimensions with scores, weights, weighted values, key findings).226 - Company Profile (from sales-company subagent).227 - Decision Maker Map with buying committee table, text org chart, top 3 priority contacts (from sales-contacts subagent).228 - Opportunity Assessment with BANT scorecard and MEDDIC assessment (from sales-opportunity subagent).229 - Competitive Landscape with current solutions, switching costs, positioning angles (from sales-competitive subagent).230 - Outreach Strategy with framework, channels, personalization, objection prep (from sales-strategy subagent).231 - Prioritized Action Plan (3 tiers from BLOCK 3).232 - Ready-to-Send First Email with subject lines, body, CTA, timing, follow-up.2332342. **Render terminal scorecard** with condensed output:235 - Company name, type, industry, URL.236 - Prospect Score with grade and label.237 - 5-dimension bar chart (10-char wide, Unicode block fill/empty).238 - Key decision maker.239 - Top 3 opportunities, top 3 risks.240 - Single most important next step.241 - File save confirmation.2422433. **Suggest follow-up commands:** `/sales outreach` for full email sequence, `/sales prep` for meeting prep, `/sales proposal` for deal proposal.244245**Egress:** PROSPECT-ANALYSIS.md written to cwd. Terminal scorecard displayed. No further mutations.246247**Go/No-Go:** File must be writable to cwd. Terminal output must render without error. If file write fails, display full report in terminal as fallback.248249---250251## Rules2522531. **Never** launch subagents sequentially -- all 5 must run in parallel.2542. **Never** generate a report on zero fetched pages -- HALT if homepage is unreachable after retries.2553. **Never** invent data points -- absence is scored as neutral (50) or noted as "not found," never fabricated.2564. **Never** hardcode industry verticals in Constants -- industries are Variables detected at runtime.2575. **Never** let a single subagent failure halt the entire pipeline -- assign neutral score (50), reduce confidence, continue.2586. **Never** exceed 100 words in the first email body.2597. **Never** use LLM judgment to override the composite score formula or grade band assignment -- scores are mechanical.2608. **Never** modify the subagent weight allocation at runtime -- weights are Constants.2619. **Never** skip the discovery briefing -- every subagent must receive the full briefing object.26210. **Never** produce a report without a confidence assessment -- every report declares High, Medium, Low, or Very Low.263264---265266## Reference Pointers267268| Reference | Location |269|-----------|----------|270| Subagent: sales-company | `skills/sales-research/SKILL.md` |271| Subagent: sales-contacts | `skills/sales-contacts/SKILL.md` |272| Subagent: sales-opportunity | `skills/sales-qualify/SKILL.md` |273| Subagent: sales-competitive | `skills/sales-competitors/SKILL.md` |274| Subagent: sales-strategy | `skills/sales-outreach/SKILL.md` |275| Output template | PROSPECT-ANALYSIS.md (structure defined in BLOCK 4 Middle, section 1) |276| Structured data script | `scripts/analyze_prospect.py` |277| Architecture doctrine | `templates/doctrine/ARCHITECTURE.md` |278| Tool doctrine | `templates/integrations/TOOLS.md` |