BambooHR Agent
Agente conversacional que permite al equipo de RRHH consultar, modificar y reportar data de empleados en BambooHR mediante lenguaje natural, eliminando errores de nomina y reduciendo tiempo operativo.
Informacion General
Objetivo
Problema que resuelve
El equipo de RRHH (13-20 personas) gestiona toda la data de empleados entrando manualmente a BambooHR. Editar salarios, agregar empleados, desvincular, subir archivos, consultar informacion y generar reportes toma entre 5-15 minutos por operacion. Cuando hay multiples cambios pendientes, el equipo los pospone. Esos cambios olvidados llegan a nomina con datos incorrectos, generando errores que afectan al empleado, a RRHH y al area administrativa y de nomina.
Solucion implementada
Agente conversacional conectado a BambooHR via API que recibe instrucciones en lenguaje natural por chat y las ejecuta directamente. Opera en tres modos: accion (edita, agrega, desvincula, sube archivos), consulta (responde preguntas sobre data de empleados) y reporte (genera reportes estandar y personalizados). Cada operacion queda registrada en un log de auditoria.
Usuarios / Beneficiarios
- Operan el agente: Equipo de RRHH (13-20 personas) y equipo IT
- Acceso admin (settings de BambooHR): Solo Maximo Gomez
- Se benefician del output: Equipo administrativo, nomina y empleados GLM en 14 paises
Arquitectura
Diagrama de flujo
Stack tecnologico
| Componente |
Tecnologia |
Proposito |
| Agente IA |
Claude / Gemini |
Interpretacion de lenguaje natural y ejecucion |
| Automatizacion |
n8n / Python |
Orquestacion del flujo |
| Interfaz de chat |
A definir por Luis Matos (WhatsApp / Google Chat) |
Canal de comunicacion con el agente |
| Autenticacion |
A definir por IT |
Validar identidad y permisos del usuario |
| Log de auditoria |
A definir por IT (Supabase / Google Sheets) |
Registro de cambios |
| Infraestructura |
Google Cloud / Servidor Virtual |
Hosting y ejecucion |
Integraciones externas
| Sistema |
Tipo de integracion |
Datos que fluyen |
| BambooHR |
API REST (full access) |
Lectura, escritura y reportes de data de empleados |
| Google Workspace |
OAuth |
Autenticacion de usuarios GLM |
| WhatsApp / Google Chat |
API |
Instrucciones entrantes y respuestas salientes |
| Supabase / Google Sheets |
API |
Log de auditoria de cambios |
Configuracion y Setup
Prerequisitos
Variables de entorno
| Variable |
Descripcion |
Donde se obtiene |
| BAMBOOHR_API_KEY |
API Key de BambooHR |
BambooHR -> Admin -> API Keys |
| BAMBOOHR_SUBDOMAIN |
Subdominio de la cuenta GLM en BambooHR |
URL de BambooHR (ej. glm.bamboohr.com) |
| CHAT_CHANNEL |
Canal de chat activo (whatsapp / google_chat) |
A definir por Luis Matos |
| AUTH_SECRET |
Secret del sistema de autenticacion |
A definir por IT |
| LOG_STORAGE_URL |
URL del almacenamiento del log |
Supabase o Google Sheets — a definir |
| ADMIN_USER_ID |
ID del usuario con acceso a settings (Maximo Gomez) |
A definir al configurar autenticacion |
NUNCA commitear credenciales al repo. Todas las keys van en el vault de credenciales GLM.
Instalacion / Deploy
Como funciona
Flujo paso a paso
- Trigger: El usuario envia un mensaje de texto al canal de chat definido (WhatsApp o Google Chat)
- Autenticacion: El sistema valida la identidad del usuario y sus permisos antes de procesar la instruccion
- Interpretacion: El agente (Claude o Gemini) analiza el mensaje y determina el modo de operacion — accion, consulta o reporte
- Ejecucion:
- Modo accion: Llama a los endpoints correspondientes de BambooHR API para ejecutar el cambio. Si la accion es destructiva (ej. desvincular empleado), el agente pide confirmacion antes de ejecutar
- Modo consulta: Consulta BambooHR API, extrae la data solicitada y la formatea en lenguaje natural
- Modo reporte: Genera el reporte solicitado (estandar o personalizado) a partir de la data de BambooHR
- Log: Cada operacion se registra automaticamente en el log de auditoria con usuario, accion, empleado afectado y timestamp
- Confirmacion: El agente responde al usuario en el chat con el resultado de la operacion
Triggers
| Trigger |
Frecuencia |
Descripcion |
| Mensaje entrante en canal de chat |
On demand |
Usuario envia instruccion o consulta en lenguaje natural |
Testing
Como probar el sistema
Casos de prueba minimos
| Caso |
Input |
Output esperado |
Estado |
| Editar salario |
"Actualiza el salario de [empleado] a $X" |
Confirmacion + cambio ejecutado en BambooHR |
Pendiente |
| Agregar empleado |
"Agrega nuevo empleado [datos]" |
Confirmacion + empleado creado en BambooHR |
Pendiente |
| Desvincular empleado |
"Desvincula a [empleado] desde hoy" |
Solicitud de confirmacion + ejecucion tras confirmar |
Pendiente |
| Subir archivo |
"Sube este contrato al perfil de [empleado]" |
Archivo subido al perfil en BambooHR |
Pendiente |
| Consulta de data |
"Cuantos dias de vacaciones tiene [empleado]?" |
Respuesta con dato correcto extraido de BambooHR |
Pendiente |
| Reporte estandar |
"Dame el headcount por pais" |
Reporte generado y entregado en el chat |
Pendiente |
| Reporte personalizado |
"Lista empleados con salario no actualizado en 6 meses" |
Reporte personalizado generado |
Pendiente |
| Acceso a settings sin permiso |
Usuario no-admin intenta modificar configuracion |
Acceso denegado, sin ejecucion |
Pendiente |
| Acceso a settings con permiso |
Maximo Gomez modifica configuracion |
Cambio ejecutado correctamente |
Pendiente |
| Log de auditoria |
Cualquier accion ejecutada |
Entrada registrada en log con todos los campos |
Pendiente |
Errores conocidos y troubleshooting
| Error |
Causa probable |
Solucion |
| 401 Unauthorized en BambooHR |
API Key vencida o incorrecta |
Renovar key en BambooHR -> Admin -> API Keys y actualizar .env |
| Acceso denegado a settings |
Usuario no tiene permisos de admin |
Verificar ADMIN_USER_ID en variables de entorno |
| Agente no interpreta la instruccion |
Instruccion muy ambigua o incompleta |
El agente debe solicitar aclaracion al usuario antes de ejecutar |
| Log no registra la accion |
Conexion con almacenamiento del log fallida |
Verificar LOG_STORAGE_URL y credenciales de acceso |
| Canal de chat no recibe mensajes |
Webhook no configurado correctamente |
Revisar configuracion del canal en la plataforma correspondiente |
Monitoreo
Como saber si el sistema esta funcionando
- Log de auditoria: Revisar que las acciones ejecutadas esten siendo registradas correctamente
- Canal de chat: Enviar un mensaje de prueba y verificar que el agente responda
- BambooHR: Verificar aleatoriamente que los cambios ejecutados por el agente se reflejen correctamente
- Alertas: A definir por IT — el sistema debe enviar alerta a Luis Matos si falla una ejecucion critica
Estructura del repositorio
CHANGELOG
DECISIONS LOG
DEC-001 — Canal de chat
- Fecha: Junio 2026
- Contexto: El agente necesita un canal de comunicación para recibir instrucciones y responder al equipo de RRHH. GLM opera dentro de Google Workspace y el proyecto manejará acciones sensibles sobre información de empleados en BambooHR.
- Opciones consideradas: WhatsApp API vs Google Chat API
- Decisión: Usar Google Chat como canal principal para la primera versión del BambooHR Agent.
- Razón: Google Chat permite trabajar con identidad corporativa de Google Workspace, usuarios internos, mejor trazabilidad y menor riesgo de suplantación que WhatsApp para acciones sensibles de RRHH.
- Impacto: WhatsApp queda como posible canal futuro para notificaciones, recordatorios, alertas o consultas simples de bajo riesgo, pero no como canal principal para ejecutar acciones críticas en BambooHR.
DEC-002 — Sistema de autenticación
- Fecha: Junio 2026
- Contexto: Se necesita validar la identidad de cada usuario antes de permitir consultas, modificaciones, reportes o acciones sobre BambooHR.
- Opciones consideradas: Google Workspace / OAuth vs sistema propio de usuarios vs autenticación por número de WhatsApp
- Decisión: Usar Google Workspace como proveedor de identidad.
- Razón: Evita crear usuarios y contraseñas propias, aprovecha las cuentas corporativas existentes y permite auditar cada solicitud por correo corporativo.
- Impacto: Solo usuarios corporativos autorizados podrán interactuar con el agente. Antes de procesar cualquier instrucción, el sistema deberá validar identidad, rol y permisos del usuario.
DEC-003 — Modelo de autorización y permisos
- Fecha: Junio 2026
- Contexto: No basta con saber que el usuario pertenece a GLM. El agente debe validar que el usuario tenga permiso para ejecutar una acción específica según rol, país/área permitida, sensibilidad del dato y nivel de riesgo de la operación.
- Opciones consideradas: Google Sheets vs Supabase/Postgres vs Neo4j
- Decisión: Usar Neo4j como grafo de autorización y relaciones.
- Razón: Neo4j permite modelar relaciones complejas entre usuarios, roles, países, áreas, acciones, campos sensibles, confirmaciones y aprobaciones.
- Impacto: Neo4j guardará metadata de permisos y relaciones. No almacenará salarios reales, documentos, datos personales sensibles completos ni historial completo de BambooHR.
DEC-004 — Almacenamiento del log de auditoría
- Fecha: Junio 2026
- Contexto: Cada acción relevante debe quedar registrada con usuario, acción, empleado afectado si aplica, timestamp, resultado de autorización y resultado de ejecución.
- Opciones consideradas: Supabase/Postgres vs Google Sheets
- Decisión: Usar Supabase/Postgres como almacenamiento principal del log de auditoría.
- Razón: Supabase/Postgres ofrece mayor control, estructura, trazabilidad, seguridad y escalabilidad que Google Sheets para un proyecto con datos sensibles de RRHH.
- Impacto: Google Sheets podrá usarse solo como herramienta auxiliar de visualización o exporte, pero no como log principal de auditoría.
DEC-005 — Separación de responsabilidades entre n8n y Python Service
- Fecha: Junio 2026
- Contexto: n8n es ideal para orquestar flujos, recibir mensajes, llamar servicios externos y responder al usuario. Sin embargo, las reglas críticas de permisos, autorización, ejecución contra BambooHR y auditoría deben mantenerse centralizadas, versionadas y auditables.
- Opciones consideradas: Hacer toda la lógica en n8n vs separar la lógica crítica en un Python Service
- Decisión: Usar n8n como orquestador del flujo y un Python Service como capa de lógica crítica.
- Razón: Separar la lógica crítica evita que reglas sensibles de RRHH queden dispersas en múltiples nodos visuales. El Python Service permite validar permisos, consultar Neo4j, ejecutar BambooHR API y registrar auditoría de forma más controlada y fácil de probar.
- Impacto: n8n recibirá el mensaje, coordinará el flujo y responderá al usuario. El Python Service validará permisos, consultará Neo4j, ejecutará acciones autorizadas en BambooHR API y registrará auditoría en Supabase/Postgres.
DEC-006 — Política de seguridad para acciones sensibles
- Fecha: Junio 2026
- Contexto: El agente podrá ejecutar acciones que impactan datos sensibles de empleados, nómina y procesos de RRHH. Una instrucción mal interpretada no debe ejecutarse automáticamente si representa riesgo alto.
- Opciones consideradas: Ejecutar acciones directamente vs solicitar confirmación/aprobación según riesgo
- Decisión: Requerir confirmación explícita para acciones sensibles y aprobación cuando aplique según política interna.
- Razón: Cambios de salario, desvinculaciones, creación de empleados, cambios de manager, cambios de fechas críticas y acciones que impacten nómina requieren control adicional antes de ejecutarse.
- Impacto: Las acciones sensibles no se ejecutarán directamente después de ser interpretadas. El agente deberá pedir confirmación y registrar la operación en auditoría. Los settings de BambooHR quedan bloqueados para todos excepto Máximo Gómez.
Contactos del proyecto
| Rol |
Nombre |
Contacto |
| Product Owner |
Maximo Gomez |
[completar] |
| IT Manager |
Luis Matos |
[completar] |
| Developer |
Isaac Aracena |
[completar] |
Definition of Done
Documento mantenido por el equipo GLM IT - Ultima actualizacion: Junio 8, 2026