Graba tus juntas con el Apple Watch y mándaselas a tus agentes IA
El pipeline real que armé para que cada junta termine como conocimiento estructurado en mi sistema. Cero costo de transcripción, cero suscripciones, máximo control.
El problema que esto resuelve
Tomar notas en una junta importante mientras estás presente en la junta es imposible. O escuchas bien, o anotas bien — ambas no. Y la opción “le pago a Otter / Fireflies / Read.ai” tiene tres problemas:
- Cuesta entre $15 y $30 USD al mes por cuenta.
- Tu audio pasa por servidores que no controlas.
- La estructura que te devuelve es genérica, no la que tus agentes consumen.
Después de probar varias opciones, armé un pipeline propio. Cero costo de transcripción, todo procesamiento local o usando los planes que ya pago, y la estructura del output la decido yo — porque la consumen mis agentes después. Así se ve hoy:
- Costo marginal
- $0
- Procesar 1h de audio
- ~6 min
- Privacidad audio
- 100%
01 — Captura
Graba la junta con el Watch o el iPhone, sin apps de pago
La captura es la parte más sencilla y la que más gente sobre-piensa. La regla simple:
- Si la junta es presencial: Voice Memos en el iPhone, lo dejas boca arriba sobre la mesa.
- Si estás en movimiento (caminando, manejando, café rápido): abres Voice Memos en el Apple Watch y grabas desde la muñeca. Sincroniza solo al iPhone después.
- Si la junta es por Zoom/Meet: activas la grabación local de la plataforma — no usas Voice Memos.
Voice Memos viene gratis, ya está en tu iPhone, y los audios suben automáticamente a iCloud — los ves en tu Mac sin tocar nada.
Naming híbrido al guardar
Una vez termina la junta, renombras el archivo en el iPhone con un prefijo de cliente:
helthe-onboarding-2026-05-15.m4a
blackout-revision-mensual-2026-05-12.m4a
lexjets-kickoff-2026-05-10.m4a
bdb-interna-yael-1to1-2026-05-09.m4a El prefijo de cliente es obligatorio. Si te equivocas o no aplica, lo nombras 'inbox-' y lo clasificas después.
02 — Transcripción
Transcribe el audio a texto sin pagar nada
Aquí tienes dos opciones igual de válidas. Yo uso WhisperX local en mi Mac porque ya está pagada y nunca sale el audio. Si no tienes Mac con GPU decente, Groq Whisper API es gratis hasta 30 horas al mes — que es muchísimo.
Opción A — 100% local con WhisperX
WhisperX es Whisper large-v3-turbo + pyannote para diarización (saber quién dice qué). Lo instalas una vez y se queda.
pip install whisperx
# luego configuras tu HuggingFace token para pyannote
huggingface-cli login Necesitas aceptar los términos de pyannote-3.1 en HuggingFace antes del primer run.
whisperx helthe-onboarding-2026-05-15.m4a \
--model large-v3 \
--language es \
--diarize \
--output_format srt \
--output_dir ./transcripts/ Una hora de audio se procesa en ~6 minutos en un Mac M2. El SRT te marca speaker (SPEAKER_00, SPEAKER_01, etc.) por segmento.
Opción B — Groq Whisper gratis
Si prefieres no instalar nada local, Groq tiene Whisper hosted gratuito hasta 30 horas/mes. Más rápido que local, pero el audio sí sube a sus servidores.
curl https://api.groq.com/openai/v1/audio/transcriptions \
-H "Authorization: Bearer $GROQ_API_KEY" \
-H "User-Agent: prefieroai/1.0" \
-F "file=@helthe-onboarding-2026-05-15.m4a" \
-F "model=whisper-large-v3" \
-F "language=es" \
-F "response_format=verbose_json" Groq exige header User-Agent (Cloudflare lo filtra si no viene). El JSON te devuelve segmentos con timestamps.
03 — Estructuración
Convierte la transcripción en conocimiento accionable
La transcripción cruda no sirve para nada todavía. Es un muro de texto sin jerarquía. El siguiente paso es pasarle ese texto a Claude (o el LLM que prefieras) para que lo convierta en una nota estructurada.
Aquí uso claude --print desde la CLI con el login activo de mi suscripción Claude Pro/Max — sin API key, sin costo marginal extra. Si no tienes Pro, usas la API key normal con modelo Haiku (es baratísimo para esto).
El prompt que uso
Lo guardo como ~/junta-pipeline/prompt.md y se lo paso a Claude junto con la transcripción:
Eres mi asistente de notas de juntas. Recibes una transcripción
con diarización (SPEAKER_00, SPEAKER_01, ...).
Devuelve un Markdown con esta estructura exacta:
## Asistentes
- <SPEAKER_00 → nombre real si lo deduces del contexto>
## Resumen ejecutivo
<3-5 bullets de qué se decidió>
## Action items
- [ ] <acción> · owner: <persona> · fecha: <YYYY-MM-DD>
## Acuerdos
- <acuerdo concreto>
## Temas pendientes para próxima junta
- <tema>
## Citas textuales relevantes
> "<frase memorable>" — <speaker>
NO inventes nada. Si algo no quedó claro en la transcripción, marca
"⚠️ pendiente de confirmar". El prompt está fijado intencionalmente. Cuando cambias el prompt, todas las notas viejas dejan de ser comparables.
Ejecutarlo desde la terminal
cat transcripts/helthe-onboarding-2026-05-15.srt | \
claude --print \
--system "$(cat ~/junta-pipeline/prompt.md)" \
> memory/juntas/helthe/2026-05-15-onboarding.md claude --print toma stdin como mensaje del usuario, usa el system prompt que le pasas, e imprime la respuesta a stdout. Lo rediriges al archivo final.
04 — Almacenamiento
Guarda el conocimiento donde tus agentes lo encuentren
El output del paso anterior es un Markdown estructurado. La pregunta clave: ¿dónde lo dejas para que tus agentes lo lean después?
Mi convención:
Folder por cliente
memory/juntas/<cliente>/<fecha>-<tipo>.md — la estructura por cliente facilita que el agente de ese cliente solo lea lo suyo. Sin mezclas, sin filtrado runtime.
INDEX.md global
memory/juntas/INDEX.md es un índice plano: una línea por junta con fecha · cliente · tema · link al archivo. El agente lo lee al inicio de cada conversación para tener contexto histórico.
Embeddings opcionales (Fase 5)
Si tienes mucho contenido (>50 juntas), agregas embeddings en Pinecone para búsqueda semántica cross-juntas. No es necesario al principio — Markdown plano es más que suficiente los primeros meses.
05 — Automatización
Conviértelo en un watcher que corre solo
Una vez que el pipeline funciona manual, lo automatizas con un watcher que detecta cuando llega un audio nuevo a tu carpeta de Voice Memos y dispara los pasos 2-4.
En macOS lo armas con launchd (un plist en ~/Library/LaunchAgents/). El script processor.py toma cada archivo nuevo, infiere cliente del prefijo del nombre, transcribe, estructura, y guarda.
06 — Cuidados
Qué cuidar para que esto no te explote en la cara
Retención de audios originales
Los audios crudos pesan. Una junta de 1 hora son ~30MB. Si grabas 30 juntas al mes, en un año tienes ~10GB en iCloud. Mi regla: borrar audios originales a los 90 días — la transcripción y la nota estructurada se quedan para siempre.
Datos sensibles
No grabes juntas sobre temas financieros personales, legales en curso, o despidos. Para esos temas, tomas notas manuales y punto. La fricción del pipeline no vale los riesgos.
Validación humana
Cada nota estructurada tiene un owner humano (tú o un asistente). Esa persona la lee y corrige antes de marcarla como “confirmada”. El LLM se equivoca — más seguido en nombres de personas mal pronunciados, en fechas, y en owners de acciones. Una revisión humana de 2 minutos por nota te ahorra incidentes.
Aviso de grabación
Si trabajas con clientes EU o tienes empleados europeos, la grabación tiene reglas más estrictas (GDPR). Antes de meter una junta con un cliente EU al pipeline, formaliza el aviso y el derecho de borrado.
Lo que te llevas
- Pipeline 100% propio, $0 de costo marginal real.
- Audio nunca sale de tu Mac si usas WhisperX local.
- Estructura del output la decides tú — porque la consumen tus agentes.
- Prefijo de cliente en el naming desde el momento de grabar.
- Aviso obligatorio antes de cada grabación.
- Manual primero, watcher después.