CRM + Telegram – Hoja de Ruta | Profe Diego · CEOGET
$ 0 – 10 min

¿Qué están construyendo?

// El problema → ¿Qué es un CRM? → Los actores → El ciclo de vida de un lead

💭 Para arrancar, piensen en esto
¿Alguna vez alguien preguntó por un producto o servicio… y la empresa nunca lo volvió a contactar? ¿O un asesor perdió el hilo de con quién había hablado? Ese cliente potencial se llama lead. Y gestionar leads mal equivale a perder dinero.
El problema real

Sin un sistema, los contactos de posibles clientes viven en hojas de cálculo dispersas, grupos de WhatsApp o simplemente en la memoria del asesor. Cuando ese asesor sale de la empresa, toda la información se va con él.

Su aplicación centraliza esos contactos y controla en qué punto del proceso de venta está cada uno.

¿Qué es un CRM?

Customer Relationship Management — Gestión de la relación con el cliente.

  • Centraliza la información de leads (posibles clientes)
  • Controla el estado del proceso con cada uno
  • Permite asignar leads a asesores responsables
  • Registra notas e interacciones del proceso

Herramientas reales: HubSpot, Salesforce, Zoho CRM. La suya es la versión en consola.

¿Quiénes usan la app?
  • Asesor comercial: registra leads, les hace seguimiento, actualiza estados y deja notas de cada interacción.
  • Administrador: ve todos los leads del sistema, puede asignarlos o reasignarlos, y elimina los no válidos.

El asesor solo ve sus leads. El admin ve los de todos.

Ciclo de vida de un lead (el embudo de ventas)

Un lead no entra y desaparece. Avanza (o no) por estados:

📥 Nuevo
📞 Contactado
🤝 En negociación
✅ Ganado
O también puede terminar en:
✗ Perdido

Pregunta: ¿quién mueve el lead de un estado al otro, el asesor, el admin, o ambos?

✏️ Actividad X — hablen en equipo (3 min)
Sin abrir el computador: ¿cuáles son las 3 acciones mínimas que debe poder hacer un asesor comercial? ¿Y las 3 acciones mínimas que debe poder hacer un administrador?
Pista: piensen en el ciclo del lead. ¿Qué necesita hacer el asesor en cada momento del proceso?

$ 10 – 20 min

¿Cómo se organizan?

// Roles del equipo → Tablero Kanban → Fase 1 vs Fase 2 (Telegram)

⚡ Este proyecto tiene una característica especial
La conexión con Telegram es real y posible, pero es Fase 2. Primero construyen el CRM completo en consola. Luego, si hay tiempo y ganas, conectan el bot. No intenten hacer las dos cosas al mismo tiempo.
Roles sugeridos del equipo
🧭
Líder / Coordinador
Gestiona el Kanban, controla que Fase 1 esté sólida antes de tocar Telegram.
🖥️
Dev Menús (UI)
Construye los 3 menús en consola: principal, asesor, admin.
⚙️
Dev Servicios
Implementa la lógica: crear leads, listar, cambiar estado, autenticación.
🤖
Datos + Integraciones
Define los JSON, prueba flujos, y en Fase 2 investiga la API de Telegram.

El rol de "Datos + Integraciones" puede ser el más técnico de Fase 2. Que lo tome quien más disfruta investigar.

Tablero Kanban — Fase 1 primero, Fase 2 después
Por hacer
🗂️ Crear estructura de carpetas
📄 Definir Usuarios.json
📄 Definir Leads.json
🖥️ Menú principal
🖥️ Menú asesor
🖥️ Menú admin
🔐 Auth (login)
⚙️ Crear lead
⚙️ Listar mis leads
⚙️ Cambiar estado
⚙️ Eliminar lead (admin)
📝 README.md
🤖 telegram_service.py
🤖 Recibir lead desde bot
En progreso
Vacío al inicio.
¡Muevan tarjetas aquí
cuando las empiecen!
Hecho ✓
Aquí llega
el trabajo
terminado.

Las tarjetas con borde punteado 🤖 son Fase 2. No las toquen hasta que todo lo demás esté en "Hecho".

¿Qué es Fase 1 y qué es Fase 2?
✅ Fase 1 — CRM en consola (obligatoria)
  • El sistema funciona 100% desde python main.py
  • El asesor puede crear, ver y actualizar leads
  • El admin puede ver todos los leads y asignarlos
  • Los datos persisten en archivos JSON entre ejecuciones
  • Hay login con roles diferenciados
🤖 Fase 2 — Integración con Telegram (opcional)
  • Un bot de Telegram recibe mensajes de posibles clientes
  • El bot extrae los datos y los guarda en Leads.json
  • El asesor abre la consola y ya tiene el lead registrado
  • Requiere investigar la biblioteca python-telegram-bot
  • Empiecen con una función que solo simule recibir un lead
✏️ Actividad Y — decidan ahora (5 min)
¿Quién toma qué rol? Asignen un nombre a cada rol y decidan cuáles tarjetas del Kanban son responsabilidad de cada persona esta semana. Recuerden: las tarjetas de Fase 2 no se asignan todavía.
Pueden dividirlo diferente a los roles sugeridos — pero todos deben tener algo concreto que hacer.

$ 20 – 30 min

¿Por dónde empieza el código?

// Arquitectura → JSON → Flujo de datos → CRUD → Telegram como módulo aislado

🗺️ Principio de arquitectura
La integración con Telegram no rompe la arquitectura. Vive en su propia capa (services/telegram_service.py) y la consola sigue funcionando igual si Telegram no está conectado.
Estructura de carpetas en Spyder

Creen primero las carpetas y los archivos vacíos. El archivo de Telegram puede quedar vacío hasta Fase 2.

# Tu carpeta raíz se llama: CRM_Console/ │ ├── main.py # Punto de entrada │ ├── menus/ # Lo que ve el usuario │ ├── menu_principal.py │ ├── menu_asesor.py │ └── menu_admin.py │ ├── services/ # La lógica del negocio │ ├── auth_service.py │ ├── crm_service.py │ └── telegram_service.py # Fase 2 — vacío por ahora │ ├── utils/ # Herramientas reutilizables │ ├── file_manager.py │ └── validators.py │ ├── data/ # Archivos de persistencia │ ├── Usuarios.json │ └── Leads.json │ └── README.md
¿Cómo se verán los datos en JSON?

Cada lead es un objeto con toda la información necesaria para darle seguimiento.

// Leads.json — ejemplo de un lead [ { "id": "L001", "nombre_lead": "Carlos Mejía", "contacto": "3001234567", "origen": "formulario", // o "telegram" "estado": "nuevo", "id_asesor": "U002", "notas": "Interesado en plan básico" } ]

Pregunta: ¿qué campo permite saber quién es el responsable de ese lead? ¿Y de dónde llegó?

El flujo de datos — cómo viaja una acción
Arranque
main.py
Presentación
menus/
Lógica CRM
crm_service.py
Herramientas
utils/
Datos
Leads.json
Fase 2 (opcional)
Telegram bot
→ también escribe en →
Servicio
telegram_service.py
→ guarda en →
Leads.json

El mismo Leads.json recibe leads tanto desde la consola como desde Telegram. La consola no necesita saber si el lead llegó por bot o por digitación manual.

CRUD aplicado al proyecto CRM
Operación ¿Qué hace? Ejemplo concreto en su app ¿Quién lo hace?
CREATE Agregar un registro nuevo Asesor registra un nuevo lead (o bot de Telegram lo recibe) Asesor / Bot
READ Leer y mostrar registros Ver mis leads asignados / Admin ve todos los leads del sistema Asesor + Admin
UPDATE Modificar un registro existente Cambiar estado (nuevo→contactado→ganado), agregar notas Asesor / Admin
DELETE Eliminar un registro Admin elimina lead duplicado o con datos incorrectos Admin

Todo lo que hicieron en PSeInt —agregar, mostrar, modificar, borrar— es exactamente esto. La única novedad es que ahora los datos persisten en JSON y existe un rol que tiene más permisos que otro.

Pista para Fase 2: ¿cómo empezar con Telegram sin romper nada?

El truco es escribir primero una función simulada en telegram_service.py que simplemente crea un lead de prueba y lo guarda en el JSON, sin Telegram real. Si eso funciona, agregar el bot real solo cambia cómo llegan los datos, no cómo se guardan.

# telegram_service.py — Fase 2 (simulación) def recibir_lead_simulado(): lead = { "nombre_lead": "Prueba Bot", "contacto": "@usuario_tg", "origen": "telegram", "estado": "nuevo" } # Guardar en Leads.json con file_manager print("Lead simulado recibido ✓")
✏️ Actividad Z — abran Spyder (5 min)
Creen la carpeta CRM_Console/ con las subcarpetas y archivos vacíos de la estructura de arriba. Si terminan antes: escriban a mano en Leads.json un lead de ejemplo como el que vieron. El archivo telegram_service.py queda en blanco.
Meta: que todos puedan ver la misma estructura en su máquina antes de salir de aquí.

🙋
Espacio para preguntas

No hay preguntas malas. Si algo no quedó claro, este es el momento.

💭 Sobre el proyecto ¿Qué no entendieron del CRM? ¿El ciclo de vida del lead quedó claro? ¿Qué diferencia al asesor del admin?
🤖 Sobre Telegram ¿Qué imaginan que hace el bot de Telegram? ¿Creen que la Fase 2 es alcanzable? ¿Quién del equipo le va a meter la mano a eso?
💻 Sobre el código ¿La estructura de carpetas quedó clara? ¿Saben cómo empezaría el main.py? ¿Qué hace exactamente el crm_service.py?
💡 Ideas adicionales ¿Se imaginan alguna funcionalidad que no está en la lista? ¿Tiene sentido guardar un historial de interacciones por lead?
🚀
Para la próxima sesión, deben llegar con:
✅ Carpetas y archivos creados  ·  ✅ Leads.json con un ejemplo manual  ·  ✅ Kanban montado con tareas asignadas por persona  ·  ✅ main.py con el menú de 3 opciones funcionando  ·  ✅ telegram_service.py vacío pero creado en la carpeta
Temporizador
10:00
Bloque X
Scroll to Top