Skip to content

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 push

Modes ​

ModeWhoAI
AutomaticSystemScrape → decide → write rate
Manual create/edit/deactivateHotelAI stands down until resume

Eligibility (legacy): DirectMax / admin. Encode the plan gate in Middleware; hide UI otherwise.

How to build (phases) ​

PhaseWork
RM1Settings + manual CRUD → Middleware rates API
RM2Scraper ingest + storage (shared secret, not the public browse key)
RM3Decision engine + ARI promotion from the same SSOT
RM4Cron + pause/resume
RM5Parity charts / admin bulk
RM6Shadow 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

API-first. Middleware Backend wins over Core Backend when both exist.