โ† back to command center

Booking Gaps /booking-gaps

green 1h ago ยท started 2026-04-28T18:20:16.651746+00:00

Headline Metrics

Properties tracked
14
Skipped
0

Validation Findings (0)

SeverityCodeMessageContext
no findings โ€” engine ran clean

Trend

Capture History

How to refresh

Engine: python3 ~/.claude/scripts/booking-gaps.py --report

Capture (writes to dashboard-data/latest/): ~/.claude/scripts/dashboard-capture.sh booking-gaps

Raw output

28,665 bytes of JSON
{
  "skill": "booking-gaps",
  "today": "2026-04-28",
  "windows": {
    "30d": [
      "2026-04-28",
      "2026-05-28"
    ],
    "60d": [
      "2026-04-28",
      "2026-06-27"
    ],
    "90d": [
      "2026-04-28",
      "2026-07-27"
    ]
  },
  "properties": [
    {
      "listing_id": 487778,
      "name": "Blau Haus",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 26,
        "occupancy_pct": 13.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 11,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-11",
            "nights": 4,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 11,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 52,
        "occupancy_pct": 13.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 11,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-11",
            "nights": 4,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 17,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-07",
            "nights": 20,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 82,
        "occupancy_pct": 8.9,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 11,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-11",
            "nights": 4,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 17,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-07",
            "nights": 50,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 343880,
      "name": "The Ridge House",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 17,
        "occupancy_pct": 43.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-11",
            "nights": 17,
            "max_min_stay": 2
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 40,
        "occupancy_pct": 33.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-11",
            "nights": 22,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-08",
            "nights": 18,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 52,
        "occupancy_pct": 42.2,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-11",
            "nights": 22,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-08",
            "nights": 18,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-28",
            "nights": 4,
            "max_min_stay": 2
          },
          {
            "start": "2026-07-19",
            "nights": 8,
            "max_min_stay": 2
          }
        ]
      }
    },
    {
      "listing_id": 341135,
      "name": "Porter's Lodge",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 26,
        "occupancy_pct": 13.3,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-03",
            "nights": 5,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-10",
            "nights": 18,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 53,
        "occupancy_pct": 11.7,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-03",
            "nights": 5,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-10",
            "nights": 18,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-29",
            "nights": 15,
            "max_min_stay": 1
          },
          {
            "start": "2026-06-15",
            "nights": 12,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 81,
        "occupancy_pct": 10.0,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-03",
            "nights": 5,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-10",
            "nights": 18,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-29",
            "nights": 15,
            "max_min_stay": 1
          },
          {
            "start": "2026-06-15",
            "nights": 25,
            "max_min_stay": 3
          },
          {
            "start": "2026-07-12",
            "nights": 15,
            "max_min_stay": 2
          }
        ]
      }
    },
    {
      "listing_id": 222900,
      "name": "Cherrytown Chalet",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 20,
        "occupancy_pct": 33.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-02",
            "nights": 12,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 8,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 44,
        "occupancy_pct": 26.7,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-02",
            "nights": 12,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 8,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-31",
            "nights": 4,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-07",
            "nights": 20,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 74,
        "occupancy_pct": 17.8,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-02",
            "nights": 12,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 8,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-31",
            "nights": 4,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-07",
            "nights": 50,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 369689,
      "name": "Goat Hill Cottage",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 15,
        "occupancy_pct": 50.0,
        "orphan_runs": [
          {
            "start": "2026-05-02",
            "nights": 2,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-08",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-14",
            "nights": 1,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-17",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-24",
            "nights": 4,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 32,
        "occupancy_pct": 46.7,
        "orphan_runs": [
          {
            "start": "2026-05-02",
            "nights": 2,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-08",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-14",
            "nights": 1,
            "max_min_stay": 1
          },
          {
            "start": "2026-06-07",
            "nights": 1,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-17",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-24",
            "nights": 11,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-16",
            "nights": 9,
            "max_min_stay": 3
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 52,
        "occupancy_pct": 42.2,
        "orphan_runs": [
          {
            "start": "2026-05-02",
            "nights": 2,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-08",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-14",
            "nights": 1,
            "max_min_stay": 1
          },
          {
            "start": "2026-06-07",
            "nights": 1,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-17",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-24",
            "nights": 11,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-16",
            "nights": 9,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-30",
            "nights": 15,
            "max_min_stay": 3
          },
          {
            "start": "2026-07-22",
            "nights": 5,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 396986,
      "name": "Wanderwood Lodge",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 20,
        "occupancy_pct": 33.3,
        "orphan_runs": [
          {
            "start": "2026-05-03",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-07",
            "nights": 1,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-10",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 11,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 38,
        "occupancy_pct": 36.7,
        "orphan_runs": [
          {
            "start": "2026-05-03",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-07",
            "nights": 1,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-10",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 11,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-30",
            "nights": 13,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-14",
            "nights": 5,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 40,
        "occupancy_pct": 55.6,
        "orphan_runs": [
          {
            "start": "2026-05-03",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-07",
            "nights": 1,
            "max_min_stay": 2
          },
          {
            "start": "2026-07-21",
            "nights": 1,
            "max_min_stay": 2
          },
          {
            "start": "2026-07-26",
            "nights": 1,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-10",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 11,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-30",
            "nights": 13,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-14",
            "nights": 5,
            "max_min_stay": 2
          }
        ]
      }
    },
    {
      "listing_id": 493486,
      "name": "Timberledge Cabin",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 9,
        "occupancy_pct": 70.0,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-19",
            "nights": 9,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 39,
        "occupancy_pct": 35.0,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-19",
            "nights": 39,
            "max_min_stay": 3
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 69,
        "occupancy_pct": 23.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-05-19",
            "nights": 69,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 422513,
      "name": "Hommel House",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 23,
        "occupancy_pct": 23.3,
        "orphan_runs": [
          {
            "start": "2026-04-29",
            "nights": 2,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 3,
            "max_min_stay": 3
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-04",
            "nights": 18,
            "max_min_stay": 2
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 48,
        "occupancy_pct": 20.0,
        "orphan_runs": [
          {
            "start": "2026-04-29",
            "nights": 2,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-04",
            "nights": 18,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 9,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-07",
            "nights": 19,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 69,
        "occupancy_pct": 23.3,
        "orphan_runs": [
          {
            "start": "2026-04-29",
            "nights": 2,
            "max_min_stay": 2
          },
          {
            "start": "2026-07-26",
            "nights": 1,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-04",
            "nights": 18,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 9,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-07",
            "nights": 19,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-29",
            "nights": 11,
            "max_min_stay": 3
          },
          {
            "start": "2026-07-13",
            "nights": 9,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 429948,
      "name": "Hilltop Oasis",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 19,
        "occupancy_pct": 36.7,
        "orphan_runs": [
          {
            "start": "2026-04-30",
            "nights": 1,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 2,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-06",
            "nights": 16,
            "max_min_stay": 2
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 40,
        "occupancy_pct": 33.3,
        "orphan_runs": [
          {
            "start": "2026-04-30",
            "nights": 1,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 2,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-06",
            "nights": 16,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-01",
            "nights": 14,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-18",
            "nights": 7,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 48,
        "occupancy_pct": 46.7,
        "orphan_runs": [
          {
            "start": "2026-04-30",
            "nights": 1,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 2,
            "max_min_stay": 1
          },
          {
            "start": "2026-07-25",
            "nights": 2,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-06",
            "nights": 16,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-01",
            "nights": 14,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-18",
            "nights": 7,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-29",
            "nights": 6,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 505182,
      "name": "Waterfall House",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 28,
        "occupancy_pct": 6.7,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 17,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-17",
            "nights": 11,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 58,
        "occupancy_pct": 3.3,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 17,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-17",
            "nights": 41,
            "max_min_stay": 3
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 88,
        "occupancy_pct": 2.2,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 17,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-17",
            "nights": 71,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 299281,
      "name": "Jade Getaway",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 19,
        "occupancy_pct": 36.7,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 2,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-05",
            "nights": 9,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 5,
            "max_min_stay": 2
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 44,
        "occupancy_pct": 26.7,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 2,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-05",
            "nights": 9,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-02",
            "nights": 25,
            "max_min_stay": 3
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 74,
        "occupancy_pct": 17.8,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 2,
            "max_min_stay": 2
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-05",
            "nights": 9,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-17",
            "nights": 5,
            "max_min_stay": 2
          },
          {
            "start": "2026-06-02",
            "nights": 55,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 340620,
      "name": "Red Fox Stables",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 11,
        "occupancy_pct": 63.3,
        "orphan_runs": [
          {
            "start": "2026-05-21",
            "nights": 1,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 3,
            "max_min_stay": 3
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 7,
            "max_min_stay": 2
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 39,
        "occupancy_pct": 35.0,
        "orphan_runs": [
          {
            "start": "2026-05-21",
            "nights": 1,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 7,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 4,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-31",
            "nights": 27,
            "max_min_stay": 2
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 69,
        "occupancy_pct": 23.3,
        "orphan_runs": [
          {
            "start": "2026-05-21",
            "nights": 1,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 7,
            "max_min_stay": 2
          },
          {
            "start": "2026-05-25",
            "nights": 4,
            "max_min_stay": 3
          },
          {
            "start": "2026-05-31",
            "nights": 57,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 451270,
      "name": "Blackberry Cottage",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 30,
        "occupancy_pct": 0.0,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 30,
            "max_min_stay": 3
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 60,
        "occupancy_pct": 0.0,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 60,
            "max_min_stay": 3
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 90,
        "occupancy_pct": 0.0,
        "orphan_runs": [],
        "opportunity_runs": [
          {
            "start": "2026-04-28",
            "nights": 90,
            "max_min_stay": 3
          }
        ]
      }
    },
    {
      "listing_id": 290588,
      "name": "Valley Vista",
      "tier": null,
      "next_30d": {
        "total_days": 30,
        "empty_nights": 18,
        "occupancy_pct": 40.0,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 3,
            "max_min_stay": 3
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-03",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-10",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-17",
            "nights": 4,
            "max_min_stay": 1
          }
        ]
      },
      "next_60d": {
        "total_days": 60,
        "empty_nights": 46,
        "occupancy_pct": 23.3,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-03",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-10",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-17",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 26,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-22",
            "nights": 5,
            "max_min_stay": 1
          }
        ]
      },
      "next_90d": {
        "total_days": 90,
        "empty_nights": 55,
        "occupancy_pct": 38.9,
        "orphan_runs": [
          {
            "start": "2026-04-28",
            "nights": 3,
            "max_min_stay": 1
          }
        ],
        "opportunity_runs": [
          {
            "start": "2026-05-03",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-10",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-17",
            "nights": 4,
            "max_min_stay": 1
          },
          {
            "start": "2026-05-25",
            "nights": 26,
            "max_min_stay": 3
          },
          {
            "start": "2026-06-22",
            "nights": 8,
            "max_min_stay": 1
          },
          {
            "start": "2026-07-21",
            "nights": 6,
            "max_min_stay": 3
          }
        ]
      }
    }
  ],
  "skipped": [],
  "validation": {
    "skill": "booking-gaps",
    "started_at": "2026-04-28T18:20:16.651746+00:00",
    "checks_run": [
      "properties",
      "hostaway_auth",
      "calendar_coverage"
    ],
    "summary": {
      "errors": 0,
      "warnings": 0,
      "info": 0
    },
    "findings": []
  }
}