Easy RFP — API Reference & Methodology

Public RPC endpoints for organizers, hotels, and partners — plus transparent documentation of how Easy RFP scores hotels, calculates savings, and measures response rates.

Webhooks & Pages-Functions endpoints: see the interactive OpenAPI 3.1 explorer (raw spec: /openapi.json).

Are you a planner who landed here from a tooltip?

This page documents how Easy RFP works under the hood. The technical sections (auth, rate limits, RPCs) are for integrators. The methodology sections explain the numbers you see in the app.

Quick links for planners: How "hours saved" is calculated · How hotel scores work (TOPSIS) · Response rate benchmark source · Currency & FX handling

Endpoints in this reference:
  1. Authentication
  2. score_hotel_for_brief
  3. topsis_rank_hotels
  4. suggest_weights_for_rfp
  5. suggest_counter_offer
  6. predict_win_probability
  7. detect_proposal_anomalies
  8. compute_realistic_total_cost
  9. get_hotel_dashboard_stats
  10. dsar_export (GDPR)
  11. request_erasure (GDPR)
  12. v_proposals_csv_export

Authentication

All endpoints require a valid Supabase JWT in the Authorization header:

POST https://jhihwzfikvndybbyaoul.supabase.co/rest/v1/rpc/{function_name}
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
apikey: {your_anon_key}
Content-Type: application/json

Tokens are obtained via magic-link OTP at /app/. Token TTL: 60 minutes. Use refreshSession to extend.

score_hotel_for_brief authenticated

Returns a normalized score (0–1) for a given hotel against a published brief. Includes breakdown by criterion.

ParamTypeRequiredDescription
p_hotel_iduuidyesHotel UUID
p_brief_iduuidyesRFP brief UUID

Returns: {score: 0.78, breakdown: {price: 0.85, location: 0.72,...}}

For planners: how the composite score is built

The score you see next to every proposal (e.g. "78/100") is a TOPSIS multi-criteria score. TOPSIS ranks each hotel by how close it is to an ideal proposal across four criteria — by default price (35%), location (25%), MICE fit (25%), and response time (15%). You can change the weights yourself on any RFP.

The technical RPC that computes this is topsis_rank_hotels (documented just below) — but you don't need to call anything. The app does it for you on the Compare view, and the score updates live as you drag the weight sliders.

topsis_rank_hotels authenticated

TOPSIS multi-criteria ranking of hotels for a given RFP. Honors organizer-defined scoring weights and applies mice_role multipliers (event_venue 1.2x, full_service 1.0x).

ParamTypeRequired
p_rfp_iduuidyes
p_limitintegerno (default 50)

Returns: ranked list with rank, topsis_score, price_score, location_score, cluster_boost, why_this_hotel array.

suggest_weights_for_rfp authenticated

AHP-lite weight suggestions based on RFP characteristics (sector, intent, attendees). Returns 4-criterion split summing to 1.0.

Returns: {price: 0.35, location: 0.25, mice_fit: 0.25, response_time: 0.15, rationale: "..."}

suggest_counter_offer authenticated

Recommends counter-offer terms based on cohort history (sector × city × pax band). Requires N≥5 comparable proposals.

predict_win_probability authenticated

9-factor heuristic returning probability that a given hotel wins a given RFP (0.0–1.0). Factors: completeness, response_rate, mice_fit, price_position, cluster_boost, intent_score, sector_match, history, recency.

detect_proposal_anomalies authenticated

Detects price outliers (z-score against cohort), duplicate proposals, and rate manipulation. Severity: low/medium/high.

compute_realistic_total_cost authenticated

Adds DDR, F&B, AV, perks to base room rate. Returns per-attendee and total. Used by Compare view.

get_hotel_dashboard_stats authenticated

Hotel-side stats: rankings 30d, response_rate, completeness_pct, RFPs received vs responded, cluster_boost current value.

dsar_export GDPR Art. 15

Returns all data Easy RFP holds about a given hotel or organizer. JSON or ZIP. Includes proposals, sends, field_facts, deltas.

request_erasure GDPR Art. 17

Initiates right-to-be-forgotten flow. Cascades delete in 5 child tables. Confirmation email required (TTL 24h).

v_proposals_csv_export authenticated

OpenTravel-compatible CSV view. Compatible with Cvent, Knowland, AventriOnArena import flows.

For planners: how "hours saved" and ROI are calculated

The "~Nh sourcing time saved" figure on your dashboard uses an industry-anchored heuristic:

ActivityHours saved per unitSource
RFP brief drafting + venue research1.0 h per RFPSITE Index, ReadyBid 2024
Hotel outreach (one personalized email each)0.15 h per inviteSITE Index, ReadyBid 2024
Proposal triage + comparison0.33 h per proposal receivedSITE Index, ReadyBid 2024

Total hours × €40/h average loaded planner labor cost = labor saved. Divided by your monthly subscription cost = ROI multiplier shown in the dashboard tile.

Numbers are intentionally conservative — heavy users with multi-property RFPs typically save 2–3× more.

For planners: response rate benchmark

The "industry average ~22%" comparison shown on your Reports page is anchored to ReadyBid's 2025 hotel response rate report, which surveys typical email-only RFP outreach. Easy RFP customers typically see 35–45% response rates due to brief completeness and curated shortlists.

Your number is computed live: responded / sends × 100, where responded means the hotel returned at least one proposal artifact (rate, document, decline reason).

For planners: currency & FX handling

See the Currency & FX section below for the full reference (default ECB rates, lock-on-send, configurable corporate rates, audit trail).

Rate limits

Endpoint typeLimitWindow
Anonymous (hotel-prefill, dsar)301 hour
Authenticated (organizer)10001 hour
RPC heavy (TOPSIS, parser)1001 hour

Status & SLA

System health: easyhotelrfp.com/status · Uptime target: 99.5% · API response p95: <800ms.

Need help?

Email [email protected] · GDPR / DSAR: [email protected]

Currency & FX handling

Easy RFP processes RFPs and proposals across multiple currencies. To make rates comparable in a single reporting currency, conversion rules are explicit:

Default behavior (today)

Configurable options (per organization)

Audit trail

Every FX conversion stores: source rate, source date, source provider (ECB / corporate / contract-locked), and the converted amount. Available via audit log export at /app/admin/audit/ in CSV/JSON format.

Rounding policy disclosure

Easy RFP follows IFRS standard for currency rounding: half-up at 2 decimal places, applied at line-item level. Aggregate totals are computed from rounded line-items (not from unrounded source values), making every total reconcilable to its components.

Configuration endpoint

Organization-level FX configuration via POST /api/v1/organization/fx-config (Enterprise tier). Contact [email protected] for access.