Tax assessor records vs. photo-derived attributes for property condition
Ask a data lead where their condition fields come from and the honest answer is usually "the assessor file, mostly." It's the data source everyone already has, it's cheap, and it covers the whole parcel universe. It's also the reason so many portfolios show a pool that was filled in during the Obama administration, or a garage that's since become a mother-in-law suite.
What assessor records actually capture
County assessor data exists to assign taxable value on a reassessment cycle. A few things follow from that:
- Update cadence is tied to reassessment, not reality. Depending on the county, that's every one, three, or more years, and a lot of counties only trigger a review on permit or sale.
- Fields are self-reported or inspector-logged at a point in time. A pool permit gets filed when the pool goes in. It rarely gets un-filed when the pool gets filled in, the deck rots out, or an owner lets the yard go.
- Coverage is inconsistent across jurisdictions. Some counties track outbuildings and detached garages as separate line items. Others lump everything into "improvements" and move on. A nationwide portfolio inherits every one of those local quirks.
- "Condition" in assessor data usually means a grade an assessor assigned, not a description of what's visible on the lot. A "C" condition rating on a 1998 inspection tells you very little about whether the driveway is cracked gravel or fresh asphalt this year.
Assessor data still does real work. It's the backbone for square footage, year built, and legal description. The gap is the "what does this lot look like right now" question, and treating assessor condition grades as an answer to that is where AVM confidence intervals and listing enrichment both take a hit.
What photo-derived attributes add
The better source for condition is the listing photos themselves, or the imagery equivalent of them. A driveway, a garage, an outbuilding, a pool, tree cover over the structure, and the general state of the lot are all things a photo shows plainly and a tabular database usually doesn't carry as a field at all.
Pulling those attributes from imagery instead of assessor text changes a few things in practice:
- The attribute reflects this year's lot, not the year of the last reassessment. If a pool was removed last spring, an annual imagery pass picks that up on the next refresh instead of waiting for someone to update a county system that may not update it at all.
- Coverage doesn't depend on what a given county chooses to track. A detached garage or outbuilding shows up the same way whether the local assessor logs accessory structures or not.
- It fills fields that assessor data never had in the first place. Most tax rolls don't have a "tree cover" field or a "visible lot condition" field. There's nothing to disagree with; the field is just empty until something populates it.
This is also where the two sources are genuinely complementary rather than competing. Assessor records still own the legal and structural facts: parcel boundaries, square footage, year built, recorded additions. Photo-derived attributes cover the surface-level, visually-obvious details that change faster than any reassessment cycle, and that a listing photo would show a buyer in about two seconds.
Where the gap shows up
For a portal or AVM vendor working at scale, the practical problem isn't philosophical, it's operational. Someone has to decide what goes in the driveway, garage, pool, and lot-condition fields across tens or hundreds of thousands of records. Right now that decision usually comes down to one of two options: pull a stale assessor value and hope it's still true, or leave the field blank. Neither is great for a model or a listing page that's supposed to reflect the property as it stands today.
Property Attributes exists to give those fields a third option: attribute values pulled from very-high-resolution imagery, refreshed annually, and keyed to your existing property IDs, so driveway, garage, outbuilding, pool, tree cover, and lot condition stop being the fields your team either guesses at or skips. Take a look at how it fits into an existing record set if condition fields are the gap you're currently patching by hand.