
Tesse
Search public property records from hundreds of sources and ask an assistant questions about them
63.6Mproperties counted in production
The problem
Commercial real estate teams need ownership, sales, violation and permit data. Licensed feeds are expensive and fragmented. The public records exist, but county by county, agency by agency, in incompatible formats. Nobody had brought them together nationwide.
What I built
Tesse lets commercial real estate teams search public property records nationwide and ask questions in plain English. Brokers can enrich lead lists, watch for new signals across different areas, and upload their own spreadsheets. Every answer points back to real records instead of relying on what an AI happens to remember.
The data pipeline
The core work is pulling public records from 240+ sources: county assessors, city portals, state registries and federal databases. Each one has its own format, limits, login rules and way of publishing updates.
Raw records pass through 305 mapping rules that translate each source's messy columns into one consistent format. Money, dates, addresses and map shapes all end up following the same rules.
The data is loaded into PostgreSQL 17 with PostGIS, split by area so it stays manageable. Running an import again never creates duplicates. The output today is roughly 380M records across 63.6M properties and their ownership, sales, violations, companies, permits and tax history, all from free public sources at $0 per record.
Merging duplicate properties
The same building appears in multiple sources under different IDs, spellings and partial addresses. Four matching steps merge them into one property record:
- Exact parcel ID match, where jurisdictions share stable identifiers
- Fingerprinted address match on normalised street, number and unit
- Geographic proximity using PostGIS distance thresholds for near-miss addresses
- Cross-source linkage rules for the domain-specific edge cases
A daily job retries failures, catches agencies that silently changed their format, and checks that every area still has the expected coverage.
What the AI can do with it
Five AI tools sit on top of the data:
- Chat answers natural-language questions from real rows through schema-bound tools
- Leads enriches property tables with custom columns, fanning out to the internal database, web search, and vendor APIs in parallel
- Signals monitors permits, court dockets, filings and local news, clustering them into deduped stories tied to properties
- My Data ingests spreadsheet uploads with model-inferred column mapping and confidence scores
- Inbox parses broker email, extracts deals, and fuzzy-matches them to properties

Simple questions are answered instantly without calling the AI at all, which cuts both cost and wait time.

Why it matters
The platform replaces per-record licensing costs with a data asset nobody else has assembled. The same pipeline produces the training data for the ML layer: 27M historical sales and 133K labelled foreclosures. Owner deduplication, distress scoring and automated valuation all feed off point-in-time features that only exist because the ingestion was built this way.


