On this page

Docs

A technical reference for the data points, source inputs, field names, and model logic behind the current customer dashboard.

Active market

IE-DUB

Current object

property_intelligence

Audience

Product and engineering

Design system

The visual system lives as its own collaborator reference because tokens, typography, component rhythm, and voice rules change on a different cadence than customer-facing data docs.

Data points

The first docs layer explains the exact customer-visible concepts from the map, feed, and property-detail views.

01

Asking price

The current source-listed price for the property snapshot shown in Vestcove.

02

Fair-value seed

A median-based comparable-sale starting point used to frame entry-price pressure.

03

Estimated rent

A rent midpoint and range from area context, property attributes, and listing rent evidence when present.

04

Rent comparables

A selected sample of source-backed rent comparables used when property-level matches are strong enough to underwrite against.

05

Net yield

Annual estimated rent less operating costs, divided by the asking price.

06

Risk mix

A combined view of climate, liquidity, and regulatory-risk inputs for the current market.

07

Confidence

A source-quality signal based on source coverage, evidence depth, recency, and match quality.

08

Investment thesis

A narrative underwriting summary generated from the same score, rent, comparables, energy, risk, and data-quality evidence.

09

Underwriting scenario

A base-case investor scenario showing cash required, debt service, break-even rent, and before-tax cash flow.

10

Evidence ledger

A compact ledger showing which property claims are source-backed, area-context, listing claims, assumptions, model estimates, or missing.

11

Source links

Outbound listing links grouped under one canonical Vestcove property when duplicates are detected.

Data sources

Each output should stay connected to source provenance so customers and future enterprise users can distinguish evidence depth from model output.

Listing observations

Portal or curated listing snapshots provide asking price, URL, listing status, address, floor area, bedrooms, BER claim, observation time, source media, and per-property listing history.

Dublin runtime examples come from reviewed listing observations loaded through the API.

Recent sales comparables

Recent local sales (Irish Property Price Register) supply sale date, address, postal district, price, and flags used to remove obvious non-market records from comparable sets.

The active parser handles PSRA recent-sales CSV and ZIP intake; the dashboard only shows source-backed property records.

RTB / CSO rent context

Property-level RTB rent evidence supports stronger rent estimates when enough close matches exist; CSO Statbank RIQ02 rows remain the area-context fallback by period, geography, bedroom bucket, and property type.

The explicit property evidence endpoint now returns the selected rent comparable sample beside the rent estimate.

BER energy context

BER-style energy evidence can come from listing claims, certificate identifiers, or later exact property-level matches.

Listing BER claims remain lower-context energy evidence until identifier-led BER intake is available.

Regulatory assumptions

Irish rent rules, mortgage-measure guidance, and Revenue rental-income guidance provide source-dated assumptions for scenario and legality context.

The current alpha uses these as explainable assumptions, not legal, tax, or lending advice.

Field reference

These field names give the UI, local datasets, and future API-shaped documentation a shared vocabulary.

askingPriceEurnumberListing observationCurrent listing asking price in euros.
fairValueEurnumberRecent sales comparable setMedian clean comparable-sale seed used as the value anchor.
rentEstimate.estimatedMonthlyRentEurnumberRTB / CSO rent contextEstimated monthly rent midpoint from area context, property attributes, and listing rent evidence when present.
rentEstimate.estimatedMonthlyRentRangeLowEur / HighEurnumber pairRent estimate modelCustomer-facing rent estimate range derived from the midpoint confidence.
rentEstimate.propertyComparableCountnumberRTB rent evidenceNumber of usable property-level rent comparables supporting the estimate; production readiness expects at least two.
rentComparablesarrayRTB rent evidenceSelected property-level rent comparable rows, including rent, observed date, source id, match confidence, and known attributes.
score.netYieldPctnumberScore modelModeled net yield after operating-cost assumptions.
score.confidence0-1 numberData quality modelCombined confidence from coverage, recency, and match quality.
riskInputsobjectMarket risk adapterRegulatory, climate, and liquidity risk inputs used when rebuilding the investment score.
sourceConflictsarrayListing enrichmentMaterial listing-source disagreements that need review before treating current listing facts as settled.
investmentThesisobjectThesis builderCustomer-readable headline, summary, strengths, cautions, and source ids.
underwritingScenario.output.monthlyCashFlowBeforeTaxEurnumberScenario modelMonthly before-tax cash flow after vacancy, operating costs, and debt service.
regulatoryContextobjectMarket regulatory adapterMarket-specific rent legality and reset-to-market context for the current alpha view.
evidenceLedger.itemsarrayEvidence ledger builderCustomer-readable evidence layers with status, confidence, source ids, and summary.

Calculations

The current algorithms stay explainable. Outputs are hypotheses with provenance, not black-box conclusions.

Fair-value seed

fairValueEur = median(cleanComparableSales.map((sale) => sale.priceEur))
  • Exclude rows marked non-market or VAT-exclusive before the median step.
  • Carry the selected comparable low/high sale-price range beside the median so the raw comp spread stays visible.
  • Treat the output as a comparable-sale seed, not a formal valuation.

Net yield

netYieldPct = ((estimatedMonthlyRentEur * 12 - annualOperatingCostsEur) / askingPriceEur) * 100
  • Operating costs are seed assumptions in the current dashboard.
  • Market-specific costs should replace static assumptions before alpha.

Investment thesis

investmentThesis = f(score, saleComparableSet, rentEstimate, energyContext, risk, dataQuality)
  • Strengths and cautions are explanatory signals derived from existing evidence.
  • The thesis should never become a buy/sell instruction.

Scenario cash flow

monthlyCashFlowBeforeTaxEur = (effectiveAnnualRent - annualOperatingCostsEur - annualDebtServiceEur) / 12
  • The current output is before tax and uses default financing assumptions.
  • Scenario defaults are market-specific and should be source-dated.

Object shape

This page is not a public API contract yet, but it names the durable object shape that higher-tier docs or integrations can build around later.

Object

property_intelligence

JSON
{
  "id": "daft-ardmore-drive-artane",
  "market": "IE-DUB",
  "askingPriceEur": 490000,
  "fairValueEur": 465000,
  "rentEstimate": {
    "estimatedMonthlyRentEur": 2710,
    "estimatedMonthlyRentRangeLowEur": 2310,
    "estimatedMonthlyRentRangeHighEur": 3110,
    "evidenceLevel": "property_comparable",
    "confidence": 0.82,
    "propertyComparableCount": 2
  },
  "rentComparables": [
    {
      "addressLabel": "Nearby Dublin rental",
      "monthlyRentEur": 2780,
      "observedAt": "2025-10-01",
      "sourceDatasetId": "ie:rtb:rent-register",
      "matchConfidence": 0.84
    }
  ],
  "score": {
    "score": 58,
    "verdict": "watch",
    "netYieldPct": 5.09
  },
  "riskInputs": {
    "regulatoryRisk": 36,
    "climateRisk": 19,
    "liquidityRisk": 22
  },
  "sourceConflicts": [],
  "investmentThesis": {
    "headline": "Watch: income-led property with pricing caution",
    "primarySignal": "yield"
  },
  "underwritingScenario": {
    "output": {
      "monthlyCashFlowBeforeTaxEur": -37,
      "cashRequiredAtPurchaseEur": 160340
    }
  },
  "regulatoryContext": {
    "rentControlStatus": "rent_pressure_zone",
    "rentLegalPathway": {
      "status": "tenancy_history_required",
      "label": "Tenancy history required"
    },
    "lawfulRentConfidence": 0.46,
    "regimeConfidence": 0.82
  },
  "evidenceLedger": {
    "summary": "4 of 5 source-backed signals reach the strong-evidence threshold."
  }
}
Market datasetplanned
Property intelligenceplanned
Evidence contextplanned
Source readinessplanned
Listing observationplanned
Sale comparable setplanned
Rent contextplanned
Rent comparable sampleplanned
Investment thesisplanned
Underwriting scenarioplanned
Regulatory contextplanned
Evidence ledgerplanned

Model boundaries

The development docs should be useful without overstating what the current MVP can prove.

  • Fair-value output is an explainable seed, not a formal valuation.
  • Rent estimates should prefer validated property-level comparables when available and fall back to clearly labeled area context when they are not.
  • Scenario outputs are before-tax planning estimates, not legal, tax, lending, or investment advice.
  • Rent legality requires property-specific tenancy history before lawful-rent confidence can become high.
  • Listing media should use vetted source image URLs or a permissioned cache when available; missing source media should render as unavailable rather than as a fake property image.
  • Duplicate portal listings should collapse into one canonical Vestcove property when evidence agrees.
  • Ireland / Dublin is the first deep market; later EEA markets should reuse the same underwriting object and documentation shape.
  • Assistant-style features should explain sourced evidence rather than replace the underwriting model.