← back to command center

Airtable Integrity /airtable-integrity

red 1h ago · started 2026-04-28T18:19:57.264499+00:00

Headline Metrics

No headline metrics configured (validation-only tile).

Validation Findings (12)

SeverityCodeMessageContext
infoUNKNOWN_TABLES58 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&
warningAI_FLAG_INCONSISTENT1 props have AI flag driftdetails: [["Cherrytown Chalet", "mode=shadow but disabled"]]
warningOWNER_NO_PROPS7 owner records link to zero propertiesnames: ["rec1bvLH2Gj7IotUe", "rec6kygUmviYz4fJN", "recBGXINqWg156EQ1", "recdpsscfqb8KRlX5", "recl9ZzkZ4TQvEtux", "recmvSzBPunFq3EUb", "recyybW
warningOWNER_NO_EMAIL3 owners missing email
warningOWNER_NO_PHONE41 owners missing phone
warningOWNER_NO_ADDR50 owners missing mailing address
errorISSUE_NO_PROP18 open issues with no property linkids: ["rec1ChN3rQFRjxQKN", "rec1EXN4eHTZ8iV0W", "rec1RuFI48XjLJfPi", "rec1tP9I1pzNUm5Tz", "rec3Qb3nwXGMl0txo", "rec7FqIvFzJ7CLCbF", "rec7MI0
errorEXP_NO_PROP1/52 expenses missing prop linkids: ["recYJPWCoIYR15Doz"]
warningCLEANS_FETCHHTTP 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
errorVENDOR_DUPSDuplicate vendor names: ['austin dreher', 'daniel potter', 'john', 'michael hadden', 'emma decker', 'mike', 'garzone plumbing', 'casey backhaus', 'paraco gas', 'chad turner']
warningVENDOR_NO_CONTACT45 vendors with no email/phone
errorSTAY_NO_PROP100 stay rows missing prop linkids: ["rec02lOqIU3ZE35Tl", "rec0J9PE12N3D2vke", "rec0ZioTfYDIwFIop", "rec0bY8sVxVzFaDfY", "rec0kIxVd40eamglh", "rec0neyQQW1KXqnOH", "rec0tzf

Trend

Capture History

How to refresh

Engine: python3 ~/.claude/scripts/airtable-integrity.py --report

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

Raw output

6,929 bytes of JSON
{
  "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"
          ]
        }
      }
    ]
  }
}