Hotel Intelligence Accuracy: Full Audit and Fix Plan
Generated 2026-07-15 (v2, supersedes the morning audit on this URL) · Ground truth: all 655 STR report files in the Hotel Research shared drive, parsed read-only (str-sweep parsed.jsonl: 592 files with data, 10,543 report-months, 100 hotels, 641 registered comp set rosters) · Compared against the tax-receipt database (hotel_tax_receipts, current through 2026-05).
51 of 100
Hotels fully clean: tax data matches their STR report cards within 8 percent, every month, for up to 106 straight months (wide-audit.json)
$1,337,228,079
Double-counted: the same tax filing stored twice for 199 hotels, 148 of them wrong on the site right now (dedupe scan of hotel_tax_receipts, 2026-07-15)
494
Wrong entries in the hotel identity map (of 4,403 checked against the census, chain-validate scan) causing money to land in the wrong hotel's bucket
6 fixes staged
Four database repairs plus two code guards, written and checked, ready to run on approval
1. What we did
Every STR report in the Hotel Research drive (655 files across 121 deal folders) was downloaded and read. That gives 10,543 hotel-months of trusted numbers covering 100 Texas hotels, 2015 through May 2026. Each hotel-month was compared against what the tax database says the hotel earned. Where the two agree, the tool is right. Where they diverge, we chased the reason until we had a mechanism, not a guess. Every divergence traced to one of six specific defects listed below. The comparison method itself is sound: for the 51 hotels free of all six defects, the two sources agree within 0.92 to 1.04, month after month.
2. Why yesterday's Beaumont fix did not hold (and what does)
The tool has a nightly "self-healing" routine, and it was healing in the wrong direction
This morning at 5:51 the bad Beaumont data was scrubbed and verified clean. At 6:00 the nightly sync ran, and a database routine (enrich_receipts_str_number, added in migrations 106/109) re-applied the bad data within minutes. That routine matches money to hotels by OWNER ONLY. The owner who ran HGI Beaumont until 2022 now runs a different Hilton Garden Inn near Clear Lake, so every night the routine pours the Clear Lake hotel's money back into Beaumont's bucket. Any cleanup is undone by the next sunrise. The staged fix (migration 245) makes the routine check the street address and the ownership dates, not just the owner. Verified safe: simulated against all 551,322 unassigned rows, it changes nothing today and only behaves differently after the cleanup, where it re-applies the RIGHT stamps.
3. The six defects, with counts
A. Double-counted filings: $1,337,228,079 across 199 hotels (148 live)
The same monthly filing exists twice, once under the plain owner ID and once under an outlet-numbered copy of the same ID, identical to the cent. Residence Inn Arlington reads exactly 2.00x its STR report card because of this. Counted by exact-match scan 2026-07-15 (6,073 duplicate rows). Fix staged: migration 248 deletes the copies and adds a watch view.
B. Wrong identity-map entries: 494 of 4,403
The map that ties a tax filer to a hotel (taxpayer_chain) has 494 entries pointing at the wrong hotel, verified by checking each entry's own name and address against the STR census (chain-validate scan). This is the Beaumont class: it also explains Days Inn Abilene showing $306 per room and the Westin Woodlands carrying an Embassy Suites' money. Fix staged: migration 246 re-points 165 entries whose correct hotel is provable by address, disconnects 329 that have no safe answer (blank beats wrong), and adds the missing Clear Lake entry.
C. Cross-stamped money: $164,289,881 since Jan 2024 (contamination2 scan 2026-07-15)
119 hotels have another hotel's money in their bucket in the same months (contamination2 scan; the count includes some address-spelling twins, the strictly-verified core is 84). The cleanup run plus the identity repair addresses these; the nightly report-card check (below) burns down the remainder.
D. Garbage rows from a mis-read download: 742 rows
Some lines in the state's file have extra columns; the reader shifted them and stored a DATE as a dollar amount (20251231 became $20,251,231). 16 sit in live windows. Fixes staged: migration 247 nulls them; the download reader now skips and counts malformed lines (sift-sync.mjs guard).
E. Missing history: 7 hotels with zero tax data, 10 more with 18 to 56 month holes
Seven hotels we researched (with years of STR reports on file) were never identity-matched, so the tool shows nothing for them. Ten more have multi-year holes, mostly earlier owners' filings never linked. The identity repair plus a match pass claims these (wide-audit.json missing-months flags).
F. Wrong room counts and wrong comp set lists
542 hotels have room counts more than 10 percent apart between our census figure and what the hotel reports to the state; rooms are the divisor in every per-room number. And 4 of our 12 tracked comp set lists do not match the officially registered comp set on the hotel's own STR report (SpringHill Northwest's list mixes in six Medical Center hotels; the aloft College Station list contains El Paso, Odessa, Waco and Corpus Christi hotels). We extracted the registered rosters from 641 report files to fix the lists against.
4. Before and after: the proof cases
Computed from the cleaned rows only (same database, foreign and duplicate rows removed), 12 months through May 2026:
Hotel
Site shows now
After the fix
What gets removed
Hilton Garden Inn Beaumont
$222.25
$118.51
Clear Lake Hilton Garden Inn's money removed (same owner sold Beaumont in 2022 and kept filing for its other hotel)
Days Inn Abilene
$306.27
$99.60
Whitten at the Mall event venue removed
Westin Woodlands
$296.35
$246.60
Embassy Suites Hughes Landing removed
Residence Inn Arlington
2.00x its report card
matches report card
the same filing was stored twice and counted twice
Staybridge Suites Med Center (comp set member)
$112.92
$104.17
Diamond Inn Hobby Airport removed
DoubleTree Med Center (comp set member)
$122.10
$115.54
Palace Inn removed
Source: sentinel before/after computation 2026-07-15 against hotel_tax_receipts, 2025-06 through 2026-05 rows.
5. The fix plan
Today, on approval (about an hour): apply the four staged database repairs (245 location-aware self-healing, 246 identity-map repair, 247 garbage rows, 248 duplicate filings), run the cleanup pass, refresh, then verify all six proof cases above land on their "after" numbers. The ingest guard ships with it so the garbage cannot come back.
This week: load all 10,543 report-months from the sweep into the tool as permanent ground truth (parser already exists), fix the 4 comp set lists from the registered rosters, run the match pass for the 7 invisible hotels and the big history holes, and start the room-count triage with the state's figure and the report cards as tie-breakers.
Standing guard (what makes this permanent): a nightly reconciliation that compares every hotel with report-card data against its tax numbers and flags any month that drifts more than 15 percent; a post-refresh check that the six proof hotels still show their correct numbers (any regression pages the morning brief, same channel as the pipeline watchdog); and DataHealth cards for duplicates, orphans, and room conflicts so drift is visible the day it starts.
6. Every flagged hotel (49 of 100)
The full flag list from the widened audit. "Ratio" is the hotel's typical tax-data-to-report-card agreement (1.00 is perfect). MISSING means published months with no tax rows; SPIKES are single months deviating over 30 percent from the hotel's own norm; ROOMS shows our census figure vs what the hotel reports to the state.
Hotel
Months
Ratio
Flags
TownePlace Suites by Marriott Dallas McKinneyMcKinney · STR 63134
Four Points by Sheraton Houston Energy CorridorHouston · STR 64206
87/87
1.016
SPIKES_4
Four Points by Sheraton MidlandMidland · STR 63746
90/90
1.004
SPIKES_2
Hyatt Place Dallas / Las ColinasIrving · STR 36931
30/30
0.997
SPIKES_1
Hyatt Regency Houston WestHouston · STR 5819
78/106
1.025
SPIKES_2
Hyatt House Houston/GalleriaHouston · STR 30982
70/70
1.005
SPIKES_1
Renaissance Dallas North HotelDallas · STR 26966
75/100
1.038
SPIKES_1
Holiday Inn & Suites Houston West - Westway ParkHouston · STR 60598
62/62
1.012
SPIKES_2
Home2 Suites by Hilton Lewisville DallasLewisville · STR 67831
46/46
1.003
SPIKES_3
La Quinta Inn & Suites by Wyndham Houston Spring SouthSpring · STR 67738
54/54
1
SPIKES_1
Source: wide-audit.json 2026-07-15 (str-sweep parsed.jsonl x hotel_tax_receipts). The 51 clean hotels are omitted here; full data in the audit artifacts.