§ i — The Asymmetry

The information moat. Not the compute moat.

A frontier cloud model reasoning about a Marbella property has zero access to the agency's listing histories, viewer-aggregate patterns, comparable-sale deltas, and authored neighbourhood context. The local Reducer has all of it.

This is the version of the claim that survives sceptical engineering scrutiny. "A smaller model wins" is a weak claim. "A smaller model with full context beats a bigger model with no context" is the claim. The corollary: a Mac Mini with all of an agency's lawfully-held context will out-answer Claude Opus 5 on questions about that agency's market — because Claude Opus 5 cannot see the data.

General intelligence is commoditised at the API level. The portals own flat data — price, beds, baths, postcode. The only remaining moat is hyper-local context: which streets flood, which schools have waitlists, which sub-areas turned over in Q1 and at what discount to asking. Today that context is wasted.

The corollary
The asymmetry that matters isn't compute — it's information. General intelligence is cheap. Situated knowledge is scarce.

§ ii — The Real Constraint

CasaSol does not scrape. It witnesses.

Most property data is the same property data. The villa on Idealista is the villa on the agency's own site is the villa in three aggregators' feeds — the same copy, re-scraped, often wrong, sometimes for a listing that sold months ago. Volume was never the problem. Trust is.

Each listing enters as a photograph, a GPS coordinate, and a timestamp — that triple is the provenance. The database does not hold "a listing found online." It holds "an offer observed to exist — here, then." The machine extracts the facts; the image stays as proof; the GPS and timestamp make the record auditable.

That combination cannot be reconstructed by a competitor with a scraper, because it was never on the wire. The portals see a listing when an agency uploads it. CasaSol sees it when the sign goes up on the wall — days or weeks earlier, and sometimes for offers that never reach a portal at all.

CAPTURE UNIT
  photo + GPS + timestamp [+ optional voice note]

↓  (Shortcuts / Tailscale / iCloud drop — device choice)

INBOX   seed/field/inbox/   (inside perimeter, never egress)

↓  vision pass — Gemma 4 via Ollama

EXTRACTED
  sign_type:      se_vende | se_alquila | obra_nueva | agency_board
  contact_raw:    phone / agency name as printed
  building_state: free text (crane up, façade done, occupied)

↓  merge GPS → sub_area (offline reverse-geocode table, no API)

OUTPUT   enriched .md  →  load_db.py  →  SQLite + ChromaDB

§ iii — The Engine

Three layers. One physical boundary.

CasaSol is the architect of the boundary between what the agency lawfully holds internally and what the cloud is allowed to see. The boundary is enforced by hardware and filesystem permissions — not by prompt instructions.

Layer 1 — Edge
Router
gemma4:e4b · lightweight classifier
Classifies incoming requests and emits a discriminated-union routing plan against ADR-001 schema. Dispatches to one of three MCP tools. Does not touch private corpus.
Layer 2 — Primary inference
Reducer
gemma4:26b · 131K context · on-device
Enriches raw listing text into 15 structured fields. Runs a second pass for GDPR-sanitized public output — redaction schema enforced in code, not prompt. agent_intel.json (private) and public_listings.json (MCP-readable) are the two outputs. A misconfigured prompt cannot leak the private layer because the private layer is not in the MCP process's filesystem view.
Layer 3 — Boundary
MCP Server
Model Context Protocol · three tools
Exposes search_properties, get_property, market_summary to Claude Desktop. Reads only from the public output directory. The filesystem boundary is OS-enforced. Live and tested since 2026-03-29.

§ iv — Hardware

Two machines. One perimeter.

All inference runs on-device. No cloud API calls. No data leaves the physical hardware.

Primary host
Mac Mini M4 Pro
14-core CPU · 20-core GPU
64 GB unified memory
Client machine
MacBook Pro M4 Max
Report generation in client meetings
Tailscale tunnel to Mini
Inference runtime
Ollama — system daemon
KEEP_ALIVE=-1 · Q8 KV cache
Flash attention off
Primary model
gemma4:26b
131K token context
Apache 2.0
Router model
gemma4:e4b
Edge classifier
Apache 2.0
Corpus
SQLite + ChromaDB
70 enriched listings
3 source agencies
Connectivity
Tailscale (100.100.251.84)
No open inbound ports
No public cloud egress
Storage
FileVault full-disk encryption
No remote backup
No cloud sync

§ v — Open Stack

Every component is open-weight or open-source.

No proprietary inference. No vendor lock-in. Every layer is auditable and replaceable.

ComponentRoleLicense
gemma4:26bReducer — enrichment + redactionApache 2.0
gemma4:e4bRouter — edge classifierApache 2.0
OllamaInference runtime + model serverMIT
SQLiteStructured listing storePublic domain
ChromaDBVector store for semantic searchApache 2.0
mlx-whisperAudio transcription (field capture)MIT
MCP (Model Context Protocol)Claude Desktop ↔ local server bridgeOpen spec
CADA Article 41 alignment
The proposed Cloud and AI Development Act mandates that public bodies favour open-source and open-weight solutions over proprietary ones. Every component CasaSol runs already qualifies. A cloud AI competitor — Azure AI, AWS Bedrock, Google Vertex AI — fails the preference test by definition.

§ vi — Regulatory

CADA — beyond sovereign cloud. Nothing to certify.

The Cloud and AI Development Act (proposed June 2026) defines four assurance levels for sovereign cloud computing services. CasaSol delivers no cloud computing service. There is nothing to certify — because there is nothing to regulate.

CADA's highest tier (Level 4) requires zero third-country control — a standard AWS, Azure, and Google cannot meet while subject to US law. OVHcloud and Hetzner reach Level 2 at best. CasaSol is structurally outside the entire framework: on-premise inference, no remote access model, no network traversal to audit.

The answer for any agency asking about compliance: "CADA certifies cloud services. CasaSol has no cloud service. Your data never leaves your hardware."

Proof of concept — 11 June 2026
When the US government issued an export control directive suspending frontier model access for all foreign nationals, every agency in Spain routing client data through Anthropic, AWS Bedrock, or Google Cloud lost access without warning. CasaSol's architecture was unaffected. The corpus did not move. The enrichment pipeline did not stop. The MCP server continued to respond. We Didn't Notice — localfirstai.eu

§ vii — GDPR Pack

Eight artifacts. Ready on day one.

In Marbella luxury real estate, the lawyer is in the room before the IT director. CasaSol ships with a compliance binder the agency hands to its DPO on day one — written by an EU GDPR practitioner, bilingual EN/ES.

ArtifactPurpose
Records of Processing ActivitiesPre-filled RoPA template, Article 30 aligned
Data Processing AgreementVendor ↔ controller DPA, ready to sign
Legitimate Interests AssessmentArticle 6(1)(f) basis for the Reducer layer
Privacy Notice TemplateFor agencies surfacing queries to public buyers
Data Subject Request ProcedureAccess, erasure, portability — with CLI commands
Breach Notification Procedure72-hour template aligned with AEPD requirements
Retention ScheduleDocumented schedule; raw CRM never imported
Audit Log SpecificationWhat logs exist, where, for how long — bounded to device

No personal data crosses any boundary. Article 22 (automated individual decision-making) is out of scope by construction — the output is a property report, not a decision about a natural person.