La tarea
SHIFT>_CRM es un sistema CRM para empresas de cualquier sector con una instalación independiente para cada cliente.
Los CRM universales sirven un poco a todos, pero a nadie por completo. Están pensados para una empresa «media», así que cada negocio tiene que adaptar sus procesos a una lógica ajena, cargar con funciones que no necesita y prescindir de las que sí necesita, mientras los datos de todos los clientes se guardan en un único proveedor. El objetivo del proyecto era crear un CRM que funcione exactamente como funciona el negocio de cada empresa. Cada empresa recibe su propia copia independiente en un servidor aparte, con su propia base de datos y su propia dirección, configurada en torno a sus procesos: empleados, permisos de acceso, etapas del trabajo con clientes, catálogos, campos personalizados e incluso los términos a los que está acostumbrado el equipo. Así, la empresa obtiene un sistema con el que ningún gran CRM universal puede competir, porque ninguno se creó para ella.
En el CRM se lleva todo el trabajo con los clientes: una ficha de cliente con varias personas de contacto, comentarios y archivos, el cambio de estado directamente en la ficha, pagos en distintas divisas, un embudo de ventas, recordatorios y notificaciones. Las estadísticas muestran el panorama tanto por clientes como por cada empleado: operaciones, conversión, pagos, llamadas y tareas vencidas. Las solicitudes del sitio web y de Facebook Lead Ads se convierten automáticamente en nuevos clientes, y las solicitudes repetidas se reconocen. El teléfono integrado permite hacer y recibir llamadas directamente en el navegador, y todas las conversaciones quedan en el historial del cliente. Para comunicarse dentro del equipo hay un chat con conversaciones privadas, mensajes de voz, respuestas a mensajes y entrega instantánea.
Una parte específica del sistema es la inteligencia artificial. El asistente de IA responde a las preguntas de los comerciales sobre la base de datos, por ejemplo a quién conviene llamar hoy, y solo ve los datos a los que el empleado tiene acceso, sin cambiar nada por su cuenta. La empresa puede usar su propio modelo Qwen en su servidor o conectar ChatGPT, Claude, Gemini y DeepSeek mediante una clave API; el administrador elige el servicio principal y decide quién puede usar cada uno. La descripción de la empresa para la IA puede cargarse desde un archivo Word o PDF, y en el modo de aprendizaje la IA va reuniendo por sí misma notas generales sobre la empresa sin guardar datos personales de los clientes. Cada noche la IA revisa los cambios de los clientes y, para las seis de la mañana, prepara un plan del día para cada empleado. Los comentarios pueden dictarse por voz y se convierten en texto automáticamente.
Se ha prestado especial atención a la seguridad. Las contraseñas se guardan como hashes Argon2id, las sesiones en cookies protegidas, y está disponible la autenticación de dos factores con una aplicación de autenticación. Los permisos los comprueba el servidor, los datos están protegidos además con seguridad a nivel de fila en la base de datos y todas las acciones se registran en un registro de auditoría que no puede modificarse. Hay cierre de sesión automático por inactividad y cierre de sesión diario de todos los empleados a una hora fija, las claves de servicios externos se cifran, las copias de seguridad se crean automáticamente y también se cifran, y el sitio funciona solo con HTTPS. La interfaz está traducida a 11 idiomas, con varios temas de color y una versión de demostración con una empresa ficticia para presentaciones a clientes.
El proyecto está escrito íntegramente en TypeScript. La interfaz está construida con React 19 y React Router sobre un sistema de diseño propio, y el servidor con Node.js y Fastify sobre una base de datos PostgreSQL, con consultas mediante Kysely y validación de datos con Zod. Las actualizaciones en tiempo real llegan a través de Server-Sent Events y del mecanismo de notificaciones de PostgreSQL, y la telefonía funciona con WebRTC y JsSIP y se ha probado con Asterisk. Para la IA se utilizan la API de OpenAI, el SDK de Anthropic y Ollama. El sistema se despliega en un VPS con Ubuntu mediante Docker Compose, y Caddy emite automáticamente los certificados HTTPS. Los escenarios clave están cubiertos por pruebas automatizadas.
El resultado es un producto al que el cliente no tiene que adaptarse: un CRM con telefonía, chat interno y asistente de IA que funciona en el propio servidor del cliente y, desde el primer día, está organizado como su negocio.








