Skip to main content

Overview

account_facts is a top-level field on title entries (DynamoDBEntry) that packages four yes/no judgements an integration partner needs at a glance. Each fact includes a plain-language summary and references back into the underlying data. Facts are derived from the vehicle reconciliation engine — the same projection that powers title review — not from raw account_data alone. They are computed live on read when you call GET /title/{id} (or the reconcile endpoint for opted-in orgs) and are only present when job_status is complete.
Preview / not GA. account_facts is currently returned only for eligible preview organizations. Other organizations receive no behavior change. Treat this surface as subject to change until generally available.
account_discrepancies and account_matches are deprecated in favor of account_facts. Prefer reading account_facts for title review automation.

When it appears

ConditionResult
Organization is opted in to the previewaccount_facts may be included
job_status is not completeField is omitted
Reconciliation or fact derivation failsField is omitted (response still succeeds)
Borrower-related facts compare against the originally submitted obligor borrowers from the POST /title request (stored in the “Initial API Call Data” attachment), not the live account_data.loan.borrower[] array, which enrichment may overwrite with materialized title owners.

Object shape

interface AccountFacts {
  computed_at: string;   // ISO 8601 — when facts were derived
  source: "reconcile";   // Provenance of the judgements

  borrower_on_title: AccountFact;
  borrower_signature_only_needed_for_title: AccountFact;
  has_problematic_brands: AccountFact;
  are_there_active_liens: AccountFact;
}

interface AccountFact {
  value: boolean;
  summary: string;
  references: AccountFactReference[];
}

interface AccountFactReference {
  field_path: string;    // JSON pointer, e.g. "/vehicle/title/owners"
  value: unknown;
  from?: {
    kind: "submitted_borrower" | "reconciled_title";
    ref_id?: string;
  };
}

The four facts

borrower_on_title

Question: Do all submitted obligor borrowers appear on the title?
  • true — Every submitted borrower fuzzy-matches at least one reconciled title owner.
  • false — At least one submitted borrower does not match any owner, or there were no submitted borrowers / no reconciled owners to compare.
Name matching tolerates case, punctuation, Last, First order, middle initials, and common nickname prefixes. Non-obligor borrowers (is_nonobligor: true) are excluded from the submitted set. When false because of a mismatch, references cite the unmatched borrower(s) plus the owner list. When true, references cite the matched borrower(s) plus owners.

borrower_signature_only_needed_for_title

Question: Can the borrower sign alone (without other owners)?
  • true when either:
    • The title is an OR title (vehicle.title.is_or === true), or
    • Every reconciled title owner is a submitted borrower (wholly borrower-owned).
  • false when the title is AND/joint and not wholly borrower-owned, or when no reconciled owners are available to evaluate.
OR titles always yield true regardless of borrower ownership.

has_problematic_brands

Question: Does the title carry a title-impairing brand?
  • true — At least one problematic brand is present on vehicle.title.brands (or legacy vehicle.title.brand).
  • false — No problematic brands found, or no brand data available.
Problematic brands include salvage-family, flood/fire, lemon/buyback, junk, and export-only brands such as SALVAGE, REBUILT, FLOOD, JUNK, LEMON, EXPORT_ONLY, and related variants. Excluded (not title-blocking on their own): odometer brands (ACTUAL_MILEAGE, EXEMPT_ODOMETER, etc.) and administrative brands (MEMORANDUM_COPY, etc.).

are_there_active_liens

Question: Are there unreleased liens on the title?
  • true — At least one lien in active_liens lacks lien_release_signed: true, or has_liens is true with no lien detail.
  • false — All liens are released, no liens exist, or no lien data is available.
When active liens exist, references point to each unreleased lienholder name.

Interpreting value: false

For all four facts, false is overloaded. It can mean either:
  1. A genuine negative answer (e.g. borrower is not on title), or
  2. Insufficient data to decide (e.g. enrichment still running, no submitted borrowers, no reconciled owners).
There is no separate tri-state field today. Read the summary string to disambiguate — it explicitly states when inputs were missing (e.g. “No submitted borrower names were available…”).
A future explicit determinable or tri-state field is tracked as a partner-facing contract change. Until then, parse summary or wait until job_status is complete and enrichment has populated owners/brands/liens.

Example response

{
  "entryId": "550e8400-e29b-41d4-a716-446655440000",
  "job_status": "complete",
  "account_data": { "...": "..." },
  "account_facts": {
    "computed_at": "2026-06-18T18:42:11.123Z",
    "source": "reconcile",
    "borrower_on_title": {
      "value": false,
      "summary": "Borrower(s) THOMAS AAA do not match any title owner (SUSAN RODRIGUEZ, KAREN ROSE ANDERSON).",
      "references": [
        {
          "field_path": "/loan/borrower/0/name",
          "value": "THOMAS AAA",
          "from": { "kind": "submitted_borrower", "ref_id": "loan.borrower[0]" }
        },
        {
          "field_path": "/vehicle/title/owners",
          "value": ["SUSAN RODRIGUEZ", "KAREN ROSE ANDERSON"],
          "from": { "kind": "reconciled_title" }
        }
      ]
    },
    "borrower_signature_only_needed_for_title": {
      "value": false,
      "summary": "Title is an AND/joint title not wholly owned by the borrower; additional owner signatures are likely required.",
      "references": [
        {
          "field_path": "/vehicle/title/is_or",
          "value": false,
          "from": { "kind": "reconciled_title" }
        },
        {
          "field_path": "/vehicle/title/owners",
          "value": ["SUSAN RODRIGUEZ", "KAREN ROSE ANDERSON"],
          "from": { "kind": "reconciled_title" }
        }
      ]
    },
    "has_problematic_brands": {
      "value": false,
      "summary": "No problematic title brands (e.g. salvage, flood, junk) were found.",
      "references": [
        {
          "field_path": "/vehicle/title/brands",
          "value": null,
          "from": { "kind": "reconciled_title" }
        }
      ]
    },
    "are_there_active_liens": {
      "value": true,
      "summary": "Title has 1 active (unreleased) lien(s): First National Bank.",
      "references": [
        {
          "field_path": "/vehicle/title/active_liens/0/lienholder/name",
          "value": "First National Bank",
          "from": { "kind": "reconciled_title", "ref_id": "lien_date:01/20/2023" }
        }
      ]
    }
  }
}

Get Title Entry

GET /title/{id} — primary surface where account_facts is returned for preview orgs

Core Ontology

Background on AccountData, Vehicle, and reconciliation inputs