📋 Project Manager Template - Estudio de Viabilidad
Codename:
projects.cadences.app
Basado en: Cadences Core (DataTables, Tasks, Workflows)
Estado: ✅ POC v0.3 FUNCIONAL (Premium + Recording)
Fecha inicio: 21 Enero 2026
Última actualización: 22 Enero 2026 (sesión 3)
🎉 Estado Actual de la POC
URL: https://cadences.app/internal/tools/transcriptor
✅ Funcionalidades Implementadas (POC v0.3)
| Feature | Estado | Notas |
|---|---|---|
| Upload múltiple de audios | ✅ | m4a, ogg, mp3, wav, webm, aac (WhatsApp Android) |
| 🆕 Grabador de audio integrado | ✅ | Grabar desde micrófono, añadir múltiples grabaciones |
| Transcripción STT | ✅ | ElevenLabs Scribe v1 + OpenAI Whisper |
| Generación de Acta (LLM) | ✅ | Gemini 2.5 Flash/Pro |
| Análisis Psicológico | ✅ | Análisis de dinámicas grupales |
| Módulo Conclusiones | ✅ | Análisis IA estructurado: fortalezas, áreas de mejora, recomendaciones |
| Módulo Retrospectiva (Chat IA) | ✅ | Chat WhatsApp-style para explorar la sesión con IA |
| Generación de Imágenes | ✅ | Imagen 3, DALL-E 3, Flux, Recraft |
| TTS (Text-to-Speech) | ✅ | ElevenLabs + MeloTTS + gTTS |
| 🆕 TTS con Chunking | ✅ | Textos largos divididos en fragmentos, concatenados automáticamente |
| TTS en Retrospectiva | ✅ | Reproducir respuestas del chat con voz |
| Export/Import Perspectiva | ✅ | Formato .perspectiva JSON |
| Selector de longitud texto | ✅ | Muy largo, largo, medio, breve, síntesis |
| Selector cantidad imágenes | ✅ | 1, 2, 4, 8 imágenes por categoría |
| Selector de modelo IA | ✅ | Regenerar con modelo específico (Gemini 2.0/2.5 Flash/Pro) |
| Tabs separados Acta/Psico | ✅ | Imágenes organizadas por tipo |
| UI Premium con Lucide Icons | ✅ | Iconos SVG elegantes en lugar de emojis |
| Botón "Añadir Imágenes" | ✅ | Generar imágenes adicionales |
| Regenerar contenido | ✅ | Re-procesar acta o análisis psico |
| Progress tracking | ✅ | Barra de progreso por pasos |
| Modo solo transcripción | ✅ | Sin análisis LLM |
| Mobile-first responsive | ✅ | Tabs y controles optimizados para móvil |
| 🆕 Android compatibility | ✅ | Grabador optimizado para Android |
🔧 Configuraciones Disponibles
- Servicios STT: ElevenLabs Scribe v1, OpenAI Whisper
- Modelos LLM: Gemini 2.0 Flash, Gemini 2.5 Flash Lite, Gemini 2.5 Flash, Gemini 2.5 Pro
- Modelos Imagen: Auto, Imagen 3, DALL-E 3, Flux, Recraft v3
- Idiomas: Español, Inglés, Francés, Alemán, Portugués, Italiano, Catalán
- Voces TTS: ElevenLabs (6 voces) + MeloTTS + gTTS (gratuitos)
- TTS Chunking: Textos largos divididos automáticamente (600-2500 chars según servicio)
- Tabs de contenido: Acta, Psicología, Conclusiones, Chat IA, Transcripción, Imágenes
- Formatos audio: m4a, mp3, ogg, opus, wav, webm, aac, caf, aiff + grabación directa
1. Visión del Producto
1.1 Problema a resolver
Los equipos que trabajan en proyectos (desarrollo software, consultorías, implementaciones) necesitan:
- Documentar reuniones de forma automática (grabar → transcribir → generar acta)
- Gestionar tareas y milestones de proyectos
- Centralizar documentación del proyecto (propuestas, contratos, actas, entregables)
- Trackear tiempo y costes por proyecto
1.2 Propuesta de valor
Un sistema ligero de gestión de proyectos con IA integrada que:
- Transcribe reuniones automáticamente (audio → texto)
- Genera actas estructuradas con conclusiones y action items
- Crea visuales (imágenes resumen) de cada reunión
- Organiza todo en una estructura de proyecto navegable
1.3 Diferenciador
A diferencia de herramientas genéricas (Notion, Asana, Monday), este sistema está optimizado para documentación de reuniones con IA y genera automáticamente:
- Actas formateadas
- Imágenes resumen
- Action items extraídos
- Timeline del proyecto
- Análisis psicológico de dinámicas grupales
- Conclusiones estructuradas con plan de acción
- Chat retrospectivo para explorar la sesión interactivamente
1.5 🆕 Módulos Premium (v0.2)
Módulo Conclusiones
Genera un análisis estructurado con IA basado en toda la sesión:
┌─────────────────────────────────────────────────────────────────┐
│ 📊 CONCLUSIONES │
├─────────────────────────────────────────────────────────────────┤
│ 💪 FORTALEZAS │
│ • Comunicación abierta entre participantes │
│ • Disposición al cambio │
│ • Claridad en objetivos │
├─────────────────────────────────────────────────────────────────┤
│ 🎯 ÁREAS DE MEJORA │
│ • Gestión del tiempo en reuniones │
│ • Documentación de decisiones │
├─────────────────────────────────────────────────────────────────┤
│ 💡 RECOMENDACIONES │
│ • Establecer agenda previa │
│ • Asignar roles específicos │
├─────────────────────────────────────────────────────────────────┤
│ 📋 PLAN DE ACCIÓN │
│ 1. Implementar check-ins semanales │
│ 2. Crear plantilla de seguimiento │
│ 3. Definir métricas de éxito │
└─────────────────────────────────────────────────────────────────┘
Características:
- Regenerar con modelo específico (dropdown de modelos)
- Exportable como parte del archivo
.perspectiva - Formato Markdown estructurado
Módulo Retrospectiva (Chat IA)
Chat conversacional estilo WhatsApp para explorar la sesión:
┌─────────────────────────────────────────────────────────────────┐
│ 💬 CHAT IA │
├─────────────────────────────────────────────────────────────────┤
│ ┌──────────────────────────────────────────┐ │
│ │ 👤 ¿Cuáles fueron los puntos más │ │
│ │ conflictivos de la reunión? │ 14:32 │
│ └──────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────┐ │
│ 14:33 │ 🤖 Los puntos de mayor tensión fueron: │ │
│ │ │ │
│ │ 1. **Presupuesto del proyecto**: Hubo │ │
│ │ discrepancia sobre la asignación... │ │
│ │ │ │
│ │ 2. **Plazos de entrega**: El equipo │ │
│ │ técnico expresó preocupación... │ │
│ │ 🔊 ▶️ │ │
│ └──────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ [Escribe tu pregunta sobre la sesión...] [Enviar] │
└─────────────────────────────────────────────────────────────────┘
Características:
- Contexto completo de la sesión (transcripción + acta + psicología)
- Historial de conversación persistente
- TTS para reproducir respuestas con voz
- Preguntas sugeridas rápidas
- Streaming de respuestas
2. Arquitectura Técnica
2.1 Stack propuesto
┌─────────────────────────────────────────────────────────────────┐
│ projects.cadences.app │
├─────────────────────────────────────────────────────────────────┤
│ Frontend: React + Vite (reutilizar componentes Cadences) │
│ Backend: Cloudflare Workers + D1 │
│ Storage: R2 (audios, documentos, imágenes generadas) │
├─────────────────────────────────────────────────────────────────┤
│ Servicios IA │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ STT │ │ LLM │ │ Image Generation │ │
│ │ ElevenLabs │ │ Gemini 2.5 │ │ Imagen 3 / DALL-E 3 │ │
│ │ o Whisper │ │ Pro │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
2.2 Flujo de transcripción de reunión
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Upload │───▶│ STT │───▶│ Trans- │───▶│ LLM │───▶│ Output │
│ Audio │ │ Service │ │ cript │ │ Process │ │ │
│ m4a/ogg │ │ │ │ │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
ElevenLabs STT Prompt personalizable - Acta MD
~$0.10/15min - 4 imágenes
- Action items
2.3 Modelo de datos (extensión de Cadences)
// Proyecto (extiende Project de Cadences)
interface MeetingProject {
id: string;
name: string;
client: string; // Cliente (ej: "CIMAD")
status: 'active' | 'completed' | 'archived';
meetings: Meeting[];
documents: Document[];
createdAt: Date;
}
// Reunión transcrita
interface Meeting {
id: string;
projectId: string;
title: string;
date: Date;
audioUrl: string; // R2 URL
transcription: string; // Texto crudo del STT
summary: MeetingSummary; // Procesado por LLM
images: string[]; // URLs de imágenes generadas
status: 'uploading' | 'transcribing' | 'processing' | 'ready' | 'error';
}
// Resumen generado por IA
interface MeetingSummary {
title: string;
attendees: string[];
duration: string;
keyPoints: string[]; // Puntos clave
decisions: string[]; // Decisiones tomadas
actionItems: ActionItem[];
nextSteps: string[];
fullSummary: string; // Acta completa en markdown
}
interface ActionItem {
description: string;
assignee?: string;
dueDate?: Date;
priority: 'high' | 'medium' | 'low';
}
3. Análisis de Servicios STT
3.1 Comparativa
| Servicio | Precio | Calidad ES | Latencia | Diarización | API |
|---|---|---|---|---|---|
| ElevenLabs STT | ~$0.10/15min | ⭐⭐⭐⭐⭐ | Rápida | ✅ Sí | REST |
| OpenAI Whisper | $0.006/min | ⭐⭐⭐⭐ | Rápida | ❌ No | REST |
| Google Cloud STT | $0.006/min | ⭐⭐⭐⭐ | Media | ✅ Sí | REST |
| AssemblyAI | $0.015/min | ⭐⭐⭐⭐⭐ | Rápida | ✅ Sí | REST |
3.2 Recomendación
ElevenLabs STT por:
- Excelente calidad en español
- Diarización incluida (identifica quién habla) - crucial para actas
- Ya tenemos integración con ElevenLabs en Cadences
- API sencilla y rápida
Alternativa económica: OpenAI Whisper si no necesitamos diarización.
4. POC - Fase 1: Transcripción básica
4.1 Objetivo del POC
Validar el flujo completo: Audio → STT → LLM → Acta + Imágenes
4.2 Funcionalidades mínimas
Upload de audio
- Formatos: m4a, ogg, mp3, wav
- Límite: 60 minutos (para POC)
- Subida a R2
Transcripción
- Llamada a ElevenLabs STT
- Mostrar progreso
- Guardar transcripción raw
Procesamiento LLM
- Prompt configurable (editable por usuario)
- Prompt por defecto para actas
- Gemini 2.5 Pro
Generación de imágenes (opcional v1)
- 4 imágenes: Intro, Cuerpo, Cierre, Conclusiones
- Imagen 3 (Google) o DALL-E 3
Output
- Acta en Markdown
- Descarga como PDF
- Guardar en proyecto
4.3 Prompt por defecto para actas
Eres un asistente especializado en generar actas de reuniones profesionales.
A partir de la siguiente transcripción de una reunión, genera un acta estructurada que incluya:
## 📋 ACTA DE REUNIÓN
**Fecha:** [Inferir de contexto o usar fecha actual]
**Proyecto:** [Inferir del contexto]
**Asistentes:** [Listar participantes identificados]
**Duración aproximada:** [Estimar]
### 🎯 Resumen Ejecutivo
[2-3 párrafos resumiendo lo más importante]
### 📌 Puntos Tratados
[Lista numerada de los temas discutidos]
### ✅ Decisiones Tomadas
[Lista de decisiones acordadas durante la reunión]
### 📋 Action Items
| Tarea | Responsable | Fecha límite | Prioridad |
|-------|-------------|--------------|-----------|
[Tabla con las tareas asignadas]
### 🔜 Próximos Pasos
[Lista de siguientes acciones acordadas]
### 💡 Notas Adicionales
[Cualquier observación relevante]
---
**TRANSCRIPCIÓN A PROCESAR:**
{transcription}
5. Estructura de carpetas del proyecto
storefronts/
└── projects/
├── README.md
├── package.json
├── src/
│ ├── App.jsx
│ ├── components/
│ │ ├── AudioUploader.jsx
│ │ ├── TranscriptionViewer.jsx
│ │ ├── MeetingSummary.jsx
│ │ ├── ProjectList.jsx
│ │ └── PromptEditor.jsx
│ ├── services/
│ │ ├── sttService.js # ElevenLabs STT
│ │ ├── llmService.js # Gemini
│ │ └── imageService.js # Imagen 3
│ └── hooks/
│ └── useMeetingProcessor.js
└── functions/
└── api/
├── transcribe/
├── process/
└── upload/
6. Caso de uso inicial: CIMAD
6.1 Aplicación inmediata
Usar este sistema para documentar el proyecto CIMAD:
📁 CIMAD Project
├── 📄 Propuesta comercial (proyecto26.html)
├── 📄 FAQ técnico (proyecto26-faq.html)
├── 📁 Reuniones
│ ├── 2026-01-15 - Kickoff call con equipo CIMAD
│ ├── 2026-01-20 - Revisión técnica integraciones
│ └── 2026-01-25 - Planificación migración
└── 📁 Documentación técnica
├── Arquitectura RIS
└── Especificaciones CASS/HCAA
7. Roadmap
Fase 1 - POC (2 semanas) ✅ COMPLETADA
- Componente de upload de audio (múltiple)
- Integración ElevenLabs STT
- Integración OpenAI Whisper (alternativa)
- Procesamiento con Gemini 2.5 Flash/Pro
- Visualización de acta en Markdown
- Análisis psicológico de reuniones
- Generación de imágenes (4 modelos)
- TTS con ElevenLabs (6 voces)
- Export/Import formato Perspectiva
- Selector de longitud de texto
- Selector de cantidad de imágenes (1/2/4/8)
- Tabs separados para imágenes Acta/Psico
- Botón "Añadir Imágenes"
- Regeneración de contenido
- Progress tracking visual
Fase 1.5 - Premium Features ✅ COMPLETADA (22 Ene 2026)
- Módulo Conclusiones: Análisis estructurado con IA (fortalezas, áreas de mejora, recomendaciones, plan de acción)
- Módulo Retrospectiva: Chat conversacional estilo WhatsApp para explorar la sesión
- Selector de modelo en regeneración: Elegir modelo específico (Gemini 2.0/2.5 Flash/Pro)
- TTS en Chat IA: Reproducir respuestas del asistente con voz
- MeloTTS alternativo: Opción gratuita de TTS (límite 800 caracteres)
- UI Premium con Lucide Icons: Iconos SVG elegantes reemplazando emojis
- Mobile-first responsive: Todos los tabs visibles en móvil
- Glass morphism design: Efectos visuales premium en tabs y controles
Fase 2 - MVP (4 semanas)
- Gestión de proyectos (CRUD)
- Historial de reuniones persistente
- Storage en D1/R2 (actualmente localStorage)
- Export PDF profesional
- Galería de perspectivas guardadas
- Búsqueda en transcripciones
Fase 3 - Producción
- Autenticación y usuarios
- Multi-tenant / workspaces
- Búsqueda semántica con embeddings
- Integración con calendar (Google/Outlook)
- Recordatorios de action items
- API pública para integraciones
- Facturación por uso
8. Próximos pasos inmediatos
✅ Completado
Crear POC de transcripción- ✅ Funcional en/internal/tools/transcriptorProbar con audio real- ✅ Probado con reuniones realesEvaluar calidad- ✅ Calidad excelente con ElevenLabsMódulo Conclusiones- ✅ Análisis estructurado con fortalezas, mejoras, recomendacionesMódulo Retrospectiva- ✅ Chat IA para explorar sesiónTTS en Chat- ✅ Reproducir respuestas con vozSelector de modelo- ✅ Elegir modelo para regeneraciónUI Premium- ✅ Lucide icons + glass morphism
🔜 Siguiente iteración
- Persistencia de datos - Guardar perspectivas en D1/R2 en lugar de solo export local
- Galería de perspectivas - Lista de todas las perspectivas guardadas
- Export PDF - Generar PDF profesional del acta
- Integración con proyectos - Asociar perspectivas a proyectos Cadences
- Streaming de respuestas - Mostrar respuestas del chat en tiempo real
- Guardar chat en perspectiva - Persistir historial de retrospectiva
9. Métricas de la POC
Rendimiento observado
- Transcripción 15 min audio: ~30 segundos (ElevenLabs)
- Generación de acta: ~10 segundos (Gemini Flash)
- Generación psicología: ~12 segundos (Gemini Flash)
- Generación conclusiones: ~8 segundos (Gemini Flash)
- Respuesta chat IA: ~5 segundos (Gemini Flash)
- Generación imagen: ~15 segundos por imagen (Imagen 3)
- TTS de acta completa: ~20 segundos (ElevenLabs)
- TTS respuesta chat: ~3 segundos (MeloTTS)
Costos estimados por reunión (15 min)
| Servicio | Costo |
|---|---|
| ElevenLabs STT | ~$0.10 |
| Gemini 2.5 Flash | ~$0.02 |
| Análisis psicológico | ~$0.02 |
| Conclusiones IA | ~$0.01 |
| Chat IA (5 preguntas) | ~$0.05 |
| 4 imágenes Imagen 3 | ~$0.20 |
| TTS (opcional) | ~$0.05 |
| Total | ~$0.37 |
10. Arquitectura Actual (POC v0.2)
┌─────────────────────────────────────────────────────────────────────────────┐
│ /internal/tools/transcriptor │
│ (POC v0.2 - Premium Features) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ Frontend │ │ APIs │ │ Servicios Externos │ │
│ │ │ │ Cadences │ │ │ │
│ │ • Upload UI │───▶│ │───▶│ • ElevenLabs STT │ │
│ │ • Progress tracking │ │ /api/stt/* │ │ • OpenAI Whisper │ │
│ │ • 6 Tabs premium │ │ /api/ai-* │ │ • Gemini 2.0/2.5 │ │
│ │ • TTS Player (2) │ │ /api/eleven* │ │ • Imagen 3/DALL-E │ │
│ │ • Chat IA 💬 │ │ /api/melo* │ │ • ElevenLabs TTS │ │
│ │ • Conclusiones 📊 │ │ │ │ • MeloTTS │ │
│ │ • Lucide Icons │ │ │ │ │ │
│ │ • Export/Import │ │ │ │ │ │
│ └──────────────────────┘ └──────────────┘ └────────────────────┘ │
│ │
│ Tabs: [Acta] [Psico] [Conclusiones] [Chat IA] [Transcripción] [Imágenes] │
│ │
│ Storage: localStorage (temporal) + Export .perspectiva (JSON) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Flujo de procesamiento actual
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐
│ Upload │───▶│ STT │───▶│ Trans- │───▶│ LLM │───▶│ Output │
│ Audios │ │ Service │ │ cript │ │ Process │ │ │
│ (multi) │ │ │ │ │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────────┘
│ │ │ │
│ ▼ ▼ ▼
│ ElevenLabs o ┌─────────────────┐ ┌──────────────┐
│ OpenAI Whisper │ • Acta (MD) │ │ • 1-8 imgs │
│ │ • Psicología │ │ por tipo │
│ │ • Action Items │ │ • TTS audio │
│ └─────────────────┘ └──────────────┘
│
▼
Múltiples archivos
m4a, ogg, mp3, wav, webm
Notas de desarrollo
Integración ElevenLabs STT
// Ya tenemos la API key de ElevenLabs en el proyecto
// Endpoint: POST https://api.elevenlabs.io/v1/speech-to-text
const transcribe = async (audioBlob) => {
const formData = new FormData();
formData.append('audio', audioBlob);
formData.append('model_id', 'scribe_v1'); // Modelo STT
const response = await fetch('https://api.elevenlabs.io/v1/speech-to-text', {
method: 'POST',
headers: {
'xi-api-key': ELEVENLABS_API_KEY
},
body: formData
});
return response.json();
};
Alternativa: OpenAI Whisper
const transcribeWhisper = async (audioBlob) => {
const formData = new FormData();
formData.append('file', audioBlob);
formData.append('model', 'whisper-1');
formData.append('language', 'es');
const response = await fetch('https://api.openai.com/v1/audio/transcriptions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${OPENAI_API_KEY}`
},
body: formData
});
return response.json();
};
🆕 API Chat IA (Retrospectiva)
// Llamada al API de Gemini para chat conversacional
const chatWithAI = async (userMessage, sessionContext) => {
const response = await fetch('/api/ai-providers/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
provider: 'gemini',
model: 'gemini-2.5-flash',
email: '[email protected]',
max_tokens: 4096,
temperature: 0.7,
messages: [
{
role: 'system',
content: `Eres un asistente experto analizando sesiones.
Contexto de la sesión:
- Transcripción: ${sessionContext.transcription}
- Acta: ${sessionContext.summary}
- Análisis psicológico: ${sessionContext.psicologia}`
},
...chatHistory,
{ role: 'user', content: userMessage }
]
})
});
const data = await response.json();
return data.choices[0].message.content;
};
🆕 API Conclusiones IA
// Generar conclusiones estructuradas
const generateConclusions = async (model = 'gemini-2.5-flash') => {
const response = await fetch('/api/ai-providers/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
provider: 'gemini',
model: model,
email: '[email protected]',
max_tokens: 8192,
temperature: 0.7,
messages: [{
role: 'user',
content: `Analiza esta sesión y genera conclusiones estructuradas:
FORTALEZAS, ÁREAS DE MEJORA, RECOMENDACIONES, PLAN DE ACCIÓN
Transcripción: ${transcription}
Acta: ${summary}
Análisis: ${psicologia}`
}]
})
});
const data = await response.json();
return data.choices[0].message.content;
};
Documento vivo - Actualizar según avance el desarrollo
Apéndice: Concepto "Perspectiva"
Una Perspectiva es el formato de documento que genera el Transcriptor. Incluye:
interface Perspectiva {
id: string; // PERSP-XXXXXX
title: string; // Título de la reunión
date: string; // Fecha ISO
project: string; // Proyecto asociado
tags: string[]; // Etiquetas
description: string; // Descripción manual
// Contenido generado
transcription: string; // Transcripción raw
acta: string; // Acta en Markdown
psicologia: string; // Análisis psicológico
aiSummary: string; // Resumen IA
conclusions: string; // 🆕 Conclusiones estructuradas (fortalezas, mejoras, recomendaciones)
// Chat IA (Retrospectiva)
retrospectiveChat: ChatMessage[]; // 🆕 Historial de conversación con IA
// Media
audioFiles: AudioFile[]; // Audios originales (base64)
images: Image[]; // Imágenes generadas (base64)
ttsAudios: { // Audios TTS
acta: string;
psico: string;
};
// Settings
settings: {
sttService: string;
language: string;
llmModel: string;
imageModel: string;
actaLength: string; // muy-largo | largo | medio | breve | sintesis
psicoLength: string;
imageCountActa: number; // 1 | 2 | 4 | 8
imageCountPsico: number;
generateImages: string; // acta | psico | both | none
ttsService: string; // 🆕 elevenlabs | melo
};
// Metadata
createdAt: string;
updatedAt: string;
}
// 🆕 Estructura de mensaje del chat retrospectiva
interface ChatMessage {
role: 'user' | 'assistant';
content: string;
timestamp: string;
}
El archivo .perspectiva es un JSON que contiene toda esta información, incluyendo los audios e imágenes en base64 para ser completamente portable.
🚀 PARTE 2: Planificación del Storefront "Projects"
11. Análisis de Mercado
11.1 Competidores Principales
| Herramienta | Fortalezas | Debilidades | Precio |
|---|---|---|---|
| Monday.com | UI visual, automations, integraciones | Caro, curva aprendizaje, pesado | $10-20/user/mes |
| Asana | Tasks, timelines, portfolios | UI cluttered, sin IA nativa | $11-25/user/mes |
| Notion | Flexible, docs + DB, templates | Sin gestión proyectos real, lento | $10-15/user/mes |
| ClickUp | Todo-in-one, personalizable | Demasiadas features, confuso | $7-12/user/mes |
| Linear | Dev-focused, rápido, limpio | Solo dev teams, limitado | $8/user/mes |
| Basecamp | Simple, todo incluido | Anticuado, sin IA | $15/user/mes |
11.2 Gaps en el Mercado
┌─────────────────────────────────────────────────────────────────────────┐
│ LO QUE NADIE HACE BIEN │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 🎙️ Documentación automática de reuniones │
│ - Grabar → Transcribir → Generar acta → Extraer tareas │
│ - NINGUNO lo hace nativo (requieren integraciones externas) │
│ │
│ 2. 🧠 IA que ENTIENDE el contexto del proyecto │
│ - No solo autocomplete, sino análisis profundo │
│ - Sugerencias basadas en historial del proyecto │
│ │
│ 3. 📊 Visualización de dinámicas de equipo │
│ - Quién habla más, tensiones, consensos │
│ - Análisis psicológico de interacciones │
│ │
│ 4. 🎨 Generación de contenido visual automático │
│ - Imágenes resumen de reuniones │
│ - Presentaciones auto-generadas │
│ │
│ 5. 💬 Chat con tu proyecto │
│ - "¿Qué acordamos sobre X?" → Respuesta instantánea │
│ - Retrospectiva conversacional │
│ │
└─────────────────────────────────────────────────────────────────────────┘
12. Concepto: "Cadences Projects"
12.1 Posicionamiento
"El primer gestor de proyectos que escucha tus reuniones"
No es otro Notion/Monday. Es un sistema que:
- Captura reuniones automáticamente
- Entiende el contexto de tu proyecto
- Genera documentación sin esfuerzo
- Aprende de tu equipo y mejora sugerencias
12.2 Filosofía de diseño (Nuestro Estilo)
┌─────────────────────────────────────────────────────────────────────────┐
│ "CALM PRODUCTIVITY" │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 🌙 Dark mode premium (como Linear, no como Notion) │
│ ✨ Glass morphism sutil (no en tu cara) │
│ 🎯 Foco en lo importante (no 100 features visibles) │
│ 🎙️ Audio-first (grabar > escribir) │
│ 🤖 IA invisible pero presente (no chatbot, contexto) │
│ 📱 Mobile-native (no responsive afterthought) │
│ │
│ ANTI-PATTERNS A EVITAR: │
│ ❌ Mil campos personalizables │
│ ❌ Dashboards sobrecargados │
│ ❌ Notificaciones agresivas │
│ ❌ Onboarding de 20 pasos │
│ ❌ Pricing complejo │
│ │
└─────────────────────────────────────────────────────────────────────────┘
12.3 Propuesta de Valor Única
| Lo que otros hacen | Lo que nosotros hacemos |
|---|---|
| Crear tarea manualmente | Tarea extraída de reunión automáticamente |
| Escribir actas a mano | Acta generada con IA desde audio |
| Buscar en docs antiguos | Preguntar al proyecto directamente |
| Ver métricas de tareas | Ver dinámicas de equipo |
| Notificaciones push | Resumen diario inteligente |
| Templates genéricos | Contexto específico del proyecto |
13. Arquitectura Propuesta
13.1 Entidades Core
┌─────────────────────────────────────────────────────────────────────────┐
│ MODELO DE DATOS │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ WORKSPACE │
│ └── PROJECTS[] │
│ ├── Settings (prompts, modelos, equipo) │
│ ├── MEETINGS[] (Perspectivas) │
│ │ ├── Audio files │
│ │ ├── Transcription │
│ │ ├── Summary (Acta) │
│ │ ├── Analysis (Psico) │
│ │ ├── Conclusions │
│ │ ├── Images[] │
│ │ ├── Action Items[] → TASKS │
│ │ └── Chat History │
│ │ │
│ ├── TASKS[] │
│ │ ├── Status, Priority, Assignee │
│ │ ├── Due date │
│ │ ├── Origin (meeting_id o manual) │
│ │ └── Comments[] │
│ │ │
│ ├── DOCUMENTS[] │
│ │ ├── Type (propuesta, contrato, entregable) │
│ │ ├── Content (MD/PDF) │
│ │ └── Version history │
│ │ │
│ └── TIMELINE (auto-generated) │
│ └── Events from meetings, tasks, milestones │
│ │
└─────────────────────────────────────────────────────────────────────────┘
13.2 Vistas Principales
┌─────────────────────────────────────────────────────────────────────────┐
│ 1. HOME - Dashboard personal │
│ • Proyectos recientes │
│ • Reuniones próximas │
│ • Tareas pendientes │
│ • Resumen IA del día │
├─────────────────────────────────────────────────────────────────────────┤
│ 2. PROJECT - Vista de proyecto │
│ • Header con estado, equipo, métricas │
│ • Tabs: Overview | Meetings | Tasks | Docs | Chat │
│ • Sidebar: Timeline cronológico │
├─────────────────────────────────────────────────────────────────────────┤
│ 3. MEETING - Vista de reunión (Perspectiva) │
│ • Lo que ya tenemos en el POC │
│ • + Vinculación con tareas │
│ • + Contexto del proyecto │
├─────────────────────────────────────────────────────────────────────────┤
│ 4. TASKS - Gestión de tareas │
│ • Kanban simple (To Do | In Progress | Done) │
│ • Lista con filtros │
│ • Origen: manual vs extraída de reunión │
├─────────────────────────────────────────────────────────────────────────┤
│ 5. CHAT - Habla con tu proyecto │
│ • Contexto de TODO el proyecto │
│ • "¿Qué decidimos sobre X?" "¿Qué tareas tiene Juan?" │
│ • Genera reportes on-demand │
└─────────────────────────────────────────────────────────────────────────┘
14. Diferenciadores Técnicos
14.1 Sistema de Contexto IA
┌─────────────────────────────────────────────────────────────────────────┐
│ CONTEXT INJECTION SYSTEM │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Cada llamada a IA incluye automáticamente: │
│ │
│ [PROYECTO] │
│ • Nombre, descripción, objetivos │
│ • Equipo y roles │
│ • Estado actual │
│ │
│ [HISTORIAL RELEVANTE] │
│ • Últimas 3 reuniones (resúmenes) │
│ • Tareas pendientes │
│ • Decisiones clave previas │
│ │
│ [REUNIÓN ACTUAL] │
│ • Transcripción completa │
│ • Participantes detectados │
│ │
│ → El LLM ENTIENDE el proyecto, no solo procesa texto │
│ │
└─────────────────────────────────────────────────────────────────────────┘
14.2 Extracción Automática de Tareas
De la transcripción:
"Juan, necesitas enviar el presupuesto actualizado antes del viernes"
→ IA detecta:
- Tarea: "Enviar presupuesto actualizado"
- Asignado: Juan
- Deadline: Viernes próximo
- Prioridad: Alta (infiere por contexto)
- Origen: Meeting "Revisión Q1"
→ Se crea automáticamente (con confirmación del usuario)
15. Roadmap Estratégico
Fase 1: MVP "Meeting-Centric" (4 semanas)
┌─────────────────────────────────────────────────────────────────────────┐
│ OBJETIVO: Producto usable para documentar reuniones de proyectos │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Semana 1-2: │
│ □ Estructura de datos (Projects, Meetings) │
│ □ CRUD de proyectos │
│ □ Integración del Transcriptor actual como "Nueva Reunión" │
│ □ Persistencia en D1 (no solo localStorage) │
│ │
│ Semana 3-4: │
│ □ Lista de reuniones por proyecto │
│ □ Timeline automático │
│ □ Extracción de tareas (UI para confirmar) │
│ □ Vista kanban básica │
│ │
│ ENTREGABLE: Sistema donde puedes crear proyecto → grabar reuniones │
│ → ver historial → extraer tareas │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Fase 2: "Smart Context" (4 semanas)
□ Chat con proyecto (contexto completo)
□ Resúmenes automáticos (diario/semanal)
□ Detección de patrones (quién habla más, temas recurrentes)
□ Sugerencias proactivas de IA
□ Notificaciones inteligentes
Fase 3: "Team Features" (4 semanas)
□ Multi-usuario
□ Permisos por proyecto
□ Comentarios en tareas
□ Menciones @usuario
□ Integraciones (Calendar, Slack)
16. Preguntas Abiertas a Resolver
16.1 Producto
¿Target principal?
- Consultoras (reuniones con clientes)
- Startups (daily standups, planning)
- Agencias (reuniones de proyecto)
- Terapeutas/Coaches (sesiones)
¿Pricing model?
- Por usuario/mes
- Por proyecto
- Por minutos de audio procesados
- Freemium con límites
¿Nombre del producto?
- Cadences Projects
- Perspectiva (expandido)
- MeetingOS
- Otro...
16.2 Técnico
¿Real-time collaboration?
- Empezar sin (más simple)
- Añadir después con Durable Objects
¿Grabación en vivo vs upload?
- El POC hace upload
- ¿Integrar grabación de reuniones online (Meet/Zoom)?
¿Embeddings para búsqueda semántica?
- Sí, pero ¿desde el MVP o Fase 2?
17. Siguiente Sesión
Para decidir antes de codear:
- Target market - ¿Para quién es esto exactamente?
- Core flow - ¿Cuál es el flujo principal del usuario?
- Nombre y branding - ¿Cómo se llama?
- Pricing preliminar - ¿Cuánto vale esto?
- Tech stack final - ¿React puro o Cadences components?
Prototipo visual a crear:
- Mockup de la Home
- Mockup de la vista de Proyecto
- Mockup del flujo "Nueva Reunión"
- Mockup del Chat con Proyecto
Documento vivo - Actualizar según avance la planificación
🔬 PARTE 3: Estudio de Contexto Documental
Fecha: 23 Enero 2026
Objetivo: Evolucionar el Transcriptor para incluir documentos de contexto
18. El Problema del Contexto
18.1 Situación Actual
┌─────────────────────────────────────────────────────────────────────────┐
│ FLUJO ACTUAL (Transcriptor v0.3) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ [Audios] ──→ [Transcripción] ──→ [LLM] ──→ [Acta + Análisis] │
│ │
│ ❌ SIN CONTEXTO PREVIO │
│ - No sabe de qué proyecto se trata │
│ - No conoce acuerdos anteriores │
│ - No tiene documentación de referencia │
│ │
└─────────────────────────────────────────────────────────────────────────┘
18.2 Lo Que Queremos
┌─────────────────────────────────────────────────────────────────────────┐
│ FLUJO PROPUESTO (Perspectiva Pro) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ [Documentos] │
│ │ │
│ ▼ │
│ [Análisis Doc 1] ──→ [Resumen 1] │
│ [Análisis Doc 2] ──→ [Resumen 2] ──→ [Meta-Resumen] ──┐ │
│ [Análisis Doc 3] ──→ [Resumen 3] │ │
│ │ │
│ [Audios] ──→ [Transcripción] ──────────────────────────────┼──→ [LLM] │
│ │ │ │
│ └──────┘ │
│ │ │
│ ▼ │
│ [Acta + Análisis CONTEXTUAL]│
│ │
│ ✅ CON CONTEXTO COMPLETO │
│ - Sabe el proyecto y sus objetivos │
│ - Conoce acuerdos y decisiones previas │
│ - Tiene acceso a documentación relevante │
│ │
└─────────────────────────────────────────────────────────────────────────┘
19. Análisis Técnico del Problema
19.1 El Límite de Contexto
┌─────────────────────────────────────────────────────────────────────────┐
│ LÍMITES DE TOKENS POR MODELO │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Gemini 2.5 Flash: 1M tokens (~750K palabras) ✅ Muy grande │
│ Gemini 2.5 Pro: 1M tokens (~750K palabras) ✅ Muy grande │
│ GPT-4 Turbo: 128K tokens (~96K palabras) ⚠️ Mediano │
│ Claude 3: 200K tokens (~150K palabras) ✅ Grande │
│ │
│ PERO... más contexto = más caro + más lento + menos preciso │
│ │
│ Documento típico: │
│ - PDF 10 páginas ≈ 3,000-5,000 palabras ≈ 4,000-7,000 tokens │
│ - 5 PDFs = 20,000-35,000 tokens solo en documentos │
│ - + Transcripción de 1h = ~10,000-15,000 palabras = ~13,000-20,000 tk │
│ - + Prompts del sistema = ~1,000 tokens │
│ │
│ TOTAL: 35,000-55,000 tokens por request │
│ → Cabe en Gemini, pero es caro y lento │
│ │
└─────────────────────────────────────────────────────────────────────────┘
19.2 Estrategia de Compresión Inteligente
┌─────────────────────────────────────────────────────────────────────────┐
│ SISTEMA DE RESÚMENES EN CASCADA │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ NIVEL 0: Documentos Originales │
│ ├── doc1.pdf (5,000 tokens) │
│ ├── doc2.pdf (8,000 tokens) │
│ └── doc3.pdf (4,000 tokens) │
│ TOTAL: 17,000 tokens │
│ │
│ ▼ Resumir cada uno (ratio 5:1) │
│ │
│ NIVEL 1: Resúmenes Individuales │
│ ├── resumen1 (1,000 tokens) │
│ ├── resumen2 (1,600 tokens) │
│ └── resumen3 (800 tokens) │
│ TOTAL: 3,400 tokens │
│ │
│ ▼ Fusionar en meta-resumen │
│ │
│ NIVEL 2: Meta-Resumen │
│ └── context_summary (800-1,200 tokens) │
│ → Puntos clave de TODOS los documentos │
│ → Entidades importantes (personas, fechas, números) │
│ → Decisiones y acuerdos previos │
│ │
│ RESULTADO: De 17,000 tokens → 1,200 tokens (compresión 14:1) │
│ │
└─────────────────────────────────────────────────────────────────────────┘
19.3 Sistema RAG para Acceso On-Demand
┌─────────────────────────────────────────────────────────────────────────┐
│ RAG (Retrieval Augmented Generation) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ¿Qué pasa si el LLM necesita MÁS detalle de un documento específico? │
│ │
│ OPCIÓN A: Embeddings + Vector Search (complejo) │
│ ────────────────────────────────────────────────────────────────── │
│ 1. Dividir docs en chunks de 500 tokens │
│ 2. Generar embedding para cada chunk (Gemini/OpenAI) │
│ 3. Almacenar en Vectorize (Cloudflare) o Pinecone │
│ 4. Cuando el LLM necesita más info: │
│ - Buscar chunks relevantes por similitud │
│ - Inyectar en el contexto │
│ │
│ OPCIÓN B: Índice de Temas Simple (más simple) │
│ ────────────────────────────────────────────────────────────────── │
│ 1. Al resumir cada doc, extraer lista de temas │
│ 2. Crear índice: tema → documento → sección │
│ 3. Cuando el LLM menciona un tema: │
│ - Buscar en índice │
│ - Recuperar sección relevante │
│ - Hacer segunda llamada con contexto ampliado │
│ │
│ RECOMENDACIÓN INICIAL: Opción B (MVP) → Opción A (futuro) │
│ │
└─────────────────────────────────────────────────────────────────────────┘
20. Diseño de la Solución
20.1 Nombre del Producto
┌─────────────────────────────────────────────────────────────────────────┐
│ OPCIONES DE NOMBRE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Continuando la línea "Perspectiva": │
│ │
│ 🎯 PERSPECTIVA STUDIO │
│ - Studio implica herramienta profesional completa │
│ - Consistente con "Perspectiva" como formato │
│ - URL: /internal/tools/perspectiva-studio │
│ │
│ Otras opciones: │
│ - Perspectiva 360° (visión completa) │
│ - Perspectiva Pro (versión profesional) │
│ - Context Studio (enfocado en contexto) │
│ - Deep Perspective (análisis profundo) │
│ │
│ DECISIÓN: "Perspectiva Studio" ✅ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
20.2 Flujo de Usuario Propuesto
┌─────────────────────────────────────────────────────────────────────────┐
│ PERSPECTIVA STUDIO - FLUJO │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ PASO 0: CONFIGURACIÓN INICIAL │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 📁 Nuevo Análisis │ │
│ │ │ │
│ │ Título: [Reunión de Kick-off CIMAD____________] │ │
│ │ Proyecto: [CIMAD - Implementación RIS__________] │ │
│ │ │ │
│ │ Tipo de análisis: │ │
│ │ ○ Solo transcripción │ │
│ │ ○ Transcripción + Acta │ │
│ │ ● Análisis completo (Acta + Psico + Conclusiones) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ PASO 1: DOCUMENTOS DE CONTEXTO (NUEVO) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 📄 Documentos de Contexto │ │
│ │ │ │
│ │ Arrastra documentos o [Seleccionar archivos] │ │
│ │ Formatos: PDF, TXT, MD, DOCX │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────────┐ │ │
│ │ │ 📄 propuesta_comercial.pdf 2.3 MB [Analizar] │ │ │
│ │ │ └─ ✅ Resumen generado (1,200 tokens) │ │ │
│ │ │ 📄 requisitos_tecnicos.pdf 1.8 MB [Analizar] │ │ │
│ │ │ └─ ⏳ Analizando... │ │ │
│ │ │ 📄 acta_reunion_anterior.md 45 KB [Analizar] │ │ │
│ │ │ └─ ⏳ Pendiente │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ [Analizar Todos] [Ver Meta-Resumen] │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ PASO 2: AUDIOS (igual que ahora) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 🎵 Audios de la Reunión │ │
│ │ [Upload/Grabar - igual que transcriptor actual] │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ PASO 3: PROCESAMIENTO │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ ⚙️ Procesando con Contexto │ │
│ │ │ │
│ │ ✅ 1. Meta-resumen de documentos preparado │ │
│ │ ✅ 2. Audio transcrito │ │
│ │ ⏳ 3. Generando acta con contexto... │ │
│ │ ⏳ 4. Análisis psicológico... │ │
│ │ ⏳ 5. Conclusiones... │ │
│ │ │ │
│ │ [████████████░░░░░░░░] 65% │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ PASO 4: RESULTADOS (tabs ampliados) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ [📄 Contexto][📋 Acta][🧠 Psico][🎯 Conclusiones][💬 Chat]... │ │
│ │ │ │
│ │ 📄 TAB CONTEXTO (NUEVO): │ │
│ │ - Meta-resumen de todos los documentos │ │
│ │ - Click en cada doc para ver resumen individual │ │
│ │ - Opción de "Profundizar" en cualquier tema │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
20.3 Arquitectura de Datos
// Nueva estructura para Perspectiva Studio
interface PerspectivaPro {
id: string;
version: '2.0';
title: string;
project?: string;
// NUEVO: Documentos de contexto
contextDocuments: ContextDocument[];
metaSummary: string; // Resumen de todos los documentos
// Igual que antes
audioFiles: AudioFile[];
transcription: string;
// Generados CON contexto
summary: string; // Acta (ahora con contexto)
psicologia: string;
conclusions: string;
// Chat mejorado (con acceso a documentos)
retrospectiveChat: ChatMessage[];
// Media
images: GeneratedImage[];
ttsAudios: TTSAudios;
// Settings
settings: PerspectiveSettings;
// Metadata
createdAt: string;
updatedAt: string;
}
interface ContextDocument {
id: string;
name: string;
type: 'pdf' | 'txt' | 'md' | 'docx';
size: number;
// Contenido extraído
rawText: string; // Texto completo extraído
tokenCount: number;
// Análisis
summary: string; // Resumen del documento
summaryTokens: number;
topics: string[]; // Temas detectados
entities: Entity[]; // Personas, fechas, números importantes
// Para RAG
chunks?: DocumentChunk[]; // Opcional: chunks para búsqueda
status: 'pending' | 'processing' | 'ready' | 'error';
processedAt?: string;
}
interface Entity {
type: 'person' | 'date' | 'money' | 'organization' | 'product';
value: string;
context: string; // Frase donde aparece
}
interface DocumentChunk {
id: string;
text: string;
startIndex: number;
endIndex: number;
embedding?: number[]; // Vector embedding (futuro)
}
21. Implementación por Fases
Fase 1: MVP Documentos (1-2 semanas)
┌─────────────────────────────────────────────────────────────────────────┐
│ OBJETIVO: Añadir documentos de contexto básico al Transcriptor │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ □ Clonar /transcriptor → /perspectiva-studio │
│ □ UI para subir documentos (PDF, TXT, MD) │
│ □ Extracción de texto de PDF (pdf.js o API) │
│ □ Generación de resumen por documento │
│ □ Generación de meta-resumen │
│ □ Inyectar meta-resumen en prompts de acta/psico │
│ □ Nuevo tab "Contexto" para ver resúmenes │
│ │
│ RESULTADO: Sistema funcional con documentos de contexto │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Fase 2: Análisis Inteligente (1-2 semanas)
□ Extracción de entidades (personas, fechas, números)
□ Detección de temas por documento
□ Índice de temas para búsqueda rápida
□ UI para "profundizar" en un tema
□ Chat con acceso a documentos originales
□ Mejora de prompts con entidades detectadas
Fase 3: RAG Completo (2-3 semanas)
□ Chunking de documentos largos
□ Embeddings con Gemini/OpenAI
□ Vectorize (Cloudflare) o Pinecone
□ Búsqueda semántica en chat
□ Auto-recuperación de contexto relevante
□ Citas con referencia al documento original
22. Consideraciones Técnicas
22.1 Extracción de PDF
// OPCIÓN A: pdf.js (client-side, gratis)
// Pros: Sin servidor, gratis
// Cons: Limitado con PDFs complejos, OCR básico
import * as pdfjsLib from 'pdfjs-dist';
async function extractTextFromPDF(file) {
const arrayBuffer = await file.arrayBuffer();
const pdf = await pdfjsLib.getDocument(arrayBuffer).promise;
let fullText = '';
for (let i = 1; i <= pdf.numPages; i++) {
const page = await pdf.getPage(i);
const textContent = await page.getTextContent();
const pageText = textContent.items.map(item => item.str).join(' ');
fullText += pageText + '\n\n';
}
return fullText;
}
// OPCIÓN B: API de extracción (server-side)
// Pros: Mejor OCR, maneja más formatos
// Cons: Costo, latencia
// Cloudflare Workers AI tiene extractores de texto
// O usar servicios como Adobe PDF Services API
22.2 Prompt para Resumen de Documento
const documentSummaryPrompt = `
Eres un asistente experto en análisis documental. Tu tarea es crear un resumen estructurado de un documento.
DOCUMENTO A ANALIZAR:
---
{document_text}
---
Genera un resumen con el siguiente formato:
## RESUMEN EJECUTIVO
[2-3 párrafos con los puntos más importantes]
## INFORMACIÓN CLAVE
- **Tipo de documento:** [contrato/propuesta/acta/informe/otro]
- **Fecha:** [si se menciona]
- **Partes involucradas:** [personas/empresas mencionadas]
## PUNTOS PRINCIPALES
1. [Punto 1]
2. [Punto 2]
3. [Punto 3]
...
## DATOS RELEVANTES
- [Números, fechas, cantidades importantes]
## DECISIONES/ACUERDOS
- [Si los hay]
## TEMAS TRATADOS
[Lista de temas principales para indexación]
Mantén el resumen conciso pero completo. No inventes información.
`;
22.3 Prompt para Meta-Resumen
const metaSummaryPrompt = `
Tienes los resúmenes de varios documentos relacionados con un proyecto/reunión.
Tu tarea es crear un META-RESUMEN que capture la esencia de TODOS los documentos.
RESÚMENES DE DOCUMENTOS:
---
{all_summaries}
---
Genera un meta-resumen con el siguiente formato:
## CONTEXTO DEL PROYECTO
[Descripción general basada en todos los documentos]
## STAKEHOLDERS PRINCIPALES
- [Personas y roles mencionados]
## OBJETIVOS Y ALCANCE
- [Objetivos identificados en los documentos]
## ACUERDOS PREVIOS
- [Decisiones ya tomadas]
## PUNTOS PENDIENTES
- [Temas abiertos o por resolver]
## DATOS CLAVE
- [Fechas, presupuestos, métricas importantes]
Este meta-resumen será usado como contexto para analizar una nueva reunión.
Prioriza la información más relevante para entender el estado del proyecto.
`;
23. Estimación de Costos
23.1 Tokens por Sesión
ESCENARIO: Reunión de 1 hora con 3 documentos de contexto
Documentos (3 PDFs de ~10 páginas):
- Extracción: 0 tokens (local)
- Resumen doc 1: 5,000 input + 1,000 output = 6,000 tokens
- Resumen doc 2: 8,000 input + 1,200 output = 9,200 tokens
- Resumen doc 3: 4,000 input + 800 output = 4,800 tokens
- Meta-resumen: 3,000 input + 1,000 output = 4,000 tokens
SUBTOTAL DOCS: ~24,000 tokens
Transcripción (1 hora):
- Audio a texto: ~$0.10 (ElevenLabs)
- Tokens de transcripción: ~15,000
Generación de contenido:
- Acta con contexto: 17,000 input + 2,000 output = 19,000 tokens
- Psicología: 17,000 input + 2,000 output = 19,000 tokens
- Conclusiones: 17,000 input + 1,500 output = 18,500 tokens
SUBTOTAL GENERACIÓN: ~56,500 tokens
TOTAL: ~95,500 tokens
COSTO (Gemini 2.5 Flash):
- Input: $0.075 / 1M tokens → $0.006
- Output: $0.30 / 1M tokens → $0.002
- STT: $0.10
TOTAL POR SESIÓN: ~$0.12
23.2 Comparativa sin/con Documentos
| Aspecto | Transcriptor Actual | Perspectiva Studio |
|---|---|---|
| Tokens por sesión | ~50,000 | ~95,000 |
| Costo por sesión | ~$0.05 | ~$0.12 |
| Calidad del análisis | Buena | Excelente (con contexto) |
| Tiempo procesamiento | ~2 min | ~3-4 min |
24. Decisiones Pendientes
24.1 Decisiones TOMADAS ✅
| # | Pregunta | Decisión | Implementado |
|---|---|---|---|
| 1 | ¿Clonar o evolucionar? | Clonar a /perspectiva-studio |
✅ |
| 2 | ¿PDF extraction? | pdf.js (client-side, gratis) | ✅ |
| 3 | ¿Límite de documentos? | 5 docs máximo | ✅ |
| 4 | ¿Tamaño máx por doc? | 10MB por documento | ✅ |
| 5 | ¿Guardar texto original? | Sí (para poder profundizar) | ✅ |
| 6 | ¿Embeddings en MVP? | No (simple primero) | ✅ |
| 7 | ¿DOCX support? | No en MVP, solo PDF/TXT/MD | ✅ |
24.2 Estructura Implementada
/public/internal/tools/perspectiva-studio/
├── index.html # UI principal (clonada de transcriptor)
├── perspectiva-studio.js # JS principal con módulo de documentos
├── conclusions.js # Módulo de conclusiones
└── retrospective.js # Módulo de chat retrospectivo
24.3 Funcionalidades Implementadas
- Upload de documentos: Zona de drag & drop para PDF, TXT, MD
- Validación: Máx 5 docs, 10MB c/u, formatos permitidos
- Lista de documentos: Con estados (pendiente, procesando, listo, error)
- Extracción de texto: pdf.js para PDFs, FileReader para texto
- Resumen por documento: LLM genera resumen estructurado con temas
- Meta-resumen: Combina todos los resúmenes en uno compacto
- Estadísticas de compresión: Muestra tokens originales vs comprimidos
- Inyección en prompts: El contexto documental se añade automáticamente al generar actas
24.4 URL de Acceso
/internal/tools/perspectiva-studio/
25. Próximos Pasos
25.1 Completado Esta Sesión ✅
- Clonar transcriptor a
/perspectiva-studio/ - Añadir UI para documentos de contexto
- Implementar extracción de texto (pdf.js)
- Generar resúmenes por documento
- Generar meta-resumen
- Inyectar contexto en prompts de acta/psico
- Actualizar documentación
25.2 Siguiente Sesión
- Probar el flujo completo con documentos reales
- Ajustar prompts de resumen según resultados
- Añadir tab "Contexto" para ver resúmenes en resultados
- Persistencia: Guardar documentos en IndexedDB
- Mejorar UI: Modal para ver resúmenes completos
25.3 Futuro (Fase 2-3)
- Detección de entidades (personas, fechas, números)
- Índice de temas para búsqueda
- Chat con acceso a documentos originales
- RAG con embeddings (Vectorize)
- Soporte DOCX (mammoth.js)
Perspectiva Studio v1.0 - Documento actualizado: 23 Enero 2026