feat: AR-House initial commit

This commit is contained in:
2026-07-03 12:24:58 -04:00
commit 047c05287a
216 changed files with 127552 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
"""Data fetchers para AR-House.
Obtiene datos reales de fuentes oficiales ANTES de pasar el deal a los agentes Ollama.
Asi los agentes razonan sobre datos verificados (FEMA, HUD, NOAA, Census ACS) en vez de inventar.
Uso principal:
from data_fetchers.runner import fetch_all
data = fetch_all(deal, status_cb=...)
# data = {"geocode": {...}, "flood": {...}, "fmr": {...},
# "hurricanes": [...], "neighborhood": {...}, "fetch_errors": [...]}
Fail-soft: si algun fetcher falla, devuelve dict vacio en su campo y agrega a fetch_errors.
El pipeline NO se aborta.
Compliance: la clasificacion de vecindarios usa SOLO indicadores economicos objetivos
(income, owner-occupancy, education, vacancy, crime, days-on-market). NUNCA demografia
racial. Esto cumple con Fair Housing Act federal.
"""
# Cargar .env ANTES de los imports — buscando desde este archivo upwards.
# Asi los fetchers (Census, HUD, FBI) encuentran las API keys aunque el caller
# este corriendo desde otro CWD.
import os
from pathlib import Path
from dotenv import load_dotenv
_here = Path(__file__).resolve().parent # .../data_fetchers/
for _parent in [_here.parent] + list(_here.parents):
_candidate = _parent / ".env"
if _candidate.exists():
load_dotenv(_candidate)
break
from .runner import fetch_all
from .price_validator import validate_price
__all__ = ["fetch_all", "validate_price"]