Denodo Flick — Herramienta de Toma de Decisiones con Denodo AI SDK
HackUDC 2026 — Reto Denodo
¿Qué es?
Denodo Flick es una herramienta analítica de toma de decisiones que utiliza el Denodo AI SDK para investigar datos de forma autónoma y ofrecer recomendaciones fundamentadas en datos reales.
No es un chatbot conversacional — es una herramienta estructurada que implementa un proceso de razonamiento en dos fases obligatorias usando los endpoints del AI SDK.
Arquitectura
┌─────────────────────────────────────────────┐
│ Denodo Flick (Frontend) │
│ HTML/CSS/JS — Puerto 5000 │
└──────────────────┬──────────────────────────┘
│
┌──────────────────▼──────────────────────────┐
│ Denodo Flick API (FastAPI) │
│ Motor de decisiones 2 fases │
│ ┌───────────────────────────────────────┐ │
│ │ Fase 1 → descubre estructura │ │
│ │ Fase 1 contexto → inyecta en Fase 2 │ │
│ │ Fase 2 → consultas informadas │ │
│ │ Fase 3 → síntesis y recomendación │ │
│ └───────────────────────────────────────┘ │
└──────────────────┬──────────────────────────┘
│
┌──────────────────▼──────────────────────────┐
│ Denodo AI SDK (8008) │
│ /answerMetadataQuestion │ /answerDataQ. │
│ /getMetadata │ /health │
└──────────────────┬──────────────────────────┘
│
┌──────────────────▼──────────────────────────┐
│ Denodo Platform (Design Studio/DC) │
│ Data Marketplace │
└─────────────────────────────────────────────┘
Flujo de decisión (2 fases obligatorias + síntesis)
Fase 1 — Análisis de metadatos (/answerMetadataQuestion)
El sistema consulta al Data Marketplace para descubrir qué tablas, columnas y relaciones existen. Se adapta dinámicamente al dataset sin conocer los nombres de antemano.
Fase 2 — Ejecución de consultas informadas (/answerDataQuestion)
Con la estructura descubierta en la Fase 1, el sistema inyecta el contexto de metadatos en cada consulta de datos. De este modo, las consultas VQL se generan usando los nombres reales de tablas y columnas descubiertos, no asumidos. Esto garantiza que la Fase 2 está basada en los hallazgos de la Fase 1 como exige el reto.
Ejemplo del flujo:
- Fase 1 descubre: "La tabla
admin.moviescontiene columnas: title, budget, revenue, genre, vote_average" - Fase 2 recibe cada pregunta precedida por: "CONTEXTO — Estructura descubierta: [info de Fase 1]. Usa EXCLUSIVAMENTE las tablas y columnas reales. Pregunta: ¿Cuáles son los 5 géneros con mejor ROI?"
- El AI SDK genera la consulta VQL usando las columnas reales descubiertas.
Fase 3 — Recomendación final
Combina todos los hallazgos para generar una decisión concreta con:
- Recomendación específica
- Datos que la justifican (cifras reales)
- Riesgos a considerar
- Plan de acción
Adaptación dinámica a cualquier dataset
Denodo FLick está diseñado para funcionar con cualquier dataset cargado en Denodo, no solo con un conjunto de datos específico:
- Descubrimiento de vistas dinámico: El selector de vistas en la interfaz permite escribir cualquier nombre de vista (
database.tabla) y tiene un botón de descubrimiento automático (⚡) que consulta al AI SDK para listar las vistas disponibles en el Data Marketplace. - Fase 1 explora sin hardcodeo: Las preguntas de metadatos descubren la estructura del dataset sea cual sea.
- Fase 2 se adapta: Las consultas se enriquecen con el contexto real descubierto, lo que permite que funcionen con tablas y columnas que no se conocían de antemano.
- Escenario personalizado: El modo "custom" permite definir cualquier decisión y el sistema genera automáticamente las preguntas de exploración y datos.
Escenarios de decisión incluidos
| Escenario | Descripción |
|---|---|
| 🎬 Producción | ¿Qué tipo de película debería producir una productora? |
| 💰 Inversión | ¿En qué tipo de películas conviene invertir? |
| 🌍 Distribución | ¿En qué mercado/idioma distribuir una película? |
| 🔍 Personalizado | Define tu propio escenario de decisión |
Cada escenario incluye parámetros configurables (género, presupuesto, año, etc.) que refinan las consultas de datos.
Requisitos previos
Docker corriendo con los contenedores de Denodo:
cd ~/informatica/Denodo_Enviroment docker compose up -dDataset cargado en Denodo Design Studio
Data Marketplace sincronizado con las vistas creadas
Python 3.11+
Instalación y ejecución
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar la aplicación
python run.py
Abrir http://localhost:5000 en el navegador.
Tests
El proyecto incluye una suite de tests unitarios y de integración con 61 tests que cubren:
- Motor de decisiones (
test_decision_engine.py): Lógica de 2 fases, inyección de contexto Fase 1→2, generación dinámica de preguntas, manejo de errores. - Cliente Denodo (
test_denodo_client.py): Comunicación con endpoints del AI SDK, limpieza de disclaimers, parsing de errores. - API REST (
test_api.py): Todos los endpoints HTTP, incluyendo el descubrimiento dinámico de vistas.
# Ejecutar todos los tests
python -m pytest tests/ -v
# Ejecutar solo tests del motor de decisiones
python -m pytest tests/test_decision_engine.py -v
Endpoints de la API
| Método | Ruta | Descripción |
|---|---|---|
| GET | / |
Interfaz web principal |
| GET | /api/health |
Estado de la conexión con Denodo AI SDK |
| GET | /api/scenarios |
Lista de escenarios disponibles |
| GET | /api/scenarios/{key} |
Detalle de un escenario (preguntas, parámetros) |
| POST | /api/decide |
Ejecuta pipeline completo de decisión |
| POST | /api/decide-stream |
Pipeline con streaming SSE de progreso |
| POST | /api/sync-metadata |
Sincroniza metadatos del Data Marketplace |
| GET | /api/discover-views |
Descubre dinámicamente las vistas disponibles |
| POST | /api/ask |
Pregunta libre a los endpoints del SDK |
Estructura del proyecto
Denodo-Flick/
├── app/
│ ├── __init__.py
│ ├── main.py # API FastAPI + endpoints REST
│ ├── denodo_client.py # Cliente Denodo AI SDK (HTTP)
│ ├── decision_engine.py # Motor de decisiones (2 fases + síntesis)
│ ├── static/
│ │ ├── style.css # Estilos (light/dark mode)
│ │ └── app.js # Lógica frontend + descubrimiento dinámico
│ └── templates/
│ └── index.html # Página principal
├── tests/
│ ├── __init__.py
│ ├── test_decision_engine.py # Tests del motor de decisiones
│ ├── test_denodo_client.py # Tests del cliente SDK
│ └── test_api.py # Tests de integración API
├── run.py # Punto de entrada
├── requirements.txt # Dependencias Python
├── .env # Configuración (opcional)
└── README.md
Tecnologías
- Backend: Python 3.11+, FastAPI, httpx (async)
- Frontend: HTML5, CSS3, JavaScript vanilla
- Integración: Denodo AI SDK (endpoints REST con HTTP Basic Auth)
- LLM: Google AI Studio (gemma-3-27b-it / gemini)
- Datos: Denodo Platform (Design Studio + Data Marketplace)
- Tests: pytest, pytest-asyncio
Log in or sign up for Devpost to join the conversation.