
Hace casi cinco años escribimos sobre ser verdaderamente full-stack: diseñar y construir mecánica, electrónica, firmware, backend, modelos ML, herramientas y apps móviles y web internamente. Todo eso sigue siendo cierto. Pero la stack ha avanzado, y una cosa ha cambiado el día a día de la ingeniería aquí más que cualquier otra cosa desde entonces: ahora construimos nuestros propios agentes de IA para ayudar a construir y operar Minut.
Así que aquí está la edición 2026.
Minut es la capa de inteligencia para la gestión proactiva de propiedades. Ayudamos a operadores de alquileres a corto plazo, aparthoteles, residencias estudiantiles y unidades multifamiliares a anticiparse a problemas como el ruido, el humo y el moho con un pequeño sensor respetuoso con la privacidad y una plataforma que convierte insights en acciones que mejoran la experiencia del huésped y los flujos de trabajo del gestor. Hay sensores Minut en más de 100 países. (Todavía esperamos esa introducción en la Antártida, por cierto.)
Esto es lo que usamos en Minut en 2026:
Trabajar en un equipo verdaderamente full-stack significa aprender de personas con una gran variedad de habilidades. Seguimos teniendo discusiones técnicas planificadas y espontáneas sobre arquitectura, herramientas, experiencia de desarrollador y, cada vez más, sobre hasta dónde podemos llevar a los agentes para que se ocupen de las partes tediosas por nosotros.
Somos un equipo compacto de ingenieros que trabaja estrechamente con diseñadores, PMs y stakeholders. Los ingenieros participan temprano en el acotamiento del problema, y todavía preferimos publicar varias veces al día, automáticamente, una vez que la revisión de código pasa.
.png)
Nuestro panel web en web.minut.com es una single-page app construida con React 19 y TypeScript, empaquetada con Vite (retiramos Gatsby). El estado del servidor se maneja con TanStack Query sobre hooks de API completamente tipados generados a partir de nuestro esquema OpenAPI, de modo que un cambio en el contrato del backend aparece como un error de tipo en el frontend antes de que se publique. Construimos nuestro propio design system, apodado meatball-ui, que ahora es lo primero que se usa al construir UI, estilizado con styled-components. Las pruebas se ejecutan en Vitest; Prettier, ESLint y una comprobación de código muerto mantienen todo ordenado.
La app web, y las apps móviles, hablan con la misma API HTTP RESTful versionada contra la que se integran nuestros clientes Pro y Enterprise. El backend es una gran base de código TypeScript (modo strict, completamente) que corre en Node.js y Express. La API es schema-first: la definimos en TypeSpec, la compilamos a OpenAPI, generamos tipos a partir de ella y validamos cada petición contra el esquema en tiempo de ejecución. Está versionada de v1 hasta v8, lo que significa cinco años de evolución del contrato sin romper a los clientes que dependen de él. No usamos GraphQL; solo una API REST en la que hemos invertido mucho.
Nuestros sensores no hablan HTTP. Mantienen conexiones TCP persistentes sobre TLS, intercambiando Protocol Buffers. Así que nuestro backend en realidad corre como dos flotas: una más pequeña que sirve la API REST, y una más grande que mantiene decenas de miles de conexiones de dispositivos en vivo a la vez. Mantener tantos dispositivos alimentados por batería conectados, sincronizados y baratos de comunicar es uno de los problemas más interesantes en los que trabajamos.
Detrás de los sensores hay una plataforma de datos que ha madurado mucho. Ejecutamos persistencia poliglota: MongoDB como nuestra base de datos operativa principal, una capa relacional en AWS RDS, Redis para cache y rate-limiting, OpenSearch para logs de dispositivos y auditoría, y S3 para objetos. Las lecturas brutas por minuto de los sensores son enormes, así que construimos Granite, un motor de series temporales interno que mantiene una ventana caliente en SQL y pone todo lo demás en almacenamiento frío más económico.
Para analytics ejecutamos un warehouse PostgreSQL que unifica un clon del backend, el stream de eventos, facturación y cientos de tablas de analytics de producto en un solo lugar que podemos consultar.
No divulgamos la escala, pero mantenerse al ritmo del crecimiento es uno de los desafíos de ingeniería más emocionantes en los que trabajamos continuamente. Un bug publicado descuidadamente llega a muchos hogares, por eso nos tomamos las pruebas y la observabilidad en serio (New Relic, Rollbar, Grafana, Prometheus, OpenSearch), y por eso nuestro CI/CD está totalmente automatizado: GitHub Actions con runners self-hosted construye y prueba cada cambio, sube una imagen a nuestro registro Docker, despliega a Kubernetes, y publica el resultado en Slack y anota Grafana. (Jenkins, nuestro caballo de batalla de 2021, está mayormente retirado ahora.) Toda nuestra infraestructura está en Terraform.
Esta parte no ha cambiado, porque es el punto central. La monitorización que respeta la privacidad es simple en principio y difícil en la práctica, y diseñamos una forma novedosa de identificar eventos específicos en sensores con batería sin comprometer la privacidad del huésped (patente EE. UU. US20200143823A1).
Los datos brutos se procesan directamente en el sensor y nunca se comparten con Minut ni con nadie más. Cuando el dispositivo detecta un evento potencialmente crítico, por ejemplo rotura de vidrio, un pico brusco de temperatura o un aumento sostenido del ruido, envía una compacta huella (fingerprint) de ese evento a la nube, donde modelos más potentes lo examinan antes de que llegue a un usuario. El sensor no tiene cámara y no graba audio. Nunca lo ha hecho, y nunca lo hará.
Sí, esto todavía significa ejecutar modelos ML entrenados en un microcontrolador con 96 MHz y menos de 256 kB de RAM, con batería, hasta un año. Y el rango de cosas que podemos detectar en el dispositivo ha crecido: humo de cigarrillo, estimación de multitudes y ocupación, riesgo de moho y los sonidos de otras alarmas. Lee más sobre nuestro enfoque de privacidad.
Detectar un problema es la mitad del trabajo. La otra mitad es ayudar a los operadores a actuar sin estar de guardia a las 3 a.m., y ahí es cada vez más donde la IA aparece en el producto.
Somos pragmáticos sobre qué modelos usamos y dónde. Nuestras funciones de IA orientadas al cliente corren en OpenAI (y OpenRouter como gateway secundario), gestionadas mediante un sistema de prompts versionado y respaldado en una base de datos para que podamos iterar en los prompts como iteramos en el código. Algunas de las cosas que potencia:
La IA ejecuta toda nuestra canalización de localización: las traducciones viven como YAML en su propio repo, y cada push dispara una GitHub Action que auto-traduce a siete idiomas (japonés es el más reciente) y distribuye los resultados al web, backend, storefront, iOS y Android.

Este es el cambio más grande desde 2021, y el que más nos entusiasma. Si OpenAI alimenta el producto, Claude Code de Anthropic alimenta nuestra ingeniería y nos hemos volcado en ello, no como una ventana de chat lateral sino como infraestructura real tejida en nuestra forma de trabajar.
Cada pull request es revisada por IA antes de que un humano la vea. Un bot ejecuta varios CLIs de agentes de código en paralelo en runners self-hosted haciendo pasadas separadas para bugs, seguridad, convenciones y requisitos, más una pasada de consolidación con una "guía del revisor" legible por humanos sobre el cambio. Recupera el ticket de Jira relevante para contexto, publica comentarios inline reales en las líneas exactas, y una vez que un humano aprueba, puede aprobar como propietario de código.
Otro conjunto de agentes monitorea los lanzamientos y hace continuamente dos cosas: primero, actualizar la documentación interna y externa para asegurar que nuestro centro de soporte y el equipo siempre estén al día. Y segundo, buscar errores y correcciones comunes que la IA pueda aprender para mejorar el desarrollo futuro.
Levantar una nueva herramienta interna es un comando. Nuestra plataforma de apps internas (MIAS) provisiona una app de producción completa de extremo a extremo desde un solo comando: repo, base de datos, auth, hosting, DNS, secrets, entrada al registro. Las nuevas apps son nativas-agent desde su nacimiento: el scaffolder inserta el contexto y las skills que Claude necesita, así Claude te entrevista sobre lo que estás construyendo y luego escribe la primera funcionalidad por sí mismo. Cada app hereda inicio de sesión compartido, Slack y correo gratis, además de un widget de feedback que crea un ticket directamente para el propietario sin triage humano intermedio.
La misma filosofía atraviesa nuestras operaciones. Mantenemos una biblioteca compartida de skills y subagentes Claude Code que cualquier ingeniero instala localmente para iniciar un ticket, dividirlo entre plataformas, auto-revisarse, depurar un issue de Sentry o desplegar.
Tenemos un flujo de trabajo que lleva un error de producción hasta un PR borrador probado por sí mismo, impulsando un CLI construido específicamente para que un agente lo consuma.
Nada de esto reemplaza a los ingenieros. Quita el trabajo rutinario a su alrededor como el boilerplate, la revisión de primera pasada, el provisioning, la arqueología de "por qué pasa este error" para que las decisiones interesantes reciban más de nuestra atención. Si construir y vivir dentro de este tipo de setup te parece divertido, encajarás perfectamente.
Las apps móviles de Minut siguen desarrollándose de forma nativa tanto en iOS como en Android. Lo que ha cambiado es que ahora estamos firmemente en la era moderna y declarativa: iOS es SwiftUI-first y Android es Jetpack Compose-first en Kotlin. Protocol Buffers siguen siendo la columna vertebral de cómo ambas apps hablan con los dispositivos, reflejando el firmware.
Seguimos abiertos al código compartido y la velocidad de desarrollo, pero para nosotros lo nativo sigue siendo la base correcta.
Desde el principio, hemos diseñado, prototipado y construido nuestra propia mecánica, electrónica y firmware internamente. Elegimos los mejores componentes y los integramos con nuestra pila de firmware en C para construir un sistema que respete la privacidad de los huéspedes por diseño.
Jigs de hardware personalizados y software, construidos internamente, recopilan y suben estadísticas sobre cada unidad directamente desde la línea de fabricación, para que podamos aumentar continuamente la calidad del hardware. El firmware se actualiza por aire (OTA) después de que una unidad se instala en la casa de alguien; a lo largo de los años esas actualizaciones han mejorado el rendimiento de la batería en más del 100% y añadido características que ni siquiera imaginamos en el lanzamiento. También hemos construido un Remote Debug Service basado en navegador para poder comunicarnos de forma segura con un dispositivo en el campo para recuperación y diagnóstico. Todo esto se habilita gracias a un laboratorio de hardware bien equipado en nuestra oficina del centro de Malmö.
.png)
Para gestionar sensores en más de 100 países, hemos construido una rigurosa suite de pruebas y automatización para minimizar el riesgo de enviar algo que interrumpa un sensor en el que depende el negocio de un cliente.
Cualquier desarrollador puede levantar un entorno completo en su máquina local (o remota), con herramientas para emular usuarios, apps y sensores de hardware. Nuestra suite de pruebas de escenarios de caja negra ejecuta el backend real en Docker contra versiones falsas de cada tercero con el que integramos para que podamos probar flujos completos de forma determinista. Y nuestra flota de prueba interna de más de 100 sensores físicos está continuamente expuesta a diferentes entornos, versiones de firmware, configuraciones de software y routers.
Las herramientas y la automatización son una mitad; los flujos de trabajo son la otra. Cada equipo utiliza la revisión de código rigurosamente (ahora con un primer pase de IA), hace pair programming con frecuencia y despliega continuamente en cada parte de la stack.
Como ingeniero en Minut puedes trabajar en todo, desde la electrónica, al firmware que ejecuta ML en un microcontrolador diminuto, a un gran backend TypeScript, a animaciones en una app nativa, hasta los agentes que construyen y revisan todo ello. Somos una organización verdaderamente full-stack, nos encanta lo que hacemos, y buscamos personas con la misma mentalidad para unirse a nuestro creciente equipo de ingeniería.
Si eso te suena, consulta nuestras posiciones abiertas.