Plataforma de datos Pokémon en Databricks (Terraform + Medallion) con un agente Claude ("Profesor Oak") que consume la capa Gold vía Model Context Protocol — cada ficha, comparación y matchup sale de un pipeline curado, sin que el modelo invente un solo stat. Quinto proyecto de la serie, y el primero que expone datos a un agente LLM a través de tools propias con hooks reales.
5 fuentes de PokeAPI se ingestan en paralelo hacia Bronze, se normalizan y tipan en Silver, y pasan por un Data Quality gate antes de llegar a Gold (pokemon_profile, battle_stats, type_matchups, generation_summary) — si el gate falla, el pipeline se detiene y Gold no se actualiza. Un MCP server desplegado como Databricks App expone esa capa Gold con 4 tools de solo lectura, y el agente Claude "Profesor Oak" las consume con hooks propios antes de responder en oak_app, una segunda Databricks App en Streamlit con tema Día/Noche.
pokemon_card_summary devuelve null y el agente lo reporta tal cual, nunca estima un valor plausible.type/generation — nunca texto libre.PreToolUse valida el Pokémon y la generación contra Gold antes de ejecutar la tool; PostToolUse detecta isError: true para que el agente reporte el fallo en vez de tratarlo como dato válido.oak_app) tras un 401 intermitente en la propagación de permisos de un service principal M2M — resuelto con auth app-to-app nativa en vez de M2M externo.| Pregunta típica de entrevista | Dónde está la respuesta |
|---|---|
| ¿Cómo evitás que el LLM invente datos? | reglas/01-datos-medallion.md — cálculos y matchups resueltos en Gold, nunca en el prompt |
| ¿Cómo separás personalidad de reglas operativas en un system prompt? | reglas/03-agente-mcp.md — IDENTITY vs. RULES, nunca en el mismo párrafo |
| ¿Cómo forzás el uso de una tool específica? | tool_choice forzado en compare_pokemon — reglas/03-agente-mcp.md |
| ¿Cómo bloqueás un input inválido antes de que llegue a la tool? | Hook PreToolUse valida Pokémon/generación contra Gold — reglas/03-agente-mcp.md |
| ¿Cómo manejás un fallo de tool en runtime? | Hook PostToolUse detecta isError: true — reglas/03-agente-mcp.md |
| ¿Por qué declarar la infra desde el día 1? | reglas/02-infra-terraform.md — storage/catálogo primero, jobs después, App al final |