MetodologIA commercial proposal engine — bilingual (ES+EN), multi-format, brand-resolved. Activate whenever the user mentions: proposal, quote, offer, budget for a client, pitch, commercial presentation, "design a service", "handle this request", "adapt for this client", "innovate a service", "white-label for partner", "co-brand with X", "new service variant", or any document intended to sell or scope a MetodologIA service. Operates in THREE MODES: — STANDARD: existing catalog service, derive correct version per audience/segment — INNOVATION: new service or variant designed from canonical building blocks — CATALOG EDIT: add/modify a service or condition without generating a proposal Default output: 10 files per proposal (HTML·DOCX·XLSX·PPTX·MD × ES+EN + verification report). Branding resolved at runtime: own | cobrand | whitelabel. Language: follows user's conversation language; scaffolding is English.
This engine has three layers that always run in order:
Never skip layer 3. Never generate files before layer 3 completes.
Run on every activation before responding:
# Load transversal docs (stop at first match per pattern)
for f in 00-inventario-maestro.md 00-glosario-catalogo.md 00-guia-editorial.md \
00-dod-maestro.md 00-guia-derivacion-versiones.md \
00-resolucion-por-confirmar.md 00-mapa-interdependencias.md; do
[ -f "$f" ] && cat "$f"
done
# Load canonical services (head -80 each to get pricing + scope quickly)
find . -name "canonico.md" -not -path "*/.git/*" | while read f; do
echo "=== $f ===" && head -80 "$f"
done
# Load skill catalog (machine-readable, preferred over .md scan)
[ -f ".claude/skills/metodologia-proposal-engine/catalog/services.yaml" ] && \
cat .claude/skills/metodologia-proposal-engine/catalog/services.yaml
[ -f ".claude/skills/metodologia-proposal-engine/catalog/conditions.yaml" ] && \
cat .claude/skills/metodologia-proposal-engine/catalog/conditions.yaml
# Detect unresolved blockers
grep -r "POR CONFIRMAR" --include="*.md" -l 2>/dev/null | head -10
Build a working map:
Decision [2026-03-29, JM]: catalog/ YAML files are the preferred SSOT over .md scanning because they are machine-readable and faster. If both exist and conflict, the canonical .md wins. If no repo files exist, fall back to catalog/services.yaml and references/schemas.md.
Incoming request
→ Is the service clearly in the catalog?
YES → STANDARD MODE
NO / PARTIALLY →
Does it fit a known service type (Workshop/Bootcamp/CW/Program)?
YES → INNOVATION MODE (variant)
NO → INNOVATION MODE (new) + [POR CONFIRMAR] on all pricing
→ Does the user want to add/modify a service or condition?
YES → CATALOG EDIT MODE (read hooks/on-catalog-update.md)
Select the canonical service that best matches the need.
Read that service's canonico.md fully (not just the head).
Determine audience version using catalog/segments.yaml (see also references/brand-system.md for branding mode):
ejecutiva-b2b.md pattern: formal 3rd-person, business case, ≤25 words/sentenceejecutiva-b2c.md: direct 2nd-person, personal ROI, ≤25 wordscomercial-cliente-b2b.md: narrative hook, benefits, CTAcomercial-cliente-b2c.md: aspirational + concrete, 2nd personcomercial-compras.md: specs, RACI, SLA, full conditions, no marketingusuario-inexperto.md: ≤15 words/sentence, zero jargon, see substitution tableStructure content with Minto Complete (see references/voice-content.md):
Resolve branding: call scripts/brand-resolver.js with the brand_mode input (own | cobrand | whitelabel). See references/brand-system.md for full spec. Assumption [low risk]: if no brand_mode is provided, default to own.
Read references/service-innovation.md before proceeding.
Key rule: new services are composed from canonical building blocks, not invented from scratch. Every module, deliverable, and duration range must trace back to an existing canonical or be explicitly marked [POR CONFIRMAR].
Allowed service types: Workshop (2–4h) | Bootcamp (12–24h) | Consultive Workshop (6–12 × 2h sessions) | Program (8–20 weeks). No new types without JM sign-off.
Required disclaimer in all Innovation Mode outputs:
This is a custom service design proposal. Prices marked [POR CONFIRMAR] are indicative and confirmed before SOW signing. This document does not constitute a delivery commitment or contract.
Read hooks/on-catalog-update.md. It contains the cascade protocol: which derived files to update, in what order, within what SLA (48h).
Run scripts/verify-legal.js on the full content, or execute the checklist manually if the script is unavailable.
Read references/legal-guardrails.md for the full spec. Summary of hard blockers:
| ID | What fails | How to fix |
|---|---|---|
| L1 | Price ≠ canonical | Correct to canonical price |
| L2 | [POR CONFIRMAR] stated as confirmed | Add explicit conditional |
| L3 | Guarantee clause differs from exact wording | Replace with exact clause |
| L4 | Workshop→Bootcamp credit terms wrong | Replace with "100%, 6 months, non-transferable" |
| L5 | Result % promised without "indicative target" wrapper | Add wrapper |
| L6 | Out-of-scope item promised (in canonical's "What it is NOT") | Remove or go to Innovation Mode |
| L7 | Red list word present | Replace (see references/legal-guardrails.md#red-list) |
| L8 | Unconfirmed credit chain stated as fact | Add "subject to current policy — ask your ambassador" |
| L9 | IAC service with B2C price not confirmed | Mark [POR CONFIRMAR] |
| L10 | Fixed USD rate | Add "(indicative rate, subject to variation)" |
For warnings W1–W7 (co-branding, presential, >20 participants, LMS limits, etc.) see references/legal-guardrails.md#warnings.
Produce a verification report before generating any file:
VERIFICATION REPORT
===================
Status: ✅ APPROVED | ⚠️ APPROVED WITH WARNINGS | 🔴 BLOCKED
Blockers fixed: [list or "none"]
Active warnings: [list or "none"]
Brand mode: [own | cobrand | whitelabel]
Partner brand applied: [name or "n/a"]
Language detected: [en | es | both]
Canonical reference: [slug + version + date]
Mode: [STANDARD | INNOVATION | CATALOG EDIT]
Only after verification passes. Run scripts/generate-all.js or produce each format manually.
Default output (always, unless user explicitly opts out):
| Format | ES | EN | Notes |
|---|---|---|---|
| HTML | ✓ | ✓ | Responsive, Neo-Swiss Clean, brand-resolved |
| DOCX | ✓ | ✓ | Poppins→Arial (Office compat), Trebuchet body |
| PPTX | ✓ | ✓ | 6 slides minimum |
| XLSX | bilingual | — | Sheet ES + Sheet EN |
| Markdown | ✓ | ✓ | GitHub/Notion/CMS-ready |
| Verification report | ✓ | — | Internal control file |
File naming: propuesta_[company-slug]_[YYYY-MM]_[LANG].[ext]
Output directory: outputs/ (repo) or /mnt/user-data/outputs/ (Claude Code)
White-label branding rule: when brand_mode: whitelabel, ALL MetodologIA visual identity (logo, colors, name) is replaced with partner brand. Methodology content, structure, and quality standards are unchanged. MetodologIA is completely invisible in the output.
Co-brand rule: both logos appear. MetodologIA design system is the base; partner's primary color is used as an accent override for --gold only. Never override navy or typography.
Present files with present_files. Then tell the user:
Load these files only when the situation calls for them:
| File | Load when |
|---|---|
references/brand-system.md | Generating any visual output or resolving branding mode |
references/legal-guardrails.md | Layer 3 verification (always) |
references/voice-content.md | Drafting content (always in Layer 2) |
references/service-innovation.md | Innovation Mode |
references/schemas.md | Checking data shapes, building ProposalData JSON |
catalog/services.yaml | Querying available services |
catalog/conditions.yaml | Querying prices, credits, policies |
catalog/segments.yaml | Audience/segment rules |
agents/legal-reviewer.md | Spawning dedicated legal review subagent |
agents/catalog-manager.md | Adding/modifying catalog entries |
agents/format-generator.md | Parallelizing format generation |
hooks/pre-generate.md | Pre-generation checks |
hooks/post-generate.md | QA after generation |
hooks/on-catalog-update.md | Cascading updates after catalog change |