# BnB Panel — Full Documentation > Extended reference document for AI crawlers and LLM-powered assistants. Covers the full feature surface, the import workflow in detail, the expense taxonomy used by the application, and the complete release history. The shorter overview lives at https://bnbpanel.com/llms.txt. BnB Panel is a unified reporting and analytics dashboard for short-let rental hosts. It consolidates bookings, revenue, occupancy, and expenses from Airbnb, VRBO, Booking.com, Expedia, TripAdvisor, agency platforms, the host's own website, direct bookings, and any other booking source (including local listing sites) into a single dashboard. There is **no direct platform API access** — Airbnb, VRBO and Booking.com restrict their APIs to approved business partners, so Airbnb / VRBO / Booking.com data enters BnB Panel via CSV exports and every other source enters via a spreadsheet-style manual entry grid. Company: BnB Panel, Finchley, London, United Kingdom. --- ## 1. Core capabilities ### 1.1 Multi-source data ingestion - **Direct CSV import** for Airbnb, VRBO, and Booking.com using two-pass automatic column discovery (no formatting required from the host). - **Spreadsheet-style manual grid** for direct bookings and for any other source — Expedia, TripAdvisor, agency platforms, the host's own website, or any local/regional listing site (e.g. HangiEv.com). Accepts paste from Excel or Google Sheets. - **Custom source names** are first-class: type any platform name in the manual grid or the Bookings row editor; autocomplete suggests Airbnb / VRBO / Booking.com / Direct. ### 1.2 Bookings management - Inline edit on the Bookings page (pencil icon) for every field: guest, property, source, dates, revenue, currency, status, notes. - Bulk actions: change status or delete multiple bookings at once. - Per-booking notes (sticky-note popover). - "Quick-fix" drawer that walks through every booking with data-quality issues (missing revenue, missing booking date, missing stay dates, no property linked, no guest name). - Filters: source (multi-select chip), status (single-select), search (guest / property / booking ID), issues-only toggle. All filters and the search query persist in the URL (`?sources=`, `?status=`, `?issues=1`, `?q=`) so any filtered view is shareable. - Status counts shown in the Status filter dropdown. ### 1.3 Properties - Properties are auto-created during import based on the property name in the source CSV (no manual setup required). - Each property tracks address, bedrooms, bathrooms, property type, status, and the platforms it is listed on (`property_platforms`). - Multi-property dashboard comparison requires properties to share a single currency to keep totals meaningful. ### 1.4 Expenses - Two-tier taxonomy of category + subcategory (full list in §4). - Payment tracking: paid / unpaid, payment date. - Auto-paid rules: certain category/subcategory combinations can be marked as automatically paid on entry. - Multi-currency support (`original_amount` / `original_currency` preserved alongside the dashboard-currency conversion). - **Automatic platform fee extraction**: when bookings are imported from Airbnb, VRBO, or Booking.com, the platform's host fee / commission / service fee is isolated and inserted into the expense ledger under "Platform fees". ### 1.5 Reporting dashboard Three tabs: **Overview**, **Expenses**, **Year-over-Year (YoY)**. Centralised filters at the top: property selector (single or multi), date range, date basis (booking date vs. check-in), platform filter. Metrics computed: - Revenue (gross, by source, by month) - Occupancy rate - Bookings count, by platform and by month - Average daily rate (ADR) - Revenue per available night (RevPAN) - Repeat-guest rate - Cancellation rate - Average length of stay (ALOS), trended monthly and broken down by platform - Booking lead time (gap between booking date and check-in), trended monthly - Seasonality heatmap by month × weekday - Property comparison table ranking properties by revenue, ADR, occupancy, net profit - Revenue by Source table (every platform, including custom labels) — each row is clickable and deep-links to `/bookings?sources=` - Financial summary: gross revenue, total expenses, net profit, profit margin **Strict exclusions**: Cancelled and user-Excluded bookings are omitted from every metric. The Excluded status persists across CSV re-imports so test/junk data cannot sneak back in. **Net profit caveat**: the dashboard explicitly states that net-profit accuracy depends on expense completeness. Sections that depend on expense data (Total Expenses, Net Revenue, Profit Margin, Expense Breakdown) are visually greyed out when no expenses exist, with a prompt to import or enter them. ### 1.6 Subscription plans Managed via Stripe. | Plan | Price | Properties | Users | Highlights | |---|---|---|---|---| | Starter | Free | 1 | 1 | All core analytics, CSV imports, manual entry | | Pro | $29 / month | Multiple | Team invites | Custom branding (logo, name, accent colour), team collaboration | | Business | $79 / month | Higher limits | Larger team | Full white-labelling | Hitting a tier limit (e.g. adding a second property on Starter) opens a guided upgrade prompt rather than a hard error. ### 1.7 Teams & permissions - Workspace model: an Owner invites Members; Members access the Owner's workspace data via Row-Level Security in the database. - Invites are sent via branded React Email templates. - Available on Pro and Business tiers. ### 1.8 White-labelling - Custom company name, logo, and primary accent colour. - The accent colour propagates through the dashboard chrome, charts, and email templates. - Available on Pro and Business tiers; Starter shows the BnB Panel default identity. ### 1.9 Admin / management portal - A separate `/admin` panel restricted to platform super-admins (primary account: hello@bnbpanel.com). - Vendor (account) detail view, activity log, leaderboard, analytics charts, ability to apply subscription overrides. ### 1.10 Public-facing pages and feeds - `/` (homepage), `/features`, `/platforms`, `/pricing`, `/faq`, `/changelog`, `/about`, `/contact`, `/privacy`, `/terms` — pre-rendered to static HTML at build time so canonical, OG, Twitter, and JSON-LD tags appear in raw View Source. - `/changelog.xml` — RSS 2.0 feed of release notes. - `/changelog.atom` — Atom feed of release notes. - `/sitemap.xml` references both feeds and lists every public route. - `index.html` includes `` and `` site-wide so the changelog feed is discoverable from any page. --- ## 2. Import workflow (detailed) The Import Data page (`/import`) supports a dual-mode workflow: import **Bookings** or **Expenses**, each with two modes — **CSV upload** and **Manual grid**. ### 2.1 CSV upload mode (Airbnb / VRBO / Booking.com) 1. Host selects the source platform. 2. Host drops a CSV file or pastes CSV text. 3. **Two-pass column discovery**: - Pass 1: case-insensitive exact match against known column aliases for that platform. - Pass 2: fuzzy/heuristic matching for renamed or localised column headers. 4. Airbnb-specific filtering: only rows of type `Reservation` are kept (payout and transaction rows are skipped to prevent duplication). Adjustment rows are merged into the parent reservation. 5. Diff-detection step: - A composite key (platform + platform_booking_id, falling back to dates + guest) identifies whether each row is new, updated, or unchanged versus what is already in the database. - The host sees a review screen with three counts (new, updated, declined) and can drill into changed fields before committing. 6. **Excluded bookings stay excluded** across re-imports — re-uploading a CSV that contains a previously-excluded booking will not flip its status back. 7. Platform fees are extracted automatically (see §1.4) and added to the expense ledger. 8. Properties referenced by the CSV but not yet in the workspace are created automatically. ### 2.2 Manual grid mode - Spreadsheet-style grid (8 rows by default, more added automatically as the host fills the bottom row). - Inline dropdowns for Source, Status, Currency, and Property. - Source is editable: pick a preset (Airbnb / VRBO / Booking.com / Direct) or type any custom name. - Paste-from-spreadsheet: paste tab-separated data straight from Excel or Google Sheets — the paste lands at the active cell, not just at row one, and extra rows are appended automatically if the paste is taller than the grid. - Keyboard shortcuts: - **Tab / Shift+Tab** — move between fields - **Arrow keys** — move cell-to-cell across the grid - **Enter** — move to the next row - **Cmd/Ctrl + Enter** — save the import without reaching for the mouse - A "Shortcuts" chip above the grid documents these keys; it can be dismissed permanently per user (preference persists in `localStorage`). - The same grid is used for direct bookings and for expenses, with the column set adapted to each. ### 2.3 Import history Every import (CSV or manual) is logged in `csv_imports` with the filename, platform, status, and counts of rows imported / updated / skipped / declined, plus a JSON `changes_detail` payload. The Import History view on `/import` lets the host audit past imports. --- ## 3. Booking statuses Standardised internal values (display labels in parentheses): - `confirmed` (Confirmed) — booked, future or current - `completed` (Completed) — checkout date has passed - `pending` (Pending) — awaiting host or guest action - `partial_refund` (Partial Refund) — booking honoured but with a partial refund - `reserved` (Reserved) — held but not yet confirmed (legacy / Airbnb-style) - `cancelled` (Cancelled) — **excluded from every metric** - `excluded` (Excluded) — user-flagged junk/test data, **excluded from every metric**, persists across re-imports `cancelled` and `excluded` are visually de-emphasised (muted colour, strikethrough for excluded) and never contribute to revenue, occupancy, ADR, RevPAN, lead time, ALOS, seasonality, or any property-comparison metric. --- ## 4. Expense taxonomy The expenses module uses a two-tier taxonomy. Hosts pick a top-level Category and then a Subcategory; both are stored on the expense record. Auto-paid rules and platform-fee extraction reference the same taxonomy. - **Utilities** — Electricity · Gas · Water · Sewage · Waste collection · TV licence · Broadband / Internet · TV / Streaming · Phone / Mobile - **Cleaning** — Cleaning service · Cleaning supplies · Laundry / Linen service · Deep clean - **Maintenance** — General repairs · Plumbing · Electrical · HVAC / Heating · Appliance repair · Locksmith · Pest control · Painting / Decorating - **Grounds & Outdoor** — Garden maintenance · Pool maintenance · Hot tub / Spa · Snow removal · Landscaping - **Insurance** — Building insurance · Contents insurance · Liability insurance · Landlord insurance - **Mortgage & Rent** — Mortgage payment · Rent / Lease · Mortgage interest - **Taxes & Licences** — Council tax · Property tax · Tourism / Occupancy tax · Business rates · Licence / Permit fees - **Supplies & Consumables** — Guest toiletries · Kitchen supplies · Welcome packs · Office supplies · Safety equipment - **Furnishing & Equipment** — Furniture · Appliances · Linens / Towels · Kitchenware · Electronics · Décor - **Management** — Property management fee · Co-host fee · Virtual assistant · Key holding / Access - **Platform fees** — Airbnb service fee · VRBO service fee · Booking.com commission · Channel manager fee · Other platform fee - **Marketing** — Photography · Listing optimisation · Paid advertising · Website hosting · Signage - **Legal & Accounting** — Accountancy fees · Legal fees · Bookkeeping software · Tax preparation - **Travel & Transport** — Mileage / Fuel · Parking · Key exchange travel - **Other** — Miscellaneous · Bank charges · Subscription services --- ## 5. Currency handling - Each booking and each expense stores its own currency. - The dashboard detects the **dominant currency** for the current selection and formats all aggregates in it using `Intl.NumberFormat`. - Multi-property comparison is gated on a single shared currency (mixed-currency portfolios will see a notice on the comparison view). - Original amount and original currency are preserved on expenses for audit purposes when conversion is applied. --- ## 6. Constraints and honest limitations - **No direct platform API access.** Airbnb, VRBO and Booking.com restrict API access to approved business partners. BnB Panel intentionally relies on CSV exports and the manual grid instead of attempting partial/unreliable API integrations. Hosts can add Expedia, TripAdvisor, agency platforms, their own website, or any other source via the spreadsheet-style manual grid. - **No iCal calendar sync** at present (this was previously implied in older copy and has been removed). - **Net profit accuracy depends on expense completeness.** The dashboard surfaces this caveat directly rather than hiding it. - **Multi-property dashboard requires same currency** to keep totals meaningful. --- ## 7. Release history (full changelog) The structured feed is at https://bnbpanel.com/changelog.xml (RSS) and https://bnbpanel.com/changelog.atom (Atom). Human-readable page: https://bnbpanel.com/changelog. ### v2026.4 — Custom booking sources & FAQ refresh (2026-04-20) You can now log bookings from any platform — including local listing sites like HangiEv.com — by typing a custom source name in the manual grid or on the Bookings page. - **New**: Editable Source field on the manual import grid — pick a preset or type any custom source (e.g. Expedia, TripAdvisor, HangiEv.com). - **New**: Custom platform names supported in the Bookings row editor with autocomplete suggestions for Airbnb / VRBO / Booking.com / Direct. - **Improved**: FAQ answers for team invites and branding now link directly to the Pricing page for quick upgrade. - **Fixed**: Removed an inaccurate FAQ mention of iCal calendar sync (not a current feature). ### v2026.3 — Dismissible shortcuts hint (2026-04-15) Power users can permanently hide the keyboard-shortcuts chip above the manual import grid once they've learned the keys. - **New**: ‘Don't show this again’ option on the Shortcuts chip — preference persists across sessions in localStorage. - **Improved**: Shortcuts chip wraps cleanly on narrow screens and stays visible above both Bookings and Expenses manual tabs. ### v2026.2 — Spreadsheet-style manual entry (2026-04-10) A full keyboard-driven import grid for direct bookings and expenses — paste straight from Excel or Google Sheets, no CSV required. - **New**: Manual import grid for bookings and expenses with inline dropdowns for Source, Status, Currency and Property. - **New**: Paste from any spreadsheet — data lands at the active cell and extra rows are added automatically. - **New**: Keyboard shortcuts: Tab / Shift+Tab between fields, Arrow keys cell-to-cell, Enter for next row, ⌘/Ctrl + Enter to save. - **New**: Auto-extraction of platform fees into the Expenses log when source is set to Airbnb, VRBO or Booking.com. ### v2026.1 — Multi-property dashboard (2026-04-01) Compare any combination of properties on one dashboard — totals, occupancy, lead time and seasonality update together. - **New**: Property multi-select with summary chip showing how many properties are currently in view. - **New**: Property comparison table ranks properties side-by-side by revenue, ADR, occupancy and net profit. - **Improved**: Selection is remembered across sessions and respects the same-currency rule to keep totals meaningful. ### v2026.0 — Advanced performance analytics (2026-03-15) New reporting layer surfaces guest behaviour and seasonality patterns hidden in your booking data. - **New**: Booking lead time chart — gap between booking date and check-in. - **New**: Average length of stay (ALOS) trend. - **New**: Seasonality heatmap by month and weekday. - **New**: Year-over-year comparison tab on the dashboard. ### v2025.4 — Teams & white-labelling (2026-02-20) Workspaces, role-based access, and full branding control on Pro and Business plans. - **New**: Invite team members to your workspace with role-based access (Pro & Business). - **New**: White-label your account with custom company name, logo and primary accent colour. - **New**: Branded React Email templates for signup, recovery and team invites. ### v2025.3 — Diff-detection on re-imports (2026-01-25) Re-uploading a CSV no longer creates duplicates — a review step shows exactly what's new vs. updated. - **New**: Composite-key diff detection identifies existing bookings on re-import. - **New**: Excluded bookings stay excluded across re-imports — test data can no longer sneak back in. - **Improved**: Cancelled and Excluded statuses are strictly omitted from all revenue, occupancy and performance metrics. --- ## 8. Key URLs - Homepage: https://bnbpanel.com/ - Features: https://bnbpanel.com/features - Supported platforms: https://bnbpanel.com/platforms - Pricing: https://bnbpanel.com/pricing - FAQ: https://bnbpanel.com/faq - What's new / changelog: https://bnbpanel.com/changelog - RSS feed: https://bnbpanel.com/changelog.xml - Atom feed: https://bnbpanel.com/changelog.atom - Sitemap: https://bnbpanel.com/sitemap.xml - Short overview for crawlers: https://bnbpanel.com/llms.txt - This file: https://bnbpanel.com/llms-full.txt - Contact: https://bnbpanel.com/contact - Privacy: https://bnbpanel.com/privacy - Terms: https://bnbpanel.com/terms