diff --git a/custom-skills/95-ourdigital-presales-seo/SKILL.md b/custom-skills/95-ourdigital-presales-seo/SKILL.md index f5a4193..dac0eb3 100644 --- a/custom-skills/95-ourdigital-presales-seo/SKILL.md +++ b/custom-skills/95-ourdigital-presales-seo/SKILL.md @@ -55,17 +55,18 @@ headless Chrome, python-pptx. Create `data/` subfolder. Initialize `findings.jso → write `03_presales-opportunity-brief.md`. ## Stage 5 — Estimate (견적) — REVIEW GATE -Pricing is delegated to the **`ourdigital-estimate-engine`** skill (`../96-ourdigital-estimate-engine`); this skill only maps findings → scope, then calls the engine: -- `python scripts/findings_to_scope.py --findings /data/findings.json --out /data/scope.json --seq [--tier auto|smb|basic|treatment] [--billing 0.70]` -- `ENG=../96-ourdigital-estimate-engine; python $ENG/scripts/estimate.py --rate-card $ENG/references/rate_card.yaml --catalog-dir $ENG/catalog --scope /data/scope.json --out-dir ` +Pricing is delegated to the **`ourdigital-estimate-engine`** skill (`../96-ourdigital-estimate-engine`). Estimates are archived **centrally in OurDigital's space**, not in the engagement bundle: +- `EST=~/Workspaces/ourdigital-space/estimates/__seo` — create it (central 견적 archive). +- `python scripts/findings_to_scope.py --findings /data/findings.json --out "$EST/data/scope.json" --seq [--tier auto|smb|basic|treatment] [--billing 0.70]` +- `ENG=../96-ourdigital-estimate-engine; python $ENG/scripts/estimate.py --rate-card $ENG/references/rate_card.yaml --catalog-dir $ENG/catalog --scope "$EST/data/scope.json" --out-dir "$EST"` - Engine (effort method, `seo` catalog): auto-tier (smb/basic/treatment) by portfolio + premium-vertical floor; On-page hours scale by `subbrands_total` (cap ×2.0); 제안가 = 합계 절사. Reproduces Basic ₩10.5M / Treatment ₩25.0M; SMB ~₩3M; 25-property chain ~₩29.5M. -- Produces `05_estimate_ko.md`, `05_estimate.xlsx`, `data/estimate.json` (effort shape → consumed by `build_deck.py`). Present the 견적; get sign-off. +- Produces `05_estimate_ko.md`, `05_estimate.xlsx`, `data/estimate.json` in `$EST` (the central quote archive; effort shape → consumed by `build_deck.py`). Present the 견적; get sign-off. - SEO findings→scope/tier mapping lives here (`findings_to_service.md`); **rates/hours/tiers live in the engine** (`rate_card.yaml` + `catalog/seo.yaml`) — edit pricing there, not here. ## Stage 6 — Deliverables — REVIEW GATE before send - **Client PDF**: author the short brief HTML from `templates/client_brief.html` (fill the content; keep the CSS), then `bash scripts/render_pdf.sh .html` → PDF. Verify Korean renders (Read the PDF). -- **Sales deck**: `python scripts/build_deck.py --findings /data/findings.json --estimate /data/estimate.json --out /sales-deck.pptx` +- **Sales deck**: `python scripts/build_deck.py --findings /data/findings.json --estimate "$EST/data/estimate.json" --out /sales-deck.pptx` (deck stays in the engagement bundle; reads the archived estimate.json from `$EST`) - Sanitize the client-facing pieces: no internal pricing strategy beyond the 견적; tasteful competitor benchmark only. ## Stage 7 — Archive (standard) diff --git a/custom-skills/96-ourdigital-estimate-engine/SKILL.md b/custom-skills/96-ourdigital-estimate-engine/SKILL.md index 99578da..37e3ce2 100644 --- a/custom-skills/96-ourdigital-estimate-engine/SKILL.md +++ b/custom-skills/96-ourdigital-estimate-engine/SKILL.md @@ -54,6 +54,13 @@ Example consumer: `ourdigital-presales-seo` (`findings_to_scope.py` → engine real quote data. All current catalogs are real. - Rates change in `rate_card.yaml` only (single source). Validate against a known real quote. +## Output location +Estimates are archived centrally in OurDigital's space: +`~/Workspaces/ourdigital-space/estimates/__/` +(e.g. `…/estimates/2026-05-27_shr_seo/`). The engine stays `--out-dir`-agnostic — the caller +passes that path. Client engagements keep their audit docs/deck in their own workspace but the +견적 lives here (single quote archive). + ## Conventions Korean-first output · 부가세 별도 · 유효기간 14d · 현금 · `OD-YYYY-NNN`. Don't invent rates — stub and flag instead. Legal entity (주)디인텔리전스 / info@ourdigital.org.