Files
our-claude-skills/custom-skills/95-ourdigital-presales-seo/references/findings_to_service.md
Andrew Yim ba88247496 Implement ourdigital-presales-seo skill
SKILL.md orchestration (8 gated stages), references (rate_card.yaml,
findings_to_service rubric, competitor sets), findings.schema.json contract,
and scripts: kg_query.py (generalized KG examination), estimate.py
(findings→rate-card 견적 md/xlsx/json), build_deck.py (9-slide branded PPTX),
render_pdf.sh (Korean PDF via headless Chrome), plus client_brief.html template.

Validated on Sono Hotels & Resorts findings: estimate OD-2026-001
(23-47M KRW) and a 9-slide deck generated cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 23:10:53 +09:00

1.8 KiB

Findings → service rubric

How estimate.py maps detected findings (from findings.json) to rate_card.yaml service lines. The script reads the structured signals below; this file is the human-readable source of truth for the rules.

Trigger (signal in findings.json) Service line(s) Scope driver
discovery.sitemap_status != 200 OR discovery.robots_sitemap_declared == false OR discovery.discoverable_urls low vs estimated_pages technical_audit + technical_remediation site size / # templates
technical.cwv.perf < 0.5 OR cls > 0.1 OR lcp_ms > 2500 OR ttfb_ms > 600 technical_audit (if not already) + technical_remediation # templates
technical.schema.org == "bare"/"none" OR entity.panel != "hotel" OR entity.name_split OR entity.legacy_contamination OR entity.subbrands_with_entity == 0 schema_build (one-time) + onpage_entity (retainer) # sub-brands + # properties
entity.properties_with_entity == 0 OR url_hygiene contains GBP/local mismatch local_seo # properties
findings[].class includes measurement gap / no GSC-GA4 ga4_impl and/or dashboard (+ gtm_setup if tag gaps)
technical.meta_dupe OR technical.title_i18n_mismatch OR technical.hreflang == "incomplete" onpage_entity # templates

Severity → priority (for the brief/deck ordering, not pricing):

  • critical: crawl/index blocking, CWV failing, entity mistyped
  • high: entity/sub-brand gaps, duplicate URLs, meta dupes
  • medium: hreflang, H1, hygiene

Quantity rules

  • monthly line items use rate_card.defaults.retainer_months (default 6).
  • local_seo scope note scales with property count (entity / discovery counts).
  • One-time items counted once even if triggered by multiple findings.

Edit this file and rate_card.yaml together when rates or rules change.