---
name: business-proposal
description: Use when the user wants to synthesize all ready project input resources into a two-page business proposal. Reads docs/inputs/<project-slug>/index.json plus each ready resource Markdown file and produces docs/business/<project-slug>/proposal.md with proposal metadata, 4 mandatory components, success factors, and an internal Discovery hours estimate. Triggers on requests for a business proposal, "/machine-business:business-proposal <project-slug>", and "/business-proposal <project-slug>".
---

# AI-Driven Business Proposal

Turn a project's ready input resources into a **two-page business proposal**. Pipeline: `process-input` -> **`business-proposal`** -> `render-docx`. The proposal synthesizes; it never transcribes and never fabricates. Every concrete claim about the client, problem, or solution MUST trace back to ready resource records.

## When to use

- The user has processed project inputs under `docs/inputs/<project-slug>/` and wants a business proposal.
- The user invokes `/machine-business:business-proposal <project-slug>`.

Skip for: full product requirements, verbatim intake of raw audio/text (use `process-input`), or rendering an already-written proposal (use `render-docx`).

## Input

Canonical input:

```text
docs/inputs/<project-slug>/index.json
```

The skill reads every `inputs[]` entry with `status: ready`, preserving array order, then reads each referenced `md` path relative to `docs/inputs/<project-slug>/`.

## Output

Final artifact:

```text
docs/business/<project-slug>/proposal.md
```

Structure is owned by [templates/business-proposal.es.md.tmpl](templates/business-proposal.es.md.tmpl) and [templates/business-proposal.en.md.tmpl](templates/business-proposal.en.md.tmpl); canonical section titles by language live in [prompts/02-draft.md](prompts/02-draft.md). The skill never hand-writes the proposal `.md`.

## The 3 phases

| # | Phase | Input | Output | Prompt |
|---|---|---|---|---|
| 1 | Ingest & map | `<project-slug>` | evidence map from ready resources | [prompts/01-ingest-and-map.md](prompts/01-ingest-and-map.md) |
| 2 | Draft | evidence map | two-page draft (in chat) | [prompts/02-draft.md](prompts/02-draft.md) |
| 3 | Finalize & write | approved draft | `docs/business/<project-slug>/proposal.md` | [prompts/03-finalize-and-write.md](prompts/03-finalize-and-write.md) |

**Review gate — between Phase 2 and Phase 3.** STOP after the draft and use the `AskUserQuestion` tool (never free text) to ask *Aprobar / Refinar / Reiniciar*. Phase 3 does NOT start until the user picks "Aprobar". This is the only approval stop.

## Operating protocol

1. Read the matching prompt file in `prompts/` and follow it literally.
2. Phases 1 -> 2 run without asking. Show the evidence map for transparency; do not pause.
3. Stop at the review gate between Phase 2 and Phase 3.
4. Phase 3 writes a blocks file, runs [scripts/assemble-proposal.sh](scripts/assemble-proposal.sh), and deletes the blocks file. Never hand-write the `.md`.
5. After writing, score against [references/checklist.md](references/checklist.md) and print exactly `/machine-business:render-docx docs/business/<project-slug>/proposal.md` as the next-step suggestion. Do NOT run it.
6. Stop conditions:
   - Missing or invalid project slug -> `⚠️ NEEDS INPUT`.
   - Invalid language argument -> `⚠️ NEEDS INPUT: language must be es or en`.
   - Missing, empty, unreadable, or invalid `docs/inputs/<project-slug>/index.json` -> `⚠️ NEEDS INPUT`.
   - No `ready` resources in the index -> `⚠️ NEEDS INPUT`.
   - Any ready input has a missing/unreadable `md` path -> `⚠️ NEEDS INPUT`.
   - `docs/business/<project-slug>/proposal.md` exists -> use `AskUserQuestion` to ask *overwrite / cancel*.

## Hard rules

- **Project slug required.** Do not accept global flat input paths as the primary interface.
- **Only ready resources.** Ignore `failed` and `ignored` inputs when drafting the proposal.
- **Trace every concrete claim to ready resources.** Hard facts not present in ready resource records MUST be omitted.
- **Language selection.** Accept optional `es` or `en` after the project slug. If omitted, use the language explicitly requested by the user; otherwise use the language the user is speaking. If ambiguous, default to `es`.
- **Structure owned by script + templates.** Phase 3 writes a blocks file and runs the assembly script; no hand-written `.md`.
- **Two-page budget.** Target 1000-1200 words, hard cap 1400.
- **Selected-language output.** Titles, body, and Discovery boilerplate must match the resolved output language.
- **Stable placeholders.** Keep block markers and template placeholders unchanged across localized templates.
- **No auto-chaining.** Suggest `/machine-business:render-docx ...` in prose; do not execute.

Emergent failure modes: [references/anti-patterns.md](references/anti-patterns.md).

## References

- [templates/business-proposal.es.md.tmpl](templates/business-proposal.es.md.tmpl), [templates/business-proposal.en.md.tmpl](templates/business-proposal.en.md.tmpl) — output structure by language
- [scripts/assemble-proposal.sh](scripts/assemble-proposal.sh) — assembly + DISCOVERY_HOURS validation
- [prompts/01-ingest-and-map.md](prompts/01-ingest-and-map.md), [prompts/02-draft.md](prompts/02-draft.md), [prompts/03-finalize-and-write.md](prompts/03-finalize-and-write.md)
- [references/checklist.md](references/checklist.md), [references/anti-patterns.md](references/anti-patterns.md)
- Upstream/downstream: [../process-input/SKILL.md](../process-input/SKILL.md), [../render-docx/SKILL.md](../render-docx/SKILL.md)
- Framework: [../../../../docs/framework.md](../../../../docs/framework.md)
