Why Kukun is Different

Most Vendors Sell Data.Kukun Sells The Join.

To answer one question about a property you need nine data types. Kukun gives you all nine in a single API call, joined on the same property record, ready for model ingestion. Built for the teams underwriting, insuring, valuing, and lending against U.S. residential property.

The Problem With Fragmented Data

Four Vendors. Four Schemas.
Four Normalization Pipelines.

The data your models need to understand a property exists — it's just scattered across different vendors with different schemas, different update cadences, and no common property identifier. Joining it is a data engineering problem, not a business problem.

Until now.

Without the join

Every Question Costs Weeks

One vendor for permits. Another for valuation. A third for renovation cost. A fourth for condition. Each has a different schema. None share a common property ID. Your data team builds the join. Every time. For every property. At scale this breaks.

With Kukun

One Call. Everything Joined.

Permits, Condition Score, AVM, Renovation Cost & After-Renovation Value, Contractor History, System Lifecycle Forecast, Investment Outlook, Market Intelligence, and the Property Record, joined on any U.S. address in a single API call. Just one schema. One authentication. One bill.

Live Example — Real Data · All Nine Primitives

One Address. One Call.
All Nine Primitives Returned.

This is real Kukun data for a single residential property. Every field below came from a single API call.

10109 Lindelaan Dr, Tampa, FL 33618

Single Family Residence

Built 1972

4,046 sq ft

Hillsborough County

kukun_id: 105126785

Property Record

3 bd / 3 ba 4,046 sq ft

Owner-occupied · Pool · Brick exterior · Carport (3 spaces)

Tax: $5,466/yrAssessed: $574K

PICO™ Condition Score

611/850

Property condition scalar blending recently replaced systems (roof, HVAC, windows) against aging interior finishes (kitchen, flooring, paint) — near the neighborhood benchmark of 649.

Systems new, finishes aging

AVM — Permit-Enriched

$1,170,661

Range: $942K–$1.66M. Assessed value: $574K. Florida assessment caps hold the assessed figure well below market; the AVM reprices to current market plus the permitted improvements.

Market-priced, improvement-aware

Investment Outlook (KIO)

+2.55% 5-yr growth

Forecast value in 5 years: $1,200,461. Tampa-St. Pete MSA average: 2.69%. National average: 2.08%.

Above national avg

Renovation Cost & After-Renovation Value

$46,200 roof (2024)

Actual permit-declared cost, plus the after-renovation value it adds — calibrated across 146 categories at ZIP-code resolution (Tampa prices, not national averages).

ZIP-level accuracy

Market Intelligence

Tampa-St. Pete CBSA 45300

MSA-level demand and risk signals. Benchmark any property against its metro, county, and state. ZIP 33618 growth: 2.55% vs FL average 1.0%.

Above FL state avg

Contractor History

3 licensed contractors on record

Quality Roofing Inc · JD Air Solutions LLC · Carrollwood Window & Door — each linked to this property by permit, with license number, trade, and status.

All licenses active

Permits — Full History (4 on record)

Sub-permit enrichment surfaces ~40% moremajor residential activity than raw municipal feeds — work recorded at the contractor level that never appears in the public permit roll.

2024
Roof Replacement

Remove existing roofing. Repair and re-nail decking. Install new underlayment and asphalt shingles. Modified bitumen system over flat roof areas.

$46,200 declaredStatus: ClosedQuality Roofing INC#HC-BTR-24-0230955
2024
HVAC Changeout

AC system replacement.

$8,000 declaredStatus: ClosedJD Air Solutions LLC#HC-BTR-24-0198163
2023
Window Replacement (8 windows)

Replace 8 windows size for size.

$18,400 declaredStatus: ClosedCarrollwood Window & Door#HC-BTR-23-0147310
2007
Front Entry Addition

New construction — front entry addition.

Status: Closed#RGB20259

System Lifecycle Forecast — Remaining Useful Life

Foundation

46 yrs

Roof

24 yrs

Kitchen

6 yrs

Windows

22 yrs

HVAC

16 yrs

Flooring

4 yrs

Interior paint

4 yrs

Exterior paint

3 yrs

What This Means For Your Models

The Join is What Makes The Data Modelable

Individual datasets answer individual questions. Joined data — on a common property identifier, with a common update cadence and a common schema — is what your models can actually ingest.

One schema. No reconciliation

Every primitive uses the same property identifier. Permits join to condition scores join to AVM join to lifecycle. No cross-vendor ID mapping, no date-alignment gymnastics.

Algorithm-ready taxonomy

The same 27 permit labels apply across all 5,600+ jurisdictions. "Roof replacement" in Hillsborough County is the same label as in Los Angeles County. No custom parsing before model ingestion.

Absence is a signal, not a null

A property with no HVAC permit in 20 years in a high-coverage jurisdiction is a risk signal. Every absence answer includes the permit label checked, the date window, and the jurisdiction source.

Algorithm-Ready vs. Human-Readable

Structured For Machines. Not For Reports.

There's a meaningful difference between data a person can read and data a model can ingest. Kukun is built for the latter.

What Most Property Data Looks Like

  • Permit descriptions in free text: “re-roof w/ 30yr arch shingles” — must be parsed before use.

  • Different field names and structures per jurisdiction — normalization required per market.

  • No metadata on absence — a null could mean no activity or no coverage. Impossible to distinguish.

  • Multiple vendor schemas to join — your data team writes the glue code.

  • Schema changes break downstream models silently.

What Kukun Returns

  • 27 standardized permit labels across all 5,600+ jurisdictions — ingest directly into feature pipelines.

  • Single schema for all nine primitives, all markets, all property types.

  • Every absence answer includes label checked, date window, and jurisdiction source — models know what they’re seeing.

  • One join, done inside Kukun — your models receive a complete property record.

Integration

One API Call.
Nine Primitives.

This is what the join looks like in practice — the response shape your models actually receive.

Get /v1/property/details — response (abbreviated)

// 10109 Lindelaan Dr, Tampa FL 33618 - real response
{
"kukun_id": 105126785,
"property_record": {
"year_built": 1972, "living_area": 4046, "bedrooms": 3, "pool": true
},
"pico_score": {
"property_score": 611, "neighborhood_score": 649
},
"avm": {
"value": 1170661, "range_low": 942385, "range_high": 1663921
},
"market_outlook": {
"five_year_growth": 2.55, "forecast_value_5yr": 1200461
},
"permits": [
{ "label": "roof", "date": "2024-10-31", "cost": 46200, "status": "closed" },
{ "label": "hvac", "date": "2024-02-27", "cost": 8000, "status": "closed" },
{ "label": "window", "date": "2023-02-21", "cost": 18400, "status": "closed" }
],
"component_lifecycle": [
{ "component": "roof", "remaining_years": 24 },
{ "component": "hvac", "remaining_years": 16 },
{ "component": "foundation", "remaining_years": 46 }
]
}
// All nine primitives. One call. One schema.

Ready to Stop Stitching?

API access, enterprise licensing, and MCP server configuration available now.
Talk to us about your use case.