AI Rate Match (draft)
Automatic or manual Extended Stay / matched rate. Scrapers never write bookings. Guest still books BAR + active matched plans through Marketplace / Booking Engine.
Depends on: rates, ARI draft. Not a v1 winner yet.
Watch list + hotel settings
→ scraper workers (signed POST ingest)
→ Middleware saveScrapeResults → rateDecisionEngine
→ skip if disabled / paused / MANUAL override
→ create/update/deactivate matched rate
→ SSOT rates + ARI promotion pushModes
| Mode | Who | AI |
|---|---|---|
| Automatic | System | Scrape → decide → write rate |
| Manual create/edit/deactivate | Hotel | AI stands down until resume |
Eligibility (legacy): DirectMax / admin. Encode the plan gate in Middleware; hide UI otherwise.
How to build (phases)
| Phase | Work |
|---|---|
| RM1 | Settings + manual CRUD → Middleware rates API |
| RM2 | Scraper ingest + storage (shared secret, not the public browse key) |
| RM3 | Decision engine + ARI promotion from the same SSOT |
| RM4 | Cron + pause/resume |
| RM5 | Parity charts / admin bulk |
| RM6 | Shadow vs legacy Convex engine |
Do not treat BookDirect domains as competitors. Do not expose competitor URLs in guest UI.
Manual create replaces the AI plan (source: MANUAL). Resume clears override.
IDOR
Ingest: shared secret + IP allowlist. Rate writes: partner JWT + owned_by. Public key cannot POST ingest or change rates.
Acceptance
- Competitor cheaper + AI on → matched rate on Marketplace / engine within one scan
- Manual create blocks overwrite until resume
- Disable AI deactivates AI-sourced plans
- Every change logged with before/after price