1. Cos'è TaskiAI
TaskiAI è un assistente AI opzionale integrato in Taski, disponibile in due modalità distinte:
- Modalità inline (
@TaskiAI): invocabile esplicitamente nelle chat 1-1 con altre persone (disabilitato nei gruppi). Le risposte sono visibili a entrambi i partecipanti della chat. Coperta dalle sezioni 2-15 di questo documento. - Modalità chat dedicata: una chat 1-1 privata fra l'utente e l'assistente, accessibile dalla lista chat (voce "Taski AI"). Nessuna persona terza è coinvolta: messaggi e risposte sono visibili solo all'utente. Coperta dalla sezione 16.
In entrambe le modalità il servizio è fornito da Anthropic tramite i modelli Claude Sonnet 5, Claude Opus 4.7 e Claude Haiku 4.5 (vedere sezione 6), e da OpenAI (gpt-image-2.5-flare) per la generazione e il ritocco di immagini quando l'utente li richiede esplicitamente.
Molti dei limiti di utilizzo descritti in questo documento (messaggi, immagini, ricerche web, chiamate vocali) variano in base al piano dell'account: Free (gratuito) o Taski Plus (abbonamento a pagamento). Dove applicabile, questo documento indica entrambi i valori.
2. Eccezione al modello E2EE
Importante. TaskiAI è l'unica funzione che, quando attivata, fa eccezione al modello E2EE end-to-end. Per rispondere alla domanda dell'utente, un servizio AI esterno deve poter leggere il contesto della conversazione. Tutto il resto dell'attività dell'utente in Taski (messaggi, chiamate, media) resta cifrato end-to-end e illeggibile per il titolare e per terzi.
3. Cosa viene condiviso con Anthropic
I dati seguenti vengono trasmessi al provider AI solo al momento dell'invocazione esplicita di @TaskiAI:
- Ultimi 20 messaggi della conversazione corrente, decifrati solo in transito. Se tra questi ci sono posizioni, il modello riceve anche le relative coordinate: per la posizione in tempo reale solo il punto di partenza e la durata indicati nel messaggio di avvio, mai gli aggiornamenti successivi; per la funzione "Contatto fidato" le richieste di posizione e il punto inviato in risposta dal telefono di chi le ha ricevute (con precisione, ora del rilevamento e livello della batteria).
- Massimo 3 foto recenti del contesto, compresse a 768px e descritte in testo da Claude Haiku 4.5. Le didascalie generate vengono cachate per 14 giorni per conversazione per evitare ri-elaborazioni costose.
- Il nome visualizzato dell'utente per attribuire correttamente la richiesta.
- La domanda esplicita scritta dopo
@TaskiAI.
Le azioni "Spiega" e "Suggerisci" da long-press inviano il messaggio selezionato e, come contesto, gli stessi ultimi 20 messaggi, posizioni comprese.
4. Cosa NON facciamo
- ❌ Il server non archivia mai il plaintext dei messaggi o delle foto del contesto a riposo. Lo vede solo in transito, come un proxy. (Fanno eccezione le risposte e le immagini generate o ritoccate dall'AI, vedere sezioni 11 e 14.)
- ❌ Anthropic non usa i dati dell'utente per addestrare i propri modelli (policy contrattuale Anthropic).
- ❌ TaskiAI non viene mai invocato automaticamente: solo quando l'utente scrive
@TaskiAIo usa le azioni "Chiedi a TaskiAI" da long-press su un messaggio. - ❌ Nessuna foto viene inviata se nei 20 messaggi recenti non ce ne sono.
- ❌ Nei gruppi TaskiAI è disabilitato per design: la decisione di condividere il contesto deve essere unanime, e mantenere il consenso bilaterale è troppo fragile in un gruppo.
5. Memoria per chat
TaskiAI può ricordare fatti rilevanti emersi nella conversazione (es. "Stefano è celiaco") per rendere le risposte successive più utili.
- Scope per chat: i fatti di una conversazione non sono mai visibili in altre. La memoria è isolata per (utente, chat).
- Storage locale + sync cifrato: i fatti sono salvati sul dispositivo dell'utente (SwiftData su iOS, IndexedDB su Web, file locale su Android) e sincronizzati tra i dispositivi dell'utente via Cloudflare KV in forma cifrata end-to-end AES-256-GCM. La chiave deriva dalla chiave privata dell'utente via HKDF (salt = SHA256(convId), info = "taski-ai-memory:v1"). Il server conserva solo dati cifrati che non può leggere.
- Estrazione automatica: Claude Haiku 4.5 estrae fatti dal contesto dopo ogni risposta. Cap: 50 fatti / 2KB per chat con compaction deterministica score-based.
- Comandi espliciti: "ricordati che..." aggiunge un fatto con flag userStated (escluso da auto-compaction). "dimentica..." rimuove un fatto.
- Controllo totale: è possibile disattivare la memoria, vedere ed eliminare singoli fatti dal Profilo della chat → Memoria TaskiAI.
- Durata della copia sincronizzata: la copia cifrata su Cloudflare KV scade dopo 90 giorni senza aggiornamenti.
6. Modelli usati
- Claude Sonnet 5 (Anthropic): risposte conversazionali, comandi inline, azione "Spiega", traduzione con AI Rewrite, decisione di invocare i tool di generazione e ritocco immagini.
- Claude Opus 4.7 (Anthropic): ragionamento avanzato, usato solo su richiesta esplicita dell'utente (es. "ragiona meglio", "usa un modello più potente") ed entro la quota giornaliera dedicata (vedere sezione 13).
- Claude Haiku 4.5 (Anthropic): risposte brevi o semplici nella chat dedicata, azioni rapide Traduci/Correggi/Suggerisci, AI Rewrite (esclusa la traduzione), estrazione fatti per memoria, descrizione foto contesto, double-check moderazione, estrazione memoria post-chiamata vocale (sezione 16.5).
- gpt-image-2.5-flare (OpenAI, con ripiego su gpt-image-2): generazione e ritocco di immagini quando l'utente lo richiede esplicitamente (vedere sezione 14).
- gpt-image-2.5-flare e gpt-image-1 (OpenAI): sticker AI (vedere sezione 18).
- gpt-realtime-2.1 + gpt-4o-mini-transcribe (OpenAI Realtime API): chiamata vocale full-duplex con il chatbot dedicato (sezione 16.5).
- Tavily: ricerca web durante la chiamata vocale con il chatbot dedicato (sezione 16.5).
Il modello effettivo può variare nel tempo per migliorare qualità o ridurre costi, sempre nell'ambito dei provider sopra elencati (Anthropic per i modelli linguistici, OpenAI per immagini e voce realtime, Tavily per la ricerca web vocale).
7. Opt-out
L'utente può disabilitare TaskiAI completamente in:
- iOS: Impostazioni → Privacy → TaskiAI
- Android: Impostazioni → Privacy → TaskiAI
- Web/Desktop: Impostazioni → Privacy → TaskiAI
Quando anche uno solo dei partecipanti di una chat 1-1 ha l'opt-out attivo, le menzioni @TaskiAI in quella chat vengono rifiutate dal server.
8. Disclosure obbligatoria pre-invocazione
La prima volta che l'utente invoca TaskiAI in una chat, l'app mostra una schermata di disclosure che spiega cosa sta per essere condiviso (compreso l'aggiornamento dei 20 messaggi e delle 3 foto). È necessaria una conferma per procedere. La conferma è memorizzata localmente; se vengono aggiornate le condizioni di condivisione (es. cambia il numero di messaggi o foto), la disclosure viene ri-mostrata.
9. UX: skip push del messaggio user
Quando l'utente invia @TaskiAI ..., l'altro partecipante non riceve la push notification di tale messaggio (per non subire spam). Riceve invece solo la push della risposta AI, con avatar dedicato di TaskiAI. Questo riduce il rumore nella chat condivisa.
10. Contesto rubrica nel prompt
Per consentire a TaskiAI di riferirsi correttamente ai partecipanti, i 20 messaggi del contesto vengono passati al modello con nomi dalla rubrica del dispositivo (risolti localmente sul dispositivo dell'utente prima dell'invio) anziché con userId numerici. Questo migliora la qualità delle risposte ma significa che Anthropic vede i nomi così come compaiono nella rubrica dell'utente.
11. Conservazione dati
- Messaggi del contesto: non persistiti dal server Taski. Per ridurre latenza e costi, Anthropic può mantenerli temporaneamente in cache (prompt caching) per al massimo 1 ora, dopodiché vengono scartati; non vengono usati per l'addestramento.
- Foto: non persistite. Solo le didascalie generate (testo) sono cachate per 14 giorni per chat in Cloudflare KV.
- Risposte AI: persistite normalmente nei messaggi della chat (visibili a entrambi i partecipanti, con etichetta "✨ TaskiAI"). Non sono cifrate E2EE perché il server le ha generate; sono protette da TLS in transito e crittografia a riposo.
- Memoria: sul dispositivo dell'utente (vedere sezione 5). Sync KV ciphertext-only se attivo.
12. Sub-processori AI
I dati AI vengono trattati da tre sub-processori distinti, ciascuno per un compito specifico:
- Anthropic (Claude Sonnet 5 / Opus / Haiku 4.5): risposte conversazionali, estrazione memoria, descrizione foto del contesto, double-check moderazione, decisione di invocare il tool di generazione immagini.
- Privacy Policy: anthropic.com/legal/privacy
- Acceptable Use Policy: anthropic.com/legal/aup
- Commercial Terms: anthropic.com/legal/commercial-terms
- OpenAI: più usi distinti.
- gpt-image-2.5-flare (ripiego gpt-image-2) — generazione immagini quando l'utente lo richiede esplicitamente. Riceve solo il prompt testuale costruito da Claude (in inglese, max 1000 caratteri), non i messaggi originali della chat né le foto.
- gpt-image-2.5-flare (ripiego gpt-image-2) — ritocco foto su richiesta esplicita. Riceve la foto da modificare e le istruzioni di modifica (vedere sezione 14.1).
- gpt-image-2.5-flare / gpt-image-1 — sticker AI, inclusa la foto sorgente in modalità "foto → sticker" (vedere sezione 18).
- gpt-realtime-2.1 + gpt-4o-mini-transcribe (Realtime API) — chiamata vocale full-duplex con il chatbot dedicato. Riceve audio in streaming PCM16, le trascrizioni generate per turn-detection, eventuali foto che l'utente invia durante la chiamata (max 768px, JPEG) e un system prompt iniziale con nome utente, data/ora e memoria locale del chatbot. Quando la chiamata parte dalla chat dedicata, il system prompt include anche gli ultimi 5 messaggi testuali della stessa chat come contesto passivo di riferimento (l'AI li conosce ma non li menziona finché l'utente non vi fa riferimento). Dettagli in sezione 16.5.
- Privacy Policy: openai.com/policies/privacy-policy
- Business Terms: openai.com/policies/business-terms
- Tavily: ricerca web durante la chiamata vocale con il chatbot dedicato. Riceve solo la query di ricerca formulata dall'AI (max 400 caratteri) e il Paese dedotto dalla lingua, senza identificativi dell'utente.
- Privacy Policy: tavily.com/privacy
Anche i fornitori non Anthropic/OpenAI usati per moderazione e ripiego (Cloudflare Workers AI: Llama Guard 3, Flux Schnell) operano solo nei casi descritti nell'Informativa sulla privacy e nella Politica di uso accettabile.
13. Limitazioni e responsabilità
- Probabilistico: TaskiAI può sbagliare. Le risposte non sostituiscono pareri medici, legali, finanziari professionali.
- No persistent training: Anthropic dichiara di non addestrare modelli sui dati API trasmessi a fini di servizio. Tuttavia, in caso di richieste di sicurezza o legali, dati transienti possono essere analizzati per identificare abusi.
- Nessuna garanzia: il servizio è in beta e fornito "as is".
Limiti di velocità (modalità inline)
- Messaggi
@TaskiAI: Free 5 al giorno · Plus 30 al giorno per utente (cap server-side, finestra rolling 24h). - Azioni "Chiedi a TaskiAI" da long-press (Spiega, Traduci, Correggi, Suggerisci): Free 5 al giorno · Plus 30 al giorno per utente.
- AI Rewrite (riscrittura della bozza, vedere sezione 18): Free 5 al giorno · Plus 30 al giorno per utente.
- Ragionamento avanzato (Claude Opus): Free 1 al giorno · Plus 5 al giorno per utente. Cap condiviso con la modalità chat dedicata (sezione 16.8).
14. Generazione immagini
Quando l'utente invoca TaskiAI con una richiesta esplicita di generare un'immagine (es. "@TaskiAI disegnami un tramonto"), Claude Sonnet 5 può chiamare un tool interno generate_image che produce l'immagine attraverso un secondo provider AI.
Cosa viene condiviso con OpenAI (generazione)
- Solo il prompt testuale, costruito da Claude in inglese (max 1000 caratteri), arricchito con dettagli pertinenti dal contesto della chat (soggetto, stile, atmosfera).
- Non vengono mai inviati a OpenAI: messaggi originali della chat, foto, identità degli utenti, conversationId, userId.
- Style + aspect ratio scelti da Claude tra un set predefinito.
Dove finisce l'immagine generata
- L'immagine è salvata nel bucket R2 di Cloudflare al percorso
ai-generated/{conversationId}/{messageId}.jpgin chiaro (non cifrata end-to-end). - Servita ai partecipanti via signed URL HMAC-SHA256 valido 7 giorni e non rinnovabile.
- Visibile a entrambi i partecipanti della chat 1-1, esattamente come per le risposte testuali AI (sezione 11).
Conservazione e cancellazione
- 7 giorni dalla generazione, come per gli altri contenuti non cifrati end-to-end. Cleanup automatico via cron giornaliero alle 2 AM UTC.
- L'utente può salvare manualmente l'immagine nel rullino del proprio dispositivo prima della scadenza tappando l'immagine in chat.
- Una volta scaduta su R2, l'immagine non è più recuperabile dal server, ma resta visibile localmente sui dispositivi che l'hanno cachata.
Limiti d'uso
- Free: 2 immagini al giorno · Plus: 10 al giorno per utente (cap globale lato server, condiviso fra modalità inline e chat dedicata e fra generazione e ritocco — vedere 14.1 e 16.4). Il contatore si azzera ogni giorno a mezzanotte UTC.
- Se il limite è raggiunto, una bolla informativa generata localmente avvisa l'utente. Nessuna richiesta viene inviata a OpenAI.
Eccezione al modello E2EE
Le immagini generate non sono cifrate end-to-end perché il server le produce. Sono comunque protette da TLS in transito e crittografia a riposo (server-side encryption R2 di Cloudflare). Questa è una conseguenza inevitabile della funzionalità AI, analoga alla sezione 2 (Eccezione al modello E2EE).
14.1 Ritocco foto
L'utente può chiedere a TaskiAI di modificare una foto (es. "@TaskiAI togli lo sfondo da questa foto"). In questo caso Claude può chiamare il tool interno edit_image, che modifica i pixel della foto reale tramite OpenAI.
- Quale foto: in modalità inline viene usata la foto più recente presente nel contesto della chat, che può essere stata inviata anche dall'altro partecipante. Nella chat dedicata viene usata la foto allegata dall'utente.
- Cosa riceve OpenAI: la foto (decifrata sul dispositivo e inviata in chiaro al server Taski, protetta da TLS in transito, e da lì a OpenAI) e le istruzioni di modifica. Non riceve messaggi della chat, identità degli utenti, conversationId o userId.
- Risultato: la foto modificata è salvata in chiaro (non cifrata end-to-end) su Cloudflare R2 e mostrata in chat come le immagini generate: in modalità inline è visibile a entrambi i partecipanti per 7 giorni, nella chat dedicata per 24 ore.
- Quota: ogni ritocco consuma una generazione dalla quota immagini (Free 2 · Plus 10 al giorno).
- Responsabilità: l'utente deve avere il diritto di modificare la foto e rispettare l'immagine e la dignità delle persone ritratte (vedere Politica di uso accettabile).
15. Ricerca web
Quando l'utente fa una domanda che richiede informazioni recenti o di attualità (meteo, orari di apertura, prezzi correnti, notizie del giorno, eventi recenti), Claude Sonnet 5 può autonomamente decidere di invocare un tool di ricerca web fornito da Anthropic per recuperare informazioni dal web pubblico.
Cosa viene inviato
- La query di ricerca formulata dal modello a partire dalla domanda dell'utente, generalmente in inglese per ottimizzare la qualità dei risultati del motore (es. "weather forecast May 5 2026"). La query è generata dal modello, non scritta dall'utente, e non contiene la posizione precisa dell'utente: solo il paese (IT) e il fuso orario (Europe/Rome) vengono passati al tool come parametri di localizzazione.
- Il modello riceve fino a 5 risultati per query (titolo, URL, snippet di anteprima, contenuto della pagina).
- I risultati vengono inclusi come input nel turno successivo di Claude per generare la risposta finale al utente, che riporta le citazioni delle fonti.
Provider e localizzazione
La ricerca web è eseguita server-side da Anthropic tramite il loro tool web_search (motore Brave Search). Le richieste sono localizzate per l'Italia (parametro country: IT, timezone: Europe/Rome).
Limiti e cap
- Massimo 2 ricerche per turno di domanda (cap server-side imposto al modello).
- Free: non disponibile (0 ricerche/giorno) · Plus: 15 ricerche al giorno per utente (cap server-side, finestra rolling 24h). Sugli account Free il tool non viene esposto al modello; su Plus, una volta raggiunto il cap, Claude risponderà con il proprio knowledge base senza poter cercare fino al reset.
- Il client iOS replica il cap per pre-empt UX: query che sembrano richiedere ricerca web (parole chiave "cerca", "oggi", "domani", "che tempo", "quanto costa") vengono bloccate localmente quando il cap è esaurito, evitando chiamate inutili al server.
Conservazione e privacy
- Le query e i risultati di ricerca seguono lo stesso accordo zero-retention con Anthropic della sezione 11: nessun training, nessun log oltre il necessario per la risposta.
- Taski non logga le query di ricerca eseguite, solo il conteggio aggregato per applicare il rate limit (chiave KV
ai-websearch:userIdcon TTL 24h, contiene solo un numero). - Le citazioni nella risposta finale (URL e titolo dei siti consultati) sono visibili sia all'utente che invoca
@TaskiAIsia all'altro partecipante della chat 1-1 (analogo al testo della risposta AI).
16. Chat dedicata con TaskiAI (chatbot)
Oltre all'invocazione inline @TaskiAI descritta nelle sezioni precedenti, è disponibile una chat 1-1 privata con l'assistente, raggiungibile dalla lista chat alla voce "Taski AI". È una conversazione fra l'utente e il modello, separata da qualsiasi altra chat: nessuna persona terza la vede né la riceve.
16.1 Cosa viene condiviso con Anthropic
I dati seguenti vengono trasmessi al provider AI solo durante la conversazione attiva:
- Lo storico testuale della chat dedicata (messaggi dell'utente e risposte dell'assistente).
- Foto e documenti PDF che l'utente carica esplicitamente nella chat (tramite il pulsante allegati). Le foto (ridimensionate) e i PDF vengono inviati come file al modello di risposta, che li legge direttamente.
- La memoria persistente della chat dedicata (vedere 16.3), inclusa nel system prompt come contesto.
- Il nome visualizzato dell'utente, la data e l'ora correnti per personalizzare le risposte.
I messaggi delle altre chat dell'utente (1-1 con altre persone, gruppi, ecc.) non vengono mai trasmessi al chatbot. La chat dedicata è isolata da tutto il resto dell'attività in Taski.
16.2 Eccezione al modello E2EE
Come per la modalità inline (sezione 2), anche la chat dedicata non è cifrata end-to-end: il server deve poter inoltrare il contenuto al provider AI per generare le risposte. I messaggi della chat dedicata (domande dell'utente e risposte dell'AI) sono conservati sul server in chiaro fino a 7 giorni, per fornire al modello il contesto della conversazione; gli allegati non vengono conservati. La chat è protetta da TLS in transito e crittografia a riposo. Tutto il resto dell'attività dell'utente in Taski (chat con altre persone, chiamate, media) resta E2EE.
16.3 Memoria persistente locale
- Storage locale, sincronizzazione cifrata E2EE: la memoria della chat dedicata è salvata localmente sul dispositivo dell'utente. Dove è sincronizzata tra i dispositivi dell'utente, avviene esclusivamente in forma cifrata end-to-end (AES-256, chiave derivata dalla chiave privata dell'utente): il server conserva solo dati cifrati che non può leggere. La chat dedicata e la sua memoria sono disponibili su iPhone, Android, Web e Desktop; Apple Watch non vi ha accesso.
- Capacità: un numero limitato di fatti per chat, con deduplicazione e gestione automatica dello spazio.
- Estrazione automatica: Claude Haiku 4.5 estrae fatti rilevanti dopo ogni risposta dell'assistente (saltato in presenza di allegati per latenza).
- Comandi espliciti: "ricordati che…" forza l'aggiunta, "dimentica…" la rimozione di un fatto specifico.
- Controllo totale: dalla schermata della chat dedicata è possibile aprire la "Memoria TaskiAI", visualizzare la lista completa, eliminare singoli fatti o cancellare tutto.
- Trasmissione al server: all'invocazione la memoria viene inviata al server come parte del prompt (necessaria al modello AI per rispondere) e non viene archiviata a riposo in chiaro dal server Taski (Anthropic può tenerla in cache per max 1 ora, vedere sezione 11); l'eventuale sincronizzazione multi-device avviene solo in forma cifrata end-to-end (vedi sopra).
16.4 Generazione immagini
Quando l'utente richiede esplicitamente la generazione di un'immagine (es. "disegnami…"), il chatbot può chiamare lo stesso tool generate_image descritto nella sezione 14, con queste differenze:
- Limite d'uso: Free 2 immagini al giorno · Plus 10 al giorno — stesso contatore condiviso con la modalità inline (sezione 14): non è un limite aggiuntivo, è lo stesso cap giornaliero per utente indipendentemente da dove viene generata l'immagine.
- Storage: le immagini sono salvate nel bucket R2 di Cloudflare al percorso
ai-chatbot/{userId}/{messageId}.jpg, in chiaro (non cifrate end-to-end), con TTL 24 ore. - Cache locale: dopo la generazione, l'app scarica e mantiene una copia locale dell'immagine sul dispositivo che la conserva anche dopo la scadenza R2. L'utente può salvare l'immagine nel rullino, condividerla o copiarla tramite long-press.
- Cosa riceve OpenAI: identico alla sezione 14 — solo il prompt testuale costruito da Claude (max 1000 caratteri, in inglese), non la cronologia della chat né altre foto. Per il ritocco di una foto allegata vale la sezione 14.1.
16.5 Chiamata vocale con il chatbot
Dalla schermata della chat dedicata è possibile avviare una chiamata vocale full-duplex con TaskiAI tappando l'icona telefono nell'header. La conversazione avviene in tempo reale tramite la Realtime API di OpenAI; il server Taski fa da proxy WebSocket fra il dispositivo dell'utente e OpenAI, senza archiviare l'audio.
Cosa viene condiviso con OpenAI durante la chiamata
- Audio del microfono in formato PCM16 mono 24 kHz, trasmesso in streaming continuo per la durata della chiamata.
- Trascrizioni generate dal modello
gpt-4o-mini-transcribe(input utente) e dal modellogpt-realtime-2.1(risposta AI) per consentire interruzioni naturali e turn-detection (Server VAD). - Foto inviate dall'utente durante la chiamata: dall'app è possibile, tramite il pulsante fotocamera, scattare una foto o sceglierne una dalla galleria e inviarla all'AI mentre la chiamata è in corso. La foto viene ridimensionata a max 768px (lato lungo), compressa in JPEG e trasmessa a OpenAI come
input_imagesul canale Realtime con dettaglio basso. L'AI può vederla e commentarla a voce. Il client consente l'invio di una foto alla volta (un secondo invio è bloccato finché non arriva la conferma di ricezione del precedente); non c'è un limite numerico di foto per chiamata. Nessuna foto viene inviata automaticamente: ogni invio richiede un'azione esplicita dell'utente. - System prompt iniziale: contiene il nome dell'utente, la data/ora correnti, le capabilities ridotte attive durante la chiamata e la memoria persistente locale del chatbot (sezione 16.3) come contesto.
- Ultimi 5 messaggi della chat scritta (solo se la chiamata parte dalla chat dedicata): per consentire continuità conversazionale fra modalità testo e voce, quando l'utente avvia la chiamata vocale toccando l'icona telefono nell'header della chat dedicata, il dispositivo invia al server gli ultimi 5 messaggi testuali della stessa chat (role + testo, max 1900 caratteri per messaggio). Il server li include nelle
instructionsdi sessione come blocco "RECENT TEXT CHAT CONTEXT (PASSIVE BACKGROUND REFERENCE ONLY)" con regole esplicite per il modello: non sollevare quei topic di propria iniziativa, non riassumerli nel saluto, attendere che l'utente parli per primo, usarli solo se l'utente vi fa riferimento esplicito. Se l'utente avvia la chiamata da un entry point diverso (Recenti iOS, widget, ecc.) non viene inviato alcun messaggio di contesto. I 5 messaggi non diventano turni della conversazione vocale e non confluiscono nelle trascrizioni passate a Claude Haiku 4.5 per l'estrazione memoria post-chiamata.
Voce dell'assistente
L'AI parla con la voce "marin" di OpenAI (multilingue auto-match). La selezione è fissa lato server e non è personalizzabile dall'utente.
Capabilities ridotte durante la chiamata
In modalità vocale TaskiAI non può generare immagini o produrre PDF/documenti: per quelle l'utente viene reindirizzato alla chat testuale al termine della chiamata. Può: ricevere foto dall'utente durante la chiamata (vedi sopra) e commentarle a voce; creare memo e programmare messaggi tramite tool dedicati; cercare sul web (vedi sotto). La memoria persistente è condivisa fra le due modalità.
Ricerca web durante la chiamata
Quando serve un'informazione aggiornata (notizie, meteo, orari, prezzi), l'AI può eseguire una ricerca web tramite Tavily, annunciandolo a voce. A Tavily vengono inviati solo la query formulata dall'AI (max 400 caratteri) e il Paese dedotto dalla lingua, senza identificativi dell'utente. Massimo 3 ricerche per chiamata. Taski non conserva le query.
Estrazione memoria post-chiamata
Al termine della chiamata, le trascrizioni accumulate (cap 8000 caratteri) vengono inviate una sola volta a Claude Haiku 4.5 (Anthropic) per estrarre eventuali fatti rilevanti da aggiungere alla memoria persistente locale dell'utente (sezione 16.3). I fatti vengono applicati sul dispositivo via WebSocket. Le trascrizioni non sono persistite a riposo dal server Taski.
Conservazione dati
- Audio: mai persistito — solo in transito attraverso il proxy WebSocket Taski → OpenAI.
- Foto inviate durante la chiamata: mai persistite sul server Taski. Trasmesse a OpenAI all'interno del messaggio Realtime e poi cancellate. Sul dispositivo dell'utente restano nella cache locale del player se l'utente le ha scattate dalla fotocamera in-app.
- Trascrizioni: tenute in memoria del Durable Object durante la sessione (cap 8000 caratteri, FIFO). Al termine vengono (a) inviate a Claude Haiku 4.5 per estrazione memoria e (b) aggregate in un singolo messaggio TaskiAI formattato (
*Tu:* ... *TaskiAI:* ...) inserito nella chat dedicata e visibile all'utente come messaggio normale. Come gli altri messaggi della chat dedicata, questo messaggio resta sul server fino a 7 giorni (vedere 16.9). - OpenAI può trattenere transientemente l'audio e le trascrizioni come previsto dalla propria policy. OpenAI dichiara di non addestrare i modelli sui dati API per finalità di servizio.
- Bolla "chiamata terminata": al termine della sessione viene inserito nella chat un messaggio di sistema (durata, esito) analogo alle chiamate vocali fra utenti. Persistito normalmente nella cronologia chat dedicata locale.
Limite d'uso
- Free: 2 minuti / 24 ore · Plus: 30 minuti / 24 ore per utente (separato dai limiti messaggi/immagini/documenti). Il contatore è persistito su Cloudflare KV (
ai-voice-mins:{userId}, TTL 24h) e si resetta automaticamente. - Per avviare una chiamata sono necessari almeno 30 secondi residui di quota.
- Quando la quota è esaurita il server forza la chiusura della sessione e l'utente vede una bolla informativa.
Eccezione al modello E2EE
L'audio della chiamata non è cifrato end-to-end: deve poter essere processato da OpenAI per generare la risposta. È protetto da TLS in transito (sia client → Taski che Taski → OpenAI) e non è persistito a riposo. Tutte le altre chiamate Taski (1-1 e di gruppo) restano cifrate end-to-end via SRTP/AES-GCM.
Disponibilità
La chiamata vocale con il chatbot è disponibile su iPhone e Android, esclusivamente nella chat dedicata. Web, Desktop e Apple Watch non hanno accesso a questa funzione.
16.6 Documenti generati (PDF)
Quando l'utente lo richiede esplicitamente, il chatbot può produrre un documento PDF (es. ricetta, lista, riepilogo). Il PDF viene generato localmente sul dispositivo dall'app a partire dal testo restituito dal modello, e salvato in cache nella cartella Documents/AIChatPDFs/. Non viene mai inviato a OpenAI o ad altri provider: la generazione è interamente client-side. Tap sulla bolla → anteprima Quick Look con bottoni di sistema per condivisione e salvataggio.
16.7 Foto e documenti caricati dall'utente
- Foto: ridimensionate e inviate come immagine al modello di risposta di Anthropic. Le foto sono cachate localmente sul dispositivo per la visualizzazione successiva. Se l'utente chiede di modificarle, la foto viene inviata anche a OpenAI (sezione 14.1).
- Documenti PDF: inviati come file al modello di risposta di Anthropic, che ne legge il contenuto.
- Né foto né documenti caricati dall'utente vengono persistiti dal server Taski a riposo (nella cronologia resta solo la didascalia scritta dall'utente o l'indicazione del tipo di allegato).
16.8 Limiti di velocità
- Messaggi: Free 3 al giorno · Plus 15 al giorno per utente (rate limit server-side e client-side, finestra rolling 24h). Se raggiunto, un banner avvisa l'utente e blocca temporaneamente l'invio.
- Documenti caricati: 5 documenti al giorno per utente.
- Immagini generate: Free 2 al giorno · Plus 10 al giorno — stesso contatore condiviso con la modalità inline (vedere 16.4).
- Chiamata vocale: Free 2 minuti · Plus 30 minuti, ogni 24 ore, per utente (vedere 16.5). Cap server-side persistito su Cloudflare KV.
- Ragionamento avanzato (Claude Opus): Free 1 al giorno · Plus 5 al giorno per utente — cap condiviso con la modalità inline (sezione 13).
Questi limiti sono indipendenti tra loro e sono applicati lato server; l'app ne mantiene una copia locale solo per avvisare l'utente in anticipo.
16.9 Conservazione dati
- Cronologia chat dedicata: sul dispositivo dell'utente (database locale dell'app) fino al logout, alla cancellazione dell'account o allo svuotamento manuale della chat. Sul server i messaggi (testo delle domande e delle risposte, senza allegati) restano in chiaro fino a 7 giorni, poi vengono cancellati automaticamente; vengono cancellati subito se l'account viene eliminato.
- Memoria: file locale, con eventuale copia sincronizzata cifrata E2EE che scade dopo 90 giorni senza aggiornamenti (vedere 16.3 e 5).
- Immagini generate (R2): 24 ore, poi cancellazione automatica via cron giornaliero.
- PDF generati: cache locale dell'app fino a logout o cancellazione manuale.
- Audio chiamata vocale: mai persistito (vedere 16.5).
- Trasmissione transitoria: Anthropic e OpenAI possono trattenere transientemente i dati come previsto dalle rispettive policy (vedere sezione 12). Anthropic e OpenAI dichiarano di non addestrare modelli sui dati API.
16.10 Disponibilità multipiattaforma
La chat dedicata (messaggi, allegati e memoria) è disponibile su iPhone, Android, Web e Desktop. La chiamata vocale con il chatbot è disponibile solo su iPhone e Android. Apple Watch non ha accesso al chatbot dedicato.
16.11 Opt-out
L'opt-out globale TaskiAI dalla sezione 7 (Impostazioni → Privacy → TaskiAI) disattiva sia la modalità inline che la chat dedicata (testo e voce). È inoltre possibile non aprire mai la chat dedicata né avviare la chiamata vocale: nessuna richiesta viene inviata ai provider AI finché l'utente non interagisce esplicitamente.
17. Pianificazione messaggi tramite comando vocale
Durante una chiamata vocale con TaskiAI, l'utente può chiedere all'assistente di programmare un messaggio futuro a un suo contatto: ad esempio "manda a Marco domani alle 10 il messaggio: ciao come stai". Per trasparenza, ecco il flusso completo passo per passo.
17.1 Cosa attraversa OpenAI in chiaro
- La voce dell'utente viene trascritta in tempo reale dalla OpenAI Realtime API sui server OpenAI, in chiaro, con retention contrattualmente zero (vedere sezione 12).
- L'AI estrae i tre parametri necessari: nome del destinatario, testo del messaggio, data/ora futura.
- In questo passaggio il testo del messaggio passa attraverso OpenAI in chiaro — è inevitabile, perché l'AI deve comprendere cosa scrivere per poterlo strutturare correttamente.
17.2 Cosa avviene sul dispositivo
- Il dispositivo dell'utente riceve i parametri estratti.
- Identifica il contatto Taski corrispondente nella rubrica locale (matching testuale case-insensitive sui contatti con cui esiste già una chat 1-1).
- Prepara il messaggio in chiaro localmente.
17.3 Cifratura E2EE prima dell'invio al server Taski
- Prima di inviare al server, il messaggio viene cifrato end-to-end con AES-256-GCM e chiave simmetrica condivisa via X25519, esattamente come un messaggio normale.
- Il server Taski riceve solo la versione cifrata, salvata nella tabella
scheduled_messages. - All'ora programmata, un job cron del server consegna il messaggio cifrato al destinatario tramite WebSocket o push.
- Il destinatario decifra il messaggio sul proprio dispositivo: il server Taski non ha mai accesso al testo in chiaro.
17.4 Sintesi sulla riservatezza
OpenAI vede temporaneamente il testo del messaggio (perché lo trascrive dalla voce dell'utente e lo elabora per estrarre i parametri), ma il messaggio finale arriva al destinatario E2EE come qualsiasi altro messaggio Taski. Il server Taski non vede mai il testo in chiaro. Il provider AI (OpenAI) lo vede in transito per il tempo strettamente necessario all'elaborazione, sotto contratto di retention zero (vedere sezione 12).
17.5 Limiti d'uso (MVP)
- Funziona solo con contatti con cui l'utente ha già una chat 1-1 aperta.
- Il matching del nome è testuale (case-insensitive contains): se l'utente possiede più contatti con lo stesso nome, l'AI chiede di specificare meglio.
- Solo testo: foto, messaggi vocali, video e documenti non sono al momento programmabili da voce.
- La data/ora deve essere futura. L'AI calcola le date relative ("domani alle 10", "stasera alle 8") nel fuso orario locale del dispositivo.
17.6 Alternativa 100% E2EE senza provider AI
L'utente che preferisce non far transitare il testo da OpenAI nemmeno in maniera temporanea può sempre programmare i messaggi manualmente dall'interfaccia chat, tramite l'icona dell'orologio nella barra di inserimento. La pianificazione manuale è 100% E2EE end-to-end e non coinvolge alcun provider AI: il messaggio è cifrato sul dispositivo prima di lasciarlo, come qualsiasi altro messaggio Taski.
17.7 Opt-out
L'opt-out globale TaskiAI dalla sezione 7 disattiva anche la possibilità di programmare messaggi via voce (la chiamata vocale con TaskiAI non è più disponibile). La pianificazione manuale dall'interfaccia chat resta sempre disponibile e non è influenzata dall'opt-out AI.
18. Sticker AI e riscrittura dei messaggi
18.1 Sticker AI
- L'utente può creare sticker da un testo o da una foto. Gli sticker sono generati da OpenAI (gpt-image-2.5-flare o gpt-image-1, a seconda dello stile).
- In modalità "foto → sticker" la foto sorgente viene inviata in chiaro al server Taski (protetta da TLS) e da lì a OpenAI; il server non la conserva. Lo sticker risultante viene poi inviato in chat cifrato end-to-end come gli altri media.
- Solo per gli sticker da testo, se OpenAI non è disponibile, viene usato un ripiego: Claude Haiku 4.5 (Anthropic) prepara il prompt e Flux Schnell (Cloudflare Workers AI) genera l'immagine. Le foto non vengono mai inviate ai fornitori di ripiego.
- Limiti: Free 1 sticker · Plus 5 sticker ogni 24 ore per utente. Se la generazione non va a buon fine, la quota viene restituita.
18.2 AI Rewrite (riscrittura della bozza)
- Prima di inviare un messaggio, l'utente può chiedere di riscrivere la bozza: correggere, migliorare, rendere più formale, informale, breve o divertente, oppure tradurre.
- Ad Anthropic viene inviato solo il testo della bozza (max 2000 caratteri) e il tono scelto: Claude Sonnet 5 per la traduzione, Claude Haiku 4.5 per gli altri toni. La bozza riscritta torna sul dispositivo; il messaggio, se inviato, viaggia poi cifrato end-to-end come qualsiasi altro.
- Il server Taski non conserva né il testo originale né quello riscritto.
- Limiti: Free 5 · Plus 30 riscritture al giorno per utente.
19. Contatti
Domande su TaskiAI: [email protected]