| Severity | Code | Message | Context |
|---|---|---|---|
| warning | CLEANING_MARGIN_LOW | Wanderwood Lodge: margin per clean = $0 (<$10) | property: Wanderwood Lodge |
| warning | CLEANING_MARGIN_LOW | Hilltop Oasis: margin per clean = $0 (<$10) | property: Hilltop Oasis |
| warning | CLEANING_MARGIN_LOW | Jade Getaway: margin per clean = $0 (<$10) | property: Jade Getaway |
| warning | CLEANING_MARGIN_LOW | Red Fox Stables: margin per clean = $0 (<$10) | property: Red Fox Stables |
| warning | CLEANING_MARGIN_LOW | Blackberry Cottage: margin per clean = $0 (<$10) | property: Blackberry Cottage |
| warning | CLEANING_MARGIN_LOW | Valley Vista: margin per clean = $0 (<$10) | property: Valley Vista |
| info | OWNER_DUPLICATES | De-duped 2 owner properties (kept most-complete record per property) | dupes: [{"property": "Hilltop Oasis", "count": 3, "kept_id": "recCfzOj09g6XTqCn"}, {"property": "Jade Getaway", "count": 2, &qu |
| warning | COMMISSION_MISSING | 1 active owner records have no Commission rate set | properties: ["Waterfall House"] |
| warning | CONTRACTS_EXPIRED | 2 owner contracts already expired | properties: ["Valley Vista", "Jade Getaway"] |
| warning | ZERO_PIPELINE | 2 active properties have no confirmed bookings in next 90 days | properties: ["Blackberry Cottage", "Timberledge Cabin"] |
| warning | HIGH_CANCEL_RATE | Cancellation rate 8.84% (>8% threshold) | โ |
Engine: python3 ~/.claude/scripts/cfo.py --report
Capture (writes to dashboard-data/latest/): ~/.claude/scripts/dashboard-capture.sh cfo
{
"skill": "cfo",
"report_month": "2026-03",
"windows": {
"report_month": [
"2026-03-01",
"2026-03-31"
],
"pipeline": [
"2026-04-28",
"2026-07-27"
]
},
"properties": {
"active_count": 14,
"with_hostaway_id": 14
},
"cleaning_margins": [
{
"property": "Blau Haus",
"bills": 260,
"pays_cleaner": 240,
"margin_per_clean": 20.0
},
{
"property": "The Ridge House",
"bills": 260,
"pays_cleaner": 240,
"margin_per_clean": 20.0
},
{
"property": "Porter's Lodge",
"bills": 275,
"pays_cleaner": 230,
"margin_per_clean": 45.0
},
{
"property": "Cherrytown Chalet",
"bills": 250,
"pays_cleaner": 225,
"margin_per_clean": 25.0
},
{
"property": "Goat Hill Cottage",
"bills": 225,
"pays_cleaner": 190,
"margin_per_clean": 35.0
},
{
"property": "Wanderwood Lodge",
"bills": 600,
"pays_cleaner": 600,
"margin_per_clean": 0.0
},
{
"property": "Timberledge Cabin",
"bills": 240,
"pays_cleaner": 180,
"margin_per_clean": 60.0
},
{
"property": "Hommel House",
"bills": 225,
"pays_cleaner": 200,
"margin_per_clean": 25.0
},
{
"property": "Hilltop Oasis",
"bills": 200,
"pays_cleaner": 200,
"margin_per_clean": 0.0
},
{
"property": "Waterfall House",
"bills": 280,
"pays_cleaner": 240,
"margin_per_clean": 40.0
},
{
"property": "Jade Getaway",
"bills": 200,
"pays_cleaner": 200,
"margin_per_clean": 0.0
},
{
"property": "Red Fox Stables",
"bills": 850,
"pays_cleaner": 850,
"margin_per_clean": 0.0
},
{
"property": "Blackberry Cottage",
"bills": 275,
"pays_cleaner": 275,
"margin_per_clean": 0.0
},
{
"property": "Valley Vista",
"bills": 250,
"pays_cleaner": 250,
"margin_per_clean": 0.0
}
],
"owners": {
"deduped_count": 14,
"renewal_flags": [
{
"property": "Wanderwood Lodge",
"status": "NO_DATE_SET"
},
{
"property": "Timberledge Cabin",
"status": "NO_DATE_SET"
},
{
"property": "Valley Vista",
"renewal": "2025-04-03",
"status": "EXPIRED"
},
{
"property": "Hilltop Oasis",
"status": "NO_DATE_SET"
},
{
"property": "Jade Getaway",
"renewal": "2025-05-19",
"status": "EXPIRED"
},
{
"property": "Blackberry Cottage",
"status": "NO_DATE_SET"
},
{
"property": "Waterfall House",
"status": "NO_DATE_SET"
},
{
"property": "Hommel House",
"status": "NO_DATE_SET"
},
{
"property": "Cherrytown Chalet",
"status": "NO_DATE_SET"
},
{
"property": "Red Fox Stables",
"status": "NO_DATE_SET"
},
{
"property": "Blau Haus",
"status": "NO_DATE_SET"
}
]
},
"report_month_revenue": {
"total_gross": 62626.09,
"reservations": 42,
"by_property": [
{
"listing_id": 396986,
"name": "Wanderwood Lodge",
"bookings": 4,
"gross_revenue": 13817.67,
"nights": 9,
"adr": 1535.3
},
{
"listing_id": 340620,
"name": "Red Fox Stables",
"bookings": 1,
"gross_revenue": 9479.41,
"nights": 7,
"adr": 1354.2
},
{
"listing_id": 341135,
"name": "Porter's Lodge",
"bookings": 6,
"gross_revenue": 7238.1,
"nights": 13,
"adr": 556.78
},
{
"listing_id": 299281,
"name": "Jade Getaway",
"bookings": 5,
"gross_revenue": 6831.32,
"nights": 15,
"adr": 455.42
},
{
"listing_id": 451270,
"name": "Blackberry Cottage",
"bookings": 5,
"gross_revenue": 6561.54,
"nights": 11,
"adr": 596.5
},
{
"listing_id": 222900,
"name": "Cherrytown Chalet",
"bookings": 5,
"gross_revenue": 5428.76,
"nights": 19,
"adr": 285.72
},
{
"listing_id": 422513,
"name": "Hommel House",
"bookings": 5,
"gross_revenue": 4805.42,
"nights": 12,
"adr": 400.45
},
{
"listing_id": 290588,
"name": "Valley Vista",
"bookings": 5,
"gross_revenue": 4098.59,
"nights": 13,
"adr": 315.28
},
{
"listing_id": 429948,
"name": "Hilltop Oasis",
"bookings": 3,
"gross_revenue": 2663.78,
"nights": 8,
"adr": 332.97
},
{
"listing_id": 493486,
"name": "Timberledge Cabin",
"bookings": 3,
"gross_revenue": 1701.5,
"nights": 4,
"adr": 425.38
},
{
"listing_id": 487778,
"name": "Blau Haus",
"bookings": 0,
"gross_revenue": 0.0,
"nights": 0,
"adr": null
},
{
"listing_id": 343880,
"name": "The Ridge House",
"bookings": 0,
"gross_revenue": 0.0,
"nights": 0,
"adr": null
},
{
"listing_id": 369689,
"name": "Goat Hill Cottage",
"bookings": 0,
"gross_revenue": 0.0,
"nights": 0,
"adr": null
},
{
"listing_id": 505182,
"name": "Waterfall House",
"bookings": 0,
"gross_revenue": 0.0,
"nights": 0,
"adr": null
}
],
"estimated_commission_sum": 14163.31,
"top_property_pct": 22.1
},
"pipeline": {
"d30": {
"bookings": 25,
"gross_revenue": 67764.57,
"nights": 84
},
"d60": {
"bookings": 37,
"gross_revenue": 97335.88,
"nights": 121
},
"d90": {
"bookings": 46,
"gross_revenue": 143707.68,
"nights": 177
}
},
"top5_pipeline": [
{
"property": "Red Fox Stables",
"gross": 32794.38
},
{
"property": "Wanderwood Lodge",
"gross": 27799.77
},
{
"property": "Goat Hill Cottage",
"gross": 22293.46
},
{
"property": "Hilltop Oasis",
"gross": 15358.19
},
{
"property": "The Ridge House",
"gross": 11281.8
}
],
"cancellation_60d": {
"total": 147,
"cancelled": 13,
"pct": 8.84
},
"lead_time": {
"avg_days": 75.2,
"median_days": 57,
"n": 46
},
"prior_month_history": {
"Report Name": "CFO Report \u2014 March 2026",
"Report Month": "March",
"Report Year": 2026,
"Run Date": "2026-04-16T00:00:00.000Z",
"Properties Count": 14,
"Commission Revenue": 9540.63,
"Net Operating Income": 6498.06,
"OpEx Ratio": 0.59,
"Status": "\ud83d\udfe1 Watch",
"Red Flags": "OpEx ratio 98.1% (target <60%) \u2014 revenue growth is the fix. A/P surged +116% to $15,262 \u2014 need aging detail from Keystone. Utilities spike +965% ($41 to $434) \u2014 likely catch-up billing. 1 property with zero 90-day pipeline (likely Blackberry Cottage).",
"Wins": "Credit cards down 32.5% ($8,851 to $5,979). Trust cash doubled to $47,392. Commission revenue rebounded +20.3% vs February. 90-day pipeline at $97,701.",
"Full Analysis": "March 2026. Total Revenue: $25,171.16 | Commission: $9,540.63 | Cleaning: $9,183.99 | Tech Fees: $2,275.00 | Onboarding: $2,602.48 | Gross Profit: $15,860.48 (63.0%) | Total OpEx: $9,362.42 | NOI: $6,498.06 | Net Income: $6,172.90 | OpEx/Commission: 98.1% | Operating Cash (x2419): $31,457.42 | Trust (x8402): $47,392.20 | Credit Cards: $5,978.66 | A/P: $15,262.36 | A/R: -$10,452.85 | Properties: 14 | Pipeline 90d: $97,701 (41 bookings). Key questions for Keystone: A/P aging, negative A/R explanation (likely advance deposits), utilities spike."
},
"validation": {
"skill": "cfo",
"started_at": "2026-04-28T18:20:29.342821+00:00",
"checks_run": [
"properties",
"commission_rates",
"contract_renewals",
"prior_month_history",
"hostaway_auth"
],
"summary": {
"errors": 0,
"warnings": 10,
"info": 1
},
"findings": [
{
"severity": "warning",
"code": "CLEANING_MARGIN_LOW",
"message": "Wanderwood Lodge: margin per clean = $0 (<$10)",
"context": {
"property": "Wanderwood Lodge"
}
},
{
"severity": "warning",
"code": "CLEANING_MARGIN_LOW",
"message": "Hilltop Oasis: margin per clean = $0 (<$10)",
"context": {
"property": "Hilltop Oasis"
}
},
{
"severity": "warning",
"code": "CLEANING_MARGIN_LOW",
"message": "Jade Getaway: margin per clean = $0 (<$10)",
"context": {
"property": "Jade Getaway"
}
},
{
"severity": "warning",
"code": "CLEANING_MARGIN_LOW",
"message": "Red Fox Stables: margin per clean = $0 (<$10)",
"context": {
"property": "Red Fox Stables"
}
},
{
"severity": "warning",
"code": "CLEANING_MARGIN_LOW",
"message": "Blackberry Cottage: margin per clean = $0 (<$10)",
"context": {
"property": "Blackberry Cottage"
}
},
{
"severity": "warning",
"code": "CLEANING_MARGIN_LOW",
"message": "Valley Vista: margin per clean = $0 (<$10)",
"context": {
"property": "Valley Vista"
}
},
{
"severity": "info",
"code": "OWNER_DUPLICATES",
"message": "De-duped 2 owner properties (kept most-complete record per property)",
"context": {
"dupes": [
{
"property": "Hilltop Oasis",
"count": 3,
"kept_id": "recCfzOj09g6XTqCn"
},
{
"property": "Jade Getaway",
"count": 2,
"kept_id": "recKLtRXA2pR1YlPn"
}
]
}
},
{
"severity": "warning",
"code": "COMMISSION_MISSING",
"message": "1 active owner records have no Commission rate set",
"context": {
"properties": [
"Waterfall House"
]
}
},
{
"severity": "warning",
"code": "CONTRACTS_EXPIRED",
"message": "2 owner contracts already expired",
"context": {
"properties": [
"Valley Vista",
"Jade Getaway"
]
}
},
{
"severity": "warning",
"code": "ZERO_PIPELINE",
"message": "2 active properties have no confirmed bookings in next 90 days",
"context": {
"properties": [
"Blackberry Cottage",
"Timberledge Cabin"
]
}
},
{
"severity": "warning",
"code": "HIGH_CANCEL_RATE",
"message": "Cancellation rate 8.84% (>8% threshold)",
"context": {}
}
]
}
}