Add luxury/vertical signal to auto-tiering

pick_baseline now applies a premium floor: if prospect.vertical matches
rate_card.tiering.premium_verticals (luxury/premium/deluxe/5성/특1급…), the
auto-selected tier is floored to premium_min_tier (default basic) so a premium
single property won't drop to the smb entry tier.

Validated: L'Escape (hotel_luxury, 1 property) smb -> basic (₩10.5M);
non-luxury single -> smb (₩3.0M); SHR chain -> treatment (₩29.5M) unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 01:15:55 +09:00
parent 0496262cd5
commit 95d6fdf499
4 changed files with 36 additions and 9 deletions

View File

@@ -8,8 +8,10 @@ floored to `rounding_unit`. Mirrors OurDigital/D.intelligence's real SOW-based q
- `treatment` if `properties_total > 5` OR `subbrands_total > 3` (multi-brand / chain)
- `smb` if `properties_total <= 1` AND `subbrands_total == 0` (single-property SMB)
- `basic` otherwise (small multi-property / mid)
- override with `--baseline`. **Note:** tiering is by portfolio size only — quote a
single *premium* property as `basic`/`treatment` manually.
- **Premium floor:** if `prospect.vertical` matches `rate_card.tiering.premium_verticals`
(luxury/premium/deluxe/5성/특1급…), the auto-tier is floored to `tiering.premium_min_tier`
(default `basic`) — a luxury single property won't auto-drop to `smb`.
- override with `--baseline`.
Per-tier billing: `smb` uses `billing_rate: 0.55` (set in sow_templates); `basic`/
`treatment` use `rate_card.billing_rate` (0.70). Override with `--billing`.