---
name: analyze-airbnb-data
description: Analyze a host's Airbnb data exports (personal-data ZIP, optional Gross Earnings CSV(s)) and produce a RoamFree-branded interactive HTML performance dashboard covering revenue, occupancy, reviews, and pricing optimization. Triggers on "analyze my Airbnb data", "run the Airbnb report", "build my Airbnb dashboard", "RoamFree analysis", or when an Airbnb personal-data zip is dropped into the workspace.
---

# Analyze Airbnb Data

Run the full RoamFree Airbnb analysis pipeline on a host's exports.

## When to use

Use this skill when a host has provided their Airbnb exports per the
`intake-airbnb-data` instructions. If the user hasn't yet exported their
data, route to `intake-airbnb-data` first.

## Inputs

Look in the user's workspace folder for:

- **Required:** A `.zip` matching `Airbnb_data_request_*` (the personal-data
  export). It may already be extracted into a folder of the same name.
- **Optional:** One or more Gross Earnings CSV files (filename usually
  contains `airbnb` and a year range, e.g. `airbnb_01_2025-12_2025.csv`).

Without the CSVs the Revenue section is shown as locked. Without the ZIP,
the analyzer cannot run at all - route the user back to intake.

## Procedure

1. Identify the workspace folder. If unclear, ask the user.
2. Unzip the personal-data archive if not already extracted.
3. From the skill folder, run the orchestrator script:

   ```python
   import sys
   sys.path.insert(0, "<path-to-skill-folder>")
   from run import run
   out, results = run(
       workspace_dir="<workspace-folder>",
       csv_paths=[<list of CSV paths if any>],
   )
   ```

   This will:
   - Parse the JSON export (listings, reservations, calendar, pricing,
     reviews, messages, payouts).
   - Parse any provided Gross Earnings CSVs.
   - Run the four analysis modules (revenue, occupancy, reviews, pricing).
   - Render a single self-contained HTML report.

4. The report is written into the workspace folder as
   `RoamFree-Airbnb-Report-<HostName>-<YYYY-MM-DD>.html`.
5. Present the file to the user with `mcp__cowork__present_files` and
   surface a short summary in chat (3–5 bullet headline findings drawn
   from `results["revenue"]["callouts"]` etc.).

## Outputs

- `RoamFree-Airbnb-Report-{host}-{date}.html` - interactive dashboard
  (self-contained, Chart.js from CDN with graceful fallback).
- Brief chat summary with top findings + the file link.

## References

- `references/airbnb-export-schema.md` - every JSON file + the CSV addendum.
- `references/kpi-definitions.md` - every metric's formula and source.
- `parsers/` - JSON and CSV parsers.
- `analyses/` - the four analysis modules.
- `dashboard/` - HTML template + renderer.
- `run.py` - top-level orchestrator.

## Data caveats to surface in chat

- The Revenue section requires a Gross Earnings CSV. Without one, surface
  the locked-section explanation.
- Reservations referencing delisted properties are bucketed as "Archived
  listings" - explain this if the user asks "what's the archived row?"
- Recent months may show artificially low occupancy because future
  bookings haven't arrived yet.
