Aplicación de voz con IA en 650 commits: experiencia de desarrollo en solitario
Puntos clave: Construir un gestor de tareas vocal con IA en solitario significa más de 650 commits, un pipeline de audio en tiempo real (Deepgram + OpenRouter + OpenAI TTS), una arquitectura React Native New Architecture, y sobre todo, 6 meses de lecciones sobre lo que no se debe hacer. Este artículo cubre la pila tecnológica completa, los errores costosos y las decisiones que marcaron la diferencia.
Hace 6 meses, tenía un problema muy simple. En casa, éramos 4 con trozos de papel pegados en la nevera para la lista de la compra. En el club de buceo, todo pasaba por WhatsApp — imposible encontrar información de hace tres días. ¿Las aplicaciones existentes? Demasiado complicadas, demasiados clics, no adaptadas a la vida real.
Hoy, TAMSIV es una aplicación Android completa con un asistente de voz IA, grupos colaborativos jerárquicos, una agenda con recurrencia, gamificación, y habla 6 idiomas. Más de 650 commits. Desarrollo en solitario. Y te voy a contar exactamente cómo llegué hasta aquí.
¿Por qué crear un gestor de tareas vocal en 2025?
La respuesta corta: porque las aplicaciones de productividad clásicas asumen que estás sentado frente a una pantalla con ambas manos libres. Pero en la vida real, estás conduciendo, cocinando, paseando al perro o cargando la compra.
Probé docenas de aplicaciones — Todoist, Any.do, Google Tasks, Microsoft To Do. Todas excelentes sobre el papel. Pero ninguna ponía la voz en el centro. Quizás tenían un botón de micrófono escondido en algún lugar, pero la interacción principal seguía siendo el teclado.
Mi apuesta: la voz como interfaz principal. Pulsas, hablas, la IA entiende y crea la tarea. Sin formularios, sin menús desplegables, sin fricción. Si quieres saber más sobre por qué las aplicaciones de productividad clásicas fallan, lo explico en este artículo sobre la fatiga de las aplicaciones de productividad.
¿Qué pila tecnológica para una aplicación vocal IA?
Elegir la pila correcta es la decisión más importante. Esto es lo que aprendí después de 6 meses:
- Frontend: React Native 0.81 (TypeScript) con la New Architecture (Fabric). Rendimiento nativo, un solo codebase. La elección fue obvia porque conozco React y quería entregar rápido.
- Backend: Node.js/Express + WebSocket. El WebSocket es indispensable para el streaming de audio en tiempo real — HTTP no es suficiente.
- Base de datos: Supabase PostgreSQL con 3 esquemas separados (
privat,collaborative,gamification). Explico esta arquitectura en detalle en mi artículo sobre la estructuración de la base de datos. - Sitio web: Next.js 16 + Tailwind CSS 4, desplegado en Vercel. Conté la construcción en 3 días en este artículo dedicado.
¿Cómo funciona el pipeline vocal de la aplicación?
Este es el corazón técnico del proyecto. El usuario pulsa el botón, habla y recibe una respuesta vocal estructurada en 1.5 a 3 segundos. Bajo el capó:
Audio PCM 16kHz mono → WebSocket (JWT) → Deepgram STT (VAD) → OpenRouter LLM → Function calling → OpenAI TTS → Respuesta vocal
- Captura de audio: El teléfono envía fragmentos de audio brutos en PCM de 16 bits, 16kHz, mono a través de WebSocket.
- Speech-to-Text: Deepgram transcribe en streaming con detección automática de fin de habla (VAD).
- LLM: OpenRouter enruta a más de 400 modelos con fallback automático. El modelo comprende la intención y utiliza el function calling para crear tareas, notas o eventos.
- Text-to-Speech: OpenAI TTS (voz "nova") genera la respuesta de audio, transmitida de vuelta a través del mismo WebSocket.
Cada etapa puede fallar independientemente. Implementé reintentos inteligentes, disyuntores y fallbacks en cada nivel. Para el detalle técnico completo del pipeline, lee el artículo dedicado al pipeline vocal.
¿Qué características requirieron más trabajo?
En más de 650 commits, algunas características consumieron semanas enteras. Aquí está el top 3.
Los grupos colaborativos jerárquicos
Sobre el papel: "añadir grupos". En realidad: un sistema jerárquico de 6 niveles de profundidad con 4 roles (Admin, Manager, Member, Viewer), consultas recursivas PostgreSQL (CTE) y 31 políticas RLS para escribir y probar individualmente.
Mi club de buceo fue el caso de uso perfecto: Club → Comisión Técnica → Nivel 1 → Grupo del martes. La herencia de permisos entre niveles fue el verdadero rompecabezas. Lo explico en profundidad en el artículo sobre grupos jerárquicos.
La agenda con recurrencia
Los LLMs no son buenos con las fechas. Cuando dices "todos los martes a las 14h", el modelo debe entender la recurrencia, la zona horaria y generar las ocurrencias correctas. Tuve que construir una tabla de correspondencia y un sistema de validación robusto. El detalle técnico está en el artículo sobre la agenda y los filtros.
La gamificación
12 niveles, 10 insignias, rachas de hasta 365 días, desafíos diarios y una tabla de clasificación. Un esquema dedicado con 5 tablas y disparadores automáticos. La gamificación no es un gadget — cambia fundamentalmente el compromiso de los usuarios. Detallé la arquitectura en el artículo sobre el esquema de gamificación.
¿Qué errores evitar al desarrollar en solitario?
Seré honesto: cometí errores costosos. Si estás desarrollando un proyecto en solitario, aprende de mis fallos.
Error n°1: Cero marketing durante 6 meses
650 commits y ni una sola publicación para hablar de ello. Ninguna. Estaba tan absorto en el código que ignoré por completo la parte de visibilidad. El día que quise comunicarme, partía de cero — cero audiencia, cero contenido, cero historial.
La lección: empieza el marketing desde el primer commit. Incluso un simple tuit "estoy empezando un nuevo proyecto" es mejor que el silencio.
Error n°2: Subestimar la internacionalización
Pasar de 100% francés a 6 idiomas (FR, EN, DE, ES, IT, PT) afectó a 35 archivos y 1993 claves de traducción. Es un trabajo enorme cuando lo haces a posteriori. Hoy, cada nueva característica se traduce desde el principio. La i18n se ha convertido en un verdadero canal de adquisición — lo explico en este artículo sobre la i18n como palanca de crecimiento.
Error n°3: No estructurar la base de datos desde el principio
Tuve la suerte de tomar esta buena decisión, pero he visto tantos proyectos donde todo está en el esquema public que lo menciono. Tres esquemas separados desde el día 1 cambian todo para la mantenibilidad. El detalle está en el artículo sobre la reestructuración de la base de datos.
¿Cómo gestionar un proyecto en solitario de esta envergadura?
650 commits en 6 meses, eso es un promedio de 3-4 commits por día. Algunos días hacía 10, otros cero. Esto es lo que me ayudó:
- Commits atómicos: cada commit hace una sola cosa. Esto simplifica mucho la depuración y la reversión.
- Un monorepo: frontend, backend y sitio web en el mismo repositorio. Un solo
git logpara ver el historial completo del proyecto. - Servicios singleton:
ConversationService,CalendarService,GamificationService... cada dominio tiene su servicio dedicado, fácil de probar y mantener. - El patrón PendingCreation: la voz crea una vista previa, el usuario valida, edita o cancela antes de guardar en la base de datos. Cero sorpresas.
¿Cuál es el coste de funcionamiento de una aplicación vocal IA?
Pregunta que todo el mundo hace. Aquí está el desglose por interacción vocal:
- STT nativo (dispositivo): gratuito. Deepgram cloud como fallback: ~$0.0059/min.
- LLM vía OpenRouter: variable según el modelo, típicamente $0.001-0.01 por solicitud.
- TTS OpenAI: ~$0.015 por 1000 caracteres.
- Supabase: plan gratuito generoso, luego ~$25/mes en Pro.
- Backend Railway: ~$5-10/mes según el uso.
En total, una interacción vocal completa cuesta entre $0.01 y $0.03. Es viable con un modelo freemium — detallé los niveles de suscripción en el artículo sobre RevenueCat y las suscripciones.
¿Dónde está el proyecto hoy?
TAMSIV está en alfa en el Google Play Store. 12 testers activos. El lanzamiento a producción pública es inminente.
Las métricas que importan:
- Más de 650 commits en el monorepo
- 6 idiomas soportados (FR, EN, DE, ES, IT, PT)
- 3 modos WebSocket (Live, Realtime, Batch)
- 31 políticas RLS para la seguridad de los datos
- 12 niveles de gamificación con insignias y rachas
- 6 pestañas: Grabadora, Feed, Agenda, Grupos, Social, Perfil
Preguntas frecuentes
¿Cuánto tiempo se tarda en construir una aplicación vocal IA en solitario?
Para TAMSIV, se necesitaron 6 meses a tiempo completo. Solo el pipeline vocal (STT + LLM + TTS) tomó aproximadamente 3 semanas. Los grupos colaborativos y la gamificación añadieron 2 meses cada uno. Si te concentras solo en el MVP vocal, cuenta 2-3 meses.
¿Por qué React Native en lugar de Flutter o nativo?
Ya conocía React. La New Architecture (Fabric) de React Native 0.81 ofrece un rendimiento casi nativo. Flutter era una opción válida, pero el ecosistema npm y la comunidad React inclinaron la balanza. El nativo puro habría duplicado el tiempo de desarrollo sin una ventaja significativa para este tipo de aplicación.
¿Es el Speech-to-Text nativo tan bueno como Deepgram?
Para la mayoría de los casos, el STT nativo del dispositivo es suficiente y gratuito. Deepgram destaca en entornos ruidosos y para idiomas no europeos. TAMSIV usa el nativo por defecto y cambia a Deepgram como fallback. Comparé ambos en detalle en el artículo STT nativo vs Deepgram.
¿Cómo monetizar una aplicación vocal IA sin disparar los costes?
El modelo freemium con límites diarios en el plan gratuito. Las características costosas (STT en la nube, generación de imágenes IA) están reservadas para los planes Pro y Team. RevenueCat gestiona las suscripciones in-app. El secreto es optimizar el coste por interacción — el STT nativo gratuito cubre el 90% de los usos.
¿Se necesita un backend para una aplicación vocal o todo puede ejecutarse localmente?
Necesitas un backend para el LLM (function calling, orquestación) y el TTS (las API están en el lado del servidor). El STT puede ejecutarse localmente. El WebSocket es indispensable para el streaming en tiempo real — las llamadas HTTP clásicas añaden demasiada latencia.