Property Data Collection Form
Audience: Hotel operations teams onboarding a new property to KeyNova.
Purpose: Single structured questionnaire that collects every piece of data the KeyNova team needs to provision a production property. Once filled, the KeyNova onboarding engineer uses it to populate
hmp-infrastructure/seeds/seed-production-hotel.sql(88-- REPLACE:placeholders) and configure integrations.How to use: Print or copy into a Google Doc. Every field marked required must be completed before the onboarding kick-off call (T-6 days). Optional fields can be deferred to post-launch.
Related:
- Day-by-Day Onboarding Checklist
- Training Materials Review
- Seed template:
hmp-infrastructure/seeds/seed-production-hotel.sql
0. Meta
| Field | Value | Notes |
|---|---|---|
| Property short code | __________ | Used internally for folder naming, e.g. OBRI |
| Onboarding owner (hotel side) | __________ | Primary contact for data questions |
| KeyNova onboarding engineer | __________ | Assigned from KeyNova team |
| Target go-live date | __________ | Should be T-0 in the day-by-day checklist |
| Form version | 1.0 | |
| Date filled | __________ |
1. Property Info
| # | Field | Required | Example | Validation |
|---|---|---|---|---|
| 1.1 | Legal entity name | Required | Obrium Hotels Private Limited | 2-255 chars |
| 1.2 | Display name (public-facing) | Required | The Obri, Udaipur | 2-120 chars |
| 1.3 | Brand association | Optional | The Obri Collection | 0-120 chars; leave blank if independent |
| 1.4 | Property short code | Required | OBRI-UDR | 3-20 chars, uppercase, alphanumeric + hyphen |
| 1.5 | Address line 1 | Required | Plot 14, Fateh Sagar Road | 2-255 chars |
| 1.6 | Address line 2 | Optional | Near Moti Magri | 0-255 chars |
| 1.7 | City | Required | Udaipur | 2-100 chars |
| 1.8 | State | Required | Rajasthan | Full state name, no abbreviations |
| 1.9 | Postal code | Required | 313001 | 6 digits (India PIN) |
| 1.10 | Country | Required | India | Default India |
| 1.11 | Timezone | Required | Asia/Kolkata | IANA zone; default Asia/Kolkata |
| 1.12 | Currency | Required | INR | ISO 4217; default INR |
| 1.13 | GSTIN | Required | 08AABCO1234F1Z5 | Regex: ^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[0-9A-Z]{1}[Z]{1}[0-9A-Z]{1}$ (15 chars) |
| 1.14 | PAN | Required | AABCO1234F | Regex: ^[A-Z]{5}[0-9]{4}[A-Z]{1}$ (10 chars) |
| 1.15 | CIN | Optional | U55101RJ2015PTC046789 | 21 chars if company; blank for sole proprietor |
| 1.16 | Star rating | Required | 4 | Integer 1-5 |
| 1.17 | Property type | Required | HOTEL | One of: HOTEL, RESORT, BOUTIQUE, HERITAGE, HOMESTAY, HOSTEL, SERVICE_APARTMENT, VISHRAMGRUH |
| 1.18 | Front-office phone | Required | +91-294-2520100 | E.164 format preferred |
| 1.19 | Reservations email | Required | reservations@theobri.com | Valid email |
| 1.20 | Support email | Required | support@theobri.com | Valid email |
| 1.21 | Website | Optional | https://theobri.com | Valid URL with scheme |
| 1.22 | Languages supported at reception | Required | English, Hindi, Marwari | Comma-separated; at least 1 |
| 1.23 | Latitude / Longitude | Optional | 24.5854, 73.7125 | Decimal degrees; used for booking engine map |
Brand assets
| # | Asset | Required | Format | Constraints |
|---|---|---|---|---|
| 1.24 | Hotel logo (color) | Required | SVG preferred; PNG fallback | Transparent background, min 512×512, max 1 MB |
| 1.25 | Hotel logo (monochrome) | Optional | SVG preferred | For printed folios/invoices |
| 1.26 | Hero image | Required | JPG/PNG | 1920×1080 minimum, max 2 MB |
| 1.27 | Favicon | Optional | ICO / PNG | 32×32 |
| 1.28 | Brand color (primary hex) | Optional | #0A1628 | Defaults to KeyNova Midnight Sovereign navy |
| 1.29 | Brand color (accent hex) | Optional | #B8962E | Defaults to KeyNova aged gold |
2. Rooms
2.1 Room Types
List every room type offered. Minimum 1 row.
| Code | Name | Description | Base rate (₹) | Max occupancy | Bed type | Amenities | Meal plan inclusion |
|---|---|---|---|---|---|---|---|
DLX | Deluxe | Lake-view, 28 sqm | 4500 | 2 | 1 King | WiFi, AC, TV, Minibar, Safe | CP (breakfast included) |
EXE | Executive | Lake-view, 36 sqm, sitting area | 6500 | 3 | 1 King + sofa bed | WiFi, AC, TV, Minibar, Safe, Bathtub, Coffee machine | CP |
SUI | Suite | Two-room suite, 54 sqm, balcony | 12000 | 4 | 1 King + 1 Twin | WiFi, AC, TV, Minibar, Safe, Jacuzzi, Butler service | MAP |
Validation:
Code: 2-6 chars, uppercase alphanumeric; must be unique per propertyBase rate: positive integer (rupees, no paise)Max occupancy: integer 1-8Bed type: free text but standardized (e.g.1 King,2 Twin,1 Queen)Meal plan:EP|CP|MAP|AP
2.2 Rooms List
Every physical room. Upload as CSV with these columns (one row per room):
| Column | Required | Example | Validation |
|---|---|---|---|
roomNumber | Required | 101 | Unique per property; 1-10 chars |
floor | Required | 1 | Integer -5 to 99 (basement to rooftop) |
roomTypeCode | Required | DLX | Must match a code from section 2.1 |
view | Optional | Lake | Free text (Lake, Pool, Garden, Street) |
connectingTo | Optional | 102 | Another roomNumber; creates connecting pair |
smokingAllowed | Optional | false | Boolean |
accessible | Optional | false | Boolean (wheelchair accessible) |
features | Optional | Balcony;Bathtub | Semicolon-separated list |
Minimum: total room count must match star rating expectations and fire-safety occupancy approval.
2.3 Room Photos
Required: at least 3 photos per room type (for booking engine gallery).
| Requirement | Spec |
|---|---|
| Format | JPG or PNG |
| Max file size | 1 MB each |
| Target resolution | 1920×1080 (16:9) |
| Minimum resolution | 1200×800 |
| Naming | {roomTypeCode}_{nn}.jpg e.g. DLX_01.jpg, DLX_02.jpg, DLX_03.jpg |
| Orientation | Landscape preferred; portrait allowed for bathroom shots |
| Content hint | 1st photo: bed-facing; 2nd: bathroom; 3rd: view or balcony |
3. Rate Plans
3.1 Rate Plan Definitions
| Code | Name | Meal plan | Payment policy | Cancellation policy ID (see §3.3) |
|---|---|---|---|---|
BAR-FLEX | Best Available Flexible | EP | Pay at hotel | FLEX-24H |
BAR-CP | Best Available w/ Breakfast | CP | Pay at hotel | FLEX-24H |
ADV-NR | Advance Purchase Non-Refundable | CP | Pay now in full | NON-REFUNDABLE |
CORP | Corporate Rate | CP | Bill to company | FLEX-48H |
GOV | Government Rate | EP | Pay at hotel | FLEX-24H |
Validation:
Code: 3-20 chars uppercase + hyphenPayment policy: one ofPay at hotel,Pay now in full,Pay 25% advance,Pay 50% advance,Bill to companyMeal plan:EP|CP|MAP|AP
3.2 Base Rates by Room Type × Rate Plan
Fill one row per (rate plan × room type) combo:
| Rate plan | Room type | Rate (₹) | Extra adult (₹) | Extra child (₹) |
|---|---|---|---|---|
BAR-FLEX | DLX | 4500 | 1500 | 750 |
BAR-FLEX | EXE | 6500 | 1500 | 750 |
BAR-CP | DLX | 5200 | 1500 | 750 |
| ... | ... | ... | ... | ... |
3.3 Cancellation Policies
Define named cancellation policies referenced above.
| Policy ID | Name | Free cancellation window | Penalty schedule |
|---|---|---|---|
FLEX-24H | Flexible – 24 hours | Until 14:00 one day before arrival | Full first-night charge if cancelled later |
FLEX-48H | Flexible – 48 hours | Until 14:00 two days before arrival | Full first-night charge if cancelled later |
NON-REFUNDABLE | Non-refundable | Never | 100% of total booking charged at booking time |
Validation:
Policy ID: 3-30 chars uppercase + hyphenFree cancellation window: timestamp rule (e.g.14:00 T-1)Penalty schedule: description + percentage(s); if tiered, provide comma-separated tiers
3.4 Seasonality / Festival Rates
List date ranges with rate multipliers (applied on top of base rate).
| Label | Start date | End date | Multiplier | Applies to |
|---|---|---|---|---|
Diwali 2026 | 2026-11-08 | 2026-11-12 | 1.8 | All rate plans |
Christmas / NYE | 2026-12-22 | 2027-01-02 | 2.2 | All rate plans |
Monsoon low | 2026-07-01 | 2026-08-31 | 0.75 | BAR-FLEX, BAR-CP |
Gudi Padwa | 2026-03-19 | 2026-03-19 | 1.3 | All rate plans |
Validation:
- Dates:
YYYY-MM-DD - Multiplier: decimal 0.1 – 5.0
- Overlapping date ranges: KeyNova will use the highest multiplier
4. POS Setup
4.1 Outlets
List every F&B outlet. Minimum 1 if POS module is enabled; skip section if not.
| # | Name | Type | Location | Operating hours | Seating capacity | Tables count |
|---|---|---|---|---|---|---|
| 1 | Sapphire | RESTAURANT | Ground floor, lobby wing | 07:00-23:00 | 80 | 20 |
| 2 | Clouds Bar | BAR | Rooftop, 8th floor | 17:00-01:00 | 40 | 12 |
| 3 | In-Room Dining | ROOM_SERVICE | N/A (virtual) | 24/7 | N/A | 0 |
| 4 | Verandah Cafe | CAFE | Pool deck | 08:00-20:00 | 30 | 8 |
| 5 | Banquet | BANQUET | 1st floor event hall | On demand | 200 | 0 (buffet) |
Validation:
Type: one ofRESTAURANT,BAR,CAFE,ROOM_SERVICE,BANQUET,POOL,QSROperating hours: 24-hour format, or24/7, orOn demandSeating capacity: integer, orN/A
4.2 Tables per Outlet
For each sit-down outlet, attach a CSV:
| Column | Example | Validation |
|---|---|---|
outletCode | SAPP | Short code from outlet list |
tableNumber | T01 | Unique per outlet |
seats | 4 | Integer 1-20 |
section | Window | Optional grouping (Window, Patio, Indoor) |
4.3 Menu CSV
Upload menu as CSV (one file per outlet, or consolidated with outletCode column).
Required columns:
| Column | Example | Notes |
|---|---|---|
outletCode | SAPP | Matches outlet list |
category | Starters | Must match a category in section 4.4 |
itemCode | SAPP-ST-001 | Unique per outlet, 4-30 chars |
name | Paneer Tikka | 2-120 chars |
nameHi | पनीर टिक्का | Optional Hindi name |
description | Cottage cheese marinated in yoghurt and spices, char-grilled | Max 500 chars |
price | 425 | Integer rupees, no paise |
isVeg | true | Boolean; required for India FSSAI marker |
containsAllergens | Dairy | Semicolon-separated: Dairy;Nuts;Gluten;Egg;Shellfish |
spiceLevel | Medium | One of Mild, Medium, Hot, Extra Hot, blank |
prepTimeMins | 15 | Integer, used for KDS SLA |
available | true | Boolean |
imageFilename | paneer-tikka.jpg | Optional; photos attached separately |
4.4 Menu Categories
One row per category per outlet:
| Outlet | Category | Display order | Tax category |
|---|---|---|---|
SAPP | Starters | 1 | FNB_STANDARD |
SAPP | Main Course | 2 | FNB_STANDARD |
SAPP | Desserts | 3 | FNB_STANDARD |
CLDS | Cocktails | 1 | FNB_ALCOHOL |
CLDS | Mocktails | 2 | FNB_STANDARD |
4.5 Tax Configuration (POS)
India GST defaults (confirm per property):
| Tax category | Condition | CGST | SGST | Total |
|---|---|---|---|---|
FNB_STANDARD | Bill value < ₹7,500/room-night | 2.5% | 2.5% | 5% |
FNB_PREMIUM | Bill value ≥ ₹7,500/room-night | 9% | 9% | 18% |
FNB_ALCOHOL | Alcoholic beverages | State VAT (varies) | – | State-specific |
ROOM_CHARGE | Room tariff < ₹7,500/night | 6% | 6% | 12% |
ROOM_CHARGE_PREMIUM | Room tariff ≥ ₹7,500/night | 9% | 9% | 18% |
Validation: confirm state alcohol tax with local CA; KeyNova defaults to 0% and expects you to override.
5. Front Desk Setup
| # | Field | Required | Default | Validation |
|---|---|---|---|---|
| 5.1 | Standard check-in time | Required | 14:00 | HH:mm, 24h |
| 5.2 | Standard check-out time | Required | 12:00 | HH:mm, 24h |
| 5.3 | Earliest early check-in time | Optional | 10:00 | HH:mm |
| 5.4 | Latest late check-out time | Optional | 18:00 | HH:mm |
| 5.5 | Early check-in fee schedule | Optional | See below | Tiered by hours early |
| 5.6 | Late check-out fee schedule | Optional | See below | Tiered by hours late |
| 5.7 | Default room tariff tax | Required | CGST 9% + SGST 9% | Override via tax category in §4.5 |
| 5.8 | Default cancellation policy | Required | FLEX-24H | Must match a policy in §3.3 |
| 5.9 | Business date rollover time | Required | 04:00 | When night audit runs |
| 5.10 | Grace period for no-show (hours) | Required | 6 | Integer, after check-in time |
Early check-in / Late check-out fee schedule template
| Hours early/late | Charge |
|---|---|
| 0-3 | Complimentary (subject to availability) |
| 3-6 | 30% of daily rate |
| 6-12 | 50% of daily rate |
| 12+ | 100% of daily rate (full night) |
6. Channel Manager
Skip this section if the property is not using OTA distribution at go-live.
| # | Field | Required | Example | Notes |
|---|---|---|---|---|
| 6.1 | Provider | Required if using CM | ResAvenue | One of ResAvenue, Staah (Phase 2), Ezee (Phase 2); if none, write NONE |
| 6.2 | Requestor ID / username | Required if CM | OBRI_PROD | Provided by CM vendor |
| 6.3 | Password | Required if CM | <secret> | Share via 1Password vault only — never email |
| 6.4 | Hotel code / ID | Required if CM | 12345 | Provided by CM vendor |
| 6.5 | Endpoint URL | Required if CM | https://api.resavenue.com/v2 | Provided by CM vendor |
| 6.6 | OTA channels enabled | Required if CM | Booking.com, MakeMyTrip, Goibibo, Agoda | Comma-separated |
6.7 OTA Room Type Mapping
| Local code | OTA provider | OTA room type code | OTA room type name |
|---|---|---|---|
DLX | Booking.com | 12345678 | Deluxe Double |
DLX | MakeMyTrip | RMT001 | Deluxe Room |
EXE | Booking.com | 12345679 | Executive King |
SUI | Booking.com | 12345680 | Suite |
6.8 OTA Rate Plan Mapping
| Local rate plan | OTA provider | OTA rate plan code |
|---|---|---|
BAR-FLEX | Booking.com | BAR-FLEX |
BAR-CP | Booking.com | BAR-WITH-BREAKFAST |
ADV-NR | Booking.com | NON-REFUNDABLE |
7. Payment
| # | Field | Required | Example | Notes |
|---|---|---|---|---|
| 7.1 | Razorpay merchant key_id | Required | rzp_live_XXXXXX | 14-20 chars |
| 7.2 | Razorpay key_secret | Required | <secret> | 24+ chars — share via 1Password only |
| 7.3 | Razorpay webhook secret | Required | <secret> | Configure webhook URL https://{property-domain}/api/webhooks/razorpay |
| 7.4 | Per-property vs tenant-level account | Required | per-property | One of per-property, tenant-level |
| 7.5 | Settlement account IFSC | Optional | HDFC0001234 | For reconciliation only |
| 7.6 | Payment methods enabled | Required | Card, UPI, NetBanking, Wallets | Comma-separated |
| 7.7 | Currency | Required | INR | Must match §1.12 |
| 7.8 | Test mode | Required at first | true | Set to false after successful T-4 test transaction |
8. Compliance
| # | Field | Required | Example | Notes |
|---|---|---|---|---|
| 8.1 | NIC IRP username | Optional | obri_udaipur | Required if GST B2B invoicing enabled |
| 8.2 | NIC IRP password | Optional | <secret> | 1Password only |
| 8.3 | NIC IRP endpoint | Optional | https://einvoice1.gst.gov.in | Default production endpoint |
| 8.4 | E-invoice enabled at launch | Required | false | If false, KeyNova runs with EINVOICE_MOCK=true; deferred to post-launch |
| 8.5 | C-Form police station code | Required | UDR-01 | Required for foreign guest reporting |
| 8.6 | C-Form district | Required | Udaipur | |
| 8.7 | FSSAI license number | Required if F&B | 12345678901234 | 14 digits |
| 8.8 | FSSAI expiry | Required if F&B | 2027-05-31 | YYYY-MM-DD |
| 8.9 | Liquor license number | Required if alcohol | RJ/UDR/L1/2026/0123 | State-specific format |
| 8.10 | CCTV coverage map | Optional | For DPDP / GDPR audit trail | |
| 8.11 | DPO (Data Protection Officer) contact | Required | dpo@theobri.com | Required under DPDP Act 2023 |
9. Staff Accounts (Initial Users)
Minimum 3 users required: 1 admin, 1 manager, 1 front desk. Recommended 5-10 at go-live.
| # | Role | Name | Phone | Shift preference | Languages | |
|---|---|---|---|---|---|---|
| 1 | ADMIN | Rahul Sharma | rahul@theobri.com | +91-98000-00001 | Day | EN, HI |
| 2 | MANAGER | Priya Nair | priya@theobri.com | +91-98000-00002 | Day | EN, HI, ML |
| 3 | FRONT_DESK | Arjun Patel | arjun@theobri.com | +91-98000-00003 | Day | EN, HI, GU |
| 4 | FRONT_DESK | Meera Iyer | meera@theobri.com | +91-98000-00004 | Night | EN, HI, TA |
| 5 | HOUSEKEEPING_SUPERVISOR | Sita Devi | sita@theobri.com | +91-98000-00005 | Day | HI |
| 6 | FNB_MANAGER | Vikram Singh | vikram@theobri.com | +91-98000-00006 | Day | EN, HI |
Validation:
Role: one ofADMIN,MANAGER,FRONT_DESK,HOUSEKEEPING_SUPERVISOR,HOUSEKEEPING,FNB_MANAGER,FNB_STAFF,KITCHEN,ACCOUNTSEmail: unique across tenant; will receive welcome email with temp passwordPhone: E.164 format; used for OTP / MFAShift preference:Day,Night,Any- MFA (TOTP) will be enforced for
ADMINandMANAGERroles at first login
10. Integrations (Optional)
10.1 Smart Locks
| Field | Value | Notes |
|---|---|---|
| Vendor | Salto / Onity / Assa Abloy / NONE | Phase 1 supports Salto only |
| API endpoint | https://api.saltoks.com | |
| API key | <secret> | 1Password |
| Property ID in lock system | SALTO-OBRI-01 | |
| Encoder station IP(s) | 192.168.10.20 | Comma-separated if multiple |
| Key format | RFID or Mobile key or Both |
10.2 ID Scanner
| Field | Value | Notes |
|---|---|---|
| Vendor | Regula / Desko / NONE | |
| Model | Regula 7024 | |
| USB / Network | USB | |
| Host machine | front-desk-01 | Hostname; driver installed locally |
10.3 Printer Configuration
One row per printer:
| # | Location | Type | Model | Connection | Address | Purpose |
|---|---|---|---|---|---|---|
| 1 | Front desk | Thermal | Epson TM-T88VI | Network | 192.168.10.30 | Folios, receipts |
| 2 | Kitchen | Thermal | Epson TM-U220B | Network | 192.168.10.31 | KOT |
| 3 | Sapphire POS | Thermal | Epson TM-T20III | USB | COM3 | Bills |
| 4 | Admin office | Laser | HP LaserJet Pro M404dn | Network | 192.168.10.40 | Reports, invoices |
10.4 Network
| Field | Value | Notes |
|---|---|---|
| Public IP address(es) | 103.xx.xx.xx | Required for OTA IP whitelisting and for NIC IRP |
| Bandwidth | 100 Mbps | Minimum 25 Mbps recommended |
| Backup ISP | Yes / No | Strongly recommended |
| VLAN segmentation | Yes / No | PCI scope reduction |
| WiFi SSID (staff) | Obri-Staff | Separate from guest WiFi |
| WiFi SSID (guest) | Obri-Guest | Captive portal for WiFi is out of scope Phase 1 |
10.5 Mobile devices
| # | Device type | Count | Assigned to | OS |
|---|---|---|---|---|
| 1 | Android tablet (10") | 5 | Housekeeping | Android 12+ |
| 2 | Android phone | 3 | F&B waiters | Android 12+ |
| 3 | iPad | 2 | Manager | iPadOS 16+ |
11. Sign-off
| Role | Name | Signature | Date |
|---|---|---|---|
| Hotel GM | |||
| Hotel IT lead | |||
| KeyNova onboarding engineer | |||
| KeyNova engineering manager |
Appendix A: Field count by category
| Category | Required fields | Optional fields | Total |
|---|---|---|---|
| 0. Meta | 5 | 0 | 5 |
| 1. Property Info | 17 | 8 | 25 |
| 2. Rooms | 8 (per type) + CSV | 4 | 12+ |
| 3. Rate Plans | 11 (per plan) | 1 | 12+ |
| 4. POS Setup | 6 (per outlet) + CSVs | 0 | 6+ |
| 5. Front Desk Setup | 7 | 3 | 10 |
| 6. Channel Manager | 6 + mappings | 0 | 6+ |
| 7. Payment | 7 | 1 | 8 |
| 8. Compliance | 5 | 6 | 11 |
| 9. Staff Accounts | 6 (per user) × ≥3 | 0 | 18+ |
| 10. Integrations | 0 | 20+ | 20+ |
| Total | ~80 required | ~45 optional | ~125+ |
Appendix B: Mapping to seed-production-hotel.sql
The form maps to 88 -- REPLACE: placeholders in hmp-infrastructure/seeds/seed-production-hotel.sql:
| Seed section | Form section | Placeholders |
|---|---|---|
| Tenant | §1 (Property Info) | 5 |
| Admin / bcrypt hash | §9 + ops-generated | 1 |
| Users (admin/manager/frontdesk/hk/fnb) | §9 | 25 |
| Property metadata | §1 | 15 |
| Property settings | §5, §7, §8 | 12 |
| Room types | §2.1 | 9 |
| Rate plans | §3.1, §3.2 | 15 |
| Brand / logo URLs | §1.24-§1.29 | 6 |
After the form is filled, the KeyNova onboarding engineer runs a find-and-replace over seed-production-hotel.sql guided by this mapping.
Appendix C: Example — minimum valid form
A minimum valid form has these 6 tables completed at kickoff:
- Section 1 (Property Info) — all required fields
- Section 2.1 (Room Types) — at least 1 row
- Section 2.2 (Rooms List) — CSV uploaded, total rooms > 0
- Section 3.1 (Rate Plans) — at least 1 row
- Section 3.2 (Base Rates) — 1 row per (rate × room type)
- Section 9 (Staff Accounts) — at least 3 users
All other sections can be deferred to T-4 Integration Setup (see day-by-day checklist).