Definí tu contraseña personal para acceder al portal.
Restaurar contraseña
Vamos a enviar una contraseña temporal a tu correo corporativo.
AcciónLa contraseña actual deja de funcionar en cuanto
confirmes.
Listo, revisá tu correo
Te enviamos una contraseña temporal. Al ingresar con ella vas a tener que definir una
propia.
Cuenta creada
Tu cuenta fue creada correctamente. El equipo de Desarrollo todavía no te asignó un rol de trabajo,
así que
por ahora solo podés ver tu Portal de Empleado (licencias, recibos, adelantos e
insumos
propios). En cuanto te asignen un rol vas a ver el resto de los módulos automáticamente.
Confirmá tus datos de legajo
Administración necesita que revises tus datos personales antes de seguir. Si algo cambió (dirección,
teléfono, contacto de emergencia), avisale a Administración para que lo actualice antes de confirmar.
Completá tu legajo
Antes de seguir usando HomeIDS necesitamos tus datos personales completos. Todos los campos son
obligatorios, salvo los de Estudios.
Información personal
Contacto
Información médica y de emergencia
Estudios (opcional)
Formato libre: título y la institución, un estudio por línea.
Carné de salud
Nueva publicación
Hay cuentas esperando un rol
— todavía no puede usar HomeIDS más allá de su
Portal de
Empleado porque nadie le asignó un rol de trabajo. Antes de seguir con cualquier otra cosa, asignale
un rol:
Mi Perfil Corporativo
Gestiona tu avatar y
detalles de colaborador de IDS Ltda.
Subir Foto
Cargando sesiones...
Hub de ÁreasPortal interno IDS
BI sincronizado
0
Notificaciones
No tenés notificaciones pendientes.
Buen día, Colaborador.
Tenés tareas pendientes y propuestas esperando
revisión.
Power BIClima…USD: $40.41
· EUR: $46.91 · BRL: $7.80Último refresco del dataset corporativo:
hoy · 4 tableros publicados
Clientes, propuestas, estimación de horas y licitaciones.
4 accesosactiva
Desarrollo
PDD/SDD, flujos RPA, DevOps, sprints y herramientas internas.
22 accesosen curso
Comunicación
Mailchimp, HubSpot, compras de clientes y redactor con IA.
4 accesosactiva
RRHH y Administración
Licencias, insumos, recibos, inventario y legajos de personal.
6 accesosactiva
Talento
Candidatos, base de talentos, descripciones de puesto y salarios.
0 accesosactiva
Directiva
Tableros ejecutivos Power BI: ventas, CRM de desarrollo y ROI del
Home.
3 accesosactiva
Próximamente
Nueva área en construcción. Se habilita cuando el módulo esté
publicado.
—inactiva
Rendimiento y Funcionamiento
de HomeIDS
Métricas de uso, salud de base de datos SQL Server, rendimiento
de consultas e infraestructura en tiempo real
Módulos Activos (30d)
0 / 10
Cantidad de
módulos del sistema usados por el equipo en el mes.
Usuarios Activos (30d)
0 activos
Miembros del
equipo de desarrollo con tareas activas o logins.
Tamaño de Base de Datos
0.00 MB
Almacenamiento
actual ocupado por el esquema en SQL Server.
Tasa Éxito Procesos
100 %
Porcentaje de
ejecuciones exitosas de IA e integraciones.
Horas Hombre Ahorradas
0.0 h
Tiempo estimado
ahorrado mediante generador de PDD/SDD.
Locks Activos SQL
0 locks
Locks
concurrentes activos en este instante en SQL Server.
Horas Ahorradas por Módulo Interno
Documentos Generados
Top 5
Consultas más Lentas (por CPU)
CPU Promedio
Ejecuciones
Sentencia SQL
No hay telemetría de consultas aún.
Bloqueos y
Locks Activos en SQL
Session ID
Tipo Recurso
Modo
Estado
No hay bloqueos activos en la base de datos.
Log de Trazabilidad y Auditoría de Procesos
Fecha / Hora
Módulo
KPI Categoría
Valor
Detalles del Evento
Usuario Responsable
No se han registrado métricas de productividad aún.
Seguridad
Sesiones activas, cuentas bloqueadas y actividad de
autenticación en tiempo real.
Sesiones Activas
0
Sesiones con
token válido y no revocado en este momento.
Cuentas Bloqueadas
0
Bloqueadas
ahora mismo por intentos fallidos repetidos.
Intentos Fallidos (24h)
0
Intentos de
login incorrectos en las últimas 24 horas.
Eventos de Error (24h)
0
Errores
registrados en el log del sistema, cualquier módulo.
Sesiones Activas
Usuario
IP
Dispositivo
Inicio
Expira
Acción
Cargando sesiones...
Cuentas Bloqueadas
Usuario
Intentos
Bloqueada hasta
Cargando...
Centro de Actividad
Fecha / Hora
Nivel
Módulo
Evento
Usuario
Cargando actividad...
Relevamiento de Proceso Inicial
IDS Ltda. — Cliente: Cliente | Proyecto: Proyecto
🔒 **Aviso de Confidencialidad y Seguridad:** Toda la información proporcionada en este
formulario es de carácter estrictamente confidencial. IDS Ltda. garantiza el cumplimiento de los
más altos estándares de seguridad de la información para la protección y resguardo de sus
procesos de negocio.
Datos del Referente Técnico en su Empresa (Opcional)
¿Cómo se realiza el proceso hoy en día?
¿Cuáles son los cuellos de botella o dolores?
¿Qué esperan de la automatización?
Estimador de Horas & Calculadora
de ROI RPA
IDS Ltda. — Análisis de Eficiencia Operativa y Retorno de
Inversión Comercial
💡 **Herramienta Comercial de Impacto:** Esta calculadora permite evaluar el ahorro anual en
horas y dinero que logrará el cliente al automatizar un proceso manual con un Bot de RPA
(Rocketbot / Python).
1. Datos del Cliente y Proceso
Manual
2. Estimación de Costos de
Automatización
Ahorro de Tiempo Anual
531 hs
Horas hombre liberadas al año para tareas estratégicas de mayor valor.
Ahorro Económico Bruto/Año
$7,968 USD
Costo operativo manual evitado cada año con el uso del Robot RPA.
Período de Recuperación
(Payback)
3.8 meses
🟢 Excelente: La inversión se recupera en menos de 4 meses.
3. Proyección de Ahorro a 3 Años
(Línea de Tiempo)
Año 1:$4,968 USD (Neto)Año 2:$7,468 USDAño 3:$7,468 USD
🎉 Ahorro Neto Total Proyectado a 3 Años: $19,904
USD
Metodología de Cálculo Financiero y Comercial
El cálculo de rentabilidad del proyecto RPA se realiza utilizando las siguientes
métricas comerciales y financieras estandarizadas:
Gasto Manual Anual (AS-IS):Ejecuciones/año × Horas manuales/ejecución × Costo hora empleado.
Determina el costo operativo actual del cliente antes de automatizar.
Ahorro Neto Anual: Calculado deduciendo los costos de la solución
RPA del ahorro bruto anual (100% de la carga de horas manuales):
• Año 1:Ahorro Bruto − Costo Desarrollo − Mantenimiento/Licencia Anual • Año 2 y 3:Ahorro Bruto − Mantenimiento/Licencia Anual
Período de Recuperación (Payback / Retorno en Meses):Costo Desarrollo ÷ Ahorro Neto Mensual.
Representa los meses necesarios para amortizar la inversión inicial (donde el Ahorro
Neto Mensual es (Ahorro Bruto Anual − Licencia Anual) ÷ 12).
Retorno de Inversión (ROI % Acumulado):(Ahorro Neto Acumulado a 3 Años ÷ Costo Desarrollo) × 100.
Determina la tasa de retorno porcentual del capital invertido en 3 años.
POWER BI
Dashboard Ejecutivo
de Negocio & Entregables
Métricas en tiempo real
sincronizadas con SQL Server (HomeIDSDB) — Clientes, Pipelines, Tiempos y ROI.
Clima…
SQL Server En Vivo
Pronóstico de la semana — Montevideo
Cuentas & Clientes
0
Base SQL
Server Activa
Relevamientos AS-IS
0
Encuestas comerciales registradas
Horas Invertidas
0.0 h
Estimado: 0.0 h | Restante: 0.0 h
Ver Trazabilidad Tareas CRM →
Alertas Post-Venta
0
Seguimientos a 30 días
Robots en Producción
0
Procesos
automatizados
Ahorro Anual (ROI)
$0
~0 hrs hombre ahorradas
Ver Cálculo ($8.75/h) →
Pipeline de
Proyectos por Fase
En
tiempo real
Tareas por
Categoría
Horas
por Cuenta de Cliente
Estimado vs. Real
Estados de
Tareas de Desarrollo
To Do / Doing / Testing
/ Done
Visor de Reportes
Power BI Service
Incruste y navegue
directamente sus reportes publicados en el Workspace de Power BI de IDS.
Conectar
Reporte de Power BI Service
En Power BI Service, abra su reporte y vaya a Archivo ➔ Insertar informe
➔ Sitio web o portal (o Publicar en la web), copie el
enlace e ingréselo en el campo superior.
Encuestas de Relevamiento Recibidas
To Do Personal
Tu lista de tareas de la semana (Lunes a Viernes). Lo que no
termines el viernes pasa solo al lunes siguiente; lo terminado se limpia al empezar la
semana nueva.
2.
Datos del Contacto Comercial (Persona que nos contacta)
3.
Datos de la Contraparte / Responsable Técnico
4. Métricas y Tiempos del Proceso Manual
5. Descripción Operativa del
Proceso
Gestor de Boletines (Mailchimp)
Diseña, personaliza y envía campañas de boletines masivos a tus
clientes y leads de HubSpot.
Redactar Nueva Campaña
Audiencia seleccionada: --
Enviando boletín...0%
Vista Previa
en Vivo
Completa los campos a la izquierda para
previsualizar.
Boletines Enviados
Conector Externo de HubSpot CRM
Visualiza el pipeline de leads sincronizados y la salud de
contactos de marketing de IDS.
Estado de Sincronización: Cargando...
Cargando...
MQLs (Marketing Leads)
--
SQLs (Sales Qualified)
--
Clientes Ganados (Won)
--
Bandeja de Leads Recientes (HubSpot)
Lead
Fuente
Estado
Acciones
Acción IA
No hay leads capturados aún.
Cerrar Venta & Registrar
Cliente Real
Convertirás al lead -- de la empresa -- en un cliente físico en SQL Server de IDS.
Adquisiciones & Portafolio de
Clientes
Visualiza e inventaría qué software, licencias o pólizas de soporte
ha comprado cada cliente.
Registrar Compra /
Servicio
Historial de Licencias y Servicios Activos
Cliente
Servicio
Costo Mensual
Estado
Eliminar
No hay adquisiciones registradas.
Clasificación y Tipología de
Procesos
Clasifica los proyectos para analizar la distribución tecnológica y
el ROI promedio.
Categorizar Proyecto
Proporción de Tipologías del Portafolio
Redactor de Contenidos IA (AI
Copywriter)
Genera copys profesionales de marketing y lanzamientos tecnológicos
usando inteligencia artificial en tiempo real.
Especificaciones del Boletín
Copiado Generado
Generando copy...
Completa las especificaciones a la izquierda y
presiona 'Generar Boletín con IA' para redactar el boletín interactivo.
Planificar Reunión de Diseño
Herramienta Comercial para agendar la sesión técnica inicial en
Microsoft Teams
Selección de Fecha y Hora
Selecciona la fecha y hora de la reunión. Al hacer clic en "Crear Reunión", se abrirá
Microsoft Teams localmente con los integrantes predeterminados ya invitados:
Genere borradores oficiales de PDD en Word, pre-cargando los datos
o redactando de cero.
1. Información General del Proyecto
2. Relevamiento y Requisitos
Ya viene con el equipo de
IDS por defecto -- se puede editar o agregar contactos del cliente abajo (Sponsor,
usuario clave, etc.).
3. Alcance e Inclusiones
Modelo de IA sugerido por paso (Opcional -- no tiene que ver con el diagrama de
abajo)
Si el proceso no usa IA
en ningún paso, dejalo vacío -- esta sección directamente no aparece en el PDD
generado.
4. Pasos del Flujo de Automatización (Diagramador) — Parte 1:
recepción, clasificación y ejecución
Escriba los pasos secuenciales del flujo (uno por línea). El diagramador automático de
Pillow está emulado abajo usando SVG en tiempo real, o cargue un diagrama personalizado
del editor de flujos.
Sube un archivo .json de maqueta para cargar los pasos de texto, o un archivo .png
exportado para insertarlo en el Word.
Previsualización del Diagrama (Parte
1)
4.b Parte 2: decisión de continuidad y salidas (Opcional)
Solo hace falta completar esto si el flujo es lo bastante largo/complejo como para
convenir partirlo en dos diagramas. Si se deja vacío, el PDD queda con un solo
diagrama de flujo (sin hablar de "parte 1/parte 2") -- no aparece ninguna nota
pendiente ni un diagrama inventado.
Previsualización del Diagrama
(Parte 2)
🎉 ¡El borrador del documento PDD ha sido generado exitosamente en el portal!
Generador de Propuesta Comercial
Genere la Propuesta Comercial en PowerPoint (formato de marca IDS)
a partir de un PDD ya generado.
Trae Cliente, Proyecto,
Alcance funcional y Versión del PDD elegido -- todo queda editable después.
1. Información General y
Destinatario
La fecha de la carátula se completa
sola con la fecha de hoy al generar el documento.
2. Aspectos Técnicos (copia
del PDD)
Va a la tabla "Bots propuestos a
desarrollar" de la propuesta, en la sección técnica justo después de la introducción.
3. Horas del Proyecto
(trasfondo temporal)
Va en "Servicios Estimados y
Equipo", justo después de los aspectos técnicos.
4. Parámetros Monetarios
(aspectos económicos)
SDD Builder — Diseño
Técnico
Complete el diseño de arquitectura y especificación técnica de bots
orquestadores e hijos.
A. Datos Generales del SDD
B. Robots del Sistema
Robot Padre
(Orquestador)
Configuración
detallada de Bots Hijos
C. Parámetros Transversales
🎉 ¡El diseño técnico SDD ha sido guardado exitosamente en JSON y Word!
CRM IDS — Gestión
de Sprints y Tiempos
Planifique sprints, asigne tareas, registre tiempos de
desarrollo reales y controle desvíos.
POWER
BI ANALYTICS
Métricas de Rendimiento, Capacidad & Sprints
Telemetría de desarrollo en vivo
calculada sobre la base de datos SQL Server (HomeIDSDB).
Filtros de Proyecto / Período y Exportación
Velocidad Promedio
0.0 h
Horas completadas / sprint
Tasa Cumplimiento
0.0 %
Entregado vs. Estimado
Lead Time Promedio
0.0 d
Días desde creación a cierre
Tasa Retrabajo
0.0 %
Reaperturas de tareas Done
Desvío Estimación
0.0 %
Diferencia Real vs. Est.
Horas Restantes
0.0 h
Backlog activo pendiente
Capacidad vs. Horas
Reales por Desarrollador
Estimado vs.
Real
Categorías de Tareas
Consumo de Horas
por Proyecto
Estado del Flujo de
Sprints
Tendencia de Actividad
Tareas
completadas y horas registradas del período actual contra el período anterior
(ventana móvil de 7 y 30 días).
Historial de Carga de Trabajo
Horas
pendientes por persona, capturadas una vez por día -- para ver sobrecarga sostenida
en el tiempo, no solo el momento puntual en que se mira esta pantalla.
Todavía no hay historial suficiente
Se captura una foto por día -- volvé a revisar en unos días para ver la
tendencia.
Líneas de Tiempo de Sprints Activos
Estado y Control de Horas por Proyecto
Cliente / Proyecto
Sprint Activo
Progreso Tareas
Horas Estimadas
Horas Reales
Horas Restantes
Acción
Presupuesto de Horas por Categoría — Cartera
Completa
Suma de todos
los proyectos con presupuesto de horas cargado (respeta la confidencialidad de cada
uno). Para el detalle de un proyecto puntual, usá "Reportes de Proyectos".
Cliente / Proyecto
Presupuestado
Consumido
% Consumido
Categorías agotadas
Visor Power
BI CRM & Sprints
Incruste reportes de
Power BI dedicados al análisis de DevOps, Sprints y Control Comercial.
Conectar Dashboard Power BI CRM
Pegue el enlace de inserción de su reporte de Power BI para visualizarlo
directamente aquí.
Horas por persona en este sprint
(reales
/ estimadas)
Tablero Kanban del Sprint
(Shift/Ctrl+Click
en una tarjeta para seleccionar varias)
0 tarea(s) seleccionada(s)
Por Hacer0
En Proceso0
Bloqueado/Pausado0
Pruebas QA0
Terminado0
Dashboard del Sprint & Proyecto
Horas Estimadas (Sprint)
0.0 h
Horas Reales Invertidas
0.0 h
Tareas Completadas
0 / 0
Horas Restantes del Proyecto
0.0 h
Ocupación del Sprint
0.0 / 0.0 h
Tiempo de Ciclo Promedio
0.0 días
De In Progress a Done
Carga de Trabajo y Horas Reales por Recurso
Esfuerzo Consumido vs. Planificado del Proyecto
Diagrama de Flujo Acumulado (CFD) y Cuellos
de Botella
Velocidad por Sprint (horas completadas)
Este proyecto todavía no tiene sprints cerrados con tareas completadas para
comparar.
Registrar Nuevo
Proyecto×
Total asignado: 0 h
0 seleccionados
Usuarios con rol
Director tienen acceso total a todos los proyectos por defecto.
Confirmar
Registrar Nuevo Sprint×
Editar Detalles del Sprint×
Registrar Nueva
Tarea×
Crear y Agregar Tag
Bloqueos
Registrar bloqueo
Sin fechas, el bloqueo cuenta como ocurrido pero no suma
días. Con solo "Desde", queda abierto hasta que lo cierres.
Sprint de origen:
Historial de Cambios de Estado
Conversación y Hilos de Comentarios
Registrar Horas Reales×
Has completado la tarea. Por favor, indicá cuántas horas reales te tomó terminarla
para registrar en la base de datos de IDS.
Nombre de Tarea
Estimado original: 0.0 h
¿Por qué se bloquea?
Copiar
Tarea a otro Sprint×
Tarea a copiar
Nombre de Tarea
La copia se crea como una tarea nueva en estado "To Do", sin
las horas reales ni el estado de la original.
Generar Tareas automáticamente
desde SDD (IA)×
Analizando
documento técnico con Gemini/Claude... por favor espera.
Error al procesar el SDD
Detalle
del error...
Logs de diagnóstico detallados...
Tareas Sugeridas encontradas por la
IA
Mis Tareas (Sprints Vigentes)
Pendientes / en curso, de
todos los proyectos con sprints activos
Roadmap
ActivoCerrado%
de tareas completadas
Selecciona un Cliente y Proyecto arriba para ver su roadmap completo.
CRM Administración
Tablero Kanban de tareas internas de Administración, con datos
y analítica propios, independientes de Desarrollo y SMI.
Tablero Kanban
Por Hacer0
En Proceso0
Bloqueado/Pausado0
Pruebas QA0
Terminado0
Nuevo Sprint×
Nueva
Tarea×
Fichaje de Visitas
Marcá tu entrada y salida en cada visita a cliente, con hora y
ubicación, y dejá anotado qué hiciste.
Para qué sirve esto: tener registrado, para vos y para IDS, que
estuviste en tal cliente en tal fecha y horario, y qué se hizo. No mide tu rendimiento
ni tu productividad -- es tu respaldo y el de la empresa para cualquier conversación
con el cliente sobre una visita.
¿No te deja marcar por el permiso de ubicación? Mirá cómo habilitarlo en tu
dispositivo.
Marcar entrada
Visita en curso
Cliente --
Entrada
marcada --
Todavía no cargaste ninguna tarea de esta visita.
Historial de visitas
Empleado
Cliente
Entrada
Salida
Tareas realizadas
Todavía no hay visitas registradas.
Cómo habilitar la ubicación
El fichaje
necesita tu ubicación para poder marcar la entrada y la salida. Si el navegador te pidió
permiso y lo rechazaste, o si ya lo habías bloqueado antes, seguí estos pasos según tu
dispositivo:
Android Configuración
→ Ubicación → activarla. Después, en el navegador (Chrome): tocá el candado o el
ícono de información al lado de la dirección web → Permisos → Ubicación → Permitir.
iPhone / iPad
(iOS) Ajustes → Privacidad y seguridad → Localización → activarla.
Después Ajustes → [tu navegador, ej. Safari o Chrome] → Ubicación → Preguntar o
Permitir.
macOS Preferencias
del Sistema → Privacidad y seguridad → Localización → activar para el navegador que
usás. Después, en el navegador, al lado de la dirección web tocá el ícono de
ubicación/candado → Permitir.
Windows Configuración
→ Privacidad y seguridad → Ubicación → activar "Servicios de ubicación" y permitir el
acceso al navegador. Después, en el navegador, hacé clic en el candado al lado de la
dirección web → Permisos del sitio → Ubicación → Permitir.
Base de Clientes
Ver, corregir y eliminar los datos de clientes cargados en el
sistema.
Clientes registrados
Usá "Nuevo
Cliente" para registrar clientes sin proyecto asignado: sin proyectos activos, con proyectos
ya cerrados, o documentados antes de la implementación del Home.
Nombre
Empresa
RUT
Email
Teléfono
Referente Técnico
Acciones
Editar Cliente
Los campos de
relevamiento de proceso (situación actual, problema, expectativas, etc.) se editan desde
"Ingreso de Cliente".
Nuevo Cliente
Se registra el
cliente sin asignarle ningún proyecto. Útil para clientes sin proyectos, con proyectos ya
cerrados, o documentados antes de la implementación del Home.
Área de Empleados -
Administración IDS
Gestione sus solicitudes de licencias, adelantos de sueldos,
recibos y activos asignados.
PRÓXIMAMENTE
Estamos terminando de preparar el Portal del
Empleado. Licencias, recibos de sueldo, adelantos, bienes e insumos van a estar
disponibles acá muy pronto.
Solicitar Licencia / Vacaciones
Calculando saldo de licencia vacacional...
Rango elegido:Elegí el primer día
Ya hay un compañero de SMI de licencia esos días (no aplica a Licencia Especial).
Historial de Solicitudes
Fecha
Inicio
Fecha
Fin
Tipo
Estado
Solicitud de Días Especiales
Solicite días libres con goce de sueldo para eventos especiales contemplados por la ley
y políticas de la empresa (Paternidad, Estudio, Fallecimiento de familiar).
Fecha elegida: Ninguna
Historial de Días Especiales
Fecha
Tipo de
Evento
Detalle
Estado
Certificación Médica
No necesita aprobación de Administración: queda registrada al instante y se le avisa
directo a Jimena Roldán.
Desde 2027: los primeros 3 días de
certificación que presentes en el año no se te descuentan del sueldo. Te lo vamos a
aclarar al registrar la certificación si te corresponde.
Historial de Certificaciones
Desde
Hasta
Motivo
Sin descuento
Librería de Recibos de Sueldo
Consulte y
descargue sus recibos de sueldo mensuales oficiales cargados en el sistema.
Período
/ Mes
Monto
Líquido
Formato
Acción
Solicitud de Adelanto
Los adelantos de sueldo se gestionan de acuerdo con las normativas legales de
Uruguay (Ley de Mínimo Intangible N° 17.829). No hace falta que declares tu
sueldo acá: eso lo valida la Líder de Administración al momento de aprobar tu
solicitud.
Completá esto solo si estás pidiendo un adelanto especial, por un monto
superior al límite que marca la ley (50% del sueldo neto). Para un adelanto
dentro de ese límite no hace falta justificarlo.
Pedí por adelantado el dinero para cubrir los gastos de un viaje o visita a
cliente (pasajes, alojamiento, comidas) antes de salir de viaje.
Elegí el día y cuántas horas necesitás salir antes o entrar más tarde. Una vez que
Administración lo apruebe, vas a poder subir el comprobante desde el historial.
Fecha elegida: Ninguna
Historial de Horas
Fecha
Tipo
Horas
Estado
Comprobante
Registrar Horas Extra
Cargá la fecha y la cantidad de horas extra trabajadas, con una adenda que explique
el motivo. Administración lo revisa y te confirma si quedó aprobado.
Historial de Horas Extra
Fecha
Horas
Adenda
Estado
Bienes Empresariales Asignados
Equipamiento
corporativo asignado para el cumplimiento de sus funciones.
Hardware / Dispositivo
Número
de Serie
Fecha
Asignado
Estado
Solicitud de Insumos Menores y Devoluciones
Solicite
insumos de oficina (cables, accesorios) o informe devoluciones/reemplazos de equipos
asignados.
Solicitar Insumo Menor
Devolución o Reemplazo de Equipo
Historial de Solicitudes
Fecha
Tipo de
Registro
Ítem /
Dispositivo
Detalle
/ Cantidad
Estado
Mi Vault de Credenciales
Guardá acá tus usuarios y contraseñas de servicios externos (mail institucional, CRM, etc.) --
cifrados, solo vos los ves (Dirección/Desarrollo pueden recuperarlos si perdés acceso a tu cuenta).
Título
Usuario
Categoría
Contraseña
Actualizada
Agregar credencial
Calendario Post-Venta
Fidelización comercial. Alertador a los 30 días hábiles de la
entrega del proyecto.
A continuación se listan las alertas que han alcanzado o superado los 30 días hábiles
post-proyecto. Úselas para realizar la llamada de fidelización.
Registrar Cierre del Desarrollo
Agenda Completa de Seguimiento
ID
Cliente
Proyecto
Fecha Fin
Fecha Alerta
Estado / Contacto
Tablero Kanban de Proyectos y
Oportunidades
Gestión unificada del estado del ciclo de vida de automatizaciones
en IDS Ltda.
1. Relevamiento Inicial
2. Diseño PDD / SDD
3. En Desarrollo
4. Pruebas (UAT)
5. En Producción
Generador de Manual de Handover y
Operación
Documento oficial PDF con la identidad corporativa IDS Ltda 35 Años
para entrega al cliente.
Auto-completar desde
el CRM
Elegí un proyecto
para prellenar el resumen del proceso y los participantes a partir de las tareas ya
completadas (Done) en sus sprints. No pisa lo que ya hayas escrito abajo, solo agrega al
final.
1. Configuración del Documento de Entrega
2. Secciones del Manual
Vista Previa del Documento PDF (Formato IDS
35 Años)
DOCUMENTACIÓN TÉCNICA Y HANDOVER
Automatización de descarga y renombrado de comprobantes (CFE)
IDS LTDA / Garino Hnos.
FECHA DE ENTREGA
20 de julio de 2026
DURACIÓN ESTIMADA
11 min 49 s
MODALIDAD DE EJECUCIÓN
Automatización
Programada / Orquestador
PARTICIPANTES
Ignacio Bálsamo (IDS)
· Juan Manuel Pacheco (IDS)
1
Resumen del proceso implementado
2
Requisitos y compromisos de operación
→ Plazo estimado: durante el transcurso de los primeros 30 días hábiles post-entrega.
Qué documentos ya se subieron a SharePoint para un proyecto, y
cuáles todavía faltan — sin tener que entrar carpeta por carpeta a buscarlos.
Conversor de Transcripciones a
Actas (Teams)
Área Desarrollo — Convierte transcripciones de Teams en actas
con formato y diseño corporativo de IDS.
1. Entrada de Transcripción y Configuración
Arrastrá tu archivo acá o hacé clic para buscar
Soporta formatos .docx,
.vtt, .srt, .txt
Subir Logo de Cliente
Formatos: PNG, JPG,
JPEG
Cualquier aclaración que ayude a
que el acta salga mejor: nombres correctos, contexto que la transcripción no deja claro,
qué partes ignorar, etc.
Error al Procesar la Transcripción
LOG DE ERRORES DEL SISTEMA:
2. Acta de Reunión
Generada
Destino en SharePoint
Vault Seguro de Credenciales
(AES-256)
Área Desarrollo — Almacenamiento seguro y cifrado de llaves,
APIs y accesos de clientes.
Agregar / Actualizar Credencial
Credenciales en la Bóveda
Cliente
Llave
Valor Cifrado
Fecha Registro
Acciones
Confirmá tu contraseña
Por
seguridad, para ver una credencial del Vault de Desarrollo en texto plano
tenés que confirmar tu propia contraseña de IDS.
Vault Personal de Empleados
Área Desarrollo — Asigná credenciales iniciales (mail institucional,
CRM, etc.) a una persona, o recuperá su vault si pierde acceso a su cuenta. Cada vez que entrás al
vault de otra persona queda registrado en el log de Seguridad.
Empleados
Nombre
Email
Rol
Credenciales guardadas
Vault de
Título
Usuario
Categoría
Contraseña
Actualizada
Monitor de Procesos
Área Desarrollo — Todos los procesos que HomeIDS corre solo (scraping de
licitaciones, catálogos de proveedores, noticias, cotizaciones, avisos, etc.), cuándo corrió cada uno
por última vez, cuándo corre de nuevo, y el historial de fallas.
Procesos monitoreados
0
OK en su última corrida
0
Con error reciente
0
Últimas fallas (14 días)
Proceso
Fecha
Detalle
Procesos
Proceso
Categoría
Última corrida
Resultado
Próxima corrida
Historial de
Inicio
Duración
Resultado
Detalle
Monitor de Bots
Área Desarrollo — Bots RPA entregados a clientes. Cada bot reporta su
propio resultado al terminar de correr, autenticado con una API key propia -- HomeIDS no tiene
acceso a dónde corren ni a sus logs.
Bots activos
0
En línea
0
Atrasados
0
Bots
Bot
Cliente
Área
Frecuencia esperada
Última corrida
Éxito
Estado
Nuevo bot
Define cuándo el bot se muestra "Atrasado" en vez de "En línea" -- dejalo vacío para usar el default (24hs).
API key del bot
Guardala ahora -- no se vuelve a mostrar completa. Si se pierde, hay que regenerarla desde la fila del bot.
Pegá esto en el bot (RocketBot: un módulo "Http Request" al final del flujo; Python: la función de abajo) para que avise su resultado:
Historial de
Fecha
Resultado
Duración
Detalle
Gestión de Usuarios y Roles
Área Desarrollo — Asignación de rol y nivel. Ya no existe la
auto-asignación: toda cuenta nueva espera acá hasta que se le asigne un rol.
Usuarios
Nombre
Email
Rol
Nivel
Acciones
Solicitudes de alta de usuario
Administración manda estas solicitudes desde el legajo de una persona que todavía no tiene
cuenta en HomeIDS. Al aprobar se crea la cuenta con una contraseña temporal y se le va a
pedir que la cambie en su próximo login.
Nombre
Email propuesto
Pedido por
Fecha
Acciones
Roles pre-asignados
Para gente que todavía nunca inició sesión en HomeIDS. El rol se aplica solo la primera vez
que esa persona se loguea.
No aplica para este
rol
Email
Rol
Nivel
Fecha
Acciones
Mis
Estadísticas
Vista personal de tu actividad registrada en HomeIDS.
Cuando cargues una, la vas a poder seguir acá mismo.
Número
Cliente
Fecha de Entrega
Estado
Dashboard BI Director
Métricas consolidadas de las 4 áreas de IDS Ltda., para
analizar el rendimiento de toda la empresa.
Comercial
Desarrollo
Comunicación
Administración
Top 5 clientes por
ingreso mensual
Proyectos por fase
Control de Ventas & Licencias de
Bots
Vista consolidada del pipeline comercial (misma información que el
Kanban, en formato tabla, sincronizada 100% desde el servidor).
Cliente
Proyecto
Fase
Contacto Comercial
Asignación de Tareas
Vista transversal de las tareas del CRM de Desarrollo que todavía
no están terminadas, con quién las tiene.
Tarea
Sprint
Asignado a
Estado
Categoría
Directiva
Tableros ejecutivos con datos en vivo de SQL Server para
seguimiento de alto nivel del CRM de Desarrollo y el aporte del Home a la empresa
(el análisis de Ventas se ve en "Dashboard Comercial", en este mismo menú).
Exportables a PDF o a CSV para Power BI.
Análisis de CRM de
Desarrollo
SQL Server en vivo
Desempeño del equipo de Desarrollo, avance acumulado de proyectos y
datos de control por desarrollador.
Velocidad
—
Cumplimiento
—
Lead time
—
Retrabajo
—
Desvío
—
Horas restantes
—
Horas por desarrollador
Categorías de tareas
Horas por cliente / proyecto
Estados de las tareas
Desarrollador
Estimadas
Reales
Desvío
No se pudo traer el desempeño del equipo
No se pudo conectar con la base de datos en este momento. Reintentá en unos minutos.
Análisis del Home / ROI
SQL Server en vivo
Cómo funciona HomeIDS como herramienta: adopción por el equipo,
confiabilidad, cuánto tiempo ahorra y el ROI que le genera a la empresa. No es el CRM de
clientes — eso está en la pestaña de al lado.
Módulos activos
—
últimos 30 días
Usuarios activos
—
últimos 30 días
Tasa de éxito
—
procesos e
integraciones IA
Horas ahorradas
—
generadores PDD/SDD y
otros módulos
ROI anual (USD)
—
ROI anual
(horas)
—
Horas ahorradas por módulo
Documentos generados por tipo
Fecha
Módulo
Tipo
Valor
Detalle
No se pudieron traer las estadísticas del Home
No se pudo conectar con la base de datos en este momento. Reintentá en unos minutos.
Noticias de IA
Las 5 noticias más importantes de hoy sobre Inteligencia
Artificial, con lectura de cómo aplicarlas (y qué cuidados tener) para IDS.
Clima…
Cómo aplicarlo a IDS
Qué
precauciones tener
Las noticias de hoy todavía se están preparando
El boletín se genera automáticamente todos los días a las 6am.
Si ya pasó esa hora y seguís sin ver nada, probá "Actualizar ahora".
Noticias y
Finanzas — Administración
Monitoreo de tipo de cambio en tiempo real y 9 noticias
clave del día para la gestión administrativa y financiera.
Clima…
🇺🇸 Dólar
(USD)Mercado UYU
$40.41
Compra: $39.21Venta: $41.61
🇪🇺 Euro
(EUR)Mercado UYU
$46.91
Compra: $45.61Venta: $48.21
🇧🇷 Real
(BRL)Mercado UYU
$7.80
Compra: $7.40Venta: $8.20
Panorama Ejecutivo del Día
Recomendaciones para Administración
1. Economía Local (Uruguay)
3 Noticias clave
2. Noticias Locales y
Marco Normativo
3 Noticias clave
3.
Mercados y Finanzas Internacionales
3 Noticias clave
El resumen de noticias se está preparando
Hacé clic en "Actualizar ahora" para cargar las 9 noticias y
cotizaciones del día.
Buen día
Noticias de IA de hoy
Buscando...
Reportes de Proyectos
Horas y tareas del CRM de Desarrollo, por cliente, proyecto y sprint (o el
total del proyecto).
Elegí un cliente y un proyecto
El reporte se arma con la información de horas y tareas del CRM de Desarrollo.
Total tareas
0
Hs Estimadas
0
Hs Reales
0
Presupuesto de horas por categoría
Resumen por etapa
Etapa
QA
Consultor
Equipo Desarrollo
Cliente
# Tareas
Hs Reales
Tareas
Las horas y la etapa se editan acá mismo y
se guardan directo en la base. La categoría de tarea (QA / Consultor / Equipo Desarrollo
/ Cliente) se calcula sola según la etapa.
Fecha
Tarea
Hs Reales
Categoría tarea
Etapa
Descripción
Informe de Equipo
Tareas y proyectos cerrados en el período, horas por cliente
con sprint activo, y carga de cada desarrollador en los sprints que están corriendo.
Elegí un rango de fechas
El informe se arma con las tareas cerradas, los proyectos cerrados y la carga de cada
desarrollador en los sprints activos.
Tareas completadas
0
Horas reales
0
Proyectos cerrados
0
Sprints activos
0
Clientes c/ sprint activo
0
Horas por cliente (con sprint activo)
Tareas completadas por desarrollador
Horas por categoría
Horas cerradas por día
Proyectos cerrados en el período
Cliente
Proyecto
Horas totales
Fecha de cierre
Sin proyectos cerrados
Ningún proyecto pasó a estado "Cerrado" en este período.
Tareas por desarrollador
Las tareas
que cada persona cerró (Done) dentro del rango de fechas de arriba, de cualquier sprint,
más lo que tiene abierto hoy en los sprints con estado Activo.
Comparador de Sprints
Por cada persona, por separado: cuánto planificó contra cuánto
completó, dejó bloqueado o tuvo frenado por un bloqueante externo en sus últimos
sprints. No es una comparación entre personas -- cada una se mide contra su propio
planificado.
Cargando equipo...
Elegí a quién comparar
Seleccioná una o más personas del equipo y cuántos sprints mirar hacia atrás, después
tocá "Comparar".
Marcar bloqueante externo
Tarea:
Licitaciones y Pliegos
Relevamiento diario de compras públicas de ARCE (familia:
Tecnologías de la Información). Se actualiza solo todos los días a las 4am.
Asignadas activas
—
Por vencer (7 días)
—
Presentadas
—
Ganadas
—
Perdidas
—
Organismo
Objeto
Fecha límite ofertas
Asignada a
Acciones
Asignar Ente / Unidad Ejecutora
Elegí un Inciso completo, o una o varias de sus Unidades Ejecutoras, y a quién se le
va a asignar. Se auto-asignan de una todas las licitaciones vigentes de ese
organismo -- y las que ARCE publique después, también, sin tener que volver a hacer
nada acá.
Reglas activas
Ente
Unidad Ejecutora
Asignado a
Desde
Acciones
Adjudicaciones relevadas
0
Con análisis confiable
0
El "análisis" de la IA es honesto, no inventado: ARCE no siempre publica los precios de
quienes no ganaron ni una justificación -- cuando no hay base real, el factor queda como
"Sin datos suficientes" en vez de suponer un motivo.
Adjudicaciones
Fecha
Organismo
Objeto
Empresa(s) ganadora(s)
Monto
Factor observado
Ranking de empresas
Cuántas adjudicaciones ganó cada empresa en esta categoría, y su tasa de éxito
sobre las veces que participó -- "para saber si eso pesa".
Empresa
Ganadas
Particip.
% Éxito
Detalle de adjudicación
Cargando...
Cargando...
Cargando...
Cargando...
Todavía no se generó la lista de artículos
Leemos el pliego con IA y armamos la lista de artículos y
cantidades pedidos, para que completes marca, modelo, costo y proveedor de cada uno.
Obligatorio: el
Excel usa este valor para calcular todas las columnas en $U. Sin este dato no se puede
generar la planilla.
Según el pliego
Autocompletado
Estos datos se completaron solos a partir de una cotización anterior parecida -- revisalos
antes de continuar (podés cambiar cualquier campo).
Parecidos en el catálogo de proveedor
Documentación que pide el pliego
Borrador Oferta a pliego
Documento en Word con el
formato institucional de IDS, armado con los datos ya leídos del pliego y los artículos cargados
en la Planilla Negocio.
Cargando...
Carta DEMOS
Catálogo de automatizaciones y soluciones agénticas para mostrarle
al cliente en una reunión comercial, con cómo venderla y un video de demo.
No se pudo cargar el catálogo
Revisá la conexión con el servidor e intentá de nuevo.
Cómo venderla
¿Se puede sin RocketBot?
¿Se puede 100% en Microsoft?
Solicitudes de Venta
Pedí autorización de una venta antes de comprarle a los
proveedores -- al validarse, las Órdenes de Compra se generan solas, una por proveedor.
Todavía no hay solicitudes de venta
Cuando cargues una, la vas a ver acá con su estado y sus totales.
Con qué
vendedor de cada proveedor cerraste el precio -- se completa solo en la Orden de
Compra que se genere al validar (opcional, se puede completar después a mano).
Total Costo
0.00
Total Venta
0.00
Margen Global
0%
Órdenes de Compra
Se generan solas al validar una Solicitud de Venta (una por
proveedor) o se cargan sueltas. Al validarlas se les manda un mail con el PDF al vendedor
del proveedor.
Todavía no hay órdenes de compra
Se generan solas al validar una Solicitud de Venta, o se pueden cargar sueltas.
Número
Proveedor
Solicitud de origen
Total Costo
Fecha
Estado
Acciones
Nueva Orden de Compra
Generada desde
Solicitud
Ítems
SKU Prov.
Artículo
Marca
Cant.
Unitario
Subtotal
Total
0.00
Total con IVA (22%) -- así sale en el PDF/mail al proveedor
0.00
Mail al proveedor
Al validar la orden
se manda este mail con el PDF adjunto al vendedor del proveedor. Editá el mensaje si
el texto estándar no aplica para este caso.
Base de Proveedores
Datos de contacto y vendedores de cada proveedor, para armar
Solicitudes de Venta y Órdenes de Compra.
Todavía no hay proveedores cargados
Registrá el primero con nombre, razón social, RUT y sus vendedores de contacto.
Nombre
Razón Social
RUT
Contacto general
Vendedores
Acciones
Nuevo Proveedor
Vendedores
Nombre
Mail
Teléfono
Comisiones
Comisión ganada por mes (se cuenta el
mes en que la Solicitud se marca Entregada). Queda PENDIENTE hasta que el Líder de
Administración marca la Solicitud como Cobrada -- ahí pasa a PAGA.
No hay datos para ese mes
No se crearon ni se entregaron Solicitudes de Venta en el mes elegido.
Paga (USD)
0.00
Paga (UYU)
0.00
Pendiente (USD)
0.00
Pendiente (UYU)
0.00
Por vendedor
Vendedor
Solicitudes Creadas
Solicitudes Entregadas
Paga USD
Paga UYU
Pendiente USD
Pendiente UYU
Detalle por Solicitud
Solicitud
Cliente
Vendedor
Entregada
Cobrada
Comisión
Estado
Dashboard Comercial
Estado consolidado de Solicitudes de Venta y Órdenes de Compra,
todo convertido a USD. Los montos son sin IVA -- el IVA se muestra aparte.
Tipo de cambio USD/UYU
Monto Cumplido (USD)
0.00
Monto No Cumplido (USD)
0.00
Margen Bruto Cumplido
0.00
Margen Bruto No Cumplido
0.00
Comisión Cumplido
0.00
Margen Neto (after comisiones)
0.00
IVA Total
0.00
IVA Pendiente
0.00
Uso de Proveedor (USD)
Proveedor
Total USD
OC de Solicitudes Cumplidas
OC
Solicitud
Proveedor
Estado
USD
Análisis de Precios de
Proveedores
Evolución de precios de los artículos en seguimiento (Unicom y
StarCenter), comparados contra lo que IDS compró y vendió.
a
Artículos en seguimiento
0
Con cambio en el período
0
Variación promedio
0%
Candidatos a evaluar
stock
0
Artículos (ordenados por variación de precio)
Candidato a stock = varió
≥15% y se usó ≥3 veces en el período -- una señal, no una recomendación
No hay artículos para este filtro
Probá ampliar el rango de fechas o cambiar el proveedor, o sumá artículos a la
.
Proveedor
Artículo
Marca
Actual
Mín.
Máx.
Variación
Usado
Stock
Compras reales vs. mínimo del año
Todavía no hay compras para comparar
Esto se completa solo a medida que se generan y reciben Órdenes de Compra con
artículos elegidos del buscador del catálogo (Unicom/StarCenter) -- un artículo
cargado a mano no se puede vincular a un precio de proveedor.
OC
Fecha
Proveedor
Artículo
Cant.
Pagado
Mín. del año
Diferencia
Evolución de precio
Vigente desde
Vigente hasta
Precio
Lista de seguimiento de precios
El panel de
Análisis de Precios solo analiza y grafica los artículos de esta lista -- sumá uno
nuevo buscándolo en el catálogo ya sincronizado de Unicom/StarCenter. A partir de ese
momento, su historial de precio queda registrado desde hoy.
Todavía no agregaste ningún artículo
Buscalo arriba y elegilo de los resultados para empezar a seguir su precio.
Proveedor
Artículo
Precio actual
Agregado
RPA Regex Tester (Python Engine)
Área Desarrollo — Validador de expresiones regulares con
ejecución nativa en Python.
Resultados de la Extracción
Los resultados de la búsqueda de coincidencias y grupos se listarán aquí al ejecutar la
prueba.
OCR Sandbox (Coordenadas para
Rocketbot)
Área Desarrollo — Sube una imagen de factura y dibuja el
recuadro para extraer sus coordenadas.
1. Subir Imagen del Documento
2. Dibuja el Recuadro sobre la Imagen (Arrastra el ratón)
3. Coordenadas Calculadas (Copia y pega en
Rocketbot)
Parámetro
Absoluto (Píxeles)
Relativo (%)
X (Inicio Izquierda)
0 px
0 %
Y (Inicio Superior)
0 px
0 %
Ancho (Width)
0 px
0 %
Alto (Height)
0 px
0 %
SQL Server Profiler & Telemetría
RPA
Área Desarrollo — Rendimiento de base de datos en tiempo real
de los bots.
Salud de la BD
Estado Base
ONLINE
Tamaño en Disco
0 MB
Motor SQL
SQL Server Express
Bloqueos de Tablas Activos (Deadlocks)
Session ID
Tipo Recurso
Modo Solicitado
Estado del Lock
No hay
bloqueos activos en las tablas actualmente
Top 5 Consultas más lentas ejecutadas por Robots
CPU Promedio (ms)
Cantidad Ejecuciones
Sentencia SQL
Conversor de Selectores
(XPath <-> CSS)
Área Desarrollo — Traducción rápida y optimización de
selectores para automatizaciones RPA.
Traductor Bidireccional de Selectores
El conversor traduce en tiempo real. Modifica cualquiera de los dos lados para ver la
traducción equivalente.
Biblioteca de Snippets Python
para Rocketbot
Área Desarrollo — Plantillas de código base homologadas para
estandarizar el desarrollo de bots.
Agregar Nuevo Snippet a la Biblioteca
Selecciona un bloque de código útil
Conexión Segura a SQL Server (pyodbc)
Establece conexión a base de datos usando el driver recomendado de forma segura con
reintentos.
Captura de Pantalla en Excepciones (Pillow /
OpenCV)
Captura
la pantalla del servidor del bot cuando se produce un error crítico y la guarda con
un timestamp.
import os
from datetime import datetime
from PIL import ImageGrab
def guardar_captura_error(modulo_nombre):
folder = "errores_capturas"
os.makedirs(folder, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
path = os.path.join(folder, f"error_{modulo_nombre}_{timestamp}.png")
try:
screenshot = ImageGrab.grab()
screenshot.save(path)
print(f"[AUDIT] Captura de pantalla guardada en: {path}")
return path
except Exception as e:
print(f"[ERROR] No se pudo guardar la captura: {e}")
return None
Sanitización y Limpieza de Cadenas (Regex)
Limpia
strings eliminando acentos, caracteres especiales, saltos de línea y espacios dobles
para procesar texto limpio.
import re
import unicodedata
def limpiar_texto(texto):
if not texto:
return ""
# Quitar acentos
texto = ''.join(c for c in unicodedata.normalize('NFD', texto) if unicodedata.category(c) != 'Mn')
# Reemplazar múltiples espacios o tabulaciones
texto = re.sub(r'\s+', ' ', texto)
# Dejar solo caracteres alfanuméricos y puntuación básica
texto = re.sub(r'[^a-zA-Z0-9\s.,_\-@]', '', texto)
return texto.strip()
Envío de Emails SMTP con Adjuntos (Office
365)
Configura el servidor SMTP corporativo para enviar correos transaccionales y de
alerta con archivos adjuntos.
import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
def enviar_correo_con_adjunto(destinatario, asunto, cuerpo, archivo_ruta=None):
remitente = "[email protected]"
password = "PASSWORD_SEGURA" # Obtener desde el Vault de Credenciales
msg = MIMEMultipart()
msg['From'] = remitente
msg['To'] = destinatario
msg['Subject'] = asunto
msg.attach(MIMEText(cuerpo, 'plain'))
if archivo_ruta and os.path.exists(archivo_ruta):
try:
with open(archivo_ruta, "rb") as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f"attachment; filename= {os.path.basename(archivo_ruta)}")
msg.attach(part)
except Exception as e:
print(f"[ERROR] No se pudo adjuntar el archivo: {e}")
try:
server = smtplib.SMTP('smtp.office365.com', 587)
server.starttls()
server.login(remitente, password)
server.sendmail(remitente, destinatario, msg.as_string())
server.quit()
print("[SUCCESS] Correo enviado exitosamente")
return True
except Exception as e:
print(f"[ERROR] Fallo el envio del correo: {e}")
return False
Reintentos en peticiones HTTP API
(Backoff Exponencial)
Gestiona
consultas a APIs externas con tolerancia a fallos temporales de red y esperas
exponenciales de seguridad.
import time
import requests
def peticion_api_con_reintentos(url, metodo='GET', payload=None, headers=None, max_reintentos=3):
reintento = 0
espera = 2 # Segundos de espera inicial
while reintento < max_reintentos:
try:
if metodo.upper() == 'POST':
response = requests.post(url, json=payload, headers=headers, timeout=10)
else:
response = requests.get(url, headers=headers, timeout=10)
if response.status_code == 200:
return response.json()
else:
print(f"[WARNING] API devolvio status {response.status_code}. Reintentando...")
except requests.exceptions.RequestException as e:
print(f"[WARNING] Fallo de red: {e}. Reintentando...")
reintento += 1
time.sleep(espera)
espera *= 2 # Backoff exponencial (2s -> 4s -> 8s)
print("[ERROR] Se supero el limite de reintentos para la peticion API")
return None
Inserción en Lotes (Batch Bulk Insert) a
SQL Server (pyodbc)
Inserta
miles de registros en un solo lote rápido (executemany) reduciendo la sobrecarga de
consultas y latencia.
import pyodbc
def insertar_lote_clientes(lista_clientes):
conn_str = (
"DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=localhost\\SQLEXPRESS;"
"DATABASE=HomeIDSDB;"
"Trusted_Connection=yes;"
)
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
query = """
INSERT INTO Clientes (nombre, empresa, email, referente_tecnico, fase_kanban)
VALUES (?, ?, ?, ?, 'Propuesta');
"""
# lista_clientes es una lista de tuplas correspondientes al query:
# Ejemplo: [("Juan Perez", "Garino Hnos.", "[email protected]", "Lider TI"), ...]
try:
cursor.executemany(query, lista_clientes)
conn.commit()
print(f"[SUCCESS] Se insertaron {len(lista_clientes)} registros en un solo lote")
return True
except Exception as e:
conn.rollback()
print(f"[ERROR] Error en insercion masiva: {e}")
return False
finally:
conn.close()
Control de Robots y Sistema
Matar Procesos Colgados (Excel, Chrome,
etc.)
Mata de
forma forzada procesos colgados en el servidor de automatización antes de iniciar la
ejecución.
import os
import subprocess
def forzar_cierre_aplicacion(nombre_proceso):
# Ejemplo nombre_proceso: "excel.exe", "chrome.exe"
try:
subprocess.run(f"taskkill /f /im {nombre_proceso}", shell=True, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
print(f"[SUCCESS] Se cerraron todas las instancias de {nombre_proceso}")
return True
except subprocess.CalledProcessError:
# Ocurre si el proceso no estaba ejecutandose
print(f"[INFO] No habia instancias activas de {nombre_proceso}")
return False
Detención Controlada del Robot con
Logging
Detiene
la ejecución del bot de forma limpia informando la causa del error en el log
general.
import sys
def detener_robot_por_error(motivo_critico):
log_msg = f"[CRITICAL_ERROR] {motivo_critico}. Deteniendo ejecucion del robot..."
print(log_msg)
# Aqui se puede invocar una alerta por correo o webhook antes de salir
# enviar_alerta_teams(log_msg)
sys.exit(1)
Prevenir Doble Ejecución (Single Instance
Lock)
Garantiza que el bot no se ejecute si ya existe otra instancia activa corriendo en
el servidor.
import sys
import fcntl # Para Linux/macOS o usar win32event en Windows
# Version robusta compatible con Windows
if sys.platform == 'win32':
import win32event
import win32api
import winerror
# Crear un Mutex global usando el nombre único de tu robot
mutex_name = "Global\\RobotIDS_DescargaCFE_Mutex"
hmutex = win32event.CreateMutex(None, 1, mutex_name)
if win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS:
print("[WARNING] El robot ya se encuentra en ejecucion. Saliendo...")
sys.exit(0)
else:
# Version compatible con entornos Linux (Colas de procesamiento)
f = open('/tmp/robot_cfee.lock', 'w')
try:
fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
print("[WARNING] El robot ya se encuentra en ejecucion. Saliendo...")
sys.exit(0)
Telemetría de Recursos del Servidor
(CPU/RAM)
Monitorea y loguea el uso actual de recursos del servidor para auditorías de
rendimiento.
import psutil
def obtener_uso_recursos():
cpu = psutil.cpu_percent(interval=1)
ram = psutil.virtual_memory().percent
disco = psutil.disk_usage('C:\\').percent
print(f"[TELEMETRIA] CPU: {cpu}% | RAM: {ram}% | Disco C: {disco}%")
return {"cpu": cpu, "ram": ram, "disco": disco}
Excel y Manipulación de Archivos
Leer Celdas y Rangos de Excel
(openpyxl)
Abre una
planilla Excel en modo lectura rápida de datos (read-only) y extrae valores.
import openpyxl
def leer_datos_columna(ruta_excel, columna_letra="A"):
wb = openpyxl.load_workbook(ruta_excel, read_only=True, data_only=True)
sheet = wb.active
valores = []
for row in range(2, sheet.max_row + 1):
celda_valor = sheet[f"{columna_letra}{row}"].value
if celda_valor is not None:
valores.append(celda_valor)
wb.close()
return valores
Escribir y Aplicar Formatos a Excel
Escribe
resultados de procesamiento en una celda y aplica negrita y colores.
Utiliza
el motor nativo de Excel en Windows para exportar una hoja o libro completo a PDF.
import os
import win32com.client
def excel_a_pdf(ruta_excel, ruta_pdf):
excel = win32com.client.DispatchEx("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False
try:
# Abrir el libro
wb = excel.Workbooks.Open(os.path.abspath(ruta_excel))
# Guardar como PDF (Tipo de archivo 57 es PDF)
wb.ExportAsFixedFormat(0, os.path.abspath(ruta_pdf))
wb.Close(SaveChanges=False)
print("[SUCCESS] PDF generado de forma nativa")
return True
except Exception as e:
print(f"[ERROR] Error al convertir: {e}")
return False
finally:
excel.Quit()
Buscar Última Fila con Datos en
Columna
Busca la
última fila que contiene un valor no nulo en una columna específica para saber dónde
seguir insertando.
import openpyxl
def buscar_ultima_fila_con_datos(ruta_excel, columna_letra="A"):
wb = openpyxl.load_workbook(ruta_excel, read_only=True)
sheet = wb.active
# Empezar desde el final e ir hacia arriba
for row in range(sheet.max_row, 0, -1):
if sheet[f"{columna_letra}{row}"].value is not None:
wb.close()
return row
wb.close()
return 0 # Si la columna esta vacia
Dividir un Excel Grande en Fragmentos
Pequeños (Splitting)
Toma un
archivo Excel masivo y lo divide en lotes de filas menores para procesamiento en
paralelo.
import openpyxl
def dividir_excel(ruta_excel_grande, max_filas_por_lote=1000):
wb_orig = openpyxl.load_workbook(ruta_excel_grande)
sheet_orig = wb_orig.active
cabecera = [cell.value for cell in sheet_orig[1]]
lote = 1
nueva_fila_idx = 1
wb_nuevo = None
for row_idx in range(2, sheet_orig.max_row + 1):
if (row_idx - 2) % max_filas_por_lote == 0:
if wb_nuevo:
wb_nuevo.save(f"lote_{lote}.xlsx")
wb_nuevo.close()
lote += 1
wb_nuevo = openpyxl.Workbook()
sheet_nuevo = wb_nuevo.active
sheet_nuevo.append(cabecera)
nueva_fila_idx = 2
fila_valores = [cell.value for cell in sheet_orig[row_idx]]
sheet_nuevo.append(fila_valores)
nueva_fila_idx += 1
if wb_nuevo:
wb_nuevo.save(f"lote_{lote}.xlsx")
wb_nuevo.close()
wb_orig.close()
print(f"[SUCCESS] Excel dividido en {lote} archivos.")
Servicios de Correo (Mail / Outlook)
Leer Bandeja de Entrada desde Outlook Local
(win32com)
Lee
correos no leídos en la cuenta de Outlook local activa en el servidor del bot.
import win32com.client
def leer_correos_outlook():
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
# Carpeta 6 es Bandeja de Entrada (Inbox)
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
# Filtrar no leidos
no_leidos = messages.Restrict("[Unread] = true")
for item in no_leidos:
print(f"De: {item.SenderName} | Asunto: {item.Subject}")
# Si queremos marcarlos como leidos
# item.UnRead = False
# item.Save()
Descargar Adjuntos de Correos por
Asunto
Busca un
correo no leído por asunto específico y descarga todos sus archivos adjuntos.
import os
import win32com.client
def descargar_adjuntos_outlook(asunto_buscar, carpeta_guardado):
os.makedirs(carpeta_guardado, exist_ok=True)
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items.Restrict(f"[Subject] = '{asunto_buscar}'")
for msg in messages:
if msg.Attachments.Count > 0:
for att in msg.Attachments:
ruta_final = os.path.join(os.path.abspath(carpeta_guardado), att.FileName)
att.SaveAsFile(ruta_final)
print(f"[SUCCESS] Adjunto guardado: {ruta_final}")
Envío de Reporte en Email HTML Estético
Envía un
reporte corporativo formal maquetado con una tabla HTML estilizada para una correcta
visualización.
El bot de cobranzas ha finalizado su ejecucion con los siguientes datos:
Métrica
Cantidad
Procesados con éxito
{total_procesados}
Errores reportados
{total_errores}
Este es un mensaje automatico. No responda a este correo.
"""
msg.attach(MIMEText(cuerpo_html, 'html'))
# Logica de servidor y envio
# server = smtplib.SMTP('smtp.office365.com', 587) ...
Leer Correos vía IMAP Seguro
(Gmail/Office365)
Se
conecta a un servidor de correo corporativo mediante IMAP TLS/SSL para auditar
mensajes.
import imaplib
import email
def leer_correos_imap():
mail = imaplib.IMAP4_SSL('imap.secureserver.net') # Servidor IMAP
mail.login('[email protected]', 'PASSWORD_SEGURA')
mail.select('inbox')
# Buscar correos no leidos
status, data = mail.search(None, 'UNSEEN')
ids = data[0].split()
for num in ids:
status, data = mail.fetch(num, '(RFC822)')
msg = email.message_from_bytes(data[0][1])
print(f"Asunto: {msg['Subject']} | De: {msg['From']}")
mail.logout()
🇺🇾 Validaciones de Datos y Uruguay RUT/CI
Validar Sintaxis de Correo Electrónico
(Regex)
Valida
si un string posee una sintaxis e-mail estructurada válida antes de enviarlo.
import re
def es_correo_valido(email):
# Regex estandar del W3C para emails
pattern = r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$"
return bool(re.match(pattern, email))
🇺🇾 Validar Dígito Verificador de RUT de Uruguay
Valida
matemáticamente que el número de RUT uruguayo ingresado sea válido según el módulo
11 de la DGI.
def validar_rut_uruguay(rut):
# Debe ser de 12 digitos
rut = str(rut).strip().replace("-", "").replace(".", "")
if len(rut) != 12 or not rut.isdigit():
return False
# Verificar los dos primeros digitos (departamento/rango)
if int(rut[:2]) < 1 or int(rut[:2]) > 22:
# Los RUTs juridicos en Uruguay inician en el rango 01-21
pass
factores = [4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
suma = sum(int(digito) * factor for digito, factor in zip(rut[:11], factores))
resto = suma % 11
digito_verificador = 11 - resto
if digito_verificador == 11:
dv_esperado = 0
elif digito_verificador == 10:
dv_esperado = 1
else:
dv_esperado = digito_verificador
return int(rut[11]) == dv_esperado
🇺🇾 Validar Dígito Verificador de Cédula (CI) de Uruguay
Valida
si una Cédula de Identidad de Uruguay posee un dígito verificador matemático
correcto.
def validar_ci_uruguay(ci):
# Limpiar
ci = str(ci).strip().replace(".", "").replace("-", "")
if len(ci) < 7 or len(ci) > 8 or not ci.isdigit():
return False
# Si tiene 7 digitos, rellenar con un 0 a la izquierda
if len(ci) == 7:
ci = "0" + ci
# Multiplicadores oficiales del digito de la CI
factores = [2, 9, 8, 7, 6, 3, 4]
suma = sum(int(digito) * factor for digito, factor in zip(ci[:7], factores))
resto = suma % 10
digito_verificador = (10 - resto) % 10
return int(ci[7]) == digito_verificador
Validar Rango y Formato de Fechas
(DD/MM/AAAA)
Valida
si un string de fecha posee el formato esperado y si representa un día real en el
calendario.
Limpia
cadenas con signos monetarios o formato de texto y extrae el float matemático puro
(ej: "UYU $ 1.250,50" -> 1250.50).
import re
def extraer_float_moneda(texto_moneda):
if not texto_moneda:
return 0.0
# Eliminar espacios y signos de moneda
limpio = re.sub(r'[^\d,.-]', '', texto_moneda)
# Manejar separadores del formato español/uruguayo (puntos para mil, coma para decimal)
if ',' in limpio and '.' in limpio:
limpio = limpio.replace('.', '') # Quitar punto de mil
limpio = limpio.replace(',', '.') # Cambiar coma a punto decimal
elif ',' in limpio:
limpio = limpio.replace(',', '.') # Cambiar coma decimal a punto decimal
try:
return float(limpio)
except ValueError:
return 0.0
Red y Utilidades de Integración
Descarga Segura de Archivos (con Timeout y
Chunking)
Descarga
un archivo binario (como PDFs o planillas Excel) de forma fluida por trozos evitando
agotar memoria.
import requests
def descargar_archivo_portal(url, destino_ruta):
try:
# Timeout de 15 segundos para evitar colgar al robot
with requests.get(url, stream=True, timeout=15) as r:
r.raise_for_status()
with open(destino_ruta, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
print(f"[SUCCESS] Descarga completada en: {destino_ruta}")
return True
except Exception as e:
print(f"[ERROR] No se pudo descargar: {e}")
return False
Codificar y Decodificar Archivos a Base64
Codifica
un archivo local a string Base64 para transportarlo en payloads de APIs REST de
orígenes cruzados.
import base64
def archivo_a_base64(ruta_archivo):
with open(ruta_archivo, "rb") as f:
# Retorna el string base64 codificado en utf-8
return base64.b64encode(f.read()).decode('utf-8')
def base64_a_archivo(string_base64, ruta_destino):
with open(ruta_destino, "wb") as f:
f.write(base64.b64decode(string_base64))
print(f"[SUCCESS] Archivo reconstruido en: {ruta_destino}")
Snippets Compartidos por el Equipo
Descarga de Recursos de
Ingeniería
Área Desarrollo — Drivers, instaladores oficiales y
componentes necesarios para configurar entornos de bots.
Herramientas avanzadas del entorno de desarrollo local de IDS
Operación realizada con éxito
Uy, algo falló
Encontramos un problema inesperado en HomeIDS. Podés seguir intentando,
pero si el problema sigue, contactate directo con soporte -- contá qué estabas haciendo cuando pasó
(en qué pantalla, qué botón tocaste), así lo resolvemos más rápido.
En esta etapa te pide logear con tu cuenta de IDS para mostrar dónde en un futuro
estará el login corporativo. 💡 Tip: Logueate con admin para abrir
el panel administrativo.
Análisis Predictivo del
Lead
Evaluación del prospecto captado en HubSpot CRM y sugerencia de pitch comercial personalizada generada
por Gemini AI.
Probabilidad
de Conversión
75%
Analizando lead con Inteligencia Artificial...
Asistente Idesito
RPA e IA propias
Hola. Puedo buscar módulos, resumir una licitación o armarte el borrador de
un PDD. ¿Por dónde empezamos?
DATA
LINEAGE
🔍 Trazabilidad y
Origen de Datos SQL Server
●
SQL Server (HomeIDSDB)
Desglose transparente del cálculo de ROI
($8.75/hr), horas elaboradas en el CRM y fases de proyectos.
Tareas Elaboradas (Done)
0
de 0 tareas registradas
Horas Tareas CRM
0.0 h
Invertidas en tareas cerradas
Tarifa Hora Aplicada
$8.75 USD
Costo hora desarrollador
Retorno Total (ROI)
$0 USD
= Horas Ahorradas × $8.75
ID
Tarea Elaborada en CRM
Cliente / Proyecto
Desarrollador
Estado
Horas Reales
Horas Ahorradas
ROI Generado ($)
Origen SQL
Trazabilidad de Estados: Las fases de
los proyectos se extraen directamente del campo fase_kanban de la tabla
Clientes y se cruzan con Proyectos y TareasSprint en SQL
Server.
Cliente
Proyecto
Fase Actual (SQL)
Tareas Totales
Tareas Done
Horas Invertidas
ROI Generado ($8.75/h)
Origen de Datos
Tablas SQL Consultadas
Reglas de Cálculo & Auditoría
1. Horas Ahorradas: Computadas sumando las horas de todas las tareas
elaboradas con estado Done en el CRM.