analyze-demand — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited analyze-demand (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
For a defined industry, produce a structural demand-side analysis. Output: demand.md that names the JOB the industry's customers are hiring solutions to perform, segments by that job (not demographics), and surfaces substitution risk before it shows in share data.
The discipline: Demand-side analysis is the early-warning system for disruption. Five Forces tells you the structure; profit pools tell you where the money sits today; competitive arena tells you who is winning. Demand analysis tells you whether the question being asked is about to change. JTBD originated in product design; at industry-analysis level it aggregates outcomes across the buyer population to spot cross-category substitution before market-share data moves.
Iron rules:
../_shared/provenance-tagging.md.## Substitution Risk (exact wording, level-2 heading). Downstream consumers parse by heading; variants fail.Confirm: industry slug, geographic scope, B2B / B2C / hybrid, focal value-chain layer (must match the layer used in map-five-forces if running in orchestrator mode), buying-unit definition (individual / household / SMB / enterprise procurement committee). Read references/jtbd-methodology.md and references/customer-segmentation.md. Note any substitution threats already flagged in working/five-forces.md (orchestrator mode) — they are the priority candidates to chase in step 4.
Read references/jtbd-methodology.md. For this industry, name the primary JOB customers are hiring solutions to perform. Express as job-as-process, not job-as-attribute (Ulwick): "[verb] [object] [contextual qualifier]" — e.g., "minimize time-to-decision for a regulatory submission under FDA Q-Sub review." For each identified JTBD, name all three components:
If a component is genuinely minimal, state "Emotional job: minimal — purchase is routinized procurement with no career exposure" rather than omitting. Each JTBD carries ≥1 tagged evidence claim.
For B2B industries, additionally map jobs across the buying committee — read references/jtbd-methodology.md "B2B multi-stakeholder JTBD" section. Different stakeholders (economic buyer, technical evaluator, user, procurement) often have DIFFERENT jobs for the same purchase.
Read references/customer-segmentation.md. Define ≥2 customer segments grounded in the job they are hiring the product to do. Each segment needs:
Anti-pattern (REJECTED): "Mid-market enterprises in financial services," "Gen-Z consumers," "manufacturers with >$500M revenue." These are demographic/firmographic boxes, not jobs. Correct pattern (ACCEPTED): "Buyers hiring the product to compress a 6-week manual reconciliation cycle into a single audit-ready report," "Buyers hiring the product as career insurance against a known regulator escalation."
The validator scans for demographic-only segment names and fails outputs that show segmentation by attribute rather than job. If a segment is named demographically but its definition is genuinely job-based, restate the name to lead with the job.
Read references/substitution-risk.md. The section heading must be exactly `## Substitution Risk` (verbatim wording, level-2 heading). Downstream consumers (Five Forces reconciliation, analyze-trajectory cross-category-substitute scan) parse this section by exact heading match. Variants like "Threat from Adjacent Categories", "Substitutes", or "Cross-Category Risk" fail validation.
For each segment, name the leading substitute candidates — cross-category preferred. A substitute is anything else the buyer could hire to perform the same JOB, including:
For each named substitute, state:
At least ONE substitution risk must name a specific candidate with these three fields filled. "Generic competitor pressure" fails.
Read references/wtp-drivers.md. For each segment, identify the DRIVERS of willingness to pay — not a single number. Drivers explain why this segment's price ceiling sits where it sits. Examples:
Distinguish B2B vs B2C explicitly: B2B WTP is dominated by ROI quantification + procurement-committee risk aversion; B2C WTP is dominated by perceived value at point-of-purchase + reference pricing. State your method anchor (Van Westendorp / conjoint / value-theory / expert-elicit) when available.
Read references/demand-signals.md. Identify at least one MEASURABLE LEADING INDICATOR that would surface a demand shift before it appears in share data. Required format:
Lagging indicators (revenue, share, NPS) fail this check. A demand signal is something you could observe BEFORE the market noticed.
If working/five-forces.md exists in the same industry folder, reconcile: every substitution threat flagged in Five Forces "Threat of Substitutes" must appear here with deeper treatment. If Five Forces flagged a threat that this analysis cannot find a JTBD basis for, flag for Gate 2 — one of the two is wrong. If standalone mode, add note: "Five Forces cross-reference deferred — five-forces.md not present."
next_skills YAML blockEnd the output file with:
---
next_skills:
- map-competitive-arena # demand-side findings inform supply-side competitive mapping
- analyze-trajectory # cross-category substitution candidates often signal trajectory shifts
- assess-moat-sources # WTP drivers reveal which moat types matter most in this industry
---At least one skill must be listed.
Run python scripts/validate_demand.py --output-path <path> — checks: ≥1 JTBD with all 3 components, ≥2 JTBD-based segments (no demographic-only names), ≥1 named substitution risk with switching cost + likelihood, WTP drivers per segment, ≥1 named demand signal with measurement source, V/C/A/I tag coverage, next_skills: YAML block. Write to working/demand.md (orchestrator) or standalone/analyze-demand-YYYY-MM-DD.md (standalone).
HTML on request (standalone only): markdown is the default and the only format the validator and the orchestrator consume. If the user explicitly asks for an HTML version of a standalone run, then after validation passes, also render the output via the html-output skill and review it per ../_shared/output-conventions.md § "HTML deliverables and quality review". Never produce HTML automatically.
## Substitution Risk is required for downstream consumer consistency.encoding='utf-8'.None yet — v1 (2026-05-18 initial build, Phase 2 of industry-analysis collection).
<!-- Built with Agent Engineer Master — get your own production-ready skill: www.agentengineermaster.com/skill-engineer -->
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.