No headline metrics configured (validation-only tile).
| Severity | Code | Message | Context |
|---|---|---|---|
| info | UNKNOWN_TABLES | 58 tables not in the integrity skill's known set (review for legacy/test) | tables: ["Forms/Docs", "Growth", "Goals", "Utilities", "OB Dash", "Licensing", "Listing Improvements", "Ideas", "Insurance& |
| warning | AI_FLAG_INCONSISTENT | 1 props have AI flag drift | details: [["Cherrytown Chalet", "mode=shadow but disabled"]] |
| warning | OWNER_NO_PROPS | 7 owner records link to zero properties | names: ["rec1bvLH2Gj7IotUe", "rec6kygUmviYz4fJN", "recBGXINqWg156EQ1", "recdpsscfqb8KRlX5", "recl9ZzkZ4TQvEtux", "recmvSzBPunFq3EUb", "recyybW |
| warning | OWNER_NO_EMAIL | 3 owners missing email | — |
| warning | OWNER_NO_PHONE | 41 owners missing phone | — |
| warning | OWNER_NO_ADDR | 50 owners missing mailing address | — |
| error | ISSUE_NO_PROP | 18 open issues with no property link | ids: ["rec1ChN3rQFRjxQKN", "rec1EXN4eHTZ8iV0W", "rec1RuFI48XjLJfPi", "rec1tP9I1pzNUm5Tz", "rec3Qb3nwXGMl0txo", "rec7FqIvFzJ7CLCbF", "rec7MI0 |
| error | EXP_NO_PROP | 1/52 expenses missing prop link | ids: ["recYJPWCoIYR15Doz"] |
| warning | CLEANS_FETCH | HTTP 422 on https://api.airtable.com/v0/appByYHMwmF1qkqfq/tblv785awrtxHHt9V?filterByFormula=OR%28IS_AFTER%28%7BDate%7D%2C+%272026-02-27%27%29%2CIS_AFTER%28%7BClean+Date%7D%2C+%272026-02-27%27%29%29&pageSize=100: {"error":{"type":"INVALID_FILTER_BY_FORMULA","message":"The formula for filtering record | — |
| error | VENDOR_DUPS | Duplicate vendor names: ['austin dreher', 'daniel potter', 'john', 'michael hadden', 'emma decker', 'mike', 'garzone plumbing', 'casey backhaus', 'paraco gas', 'chad turner'] | — |
| warning | VENDOR_NO_CONTACT | 45 vendors with no email/phone | — |
| error | STAY_NO_PROP | 100 stay rows missing prop link | ids: ["rec02lOqIU3ZE35Tl", "rec0J9PE12N3D2vke", "rec0ZioTfYDIwFIop", "rec0bY8sVxVzFaDfY", "rec0kIxVd40eamglh", "rec0neyQQW1KXqnOH", "rec0tzf |
Engine: python3 ~/.claude/scripts/airtable-integrity.py --report
Capture (writes to dashboard-data/latest/): ~/.claude/scripts/dashboard-capture.sh airtable-integrity
{
"skill": "airtable-integrity",
"tables": {
"all_props": {
"total": 101,
"active": 14,
"active_hostaway_ids": [
222900,
290588,
299281,
340620,
341135,
343880,
369689,
396986,
422513,
429948,
451270,
487778,
493486,
505182
]
},
"owners": {
"total": 64
},
"issues": {
"open_total": 55,
"waiting_on_owner": 3
},
"expenses": {
"sampled": 52
},
"vendors": {
"total": 281,
"visible": 281
},
"stay_data": {
"sampled": 100
},
"claims": {
"total": 11,
"open": 11
}
},
"schema": {
"total_tables": 74,
"unknown_tables": [
"Forms/Docs",
"Growth",
"Goals",
"Utilities",
"OB Dash",
"Licensing",
"Listing Improvements",
"Ideas",
"Insurance",
"Pricing",
"Occupancy Tax",
"Site Visits",
"Messaging",
"Agreements",
"Supply Request",
"Inventory",
"Cap-Ex",
"Parts",
"Regulation",
"Market Reports",
"Brokers",
"Mail Data",
"Campaigns",
"Vendor Interviews",
"Staff",
"HVAC Log",
"Owner Statements",
"Prop/Owner Intake",
"Grocery Stocklist",
"Offboarding Tasks",
"Offboarding",
"Lost and Found Items",
"Hot Tub",
"Photography",
"Listing Audit",
"HB Sync Log",
"Onboarding",
"Onboarding Tasks",
"QA_History",
"Revenue Analysis Log",
"Review Analysis Log",
"Financial Analysis History",
"Review Disputes",
"Hostbuddy Sync Queue",
"Hostbuddy Action Items",
"Comms Log",
"Response Metrics",
"Proactive Maintenance",
"Postcard Owner Research",
"RankBreeze Rankings",
"Inquiries",
"Guest Comms Conversations",
"Guest Comms Journey Send Log",
"Portfolio Metrics Snapshots",
"Booking Pace Snapshots",
"Out of Office",
"Cadence Run Log",
"Listing Performance"
]
},
"validation": {
"skill": "airtable-integrity",
"started_at": "2026-04-28T18:19:57.264499+00:00",
"checks_run": [
"schema",
"all_props",
"owners",
"issues",
"expenses",
"vendors",
"stay_data",
"claims"
],
"summary": {
"errors": 4,
"warnings": 7,
"info": 1
},
"findings": [
{
"severity": "info",
"code": "UNKNOWN_TABLES",
"message": "58 tables not in the integrity skill's known set (review for legacy/test)",
"context": {
"tables": [
"Forms/Docs",
"Growth",
"Goals",
"Utilities",
"OB Dash",
"Licensing",
"Listing Improvements",
"Ideas",
"Insurance",
"Pricing",
"Occupancy Tax",
"Site Visits",
"Messaging",
"Agreements",
"Supply Request",
"Inventory",
"Cap-Ex",
"Parts",
"Regulation",
"Market Reports",
"Brokers",
"Mail Data",
"Campaigns",
"Vendor Interviews",
"Staff",
"HVAC Log",
"Owner Statements",
"Prop/Owner Intake",
"Grocery Stocklist",
"Offboarding Tasks"
]
}
},
{
"severity": "warning",
"code": "AI_FLAG_INCONSISTENT",
"message": "1 props have AI flag drift",
"context": {
"details": [
[
"Cherrytown Chalet",
"mode=shadow but disabled"
]
]
}
},
{
"severity": "warning",
"code": "OWNER_NO_PROPS",
"message": "7 owner records link to zero properties",
"context": {
"names": [
"rec1bvLH2Gj7IotUe",
"rec6kygUmviYz4fJN",
"recBGXINqWg156EQ1",
"recdpsscfqb8KRlX5",
"recl9ZzkZ4TQvEtux",
"recmvSzBPunFq3EUb",
"recyybWcCgUxez9qh"
]
}
},
{
"severity": "warning",
"code": "OWNER_NO_EMAIL",
"message": "3 owners missing email",
"context": {}
},
{
"severity": "warning",
"code": "OWNER_NO_PHONE",
"message": "41 owners missing phone",
"context": {}
},
{
"severity": "warning",
"code": "OWNER_NO_ADDR",
"message": "50 owners missing mailing address",
"context": {}
},
{
"severity": "error",
"code": "ISSUE_NO_PROP",
"message": "18 open issues with no property link",
"context": {
"ids": [
"rec1ChN3rQFRjxQKN",
"rec1EXN4eHTZ8iV0W",
"rec1RuFI48XjLJfPi",
"rec1tP9I1pzNUm5Tz",
"rec3Qb3nwXGMl0txo",
"rec7FqIvFzJ7CLCbF",
"rec7MI0gLpsFke3kc",
"recFTs8Qt0l3eA2TI",
"recMYbEDQQmbcPm0y",
"recQ2ooMvowYxovD9"
]
}
},
{
"severity": "error",
"code": "EXP_NO_PROP",
"message": "1/52 expenses missing prop link",
"context": {
"ids": [
"recYJPWCoIYR15Doz"
]
}
},
{
"severity": "warning",
"code": "CLEANS_FETCH",
"message": "HTTP 422 on https://api.airtable.com/v0/appByYHMwmF1qkqfq/tblv785awrtxHHt9V?filterByFormula=OR%28IS_AFTER%28%7BDate%7D%2C+%272026-02-27%27%29%2CIS_AFTER%28%7BClean+Date%7D%2C+%272026-02-27%27%29%29&pageSize=100: {\"error\":{\"type\":\"INVALID_FILTER_BY_FORMULA\",\"message\":\"The formula for filtering record",
"context": {}
},
{
"severity": "error",
"code": "VENDOR_DUPS",
"message": "Duplicate vendor names: ['austin dreher', 'daniel potter', 'john', 'michael hadden', 'emma decker', 'mike', 'garzone plumbing', 'casey backhaus', 'paraco gas', 'chad turner']",
"context": {}
},
{
"severity": "warning",
"code": "VENDOR_NO_CONTACT",
"message": "45 vendors with no email/phone",
"context": {}
},
{
"severity": "error",
"code": "STAY_NO_PROP",
"message": "100 stay rows missing prop link",
"context": {
"ids": [
"rec02lOqIU3ZE35Tl",
"rec0J9PE12N3D2vke",
"rec0ZioTfYDIwFIop",
"rec0bY8sVxVzFaDfY",
"rec0kIxVd40eamglh",
"rec0neyQQW1KXqnOH",
"rec0tzf7aTRO3dy6h",
"rec15dgITaE79lwwf",
"rec1u5iNqSgU5lnR1",
"rec22T8Wh49fmT7k9"
]
}
}
]
}
}