Cómo convertí un video de 3 horas de reunión en User Stories listas para desarrollo — sin tomar una sola nota

La semana pasada tuve una reunión de casi 3 horas para levantar requerimientos de un módulo de fraude para un sistema de gestión de tarjetas. El tipo de reunión donde se habla de BINs, providers, reglas de negocio, restricciones internacionales y alguien dice "toma captura de eso" cada 5 minutos.

No tomé ni una nota. No abrí Notion, ni Jira, ni un Google Doc. Cuando terminó la reunión, tenía dos videos pesados y cero documentación. Tres horas después tenía un documento Word con 31 User Stories estructuradas, criterios de aceptación, endpoints, módulos asignados y prioridades definidas.

Esto es exactamente lo que hice.

El problema real: nadie documenta bien las reuniones

Seamos honestos. En las reuniones de requerimientos pasan dos cosas: o alguien toma notas incompletas que después nadie entiende, o se graba la reunión y el video se pudre en una carpeta de Drive que nadie vuelve a abrir.

Yo tenía dos videos: uno de 285 MB y otro de 190 MB. Casi 3 horas de contenido donde se discutieron decisiones críticas sobre el sistema. El reto era convertir eso en algo que un equipo de desarrollo pudiera consumir directamente.

Paso 1: Extraer el audio con ffmpeg

Lo primero es entender que ninguna IA necesita el video. Solo necesita el audio. Y el audio pesa una fracción del video.

ffmpeg -i video1.mp4 -vn -q:a 2 audio1.mp3

De 285 MB pasé a algo manejable. Si necesitas que pese aún menos (por ejemplo, para la API de Whisper que tiene límite de 25 MB):

ffmpeg -i video1.mp4 -vn -ar 16000 -ac 1 -b:a 32k audio1.mp3

Mono, 16kHz, 32kbps. Suficiente para transcripción y pesa casi nada.

Paso 2: Recortar lo que importa

Mi audio tenía 2 horas y 47 minutos, pero la primera hora era contexto que ya conocía. Solo necesitaba desde la hora 1 en adelante:

ffmpeg -i audio1.mp3 -ss 01:00:00 -acodec copy audio1_recortado.mp3

Instantáneo. -acodec copy no re-codifica, solo corta.

Si necesitas un rango específico:

ffmpeg -i audio1.mp3 -ss 01:00:00 -to 02:00:00 -acodec copy audio1_recortado.mp3

Este paso es clave. No le metas 3 horas de audio a una IA si solo necesitas 40 minutos. Vas a gastar más tokens, más tiempo y vas a obtener peores resultados porque la IA va a intentar procesar conversaciones irrelevantes.

Paso 3: Transcribir con Whisper

Aquí tuve que tomar una decisión. Mis opciones eran:

  • Whisper API de OpenAI: Rápido, barato (~$0.006/min), pero tiene límite de 25 MB por archivo y necesitas saldo en la cuenta.
  • Whisper local: Necesitas GPU NVIDIA con CUDA. Mi laptop tiene Intel Iris — no sirve.
  • Google Colab gratis: GPU T4 temporal, sin costo, corre Whisper large-v3 sin problema.

Intenté primero con la API. Mi audio pesaba 61 MB, así que tuve que partirlo:

ffmpeg -i audio1_recortado.mp3 -f segment -segment_time 600 -c copy parte_%03d.mp3

Eso genera archivos de 10 minutos cada uno. Luego un script simple en Python que los recorre, transcribe y concatena.

Al final me fui por Google Colab porque no tenía saldo cargado en OpenAI y no quería esperar. Tres celdas de código y listo:

!pip install openai-whisper
import whisper
model = whisper.load_model("large-v3")
result = model.transcribe("audio1_recortado.mp3", language="es")

El modelo large-v3 en español es excelente. No perfecto — mete errores con jerga técnica y nombres propios — pero suficientemente bueno para extraer requerimientos.

Paso 4: De transcripción a User Stories con IA

Aquí es donde la cosa se pone interesante. Le pasé la transcripción a Claude junto con capturas de pantalla del sistema de referencia (I2C) y le pedí que extrajera las User Stories.

Lo importante: no le dije "hazme User Stories". Le di contexto completo:

  1. La transcripción en texto plano.
  2. 9 capturas de pantalla del portal administrativo mostrando la pestaña de Fraud con todos sus campos y opciones.
  3. El archivo CLAUDE.md del proyecto con las convenciones de arquitectura, nomenclatura, módulos existentes y patrones de código.

Ese tercer punto hizo una diferencia enorme. Sin el CLAUDE.md, las User Stories habrían salido genéricas. Con él, salieron alineadas al proyecto real: endpoints en kebab-case, permisos en formato module.resource.action, Actions y DTOs con las convenciones del equipo, referencias a los módulos existentes (Fraud, FraudRules, Notification, AttributeDataSet).

El resultado fue un documento con 31 User Stories organizadas en 11 secciones, cada una con ID, título, story, criterios de aceptación, endpoints, módulo asignado y prioridad.

Paso 5: De User Stories a spec para Claude Code

Las User Stories en un Word no le sirven a Claude Code. Necesitaba un markdown plano que viviera en el repo y que Claude Code pudiera leer directamente.

Generé un docs/fraud-rules-spec.md con todo: estructura de tablas, enums, reglas del seeder, implementación por US (qué Action, qué DTO, qué FormRequest, qué Controller), endpoints, validaciones condicionales y orden de implementación sugerido.

Lo puse en docs/ en la raíz del proyecto y agregué una referencia en el CLAUDE.md:

## Fraud Module Spec
See `docs/fraud-rules-spec.md` for detailed fraud module requirements.

La estrategia para usarlo con Claude Code no es decirle "implementa todo". Es ir por US:

> Lee docs/fraud-rules-spec.md e implementa FR-001: CRUD de reglas globales 
> en el módulo FraudRules. Incluye migración, seeder, Action, DTO, 
> FormRequest, Controller y unit tests.

Secuencial, controlado, verificable.

Lo que funcionó y lo que no

Funcionó bien:

  • ffmpeg para extraer, recortar y partir audio. Es la navaja suiza que todo desarrollador debería conocer.
  • Whisper large-v3 en español. La calidad es muy buena para reuniones técnicas.
  • Darle contexto completo a la IA (transcripción + screenshots + convenciones del proyecto). Más contexto = mejores resultados.
  • Generar la spec en markdown para el repo, no en Word.

No funcionó o requirió ajuste:

  • La transcripción no es perfecta. Whisper confunde nombres propios, jerga técnica y a veces fusiona oraciones de distintas personas. Hay que revisarla antes de pasarla a la IA.
  • Las partes de la reunión donde alguien dice "esto" o "aquí" señalando una pantalla quedan inútiles sin las capturas. Los screenshots fueron esenciales para completar el contexto.
  • Intentar hacerlo todo en un solo prompt no funciona. Lo mejor es: primero la transcripción, después el análisis, después el documento, después la spec.

El flujo completo

Video (285 MB)
  → ffmpeg: extraer audio (~30 MB)
    → ffmpeg: recortar segmento relevante
      → ffmpeg: partir en chunks de 10 min (si usas API)
        → Whisper: transcripción en texto
          → Claude: transcripción + screenshots + CLAUDE.md
            → User Stories (docx)
              → Spec técnica (markdown en el repo)
                → Claude Code: implementación por US

De un video que nadie iba a volver a ver, a código en producción. Sin tomar una sola nota en la reunión.

La conclusión

La combinación de herramientas que ya existen — ffmpeg, Whisper, Claude, Claude Code — permite automatizar la parte más tediosa del ciclo de desarrollo: convertir conversaciones humanas en especificaciones técnicas.

No es perfecto. Necesitas revisar la transcripción, necesitas dar contexto visual con screenshots, necesitas tener tus convenciones documentadas. Pero el tiempo que ahorras es brutal. Lo que antes tomaba días de documentación post-reunión, ahora toma horas.

Y lo más importante: el resultado es mejor. Porque la IA procesa toda la conversación, no solo lo que alguien alcanzó a anotar.


Soy Rubén Rangel, Senior Full-Stack Developer con más de 17 años de experiencia construyendo aplicaciones web en producción. Actualmente en Ansira, trabajo en una plataforma SaaS de marketing automation que sirve a más de 100 marcas. Integro IA en mi flujo de trabajo para construir más rápido, más inteligente y con mayor calidad. Disponible para oportunidades full-time y contratos.