Skip to content
RateStack
Capability · Property intelligence

Property text in, ULDD-orthogonal fields out — with a warrantability call you can defend.

Vendor text like "Detached PUD - 2 Story - Fee Simple" auto-decomposes into Fannie ULDD orthogonal fields (category, attachment, ownership, project type, structure, construction method, stories) using a deterministic + AI hybrid with confidence scoring. Warrantability auto-classified with explainable rationale. Operators override at any point.

Overview

What it is, in one paragraph

Property decomposition runs a deterministic keyword resolver first; high-confidence matches return immediately. Ambiguous strings escalate to an AI refiner trained on Fannie ULDD vocabulary; the output is confidence-scored. Warrantability classification runs on the decomposed fields, producing WARRANTABLE / NON_WARRANTABLE / UNKNOWN with an explainable rationale grounded in the contributing fields. Every decomposition writes an audit row; operators can override any field at any time, and the override is captured in the trace. The orthogonal field shape maps directly into the pricing engine's eligibility predicates.

  • Seven orthogonal ULDD fields

    category · attachment · ownership · project type · structure · construction method · stories. Each populates independently — no overloaded enum.

  • Deterministic-first, AI-second

    Keyword resolver handles 70-80% of vendor strings without calling AI. Ambiguous strings escalate; AI calls are budgeted and audit-chained.

  • Confidence scoring

    Every decomposition carries a confidence score. Low-confidence results route to the QC dashboard for operator review.

  • Warrantability auto-determination

    Classifier produces WARRANTABLE / NON_WARRANTABLE / UNKNOWN with rationale citing the contributing fields. Used downstream by eligibility.

  • Operator override

    Any field — including the warrantability call — can be overridden by an authorized operator. Overrides write to the audit chain.

  • Pricing eligibility ready

    The orthogonal field shape maps directly into pricing-engine eligibility predicates. No translation layer.

How it works

The pipeline, end to end.

Numbered steps from input to output. Each step maps to a specific subsystem you can inspect via OpenTelemetry.

  1. 1

    Inbound text

    Vendor exports, MISMO imports, or manual entry deliver a raw property string. The decomposer takes it as the input.

  2. 2

    Deterministic resolution

    Keyword resolver matches against a curated vocabulary of attachments, ownership types, project structures, construction methods, and unit counts. High-confidence matches return.

  3. 3

    AI refinement on miss

    Ambiguous or partial strings escalate to ai-service. The refiner is prompted with the ULDD vocabulary and emits a structured field map with confidence.

  4. 4

    Confidence + audit

    Combined confidence is computed from deterministic + AI contributions. The full decomposition writes an audit row with method and confidence.

  5. 5

    Warrantability classification

    Classifier consumes the decomposed fields and produces a WARRANTABLE / NON_WARRANTABLE / UNKNOWN call with an English-language rationale citing the contributing fields.

  6. 6

    Operator review

    Below-threshold results land on the QC dashboard. Operator can edit any field; the override writes its own audit row with prior + new value.

Hands on

Decompose a property string

Live cURL sample — copy, paste, ship.

# Decompose a vendor property string
curl -X POST https://api.ratestack.com/v1/property/decompose \
  -H "X-API-Key: $RATESTACK_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Detached PUD - 2 Story - Fee Simple" }'

# Returns:
# {
#   "fields": {
#     "attachmentType":               "DETACHED",
#     "constructionMethod":           "SITE_BUILT",
#     "projectLegalStructureType":    "PUD",
#     "projectClassificationIdentifier": "TYPE_F_PUD",
#     "pudIndicator":                 true,
#     "storiesCount":                 2,
#     "propertyEstateType":           "FEE_SIMPLE"
#   },
#   "confidence": 0.94,
#   "method":     "DETERMINISTIC_THEN_AI",
#   "warrantability": {
#     "value":     "WARRANTABLE",
#     "rationale": "Detached PUD with fee-simple ownership; meets Fannie ULDD warrantability defaults."
#   }
# }

Why this matters

The pain it removes.

Eligibility stops misfiring on overloaded enums

Orthogonal fields mean a 'PUD' is a project structure, not a property type. Eligibility predicates land on the right axis without translation tricks.

Warrantability calls survive audit

Every warrantability determination cites the fields that drove it. Compliance reads the rationale; reviewers don't argue with an opaque enum.

Vendor variability becomes invisible

Three vendors describing the same property three ways collapse into one canonical record. Pricing reads one shape; the source-of-truth audit captures all three.

Frequently asked

Direct answers, no marketing spin.

What if the AI gets it wrong?

Confidence is surfaced and below-threshold results land on the QC dashboard. The operator can override any field; the override audits with prior + new value and propagates downstream automatically.

Why both deterministic AND AI?

Most vendor strings have well-known prefixes and tokens; the deterministic resolver handles them cheaply and reproducibly. AI handles the long tail. Splitting saves cost, increases reproducibility, and reduces the AI surface area to audit.

Can we plug in our own vocabulary?

Yes on Enterprise. Custom keyword maps and warrantability rule sets can be loaded per-tenant; the AI refiner respects the tenant vocabulary on retrieval.

Does warrantability automatically gate pricing?

No. Eligibility uses warrantability as a predicate; whether NON_WARRANTABLE programs are blocked is up to your program configuration. Some lenders run non-warrantable lanes.

What about appraiser-specific quirks?

The vocabulary covers Fannie ULDD canon. Appraiser-specific phrasings (e.g., '2-story', 'two story', '2 Story') normalize into storiesCount=2 via the deterministic resolver.

Ready to see it on your data?

Wire property text in, uldd-orthogonal fields out — with a warrantability call you can defend. up to your real workflow.

We'll spin you a sandbox, load your actual ratesheets, and walk you through this capability against your top scenarios.

Property intelligence — ULDD decomposition + warrantability | RateStack