# Business-Proposal Anti-Patterns

Emergent failure modes seen when turning an intake document into a proposal, with remedies. Fix before the review gate.

## 1. Fabricated client facts

**Symptom.** The proposal states a sector, company size, budget, deadline, or metric that the input never mentioned — with no flag.

**Why it's bad.** A proposal is read as a commitment. Inventing client facts misrepresents the client to themselves and poisons every downstream step (including the rendered `.docx` sent out).

**Remedy.** Trace every concrete claim to the evidence map. If the input is silent on a hard fact, omit it — never invent it.

---

## 2. Transcript dump

**Symptom.** A component section is filled with pasted or lightly-edited transcript text instead of synthesized prose.

**Why it's bad.** The intake document already exists for that. The proposal's job is to organize and synthesize the material into the required sections.

**Remedy.** Rewrite the evidence into proposal prose grouped by component. Quote sparingly, only when the exact wording matters.

---

## 3. Two-page overflow

**Symptom.** The proposal runs three or more pages, padded with background, marketing copy, or repeated points.

**Why it's bad.** The deliverable is defined as two pages. Overflow buries the decision-relevant content and breaks the render contract.

**Remedy.** Target 1000-1200 words, hard cap 1400. Cut repeated setup and long explanations before cutting required sections.

---

## 4. Missing Discovery estimate

**Symptom.** The proposal ends after the 4 main components or success factors and does not include the internal Discovery section.

**Why it's bad.** The proposal includes a Discovery estimate so Sales can act on it. Omitting it leaves the handoff incomplete.

**Remedy.** Supply a single positive integer for `@@DISCOVERY_HOURS@@`. The script renders the title, internal subtitle, role description, working-day structure, and Orden de Servicio paragraph automatically.

---

## 5. Hand-built document that ignores the template

**Symptom.** The written `.md` does not match the selected `templates/business-proposal.<lang>.md.tmpl`: it starts with a `# PROPUESTA DE NEGOCIO` or `# BUSINESS PROPOSAL` heading instead of frontmatter, carries a metadata bullet list, uses `##`/`###` for the numbered components, or replaces the `::: {custom-style=...}` divs with a plain heading.

**Why it's bad.** This is the single most common cause of a wrong-looking `.docx`. The centered title comes from the frontmatter `title:` (Pandoc's `Title` style); a `# PROPUESTA DE NEGOCIO` heading renders left-aligned as `Heading 1` instead. The Discovery page break is attached to the `Internal Title` paragraph style, only applied when the `::: {custom-style="Internal Title"}` div is present; a plain heading gets no page break.

**Remedy.** Never hand-write the proposal `.md`. In Phase 3, write the content file with `@@MARKER@@` blocks and run `scripts/assemble-proposal.sh`. If the script reports a missing block, fix the content file; do NOT bypass the script by writing the `.md` directly.

---

## 6. Auto-chaining to render-docx

**Symptom.** After writing `docs/business/<project-slug>/proposal.md`, the agent immediately runs `/render-docx` (or any plugin-qualified variant) without the user asking.

**Why it's bad.** Producing the `.md` is the end of this skill. The user may want to read or edit the proposal before rendering. The two-step flow `business-proposal → render-docx` is deliberate.

**Remedy.** Stop after writing the `.md` and deleting the `.blocks` file. Print the path and the checklist score, then suggest `/machine-business:render-docx docs/business/<project-slug>/proposal.md` in prose — do not execute it.

---

## 7. Inventing a confirmation/open-points block

**Symptom.** The generated `.md` ends with a `**Puntos a confirmar en el Discovery**`, `**Discovery open points**`, or similar heading followed by a bullet list of open questions.

**Why it's bad.** The template no longer carries that sub-section. The Discovery estimate is meant to end after the Orden de Servicio paragraph. Adding the block hand-builds content the template controls and reintroduces a list of unknowns the user removed.

**Remedy.** Do not write any "Puntos a confirmar" content. There is no `@@DISCOVERY_OPEN_POINTS@@` marker. Genuine gaps belong to the human Discovery conversation, not this document.
