Verified Financial Intelligence Inteligencia Financiera Verificada

Council

AI-powered financial advisory built on verified data, deterministic math, and sourced knowledge — not LLM guesswork. Asesoramiento financiero con IA construido sobre datos verificados, matemáticas determinísticas y conocimiento con fuentes — no conjeturas de LLM.

↓ scroll
The ProblemEl Problema

LLMs Are Unreliable Financial AdvisorsLos LLMs Son Asesores Financieros Poco Fiables

Raw LLM ApproachLLM sin verificación

"Just Ask ChatGPT""Pregúntale a ChatGPT"

  • Tax rates from training data (often outdated)Tasas fiscales de datos de entrenamiento (a menudo desactualizados)
  • LLM arithmetic (error-prone at scale)Aritmética LLM (propensa a errores)
  • Hallucinated treaty provisionsProvisiones de tratados alucinadas
  • Different answer each time you askRespuesta diferente cada vez
  • No citations, no audit trailSin citas, sin trazabilidad
Council

Verified SystemSistema Verificado

  • Rates verified against government sources weeklyTasas verificadas contra fuentes gubernamentales semanalmente
  • Python engines with tested, deterministic mathMotores Python con matemáticas determinísticas y testeadas
  • Treaty text cited with article numbersTexto del tratado citado con número de artículo
  • Same inputs → same outputs, every timeMismas entradas → mismas salidas, siempre
  • Every fact traced to its primary sourceCada dato trazado a su fuente primaria
The JourneyEl Recorrido

From Personal Tool to Professional PlatformDe Herramienta Personal a Plataforma Profesional

Council started as a personal project to coordinate cross-border financial planning across tax, investment, immigration, and FIRE domains. It worked — but the trust layer lived inside language models. For something you'd share with a lawyer or base a relocation decision on, that wasn't enough. Council empezó como un proyecto personal para coordinar planificación financiera transfronteriza. Funcionaba — pero la capa de confianza vivía dentro de modelos de lenguaje. Para algo que compartirías con un abogado, eso no era suficiente.

V1 — The LLM EraV1 — La Era LLM
AI agents could reason about complex scenarios and produce reports. But tax math was computed inside prompts, FIRE projections were estimated, and source citations came from memory — or were hallucinated.Los agentes de IA podían razonar sobre escenarios complejos. Pero las matemáticas fiscales se calculaban en prompts, las proyecciones FIRE se estimaban, y las citas venían de memoria — o eran inventadas.
The Breaking PointEl Punto de Inflexión
When a report said "your effective tax rate is 24%," there was no way to verify whether that number came from a calculation or a confident guess. For a personal scratchpad, tolerable. For sharing with a lawyer — unacceptable.Cuando un informe decía "tu tipo impositivo efectivo es del 24%", no había forma de verificar si ese número venía de un cálculo o de una suposición. Para uso personal, tolerable. Para compartir con un abogado — inaceptable.
V2 — Trust Moves to CodeV2 — La Confianza se Mueve al Código
The core insight: separate what must be deterministic from what benefits from intelligence. Math goes to tested engines. Knowledge goes to indexed, source-cited packs. LLMs only write the final narrative — they never compute or recall facts.La idea clave: separar lo que debe ser determinístico de lo que se beneficia de inteligencia. Las matemáticas van a motores testeados. El conocimiento a paquetes indexados con fuentes. Los LLMs solo escriben la narrativa final.
V1 V2
Trust layerCapa de confianzaLLM-generatedGenerado por LLMDeterministic enginesMotores determinísticos
Indexed sourcesFuentes indexadas~1702,100+
Calculation enginesMotores de cálculo07 (tested, versionedtesteados, versionados)
Test functionsTests01,111
Source traceabilityTrazabilidadPartialParcialEvery claim to URLCada afirmación a URL
Contradiction detectionDetección de contradiccionesManualManualAutomatic flaggingAlertas automáticas
Core InnovationInnovación Central

Verified Before Every ReportVerificado Antes de Cada Informe

Before a client receives any report, Council's verification system checks every tax parameter against upstream authoritative sources. We never generate with stale data. Antes de que un cliente reciba cualquier informe, el sistema de verificación compara cada parámetro fiscal contra fuentes autoritativas. Nunca generamos con datos obsoletos.

Government PublicationsPublicaciones Gubernamentales
IRS Revenue Procedures · CA FTB · Spain BOE · SSA
↓ extracted by tax policy researchers↓ extraído por investigadores fiscales
Open-Source Tax ModelsModelos Fiscales Open-Source
PSLmodels/Tax-Calculator (NBER-backed, used by CBO)
↓ verified by automated diff (weekly + pre-report)↓ verificado por diff automático (semanal + pre-informe)
Council Calculation EnginesMotores de Cálculo de Council
7 deterministic engines · 1,111 tests · versioned JSON configs7 motores determinísticos · 1,111 tests · configs JSON versionadas
⬡ Council Verification Stamp
Report generatedInforme generado2026-02-25 09:51 PST
Parameters verifiedParámetros verificadosAll currentTodo actualizado
US Federal (2026)PSLmodels @ 1583cb5411d4
CaliforniaCA FTB 2025 Schedule X
Spain — Beckham LawLIRPF Art. 93 (Ley 28/2022)
Knowledge baseBase de conocimiento65 packs · 2,100+ sources
EnginesMotores7 engines · 1,111 tests
🔒

Trust LayerCapa de Confianza

Python engines handle all financial math. Versioned JSON configs store every parameter. 1,111 tests verify correctness. Source records trace every number to its origin.Motores Python calculan todas las matemáticas. Configs JSON almacenan cada parámetro. 1,111 tests verifican la corrección.

✍️

Craft LayerCapa Narrativa

AI writes reports with editorial judgment, narrative arc, and personalization — using only verified data from the Trust Layer. It explains; it never calculates.La IA escribe informes con juicio editorial y personalización — usando solo datos verificados. Explica; nunca calcula.

Adaptive ArchitectureArquitectura Adaptativa

Your profile drives everythingTu perfil lo dirige todo

Hover over any field to see what it activates in the system.Pasa el cursor sobre cualquier campo para ver qué activa.

profiles/demo/strategy.json
{
"relocation": {
"origin": "US/CA",
"destination": "ES/Barcelona",
"departure_date": "2026-09"
},
"tax_strategy": {
"beckham_eligible": true,
"beckham_start": "2027-01-01"
},
"portfolio": {
"concentrated_stock": "ACME",
"rsu_vesting": true
},
"goal": "FIRE"
}
Hover over any field in the profilePasa el cursor sobre cualquier campo
Ever-Growing KnowledgeConocimiento en Expansión

Primary Sources, Not Blog SummariesFuentes Primarias, No Resúmenes de Blogs

A specialist lawyer's edge isn't just knowing the rules — it's having read hundreds of binding rulings that shape how rules are actually applied. Council systematically harvests these primary sources and indexes them for retrieval. La ventaja de un abogado especialista no es solo conocer las reglas — es haber leído cientos de resoluciones vinculantes. Council cosecha sistemáticamente estas fuentes primarias.

GOV
IRS.gov
Revenue Procedures, tax brackets, FICA, AMTRevenue Procedures, tramos fiscales, FICA, AMT
GOV
Agencia Tributaria
IRPF rates, Beckham regime, IRNR rental taxTasas IRPF, régimen Beckham, IRNR alquiler
GOV
BOE
Spanish legislation, Ley de StartupsLegislación española, Ley de Startups
GOV
CA Franchise Tax Board
California brackets, SDI ratesTramos California, tasas SDI
LEGAL
DGT Consultas Vinculantes
92 binding rulings reviewed92 consultas vinculantes revisadas
LEGAL
US-Spain Tax TreatyCDI España-EEUU
Article-level analysisAnálisis artículo por artículo
NBER
PSLmodels
Machine-readable tax data, used by CBODatos fiscales legibles por máquina
OPEN
SSA
Wage base, benefits, COLABase salarial, beneficios, COLA

Automatic contradiction detection: 92 binding DGT consultations reviewed. Edge cases found. Zero contradictions to core rules. Detección automática de contradicciones: 92 consultas DGT revisadas. Casos límite encontrados. Cero contradicciones a las reglas centrales.

# knowledge/shared/spain-tax/beckham-law-canonical.md --- id: beckham-law-canonical jurisdiction: spain sub_jurisdiction: common_territory topic_tags: [beckham, impatriados, capital_gains, IRNR] applies_when: [beckham_active] depends_on: [us-spain-treaty] sources_count: 14 confidence: high last_verified: 2026-02-18 --- # Beckham Law — Canonical Rules Employment income: 24% flat (up to €600K) 47% above €600K Foreign-source capital gains: 0% ← this is the key insight Foreign dividends: 0% Spanish-source savings: 19-28% progressive ## Sources [1] LIRPF Art. 93 (Ley 28/2022 modification) [2] DGT V0721-22 — capital gains sourcing [3] DGT V1564-21 — RSU treatment under Beckham
# council/knowledge/pack_loader.py def filter_packs( profile: ClientProfile, query_context: str ) -> list[KnowledgePack]: """Return only packs relevant to this client's situation.""" all_packs = load_all_packs() relevant = [] for pack in all_packs: # Check jurisdiction match if pack.jurisdiction not in profile.jurisdictions: continue # Check applies_when conditions if not all( check_condition(cond, profile) for cond in pack.applies_when ): continue # Score by topic relevance score = semantic_score(pack.topic_tags, query_context) if score > 0.3: relevant.append((pack, score)) # Sort by score, resolve depends_on ordering return topological_sort(relevant)
# council/knowledge/contradiction_detector.py def check_contradictions( packs: list[KnowledgePack], core_rules: dict ) -> list[Contradiction]: """Flag any pack content that contradicts established rules.""" flags = [] for pack in packs: for claim in pack.extracted_claims: # Critical: check against 0% capital gains rule if claim.topic == "capital_gains_rate": if claim.value != core_rules["beckham_cg_rate"]: flags.append(Contradiction( pack_id=pack.id, claim=claim, expected=core_rules["beckham_cg_rate"], severity="CRITICAL", source=claim.source_url )) # Result: 92 consultas reviewed → 0 contradictions # 10 edge-case flags (reviewed, all consistent) return flags
Calculation EnginesMotores de Cálculo

Deterministic Math, Not LLM GuessworkMatemáticas Determinísticas, No Conjeturas

Seven specialized Python engines handle every calculation. Each independently tested, version-controlled, and verified against authoritative sources. Click to expand.Siete motores Python especializados manejan cada cálculo. Haz clic para expandir.

💰 US Tax EngineMotor Fiscal EEUU

Federal + California · 2024–2027Federal + California · 2024–2027
Federal brackets, California state tax, FICA, LTCG, AMT, NIIT. Versioned JSON configs for 2024–2027, auto-verified against IRS publications weekly via check_tax_updates.py. Trust chain: IRS Rev Proc → PSLmodels → Council configs. Tramos federales, California, FICA, LTCG, AMT, NIIT. Configs JSON versionadas 2024–2027, verificadas automáticamente contra publicaciones del IRS.

🇪🇸 Spain Tax EngineMotor Fiscal España

Beckham + IRNR + SS
Beckham Law employment rates (24%/47%), savings income scale (19-28%), foreign capital gains at 0% (the core rule), IRNR rental taxation for non-residents, Spanish Social Security contributions (régimen general). Beckham Law tasas de empleo (24%/47%), escala de ahorro (19-28%), ganancias de capital extranjeras al 0% (la regla central), IRNR alquiler, cotizaciones Seguridad Social.

🔥 FIRE Projector

Monte Carlo · 10K runsMonte Carlo · 10K simulaciones
10,000 stochastic paths using historical US return distributions. Property income offsets feed year-by-year into spending calculations. 10,000 trayectorias estocásticas con distribuciones históricas.
def _run_monte_carlo(portfolio, spending, income_offsets):
    asset_params = {
        "stocks": {"mean": 0.105, "std": 0.175},
        "bonds":  {"mean": 0.05,  "std": 0.07},
    }
    for _sim in range(10_000):
        balance = total_portfolio
        for year in range(1, years + 1):
            offset = income_offsets[year-1]
            balance -= max(0, spending - offset)
            for asset, weight in weights.items():
                r = np.random.normal(params["mean"], params["std"])
                balance *= (1 + r * weight)

📊 RSU Modeler

Vest optimizationOptimización de vesting
Vest schedule optimization, withholding analysis (supplemental rate 29% federal + CA + FICA = ~49% effective), sell-vs-hold scenarios under different tax regimes including Beckham Law deferral strategy. Optimización de calendario de vesting, análisis de retención (~49% efectivo), escenarios vender-vs-mantener bajo diferentes regímenes fiscales incluyendo Beckham.

🏠 Property EngineMotor Inmobiliario

30-year projectionProyección a 30 años
Multi-property modeling: rent growth, appreciation, mortgage amortization, depreciation tax shield. Tax regime transitions (Beckham → IRPF), property use transitions (rental → primary residence). Location-agnostic — all rates from config. Modelado multi-propiedad: crecimiento de alquiler, apreciación, amortización hipotecaria. Transiciones de régimen fiscal y uso de propiedad.

💱 FX Converter

EUR/USD · ECB
Live EUR/USD conversion with portfolio-level currency exposure analysis. Real-time rates from ECB data via frankfurter.app. FX risk scenarios integrated into FIRE projections. Conversión EUR/USD en tiempo real con análisis de exposición cambiaria a nivel de cartera. Escenarios de riesgo FX integrados en proyecciones FIRE.

📉 Withdrawal SimulatorSimulador de Retiros

4 strategies4 estrategias
Four withdrawal strategies compared: fixed, percentage, guardrails, and variable percentage. Historical backtesting with sequence-of-returns risk analysis. Identifies optimal strategy per spending tier. Cuatro estrategias de retiro comparadas: fija, porcentaje, guardrails y porcentaje variable. Backtesting histórico con análisis de riesgo de secuencia de retornos.
By The NumbersEn Números

System StatusEstado del Sistema

7EnginesMotores
1,111Tests
65Knowledge PacksPaquetes
2,100+Verified SourcesFuentes Verificadas
92Binding RulingsConsultas Vinculantes
89%Code CoverageCobertura de Código
📅

Weekly ChecksChequeos Semanales

Every Monday, all configs compared against upstream government data. Discrepancies trigger immediate alerts.Cada lunes, todas las configs se comparan contra datos gubernamentales. Discrepancias generan alertas inmediatas.

📋

Pre-Report GateControl Pre-Informe

Before generating any report, a freshness check runs. Stale data blocks generation — never silently passed through.Antes de generar cualquier informe, se ejecuta un chequeo de frescura. Datos obsoletos bloquean la generación.

🔔

Update CalendarCalendario de Actualizaciones

IRS publishes Oct/Nov. California follows in 2 weeks. Spain in December. Council knows and watches for each.El IRS publica Oct/Nov. California sigue en 2 semanas. España en diciembre. Council lo sabe y vigila.