Propuesta técnica · Universidad Tecnológica de Panamá

Gestión de incidencias con un agente de IA real

CUSTOUTP evolucionó de una maqueta a un sistema funcional de extremo a extremo: backend real en Supabase con seguridad por fila, y Aura, un asistente que consulta, analiza y actúa sobre las incidencias —con confirmación— usando herramientas propias sobre la base de datos. Esta es la propuesta, contada a detalle técnico.

6
Roles funcionales
23
Herramientas de Aura
40
Tablas en Supabase
3
Niveles de IA
El proyecto en 30 segundos

Míralo en acción

Un recorrido cinemático por CUSTOUTP y por Aura: del problema cotidiano a la resolución asistida por IA, con la misma identidad morada de la app.

Compuesto en Remotion · arte generativo por Higgsfield AI · 1080p, sin audio

El sistema en una vista

Una plataforma para el ciclo de vida completo de cada incidencia

CUSTOUTP cubre el recorrido entero: reportar, clasificar, asignar, atender, comprar/contratar cuando hace falta, y cerrar con evidencia. Cada pantalla consume datos reales con seguridad por rol, y Aura acompaña en cada etapa.

Flujo de extremo a extremo

Incidencia → triage por prioridad y categoría → asignación a técnico → órdenes de trabajo → compras o contratación externa → recepción con acta → cierre. Todo con historial de estados auditable.

Seguridad por fila (RLS)

Postgres con Row Level Security: cada usuario solo ve y modifica lo que su rol permite. La identidad la impone el servidor; ni la UI ni el agente pueden saltársela.

Aura, el agente protagonista

Un agente de IA real (API de Anthropic) que lee, analiza, hace triage, redacta y —con tu confirmación— ejecuta acciones sobre la base de datos mediante herramientas propias.

Next.js 15 · App RouterSupabase · PostgresRLS + AuthSupabase StorageRealtimeAnthropic · ClaudeTypeScriptTailwindframer-motionrecharts
Actualización de la propuesta

Qué cambió respecto a la app original de la documentación

La propuesta inicial describía la experiencia y el contrato de datos. Esta iteración la vuelve real y funcional: se construyó el backend, la seguridad, el almacenamiento, el agente y toda la inteligencia operativa. Estos son los saltos principales.

Maqueta con datos simulados (mock) en pantalla.

Backend real en Supabase: 38 tablas, datos sembrados con varios meses de historia.

Sin autenticación ni control de acceso.

Auth real + Row Level Security por rol; 6 cuentas demo listas.

Adjuntos figurados.

Supabase Storage real con URLs firmadas y políticas por bucket.

Sin asistencia inteligente.

Aura: agente de IA con 23 herramientas sobre la BD, con confirmación de escrituras.

Alertas y avisos estáticos.

Motor de alertas inteligentes a puro código (reglas R1–R8) que abren chats con Aura.

Sin resúmenes operativos.

Briefings diarios por rol, generados en código, ampliables con Aura.

Un solo modo de IA (o ninguno).

Selector de 3 niveles (Nova/Clara/Chispa → Opus/Sonnet/Haiku).

Rendimiento sin optimizar.

Streaming con Suspense, code-splitting, deduplicación de queries y carga diferida.

Cómo está estructurada

Una app por rol, 16 pantallas, un solo modelo de datos

El acceso enruta a cada persona a su panel según su perfil funcional. Todas las vistas comparten el mismo backend y respetan RLS; el agente vive en todas ellas como una superficie flotante.

Gestión local

gestion_local

Reporta y da seguimiento a las incidencias de su unidad.

Técnico ejecutor

tecnico

Atiende órdenes de trabajo y registra evidencias.

Supervisor

supervisor

Asigna, escala y vigila SLA y carga del equipo.

Compras

compras

Solicitudes, cotizaciones y contrataciones externas.

Dirección

direccion

Indicadores globales, costos ejecutivos y reportes.

Administración

admin

Usuarios, roles, catálogos y configuración del sistema.

App Router + Server Components

Datos resueltos en el servidor (respetando cookies/RLS), islas cliente solo donde hay interacción. Menos JavaScript, primer pintado más rápido.

16 pantallas por dominio

Dashboard, incidencias, órdenes, compras, contrataciones, supervisión, reportes, notificaciones, perfil y administración — cada una con su capa de datos dedicada.

Agente omnipresente

Aura se monta una vez en el layout y está disponible en todas las pantallas, con contexto del perfil ya resuelto en el servidor.

El dato, de verdad

La base de datos vive en Supabase

Un Postgres gestionado con Auth, Row Level Security, Storage y Realtime. El esquema se aplica por migraciones versionadas y los embeds usan constraints con nombres reales (fk_*). En total, 40 tablas organizadas por dominio.

Postgres gestionado

Migraciones 0001–0004; índices únicos en claves naturales para upserts idempotentes.

RLS + Auth

Trigger que vincula auth.users con la fila de usuario; políticas por rol y por entidad.

Storage

Buckets privados para evidencias, documentos de contratación y actas; URLs firmadas.

Realtime

Base lista para suscripciones en vivo a cambios de estado y notificaciones.

Dominios del esquema

Incidencias

incidencias, historial_estados, asignaciones, comentarios, evidencias.

Órdenes de trabajo

ordenes_trabajo, estados_orden, técnicos asignados.

Compras y contratación

solicitudes_compra, cotizaciones, contrataciones_externas, proveedores, actas.

Usuarios y roles

usuarios, entidades, roles, perfiles_funcionales, usuarios_roles.

Catálogos

estados, prioridades (con SLA), categorías, ubicaciones.

Alertas y briefings

alertas_descartes, briefings_diarios_vistos, notificaciones.

Explorador del esquema · estructura completa

Las 40 tablas reales agrupadas por dominio. Filtra, busca y expande cada tabla para ver sus columnas, tipos, claves y relaciones (FK). Los conteos son los datos sembrados actuales en vivo.

40
Tablas
106
Relaciones (FK)
825
Filas sembradas

Usuarios y roles

· 5 tablas

Catálogos y estructura

· 12 tablas

Incidencias

· 7 tablas
idbigint
codigo_incidenciavarcharUNIQUE
titulovarchar
descripciontext
categoria_idbigint→ categorias_incidencia
prioridad_idbigint→ prioridades
estado_idbigint→ estados_incidencia
ubicacion_idbigint→ ubicaciones
reportado_porbigint→ usuarios
entidad_actual_idbigint→ entidades
linea_actual_idbigint→ lineas_atencion
supervisor_actual_idbigint→ usuarios
tecnico_actual_idbigint→ usuarios
requiere_compraboolnot null
requiere_contratacionboolnot null
proveedor_actual_idbigint→ proveedores_externos
tecnico_externo_actual_idbigint→ tecnicos_externos
fecha_creaciontimestamptz
fecha_asignaciontimestamptz
fecha_inicio_atenciontimestamptz
fecha_resolucion_tecnicatimestamptz
fecha_cierretimestamptz
fue_escaladaboolnot null
nivel_escalamientobigint
solucion_resumentext
observaciones_generalestext
+ columnas estándar created_at, updated_at (timestamptz)

Órdenes de trabajo

· 1 tablas

Compras y contrataciones

· 9 tablas

Transversales

· 4 tablas

IA · Alertas · Briefings

· 2 tablas
El agente de IA

Aura: lee, analiza y actúa —con tu confirmación

Aura corre contra la API de Anthropic con un bucle manual de herramientas sobre la base de datos. Las lecturas se ejecutan al momento; las escrituras nunca se ejecutan solas: se proponen y requieren tu confirmación. Todo respeta tu identidad y tus permisos (RLS).

Bucle de herramientas con streaming

El modelo razona, llama herramientas y la respuesta llega token a token por NDJSON. Hasta 8 iteraciones por turno, con chips de “Consultando…”.

Confirmar antes de escribir

Cualquier acción que modifique datos se muestra como tarjeta de confirmación; solo al aprobar se ejecuta vía un endpoint dedicado. Cero sorpresas.

Identidad en el servidor

La clave de IA vive solo en el servidor; el usuario_id lo pone el backend, no el modelo. Las queries usan el cliente con la sesión → RLS.

Tres niveles, una misma Aura

Aura Chispa

claude-haiku-4-5

Consultas rápidas e instantáneas.

Aura Clara

claude-sonnet-4-6

Equilibrio: el día a día y las alertas. Por defecto.

Aura Nova

claude-opus-4-8

Razonamiento máximo para decisiones complejas.

El usuario elige el nivel desde el chat (se guarda su preferencia). Las alertas y briefings abren en Aura Clara (Sonnet) por defecto. Detalle importante: Haiku no admite “thinking” adaptativo, así que su configuración se construye aparte para no fallar.

23 herramientas sobre la base de datos
buscar_incidenciaslee

Busca por texto, estado, prioridad o área.

obtener_incidencialee

Detalle completo de una incidencia + historial.

kpislee

Indicadores: abiertas, escaladas, por estado/prioridad y costos.

buscar_ordeneslee

Órdenes de trabajo por técnico o estado.

catalogoslee

Estados, prioridades, categorías y ubicaciones.

analizar_cotizacioneslee

Compara cotizaciones (mín/mediana/máx). Scoring determinista.

sugerir_clasificacion_documentolee

Propone el tipo de un documento subido.

listar_documentoslee

Documentos y evidencias adjuntos.

briefing_diariolee

Briefing del día por rol (misma fuente que el código).

crear_incidenciapropone

Crea una incidencia ya clasificada.

cambiar_estado_incidenciapropone

Mueve la incidencia de estado.

asignar_tecnicopropone

Asigna o reasigna técnico.

agregar_comentariopropone

Añade un comentario público/interno.

seleccionar_cotizacionpropone

Selecciona una cotización (rechaza las hermanas).

rechazar_cotizacionpropone

Rechaza una cotización con motivo.

pedir_cotizacionpropone

Solicita una nueva cotización a un proveedor.

registrar_documentopropone

Registra metadatos de un documento subido.

validar_evidenciapropone

Aprueba o rechaza una evidencia.

triage_incidenciapropone

Asigna prioridad/categoría/línea inicial.

escalar_incidenciapropone

Escala a otra línea/entidad con motivo.

programar_ordenpropone

Programa una orden de trabajo.

aprobar_solicitud_comprapropone

Aprueba una solicitud de compra.

actualizar_estado_contratacionpropone

Avanza el estado de una contratación.

Las de lectura se ejecutan al momento; las de escritura se proponen y solo se ejecutan al confirmar.

Dónde participa Aura (y cómo)

Aura no es una ventana aislada: está cosida a la operación. Estos son los puntos donde aparece y lo que hace en cada uno.

Botón flotante (todas las pantallas)

Abre el chat con el contexto del perfil ya resuelto en el servidor.

Campana de alertas → “Indagar con Aura”

Abre Aura con el prompt de la alerta (en nivel Clara por defecto) para diagnosticar y accionar.

Briefing del dashboard → “Ampliar/Atender con Aura”

Profundiza el resumen del día y propone próximos pasos.

Detalle de incidencia → “Analizar con Aura”

Diagnostica, hace triage, escala o genera la orden —con confirmación.

Asignación → “Sugerir técnico con Aura”

Recomienda a quién asignar según carga y especialidad.

Compras / Contrataciones → “Recomendar con Aura”

Analiza cotizaciones y propone la selección (rechaza hermanas).

Subida de documentos → “Pedir ayuda a Aura”

Sugiere el tipo del documento y lo registra.

Reportes / Notificaciones / Perfil / Admin

Interpreta indicadores, trió avisos y responde consultas en lenguaje natural.

Procesos inteligentes

El ciclo de vida de una incidencia, y los ojos que lo vigilan

Cada incidencia recorre un camino claro de 8 etapas sobre 5 estados reales. En paralelo, un motor de alertas a puro código (8 reglas deterministas) vigila los puntos críticos y, cuando algo se sale de cauce, abre un chat con Aura para indagar y actuar.

Ciclo de vida — recorre las etapas

Toca cada etapa para ver qué ocurre, qué tablas de la base de datos se tocan, dónde participa Aura y qué alertas vigilan ese punto.

Estados:PendienteEn procesoEscaladaResueltaCerradafinal
1

Reporte

→ Pendiente

Cualquier miembro de la UTP crea la incidencia (qué pasó, dónde). Nace en estado Pendiente con su código correlativo.

Tablas

incidenciasubicaciones

Aura (tools)

crear_incidencia

Alertas que vigilan

—
Motor de alertas — las 8 reglas

No usan IA para detectar: son reglas deterministas sobre los datos (con RLS), así que son explicables y auditables. La IA entra después: cada alerta abre Aura con un prompt que diagnostica y propone la acción correcta —con confirmación. Filtra por rol para ver qué recibe cada quien.

¿Qué alertas ve cada rol?
R1

P1 sin asignar

P1_SIN_ASIGNAR
Crítica

Incidencia de prioridad P1, sin técnico asignado y aún no cerrada.

Indagar con Aura →asignar_tecnicoGestión localSupervisorDirección
R2

SLA de respuesta en riesgo

SLA_RESPUESTA_EN_RIESGO
Alta

Incidencia abierta sin primera atención que ya consumió ≥ 80% de su SLA de respuesta.

Sube a crítica si ≥ 100%.

Indagar con Aura →triage_incidenciaGestión localSupervisorDirección
R3

SLA de resolución vencido

SLA_RESOLUCION_VENCIDO
Crítica

Incidencia abierta más horas que su SLA de resolución (P1 24h · P2 48h · P3 168h).

Indagar con Aura →triage_incidenciaGestión localSupervisorDirección
R4

Escalada sin atención

ESCALADA_SIN_ATENCION
Alta

Incidencia escalada, abierta y sin movimiento por más de 24 h (o sin asignación registrada).

Indagar con Aura →escalar_incidenciaSupervisorDirección
R5

Orden vencida

ORDEN_VENCIDA
Alta

Orden de trabajo con fecha programada en el pasado, sin fecha de fin y no cerrada.

Indagar con Aura →programar_ordenTécnicoSupervisor
R6

Solicitud estancada

SOLICITUD_COMPRA_ESTANCADA
Media

Solicitud de compra en estado 'solicitada' o 'aprobada' por más de 72 h sin avanzar.

Sube a alta si > 120 h.

Indagar con Aura →aprobar_solicitud_compraComprasDirección
R7

Contratación por finalizar

CONTRATACION_POR_FINALIZAR
Media

Contratación 'en ejecución' que finaliza en ≤ 72 h, o que ya venció sin pasar a 'finalizada'.

Sube a alta si ya venció.

Indagar con Aura →actualizar_estado_contratacionSupervisorComprasDirección
R8

Cotización faltante

COTIZACION_FALTANTE
Media

Solicitud de compra 'solicitada' que aún no tiene ninguna cotización registrada.

Indagar con Aura →pedir_cotizacionCompras
Bajo el capó

Cómo está programado todo esto

Aquí no hay humo: cada pieza es código real. Explora el mapa conceptual —Aura en el centro, los conceptos orbitando— y luego baja al detalle: lenguajes, el modelo de programación, cómo se construyen las herramientas de la IA, en qué se basa el prompt caching y qué papel juega el NLP.

Pasa el cursor o toca un nodo · arrastra la vista con el cursor

Inteligencia artificial

NLP · Transformer

Tokeniza el lenguaje natural y, vía atención, deduce intención y la traduce a acciones.

FrontendBackend / APIDatosInteligencia artificial
Lenguajes y stack

Cuatro lenguajes con un papel claro cada uno, sobre un stack moderno de TypeScript en todo el camino.

TypeScript

Front + agente

Tipado estricto de extremo a extremo: UI, capa de datos y el agente Aura. Los tipos de la base de datos se derivan del esquema (types/db.ts), así un cambio de columna se ve en compilación.

SQL · PL/pgSQL

Base de datos

Migraciones versionadas (0001–0004) definen 40 tablas, constraints fk_*, triggers (set_updated_at, handle_new_user) y funciones SECURITY DEFINER que sostienen las políticas RLS.

GLSL

Shaders

El fragment shader del login (raymarching de una metaball) y los efectos se escriben a mano en GLSL, ejecutados por WebGL en la GPU. Cero dependencias 3D.

Kotlin · XML

App Android

El concepto original incluye una app Android nativa con vistas XML (restricción dura: sin Jetpack Compose), hablando con la misma base Supabase vía supabase-kt.

Next.js 15ReactTailwind CSSframer-motionrecharts@supabase/ssr@anthropic-ai/sdklucide-reactVercel
El modelo de programación

Servidor por defecto

Casi todo son Server Components: los datos se consultan en el servidor con la sesión del usuario (RLS) y se envía HTML, no la lógica. El cliente solo hidrata pequeñas islas.

Frontera cliente/servidor

Regla dura: un componente cliente no puede importar código que toque next/headers. Por eso la capa de Storage está partida en cliente-seguro y solo-servidor.

Streaming NDJSON

La respuesta del agente viaja como líneas JSON (una por evento): texto, razonamiento, chips de herramienta y propuestas de acción, renderizadas en vivo.

Cómo se programan las herramientas de Aura

Cada herramienta es una declaración JSON Schema (nombre, descripción y input_schema) que se envía al modelo. El modelo no ejecuta nada: solo decide qué herramienta llamar y con qué argumentos. La ejecución la hace el servidor con el cliente Supabase de la sesión, así que RLS se aplica siempre.

  • Lecturas: se ejecutan en el acto durante el streaming y el resultado vuelve al modelo.
  • Escrituras: NO se ejecutan en el chat. El servidor responde PENDIENTE_DE_CONFIRMACION y emite una propuesta; solo corren vía /api/agent/execute al confirmar.
  • La identidad (usuario_id) la inyecta el servidor desde la sesión; el modelo solo propone el contenido, nunca quién es.
  • El orden de las 23 tools es estable (las nuevas van al final) para no invalidar el prompt cache.
lib/agent/tools.ts — una de las 23 herramientas
export const TOOLS: Anthropic.Tool[] = [
  {
    name: "buscar_incidencias",
    description:
      "Lista incidencias visibles para el usuario…",
    input_schema: {
      type: "object",
      properties: {
        texto:           { type: "string"  },
        estado_codigo:   { type: "string"  },
        prioridad_codigo:{ type: "string"  },
        solo_abiertas:   { type: "boolean" },
        limite:          { type: "integer" },
      },
      required: [],
    },
  },
  // … 22 más (lecturas + escrituras)
];
app/api/agent/route.ts — el bucle manual de tool-use (esquema)
for (let iter = 0; iter < MAX_ITERACIONES_TOOL; iter++) {
  const stream = client.messages.stream({
    model: cfgTier.model,            // nivel elegido (Opus/Sonnet/Haiku)
    system: sesion.sistema,          // [estable + cache_control] + [dinámico]
    tools: TOOLS_CACHEADAS,          // 23 defs, cache_control en la última
    messages: convo,
  });
  // …reemite deltas de texto y razonamiento…
  const final = await stream.finalMessage();
  if (final.stop_reason !== "tool_use") break;

  for (const block of final.content) {
    if (block.type !== "tool_use") continue;
    if (esEscritura(block.name)) {
      enviarPropuesta(block);                 // → confirmación en la UI
    } else {
      const data = await ejecutarLectura(     // ejecuta YA (con RLS)
        block.name, block.input, sesion.ctx,
      );
      // …se devuelve al modelo como tool_result…
    }
  }
}
Prompt caching — qué es y en qué se basa

En cada petición, una parte del prompt es idéntica: las instrucciones del sistema (~900 tokens) y las 23 definiciones de herramientas (~3.600 tokens). Marcar ese prefijo con cache_control: ephemeral hace que Anthropic lo guarde: a partir de la 2ª petición se lee de caché (~10% del precio de entrada) en vez de re-procesarlo.

  • En qué se basa: un prefijo estable y un punto de corte. Todo lo que cambia (perfil, fecha) va después del bloque cacheado para no invalidarlo.
  • Resultado: ~40% más barato por interacción y menor latencia (TTFT), porque el modelo no relee el prefijo enorme cada vez.
  • Disciplina: el orden de las tools y del system no debe cambiar; por eso las herramientas nuevas se añaden al final.
lib/agent/prompt.ts — el prefijo cacheado
export function construirSistema(ctx): TextBlockParam[] {
  return [
    // 1) ESTABLE → se cachea (idéntico en cada petición)
    {
      type: "text",
      text: SISTEMA_ESTABLE,            // instrucciones de Aura
      cache_control: { type: "ephemeral" },
    },
    // 2) DINÁMICO → NO cacheado (perfil, unidad, fecha ISO)
    {
      type: "text",
      text: bloqueDeSesion(ctx),
    },
  ];
}
// Las 23 tools (TOOLS_CACHEADAS) llevan cache_control
// en la última definición → todo el bloque es prefijo cacheado.
El papel del NLP

El Procesamiento de Lenguaje Natural es el puente entre cómo habla una persona y lo que la base de datos entiende. El modelo Claude es, en el fondo, un transformer: convierte tu frase en tokens, usa el mecanismo de atención para captar la intención y las entidades (qué incidencia, qué acción, qué prioridad), y traduce todo eso a una llamada de herramienta estructurada. Ese es el corazón de Aura: NLP que no solo «responde», sino que opera —y como los datos salen de herramientas reales, no inventa cifras.

Lenguaje natural

“¿Qué incidencias P1 siguen abiertas en mi área?”

PASO 1

Tokens + atención

El transformer entiende intención y entidades.

PASO 2

Tool-use estructurado

Elige buscar_incidencias con sus argumentos.

PASO 3

Ejecución con RLS

El servidor consulta Supabase con tu sesión.

PASO 4

Respuesta fundamentada

Genera la explicación con datos reales.

PASO 5

Por qué importa para la UTP: el NLP democratiza el sistema — cualquiera pregunta en español llano y obtiene respuestas accionables, sin aprender a usar filtros ni SQL. Y como cada dato pasa por una herramienta con RLS, la respuesta es precisa, auditable y dentro de los permisos de cada persona.

¿Cuánto cuesta Aura?

Costo bajo y controlable, con caché de prompts

El costo depende del nivel elegido y del volumen de uso. El sistema cachea el prompt y las definiciones de herramientas (gran descuento sobre la entrada repetida), y el nivel por defecto (Sonnet) ya es muy capaz y barato. La estimación detallada por interacción y por escenario mensual para la UTP se presenta a continuación.

$5 / $25
Opus 4.8 · entrada/salida por 1M tok
$3 / $15
Sonnet 4.6 · por 1M tok
$1 / $5
Haiku 4.5 · por 1M tok

Costo por interacción (con caché)

Prefijo cacheado de ~4.500 tok (system + 23 tools) + ~3.300 tok no cacheados + salida.

NivelModeloPor interacción
ChispaHaiku 4.5~$0.0063
Clara (def.)Sonnet 4.6~$0.029
NovaOpus 4.8~$0.064

Costo mensual para la UTP

22 días hábiles. Por nivel, sin mezclar.

EscenarioChispaClaraNova
Ligero · 1.1k/mes~$7~$32~$70
Medio · 6.6k/mes~$42~$191~$420
Intenso · 33k/mes~$208~$957~$2.1k
Mezcla recomendada · 70% Chispa · 25% Clara · 5% Nova

En la práctica la UTP no usaría Opus para todo. Con esa mezcla el costo baja a ~$0.015 por interacción: piloto de una facultad ~$16/mes, despliegue medio ~$98/mes, y toda la UTP ~$492/mes. El prompt caching ya activo ahorra ~40% por interacción; los briefings/alertas no interactivos pueden ir por la Batches API (−50%).

Propuesta sin costo / bajo costo

Aura también puede correr con modelos gratuitos en la nube

Como el modelo es configurable, Aura no está atada a un proveedor. Para una adopción sin costo en la UTP, se propone una capa que permita usar modelos cloud gratuitos o muy baratos —como NVIDIA Nemotron (V3 Ultra) vía NIM, y opciones de OpenRouter, Groq, Google Gemini o Cerebras— siempre que soporten tool calling y streaming, que es lo que Aura necesita.

NVIDIA Nemotron · NIM

Modelos abiertos potentes con capa gratuita en la nube de NVIDIA. Candidato fuerte para razonamiento y herramientas sin costo de API.

OpenRouter / Groq / Gemini

Capas gratuitas con límites de tasa; útiles para demos y uso institucional moderado, con calidad cercana a la de referencia en muchas tareas.

Cambio de proveedor transparente

La selección de modelo ya está centralizada; añadir un adaptador por proveedor permite alternar entre Claude (calidad máxima) y modelos gratuitos (costo cero) sin tocar la UI.

Comparativa de proveedores gratuitos (jun 2026)
ProveedorModelosCapa gratisTools + streamCalidad vs ClaudePrivacidad
NVIDIA NIMNemotron (V3 Ultra/Super), Llama, DeepSeek~40 RPM · todo el catálogoSí · function-calling topNemotron ≈ SonnetNo entrena (verificar prod)
GroqLlama 3.3 70B, Llama 430 RPM · 1k–14k/díaSí≈ Haiku–Sonnet · ultrarrápidoNo usa datos del free
CerebrasLlama 3.3 70B, Qwen31M tok/día · ctx 8kSí≈ Haiku/Sonnet · 2.000+ tok/sRevisar retención
Google Gemini2.5 Flash / Pro10–15 RPM · 100–1k/díaSí (nativo)Flash ≈ Sonnet · Pro ≈ Opus⚠ Entrena con prompts (free)
MistralLarge / Small~1.000M tok/mes · 5 RPSSíLarge ≈ SonnetEU · GDPR-friendly
OpenRouterDeepSeek R1, Llama, Qwen :free20 RPM · 50–1k/díaParcial (por modelo)VariableDepende del backend

Aura necesita tool-calling y streaming; todos exponen API compatible con OpenAI.

Cambiar de proveedor = pocas líneas

El modelo ya se resuelve por entorno (ANTHROPIC_MODEL + tabla CONFIG_TIER) y nunca se confía el id crudo del cliente.

  • Base URL + clave por variables de entorno (drop-in OpenAI).
  • Cliente: SDK de OpenAI apuntando al proveedor.
  • Shape de tools (el único trabajo real): mapear las 23 definiciones a function y JSON.parse de los argumentos.
  • Streaming SSE; el resto del loop (RLS, confirmación) no cambia.

Tabla de decisión

ObjetivoElecciónCosto
Producción · calidad · datos segurosClaude Sonnet/Haiku~$16–500/mes
Demo gratis velozCerebras / Groq (Llama 3.3)$0
Demo gratis mejor toolsNVIDIA NIM (Nemotron)$0
Volumen sostenido gratisCerebras / Mistral$0
Privacidad / soberaníaMistral (EU) / NIM$0 free
No usar con datos realesGemini free (entrena)$0 ⚠
Para la institución

Qué gana la Universidad Tecnológica de Panamá

Operación

  • Trazabilidad total: cada incidencia tiene historial, evidencias y responsables claros.
  • Menos cuellos de botella: alertas inteligentes y triage asistido reducen el tiempo de respuesta.
  • SLA bajo control: prioridades con tiempos y vigilancia automática de vencimientos.
  • Compras ordenadas: cotizaciones comparadas y contrataciones con acta de recepción.

Dirección e IA

  • Indicadores ejecutivos y costos reales para decidir con datos.
  • Aura democratiza el análisis: cualquiera pregunta en lenguaje natural y obtiene respuestas fundamentadas.
  • Adopción sin costo posible gracias a modelos gratuitos en la nube.
  • Base moderna y escalable (Supabase + Next.js) lista para crecer con la institución.

Entra al prototipo y velo funcionando

Todo lo descrito aquí está vivo: backend real, seguridad por rol y Aura lista para ayudarte. Usa una de las cuentas demo y explora.

Entrar al prototipo