How we build every score, with no black box.
This page documents the sources, transformations and weights that produce the Atalaya Score. If an investment decision rests on a number, that number must be auditable. Here is the entire model.
Model · heuristic-v2026.04.23 · vision-v1
Sources
Four official sources, ingested directly.
We do not resell listings. Each asset is ingested from the original source, normalized to a single schema, and exposed with per-asset traceability. No data without provenance.
Solvia
REST API · POST
Ex-Banco Sabadell inventory managed by Cerberus. Hourly scrape, ~8,000 assets.
Aliseda
REST API · GET
Banco Santander + Blackstone. Provides cadastral reference, coordinates and possession state when available.
Altamira
REST API · POST
doValue (multi-bank). Out-of-court auctions and properties with publishedAt / lastPriceUpdate enrichment.
BOE
HTML scrape + LLM
Judicial auctions from the Spanish Official Gazette. Legal text parsed with LLM → procedural phase, creditor, deposit, vulnerable occupant.
0–100 Score
Five components, fixed weights, total 100.
Each asset gets an integer score from 0 to 100. Component weights sum to exactly 100; no hidden multipliers or boosts. An asset that doesn't max out a component literally loses those points.
| Component | Weight | What it measures |
|---|---|---|
| Δ vs zone | Difference between asset €/m² and the median €/m² of its zone (postal→municipal cascade). Penalizes overpriced assets even with a high published discount. | |
| Physical condition | Visual analysis of listing photos by Haiku model. States: optimal, habitable, refurbishable, ruin. Pending_vision if no photo processed (placeholder 14/25). | |
| Possession | Free / occupied / surrendered / unclear. Source signals + BOE parsing + cross-referenced cadastral data. | |
| Zone liquidity | Market activity in the asset's zone: new listings/30d, turnover, demand. High/medium/low zones. | |
| Legal charges | Live mortgages, garnishments, marginal annotations. Three layers (A/B/C) with decreasing weight. | |
| Total | 100 | Fixed sum. No boosts, no multipliers. |
Score tiers
90–100
Exceptional
75–89
Excellent
60–74
Good
40–59
Average
20–39
Below avg
0–19
Poor
Zonal cascade
Level-by-level resolution, explicit fallback.
The zone price used for Δ-zone is resolved cascadingly. Each level is attempted only if the previous one lacks sufficient sample (default 20 transactions). The resolved level is recorded in zoneRefUsed for later audit.
- 01
01 · Postcode
Median €/m² for the exact postcode. Most precise but requires sufficient sample. Source: Atalaya internal dataset.
- 02
02 · Neighborhood
When postcode lacks sample. For large cities, the neighborhood captures more variance than the municipality.
- 03
03 · Municipality
Median €/m² for the municipality from real transactions (not listings).
- 04
04 · Province
Last level of the internal dataset when the municipality lacks sample.
- 05
05 · MITMA
External official source: municipal indexes from Spain's Ministry of Transport. Independent from bank pricing — breaks the bank-vs-bank bias. Final fallback.
BOE legal parsing
Raw judicial text into structured fields.
Every BOE auction includes dense legal text. Atalaya extracts the key fields an investor would review manually using a proprietary LLM pipeline: debtor NIF, possession status, registered liens, opening bid, closing date. Versioned schema, graceful fallback if the model fails.
Mortgage foreclosure · insolvency · monetary execution · administrative. Defines procedural risk and timelines.
Bank · servicer · administration · individual. Hints at process profile and willingness to negotiate.
Required deposit amount to bid in the auction and associated deadlines.
Flag for protected occupancy (family with minors, dependent person). Material regulatory risk.
Computer vision
Physical condition inferred from listing photos.
For assets with processed photos, a Haiku subagent evaluates: kitchen, bathrooms, paint, floors, exterior. Structured output with quality score, observations and an alerts flag. If no photo is available or processing has not yet run, the asset is marked pending_vision with a 14/25 placeholder physical score — visible and traceable, never silenced.
Versioning
Per-asset traceability, no silent rewrites.
Each score carries the promptVersion of the model that generated it. When the model changes, prior scores are not silently rewritten: history is preserved and the new computation is tagged with the new version. History is auditable from each asset's detail page.