1. Qué es TaskiAI
TaskiAI es un asistente de IA opcional integrado en Taski, disponible en dos modalidades distintas:
- Modalidad inline (
@TaskiAI): invocable explícitamente en los chats 1-1 con otras personas (deshabilitado en los grupos). Las respuestas son visibles para ambos participantes del chat. Cubierta por las secciones 2-15 de este documento. - Modalidad chat dedicado: un chat 1-1 privado entre el usuario y el asistente, accesible desde la lista de chats (entrada "Taski AI"). Ninguna persona externa está involucrada: los mensajes y las respuestas son visibles solo para el usuario. Cubierta por la sección 16.
En ambas modalidades el servicio está proporcionado por Anthropic mediante los modelos Claude Sonnet 5, Claude Opus 4.7 y Claude Haiku 4.5 (véase la sección 6), y por OpenAI (gpt-image-2.5-flare) para la generación y el retoque de imágenes cuando el usuario los solicita explícitamente.
Muchos de los límites de uso descritos en este documento (mensajes, imágenes, búsquedas web, llamadas de voz) varían según el plan de la cuenta: Free o Taski Plus (suscripción de pago). Cuando aplica, este documento indica ambos valores.
2. Excepción al modelo E2EE
Importante. TaskiAI es la única función que, cuando se activa, hace excepción al modelo E2EE de extremo a extremo. Para responder a la pregunta del usuario, un servicio de IA externo debe poder leer el contexto de la conversación. Todo lo demás de la actividad del usuario en Taski (mensajes, llamadas, multimedia) permanece cifrado de extremo a extremo e ilegible para nosotros y para terceros.
3. Qué se comparte con Anthropic
Los siguientes datos se transmiten al proveedor de IA solo en el momento de la invocación explícita de @TaskiAI:
- Los últimos 20 mensajes de la conversación actual, descifrados solo en tránsito. Si entre ellos hay ubicaciones, el modelo recibe también las coordenadas correspondientes: en el caso de la ubicación en tiempo real, solo el punto de partida y la duración indicados en el mensaje de inicio, nunca las actualizaciones posteriores; en el caso de la función "Contacto de confianza", las solicitudes de ubicación y el punto enviado como respuesta por el teléfono de quien las recibió (con precisión, hora de la medición y nivel de batería).
- Máximo 3 fotos recientes del contexto, comprimidas a 768px y descritas en texto por Claude Haiku 4.5. Los pies de foto generados se cachean durante 14 días por conversación para evitar reprocesamientos costosos.
- El nombre visible del usuario para atribuir correctamente la solicitud.
- La pregunta explícita escrita tras
@TaskiAI.
Las acciones "Explicar" y "Sugerir" desde long-press envían el mensaje seleccionado y, como contexto, los mismos últimos 20 mensajes, ubicaciones incluidas.
4. Qué NO hacemos
- ❌ El servidor nunca archiva el plaintext de los mensajes o de las fotos del contexto en reposo. Solo lo ve en tránsito, como un proxy. (Se exceptúan las respuestas y las imágenes generadas o retocadas por la IA, véanse las secciones 11 y 14.)
- ❌ Anthropic no usa los datos del usuario para entrenar sus modelos (política contractual de Anthropic).
- ❌ TaskiAI nunca se invoca automáticamente: solo cuando el usuario escribe
@TaskiAIo utiliza las acciones "Pregunta a TaskiAI" desde long-press en un mensaje. - ❌ No se envía ninguna foto si no hay ninguna en los 20 mensajes recientes.
- ❌ En los grupos TaskiAI está deshabilitado por diseño: la decisión de compartir el contexto debe ser unánime, y mantener el consentimiento bilateral resulta demasiado frágil en un grupo.
5. Memoria por chat
TaskiAI puede recordar hechos relevantes surgidos en la conversación (p. ej., "Stefano es celiaco") para hacer las respuestas posteriores más útiles.
- Ámbito por chat: los hechos de una conversación nunca son visibles en otras. La memoria está aislada por (usuario, chat).
- Almacenamiento local + sincronización cifrada: los hechos se guardan en el dispositivo del usuario (SwiftData en iOS, IndexedDB en Web, archivo local en Android) y se sincronizan entre los dispositivos del usuario mediante Cloudflare KV en forma cifrada de extremo a extremo AES-256-GCM. La clave deriva de la clave privada del usuario vía HKDF (salt = SHA256(convId), info = "taski-ai-memory:v1"). El servidor solo almacena datos cifrados que no puede leer.
- Extracción automática: Claude Haiku 4.5 extrae hechos del contexto tras cada respuesta. Cap: 50 hechos / 2KB por chat con compaction determinista basada en score.
- Comandos explícitos: "recuerda que..." añade un hecho con flag userStated (excluido de auto-compaction). "olvida..." elimina un hecho.
- Control total: el usuario puede desactivar la memoria, ver y eliminar hechos individuales desde el Perfil del chat → Memoria TaskiAI.
- Duración de la copia sincronizada: la copia cifrada en Cloudflare KV caduca tras 90 días sin actualizaciones.
6. Modelos utilizados
- Claude Sonnet 5 (Anthropic): respuestas conversacionales, comandos inline, acción "Explicar", traducción con AI Rewrite, decisión de invocar las herramientas de generación y retoque de imágenes.
- Claude Opus 4.7 (Anthropic): razonamiento avanzado, usado solo cuando el usuario lo solicita explícitamente (p. ej. "razona mejor", "usa un modelo más potente") y dentro de la cuota diaria dedicada (véase la sección 13).
- Claude Haiku 4.5 (Anthropic): respuestas breves o sencillas en el chat dedicado, acciones rápidas Traducir/Corregir/Sugerir, AI Rewrite (excepto la traducción), extracción de hechos para la memoria, descripción de fotos de contexto, double-check de moderación, extracción de memoria post-llamada de voz (véase la sección 16.5).
- gpt-image-2.5-flare (OpenAI, con respaldo en gpt-image-2): generación y retoque de imágenes cuando el usuario lo solicita explícitamente (véase la sección 14).
- gpt-image-2.5-flare y gpt-image-1 (OpenAI): stickers IA (véase la sección 18).
- gpt-realtime-2.1 + gpt-4o-mini-transcribe (OpenAI Realtime API): llamada de voz full-duplex con el chatbot dedicado (véase la sección 16.5).
- Tavily: búsqueda web durante la llamada de voz con el chatbot dedicado (véase la sección 16.5).
El modelo efectivo puede variar con el tiempo para mejorar la calidad o reducir costes, siempre dentro de los proveedores enumerados anteriormente (Anthropic para los modelos de lenguaje, OpenAI para imágenes y voz en tiempo real, Tavily para la búsqueda web por voz).
7. Opt-out
Es posible deshabilitar TaskiAI completamente en:
- iOS: Ajustes → Privacidad → TaskiAI
- Android: Ajustes → Privacidad → TaskiAI
- Web/Escritorio: Ajustes → Privacidad → TaskiAI
Cuando aunque sea uno solo de los participantes de un chat 1-1 tiene el opt-out activo, las menciones @TaskiAI en ese chat se rechazan en el servidor.
8. Disclosure obligatorio antes de la invocación
La primera vez que el usuario invoca TaskiAI en un chat, la app muestra una pantalla de disclosure que explica qué está a punto de compartirse (incluida la actualización de los 20 mensajes y de las 3 fotos). Es necesario confirmar para continuar. La confirmación se memoriza localmente; si actualizamos las condiciones de compartición (p. ej., cambia el número de mensajes o de fotos), el disclosure se vuelve a mostrar.
9. UX: skip push del mensaje del usuario
Cuando el usuario envía @TaskiAI ..., el otro participante no recibe la notificación push de ese mensaje (para evitarle spam). Recibe en cambio solo la push de la respuesta de la IA, con avatar dedicado de TaskiAI. Esto reduce el ruido en el chat compartido.
10. Contexto de la agenda en el prompt
Para permitir a TaskiAI referirse correctamente a los participantes, los 20 mensajes del contexto se pasan al modelo con nombres de la agenda del dispositivo (resueltos localmente en el dispositivo del usuario antes del envío) en lugar de userId numéricos. Esto mejora la calidad de las respuestas pero significa que Anthropic ve los nombres tal y como aparecen en la agenda del usuario.
11. Conservación de datos
- Mensajes del contexto: no persistidos por el servidor de Taski. Para reducir la latencia y los costes, Anthropic puede mantenerlos temporalmente en caché (prompt caching) durante un máximo de 1 hora, tras lo cual se descartan; no se utilizan para el entrenamiento.
- Fotos: no persistidas. Solo los pies de foto generados (texto) se cachean durante 14 días por chat en Cloudflare KV.
- Respuestas de la IA: persistidas normalmente en los mensajes del chat (visibles a ambos participantes, con etiqueta "✨ TaskiAI"). No están cifradas E2EE porque el servidor las ha generado; están protegidas por TLS en tránsito y cifrado en reposo.
- Memoria: en el dispositivo del usuario (véase la sección 5). Sync KV ciphertext-only si está activo.
12. Sub-procesadores de IA
Los datos de IA son tratados por tres sub-procesadores distintos, cada uno para una tarea específica:
- Anthropic (Claude Sonnet 5 / Opus / Haiku 4.5): respuestas conversacionales, extracción de memoria, descripción de fotos de contexto, double-check de moderación, decisión de invocar el tool de generación de imágenes.
- Privacy Policy: anthropic.com/legal/privacy
- Acceptable Use Policy: anthropic.com/legal/aup
- Commercial Terms: anthropic.com/legal/commercial-terms
- OpenAI: varios usos distintos.
- gpt-image-2.5-flare (respaldo gpt-image-2) — generación de imágenes cuando el usuario lo solicita explícitamente. Recibe solo el prompt textual construido por Claude (en inglés, máximo 1000 caracteres), no los mensajes originales del chat ni las fotos.
- gpt-image-2.5-flare (respaldo gpt-image-2) — retoque de fotos a petición explícita. Recibe la foto que se va a modificar y las instrucciones de modificación (véase la sección 14.1).
- gpt-image-2.5-flare / gpt-image-1 — stickers IA, incluida la foto de origen en el modo "foto → sticker" (véase la sección 18).
- gpt-realtime-2.1 + gpt-4o-mini-transcribe (Realtime API) — llamada de voz full-duplex con el chatbot dedicado. Recibe audio en streaming PCM16, las transcripciones generadas para turn-detection, eventuales fotos que el usuario envía durante la llamada (max 768px, JPEG) y un system prompt inicial con el nombre del usuario, la fecha/hora y la memoria local del chatbot. Cuando la llamada se inicia desde el chat dedicado, el system prompt incluye también los últimos 5 mensajes de texto de ese chat como contexto pasivo de referencia (la IA los conoce pero no los menciona a menos que el usuario haga referencia explícita). Detalles en la sección 16.5.
- Privacy Policy: openai.com/policies/privacy-policy
- Business Terms: openai.com/policies/business-terms
- Tavily: búsqueda web durante la llamada de voz con el chatbot dedicado. Recibe solo la consulta de búsqueda formulada por la IA (máx. 400 caracteres) y el país deducido del idioma, sin identificadores del usuario.
- Privacy Policy: tavily.com/privacy
Los proveedores distintos de Anthropic/OpenAI utilizados para la moderación y como respaldo (Cloudflare Workers AI: Llama Guard 3, Flux Schnell) también operan únicamente en los casos descritos en la Política de privacidad y en la Política de uso aceptable.
13. Limitaciones y responsabilidad
- Probabilístico: TaskiAI puede equivocarse. Las respuestas no sustituyen el asesoramiento médico, legal o financiero profesional.
- No persistent training: Anthropic declara no entrenar modelos con los datos de la API transmitidos para fines de servicio. No obstante, en caso de requerimientos de seguridad o legales, datos transitorios pueden ser analizados para identificar abusos.
- Sin garantías: el servicio está en beta y se presta "as is".
Límites de velocidad (modalidad inline)
- Mensajes
@TaskiAI: Free 5 al día · Plus 30 al día por usuario (límite server-side, ventana móvil 24h). - Acciones "Pregunta a TaskiAI" desde long-press (Explicar, Traducir, Corregir, Sugerir): Free 5 al día · Plus 30 al día por usuario.
- AI Rewrite (reescritura del borrador, véase la sección 18): Free 5 al día · Plus 30 al día por usuario.
- Razonamiento avanzado (Claude Opus): Free 1 al día · Plus 5 al día por usuario. Límite compartido con la modalidad chat dedicado (sección 16.8).
14. Generación de imágenes
Cuando el usuario invoca TaskiAI con una petición explícita de generar una imagen (p. ej., "@TaskiAI dibújame un atardecer"), Claude Sonnet 5 puede llamar a un tool interno generate_image que produce la imagen a través de un segundo proveedor de IA.
Qué se comparte con OpenAI (generación)
- Solo el prompt textual, construido por Claude en inglés (máximo 1000 caracteres), enriquecido con detalles relevantes del contexto del chat (sujeto, estilo, atmósfera).
- Nunca se envían a OpenAI: mensajes originales del chat, fotos, identidades de los usuarios, conversationId, userId.
- Style + aspect ratio elegidos por Claude entre un conjunto predefinido.
Dónde se almacena la imagen generada
- La imagen se guarda en el bucket R2 de Cloudflare en la ruta
ai-generated/{conversationId}/{messageId}.jpgen texto claro (no cifrada end-to-end). - Servida a los participantes mediante signed URL HMAC-SHA256 válida durante 7 días y no renovable.
- Visible para ambos participantes del chat 1-1, exactamente igual que para las respuestas textuales de la IA (sección 11).
Conservación y eliminación
- 7 días desde la generación, como el resto de contenidos no cifrados de extremo a extremo. Limpieza automática mediante cron diario a las 2 AM UTC.
- El usuario puede guardar manualmente la imagen en el carrete de su dispositivo antes de su vencimiento pulsando sobre la imagen en el chat.
- Una vez caducada en R2, la imagen ya no es recuperable desde el servidor, pero permanece visible localmente en los dispositivos que la hayan cacheado.
Límites de uso
- Free: 2 imágenes al día · Plus: 10 al día por usuario (cap global del lado del servidor, compartido entre la modalidad inline y el chat dedicado y entre generación y retoque — véanse 14.1 y 16.4). El contador se pone a cero cada día a medianoche UTC.
- Si se alcanza el límite, una burbuja informativa generada localmente avisa al usuario. No se envía ninguna solicitud a OpenAI.
Excepción al modelo E2EE
Las imágenes generadas no están cifradas end-to-end porque el servidor las produce. Sin embargo, están protegidas por TLS en tránsito y cifrado en reposo (server-side encryption R2 de Cloudflare). Esta es una consecuencia inevitable de la funcionalidad de IA, análoga a la sección 2 (Excepción al modelo E2EE).
14.1 Retoque de fotos
El usuario puede pedir a TaskiAI que modifique una foto (p. ej., "@TaskiAI quita el fondo de esta foto"). En este caso, Claude puede llamar al tool interno edit_image, que modifica los píxeles de la foto real mediante OpenAI.
- Qué foto: en la modalidad inline se utiliza la foto más reciente presente en el contexto del chat, que puede haber sido enviada también por el otro participante. En el chat dedicado se utiliza la foto adjuntada por el usuario.
- Qué recibe OpenAI: la foto (descifrada en el dispositivo y enviada en claro al servidor de Taski, protegida por TLS en tránsito, y desde allí a OpenAI) y las instrucciones de modificación. No recibe mensajes del chat, identidades de los usuarios, conversationId ni userId.
- Resultado: la foto modificada se guarda en claro (no cifrada de extremo a extremo) en Cloudflare R2 y se muestra en el chat como las imágenes generadas: en la modalidad inline es visible para ambos participantes durante 7 días; en el chat dedicado, durante 24 horas.
- Cuota: cada retoque consume una generación de la cuota de imágenes (Free 2 · Plus 10 al día).
- Responsabilidad: el usuario debe tener derecho a modificar la foto y respetar la imagen y la dignidad de las personas retratadas (véase la Política de uso aceptable).
15. Búsqueda web
Cuando el usuario hace una pregunta que requiere información reciente o de actualidad (clima, horarios de apertura, precios actuales, noticias del día, eventos recientes), Claude Sonnet 5 puede decidir autónomamente invocar una herramienta de búsqueda web proporcionada por Anthropic para obtener información de la web pública.
Qué se envía
- La consulta de búsqueda formulada por el modelo a partir de la pregunta del usuario, normalmente en inglés para optimizar la calidad de los resultados del motor (p. ej. "weather forecast May 5 2026"). La consulta es generada por el modelo, no escrita por el usuario, y no incluye la ubicación precisa del usuario: solo el país (IT) y la zona horaria (Europe/Rome) se pasan al tool como parámetros de localización.
- El modelo recibe hasta 5 resultados por consulta (título, URL, fragmento de vista previa, contenido de la página).
- Los resultados se incluyen como entrada en el siguiente turno de Claude para producir la respuesta final, que cita las fuentes consultadas.
Proveedor y localización
La búsqueda web se ejecuta server-side por Anthropic mediante su herramienta web_search (motor Brave Search). Las solicitudes están localizadas para Italia por defecto (country: IT, timezone: Europe/Rome).
Límites y topes
- Máximo 2 búsquedas por turno de pregunta (límite server-side aplicado al modelo).
- Free: no disponible (0 búsquedas/día) · Plus: 15 búsquedas al día por usuario (límite server-side, ventana rolling 24h). En cuentas Free la herramienta nunca se expone al modelo; en Plus, una vez alcanzado el límite diario, Claude responderá con su conocimiento sin poder buscar hasta el reset.
- El cliente iOS replica el límite para pre-empt UX: consultas que parecen requerir búsqueda web (palabras clave "buscar", "hoy", "mañana", "qué tiempo", "cuánto cuesta") se bloquean localmente cuando el límite está agotado, evitando llamadas inútiles al servidor.
Conservación y privacidad
- Las consultas y resultados de búsqueda siguen el mismo acuerdo zero-retention con Anthropic de la sección 11: sin entrenamiento, sin logs más allá de lo necesario para la respuesta.
- Taski no registra las consultas de búsqueda ejecutadas, solo un contador agregado para aplicar el rate limit (clave KV
ai-websearch:userIdcon TTL 24h, contiene solo un número). - Las citas en la respuesta final (URL y títulos de los sitios consultados) son visibles tanto al usuario que invoca
@TaskiAIcomo al otro participante del chat 1-1 (igual que el texto de la respuesta de la IA).
16. Chat dedicado con TaskiAI (chatbot)
Además de la invocación inline @TaskiAI descrita en las secciones anteriores, está disponible un chat 1-1 privado con el asistente, accesible desde la lista de chats en la entrada "Taski AI". Es una conversación entre el usuario y el modelo, separada de cualquier otro chat: ninguna persona externa la ve ni la recibe.
16.1 Qué se comparte con Anthropic
Los siguientes datos se transmiten al proveedor de IA solo durante la conversación activa:
- El historial textual del chat dedicado (los mensajes del usuario y las respuestas del asistente).
- Fotos y documentos PDF que el usuario sube explícitamente al chat (mediante el botón de adjuntos). Las fotos (redimensionadas) y los PDF se envían como archivos al modelo de respuesta, que los lee directamente.
- La memoria persistente del chat dedicado (ver 16.3), incluida en el system prompt como contexto.
- El nombre visible del usuario, la fecha y la hora actuales para personalizar las respuestas.
Los mensajes de los otros chats del usuario (1-1 con otras personas, grupos, etc.) nunca se transmiten al chatbot. El chat dedicado está aislado de toda la demás actividad en Taski.
16.2 Excepción al modelo E2EE
Como en la modalidad inline (sección 2), el chat dedicado no está cifrado de extremo a extremo: el servidor debe poder reenviar el contenido al proveedor de IA para generar las respuestas. Los mensajes del chat dedicado (preguntas del usuario y respuestas de la IA) se conservan en el servidor en claro hasta 7 días, para proporcionar al modelo el contexto de la conversación; los adjuntos no se conservan. El chat está protegido por TLS en tránsito y cifrado en reposo. Toda la demás actividad en Taski (chats con otras personas, llamadas, multimedia) permanece E2EE.
16.3 Memoria persistente local
- Almacenamiento local, sincronización cifrada E2EE: la memoria del chat dedicado se guarda localmente en el dispositivo del usuario. Donde se sincroniza entre los dispositivos del usuario, ocurre exclusivamente de forma cifrada de extremo a extremo (AES-256, clave derivada de la clave privada del usuario): el servidor solo almacena datos cifrados que no puede leer. El chat dedicado y su memoria están disponibles en iPhone, Android, Web y Escritorio; Apple Watch no tiene acceso a él.
- Capacidad: un número limitado de hechos por chat, con deduplicación y gestión automática del espacio.
- Extracción automática: Claude Haiku 4.5 extrae hechos relevantes después de cada respuesta del asistente (omitida en presencia de adjuntos por latencia).
- Comandos explícitos: "recuerda que…" fuerza la adición, "olvida…" elimina un hecho específico.
- Control total: desde la pantalla del chat dedicado el usuario puede abrir "Memoria TaskiAI", ver la lista completa, eliminar hechos individuales o borrarlos todos.
- Transmisión al servidor: en la invocación la memoria se envía al servidor como parte del prompt (necesaria para que el modelo de IA responda) y el servidor de Taski no la almacena en texto claro en reposo (Anthropic puede mantenerla en caché durante un máximo de 1 hora, véase la sección 11); cualquier sincronización multidispositivo ocurre solo de forma cifrada de extremo a extremo (ver arriba).
16.4 Generación de imágenes
Cuando el usuario solicita explícitamente la generación de una imagen (ej. "dibújame…"), el chatbot puede llamar a la misma herramienta generate_image descrita en la sección 14, con estas diferencias:
- Límite de uso: Free 2 imágenes al día · Plus 10 al día — mismo contador compartido con la modalidad inline (sección 14): no es un límite adicional, es el mismo cap diario por usuario independientemente de dónde se genere la imagen.
- Almacenamiento: las imágenes se guardan en el bucket R2 de Cloudflare en la ruta
ai-chatbot/{userId}/{messageId}.jpg, en claro (no cifradas de extremo a extremo), con un TTL de 24 horas. - Caché local: tras la generación, la app descarga y conserva una copia local de la imagen en el dispositivo, que se mantiene incluso después de la expiración de R2. El usuario puede guardar la imagen en el carrete, compartirla o copiarla mediante long-press.
- Qué recibe OpenAI: idéntico a la sección 14 — solo el prompt textual construido por Claude (máx 1000 caracteres, en inglés), no el historial del chat ni otras fotos. Para el retoque de una foto adjunta se aplica la sección 14.1.
16.5 Llamada de voz con el chatbot
Desde la pantalla del chat dedicado el usuario puede iniciar una llamada de voz full-duplex con TaskiAI tocando el icono de teléfono en la cabecera. La conversación se desarrolla en tiempo real mediante la Realtime API de OpenAI; el servidor de Taski actúa como proxy WebSocket entre el dispositivo del usuario y OpenAI, sin almacenar el audio.
Qué se comparte con OpenAI durante la llamada
- Audio del micrófono en formato PCM16 mono 24 kHz, transmitido en streaming continuo durante toda la llamada.
- Transcripciones generadas por
gpt-4o-mini-transcribe(entrada del usuario) y por el modelogpt-realtime-2.1(respuesta de la IA) para permitir interrupciones naturales y turn-detection (Server VAD). - Fotos enviadas por el usuario durante la llamada: desde la app, mediante el botón cámara, el usuario puede sacar una foto o elegir una de la galería y enviarla a la IA mientras la llamada está en curso. La foto se redimensiona a max 768px (lado largo), se comprime en JPEG y se envía a OpenAI como
input_imageen el canal Realtime con detalle bajo. La IA puede verla y comentarla con la voz. El cliente permite una foto a la vez (un segundo envío está bloqueado hasta que llegue la confirmación de recepción del anterior); no hay un límite numérico por llamada. Ninguna foto se envía automáticamente: cada envío requiere una acción explícita del usuario. - System prompt inicial: contiene el nombre del usuario, la fecha/hora actual, las capabilities reducidas activas durante la llamada y la memoria persistente local del chatbot (sección 16.3) como contexto.
- Últimos 5 mensajes del chat escrito (solo si la llamada se inicia desde el chat dedicado): para permitir la continuidad conversacional entre texto y voz, cuando el usuario inicia la llamada de voz tocando el icono del teléfono en el encabezado del chat dedicado, el dispositivo envía al servidor los últimos 5 mensajes de texto de ese chat (rol + texto, máx 1900 caracteres por mensaje). El servidor los incluye en las
instructionsde sesión como un bloque "RECENT TEXT CHAT CONTEXT (PASSIVE BACKGROUND REFERENCE ONLY)" con reglas explícitas para el modelo: no sacar esos temas por iniciativa propia, no resumirlos en el saludo, esperar a que el usuario hable primero, usarlos solo si el usuario hace referencia explícita. Si el usuario inicia la llamada desde un punto de entrada diferente (Recientes de iOS, widget, etc.) no se envía ningún mensaje de contexto. Los 5 mensajes no se convierten en turnos de la conversación de voz y no fluyen a las transcripciones pasadas a Claude Haiku 4.5 para la extracción de memoria post-llamada.
Voz del asistente
La IA habla con la voz "marin" de OpenAI (multilingüe auto-match). La selección está fijada en el servidor y no es configurable por el usuario.
Capabilities reducidas durante la llamada
En modo voz TaskiAI no puede generar imágenes ni producir PDF/documentos: para eso el usuario es redirigido al chat textual al finalizar la llamada. Sí puede: recibir fotos del usuario durante la llamada (ver arriba) y comentarlas con la voz; crear memos y programar mensajes mediante tools dedicados; buscar en la web (ver abajo). La memoria persistente está compartida entre las dos modalidades.
Búsqueda web durante la llamada
Cuando se necesita información actualizada (noticias, tiempo, horarios, precios), la IA puede realizar una búsqueda web mediante Tavily, anunciándolo de viva voz. A Tavily se envían solo la consulta formulada por la IA (máx. 400 caracteres) y el país deducido del idioma, sin identificadores del usuario. Máximo 3 búsquedas por llamada. Taski no conserva las consultas.
Extracción de memoria post-llamada
Al finalizar la llamada, las transcripciones acumuladas (cap 8000 caracteres) se envían una sola vez a Claude Haiku 4.5 (Anthropic) para extraer eventuales hechos relevantes que añadir a la memoria persistente local del usuario (sección 16.3). Los hechos se aplican en el dispositivo mediante WebSocket. Las transcripciones no se persisten en reposo en el servidor de Taski.
Conservación de datos
- Audio: nunca persistido — solo en tránsito a través del proxy WebSocket Taski → OpenAI.
- Fotos enviadas durante la llamada: nunca persistidas en el servidor de Taski. Transmitidas a OpenAI dentro del mensaje Realtime y luego descartadas. En el dispositivo del usuario permanecen en la caché local del player solo si el usuario las sacó desde la cámara in-app.
- Transcripciones: conservadas en la memoria del Durable Object durante la sesión (cap 8000 caracteres, FIFO). Al final se (a) envían a Claude Haiku 4.5 para la extracción de memoria y (b) agregan en un único mensaje TaskiAI formateado como
*Tú:* ... *TaskiAI:* ...insertado en el chat dedicado y mostrado al usuario como un mensaje normal. Como los demás mensajes del chat dedicado, este mensaje permanece en el servidor hasta 7 días (ver 16.9). - OpenAI puede retener transitoriamente el audio y las transcripciones según su propia política. OpenAI declara que no entrena los modelos con los datos de la API para fines de servicio.
- Burbuja "llamada finalizada": al final de la sesión se inserta en el chat un mensaje del sistema (duración, resultado) análogo a las llamadas de voz entre usuarios. Persistido normalmente en el historial local del chat dedicado.
Límite de uso
- Free: 2 minutos / 24 horas · Plus: 30 minutos / 24 horas por usuario (separado de los límites de mensajes/imágenes/documentos). El contador se persiste en Cloudflare KV (
ai-voice-mins:{userId}, TTL 24h) y se reinicia automáticamente. - Para iniciar una llamada se requieren al menos 30 segundos de cuota restante.
- Cuando la cuota se agota, el servidor fuerza el cierre de la sesión y el usuario ve una burbuja informativa.
Excepción al modelo E2EE
El audio de la llamada no está cifrado de extremo a extremo: debe poder ser procesado por OpenAI para generar la respuesta. Está protegido por TLS en tránsito (tanto cliente → Taski como Taski → OpenAI) y no se persiste en reposo. Todas las demás llamadas de Taski (1-1 y de grupo) permanecen cifradas de extremo a extremo mediante SRTP/AES-GCM.
Disponibilidad
La llamada de voz con el chatbot está disponible en iPhone y Android, exclusivamente en el chat dedicado. Web, Desktop y Apple Watch no tienen acceso a esta función.
16.6 Documentos generados (PDF)
Cuando el usuario lo solicita explícitamente, el chatbot puede producir un documento PDF (ej. receta, lista, resumen). El PDF se genera localmente en el dispositivo por la app a partir del texto devuelto por el modelo, y se almacena en caché en la carpeta Documents/AIChatPDFs/. Nunca se envía a OpenAI ni a otros proveedores: la generación es enteramente client-side. Toque en la burbuja → vista previa Quick Look con botones del sistema para compartir y guardar.
16.7 Fotos y documentos subidos por el usuario
- Fotos: redimensionadas y enviadas como imagen al modelo de respuesta de Anthropic. Las fotos se almacenan en caché local en el dispositivo para visualización posterior. Si el usuario pide modificarlas, la foto se envía también a OpenAI (sección 14.1).
- Documentos PDF: enviados como archivo al modelo de respuesta de Anthropic, que lee su contenido.
- Ni las fotos ni los documentos subidos por el usuario son persistidos por el servidor de Taski en reposo (en el historial solo queda el pie escrito por el usuario o la indicación del tipo de adjunto).
16.8 Límites de velocidad
- Mensajes: Free 3 al día · Plus 15 al día por usuario (rate limit server-side y client-side, ventana móvil 24h). Si se alcanza, un banner avisa al usuario y bloquea temporalmente el envío.
- Documentos subidos: 5 documentos al día por usuario.
- Imágenes generadas: Free 2 al día · Plus 10 al día — mismo contador compartido con la modalidad inline (ver 16.4).
- Llamada de voz: Free 2 minutos · Plus 30 minutos, cada 24 horas, por usuario (ver 16.5). Cap server-side persistido en Cloudflare KV.
- Razonamiento avanzado (Claude Opus): Free 1 al día · Plus 5 al día por usuario — límite compartido con la modalidad inline (sección 13).
Estos límites son independientes entre sí y se aplican del lado del servidor; la app conserva una copia local solo para avisar al usuario con antelación.
16.9 Conservación de datos
- Historial del chat dedicado: en el dispositivo del usuario (la base de datos local de la app) hasta el cierre de sesión, la eliminación de la cuenta o el vaciado manual del chat. En el servidor, los mensajes (texto de las preguntas y de las respuestas, sin adjuntos) permanecen en claro hasta 7 días y después se eliminan automáticamente; se eliminan de inmediato si se elimina la cuenta.
- Memoria: archivo local, con una posible copia sincronizada cifrada E2EE que caduca tras 90 días sin actualizaciones (ver 16.3 y 5).
- Imágenes generadas (R2): 24 horas, después limpieza automática mediante cron diario.
- PDF generados: caché local de la app hasta cierre de sesión o eliminación manual.
- Audio de la llamada de voz: nunca persistido (ver 16.5).
- Transmisión transitoria: Anthropic y OpenAI pueden retener datos transitoriamente según sus respectivas políticas (ver sección 12). Anthropic y OpenAI declaran no entrenar modelos sobre los datos de la API.
16.10 Disponibilidad multiplataforma
El chat dedicado (mensajes, adjuntos y memoria) está disponible en iPhone, Android, Web y Escritorio. La llamada de voz con el chatbot solo está disponible en iPhone y Android. Apple Watch no tiene acceso al chatbot dedicado.
16.11 Opt-out
El opt-out global de TaskiAI de la sección 7 (Ajustes → Privacidad → TaskiAI) desactiva tanto la modalidad inline como el chat dedicado (texto y voz). Además, basta con no abrir nunca el chat dedicado ni iniciar la llamada de voz: ninguna petición se envía a los proveedores de IA hasta que el usuario interactúe explícitamente.
17. Mensajes programados por voz
Durante una llamada de voz con TaskiAI, el usuario puede pedir al asistente que programe un mensaje futuro a uno de sus contactos: por ejemplo "envía a Marco mañana a las 10 el mensaje: hola cómo estás". Para máxima transparencia, a continuación se describe el flujo completo paso a paso.
17.1 Lo que pasa por OpenAI en texto plano
- La voz del usuario se transcribe en tiempo real por la OpenAI Realtime API en los servidores de OpenAI, en texto plano, con retención contractualmente cero (ver sección 12).
- La IA extrae los tres parámetros necesarios: nombre del destinatario, texto del mensaje, fecha/hora futura.
- En este paso el texto del mensaje pasa por OpenAI en texto plano — es inevitable, porque la IA necesita comprenderlo para estructurarlo correctamente.
17.2 Lo que ocurre en el dispositivo
- El dispositivo del usuario recibe los parámetros extraídos.
- Identifica el contacto Taski correspondiente en la agenda local (emparejamiento textual sin distinguir mayúsculas/minúsculas, sobre contactos con los que ya existe un chat 1-1).
- Prepara el mensaje en texto plano localmente.
17.3 Cifrado E2EE antes del envío al servidor Taski
- Antes de enviar al servidor, el mensaje se cifra end-to-end con AES-256-GCM y clave simétrica compartida vía X25519, exactamente como un mensaje normal.
- El servidor Taski recibe solo la versión cifrada, almacenada en la tabla
scheduled_messages. - A la hora programada, un cron del servidor entrega el mensaje cifrado al destinatario vía WebSocket o push.
- El destinatario descifra el mensaje en su propio dispositivo: el servidor Taski nunca tiene acceso al texto plano.
17.4 Resumen sobre confidencialidad
OpenAI ve temporalmente el texto del mensaje (porque lo transcribe de la voz del usuario y lo procesa para extraer los parámetros), pero el mensaje final llega al destinatario E2EE como cualquier otro mensaje Taski. El servidor Taski nunca ve el texto plano. El proveedor de IA (OpenAI) lo ve solo en tránsito durante el tiempo estrictamente necesario para el procesamiento, bajo contrato de retención cero (ver sección 12).
17.5 Límites de uso (MVP)
- Funciona solo con contactos con los que el usuario ya tiene un chat 1-1 abierto.
- El emparejamiento del nombre es textual (sin distinguir mayúsculas/minúsculas): si el usuario tiene varios contactos con el mismo nombre, la IA pide especificar mejor.
- Solo texto: fotos, mensajes de voz, vídeos y documentos no son programables por voz actualmente.
- La fecha/hora debe ser futura. La IA calcula las fechas relativas ("mañana a las 10", "esta noche a las 8") en la zona horaria local del dispositivo.
17.6 Alternativa 100% E2EE sin proveedor de IA
El usuario que prefiera no hacer transitar el texto por OpenAI ni siquiera de forma temporal puede siempre programar los mensajes manualmente desde la interfaz de chat, mediante el icono de reloj en la barra de entrada. La programación manual es 100% E2EE end-to-end y no involucra ningún proveedor de IA: el mensaje se cifra en el dispositivo antes de salir, como cualquier otro mensaje Taski.
17.7 Opt-out
La exclusión global de TaskiAI descrita en la sección 7 desactiva también la capacidad de programar mensajes por voz (la llamada de voz con TaskiAI deja de estar disponible). La programación manual desde la interfaz de chat permanece siempre disponible y no se ve afectada por la exclusión de IA.
18. Stickers IA y reescritura de mensajes
18.1 Stickers IA
- El usuario puede crear stickers a partir de un texto o de una foto. Los stickers los genera OpenAI (gpt-image-2.5-flare o gpt-image-1, según el estilo).
- En el modo "foto → sticker", la foto de origen se envía en claro al servidor de Taski (protegida por TLS) y desde allí a OpenAI; el servidor no la conserva. El sticker resultante se envía después al chat cifrado de extremo a extremo como el resto del contenido multimedia.
- Solo para los stickers a partir de texto, si OpenAI no está disponible, se utiliza un respaldo: Claude Haiku 4.5 (Anthropic) prepara el prompt y Flux Schnell (Cloudflare Workers AI) genera la imagen. Las fotos nunca se envían a los proveedores de respaldo.
- Límites: Free 1 sticker · Plus 5 stickers cada 24 horas por usuario. Si la generación no se completa correctamente, la cuota se devuelve.
18.2 AI Rewrite (reescritura del borrador)
- Antes de enviar un mensaje, el usuario puede pedir que se reescriba el borrador: corregirlo, mejorarlo, hacerlo más formal, informal, breve o divertido, o bien traducirlo.
- A Anthropic se envían solo el texto del borrador (máx. 2000 caracteres) y el tono elegido: Claude Sonnet 5 para la traducción, Claude Haiku 4.5 para los demás tonos. El borrador reescrito vuelve al dispositivo; el mensaje, si se envía, viaja después cifrado de extremo a extremo como cualquier otro.
- El servidor de Taski no conserva ni el texto original ni el reescrito.
- Límites: Free 5 · Plus 30 reescrituras al día por usuario.
19. Contacto
Consultas sobre TaskiAI: [email protected]