La pratica esce dall'azienda
Il portale di FlowSharp apre le pratiche a clienti e fornitori senza account: racconto le scelte su accessi, licenze e controllo umano dell'AI.

Domenica sera, dopo 113 commit in un giorno, ho fatto la prova che contava. Ho aperto un link come lo aprirebbe un fornitore. Niente login, niente password da ricordare. Una pagina chiara, con il logo dell'organizzazione, un compito solo: «Conferma la data di consegna e carica il documento di trasporto». Un esito da scegliere, un file da caricare, «Ricevuto».
Poi ho ricaricato la pagina. «Link non più valido o risposta già registrata.» Nient'altro. Non dice se il link è scaduto, se è stato revocato o se ho già risposto. È voluto, e più avanti spiego perché.
Perché una porta
Fino a questa settimana una pratica di FlowSharp viveva tutta dentro l'azienda. Se all'ufficio acquisti mancava una conferma del fornitore, qualcuno scriveva un'email, aspettava, scaricava l'allegato, lo caricava nella pratica e spostava la fase a mano. Il processo era governato fino alla porta dell'ufficio. Fuori, tornava il mondo delle email e dei «ti ho girato il file?».
Eppure in quasi ogni processo che ho visto da consulente c'è qualcuno che sta fuori. Il cliente che deve integrare un documento mancante. Il fornitore che conferma una data. Il professionista esterno che approva una bozza. Dare a ciascuno un account, un ruolo e una licenza non ha senso. Lasciarli fuori dal processo nemmeno.
Martedì 13 ottobre abbiamo fatto un brainstorming lungo su questo tema, e ne sono uscite tre specifiche nello stesso giorno: il portale dei partecipanti esterni, il task «Ottieni informazioni» e un adapter conversazionale per parlare con il processo da una chat. Ho deciso l'ordine: prima il portale, leggero, poi le richieste di informazioni, poi la conversazione.
I principi li ho voluti scrivere prima di qualunque riga di codice, perché sono quelli che non si negoziano dopo:
- Chi decide il passo successivo è il motore, mai il portale. Il fornitore sceglie un esito, come farebbe un operatore. Sono le regole del flusso a decidere dove va la pratica.
- Esterno non vuol dire utente. Niente account, niente ruolo, niente posto di licenza. Il partecipante è un dato della pratica, un campo del modulo con nome, email e lingua.
- L'esposizione si dichiara in un posto solo. Una fase marcata «Collabora». Fuori da lì, nessun compito può essere affidato a chi sta fuori. Se ci provi, il flusso non si pubblica.
Aprire una porta dopo sei mesi passati a chiuderle
Qui sta il punto della settimana. Da aprile lavoriamo per togliere esposizione: permessi per cartella, Data Shield sui campi riservati, storico immutabile, accessi di supporto tracciati. Una pagina pubblica, raggiungibile da chiunque abbia il link, va nella direzione opposta. Quindi ogni scelta del portale è una scelta su cosa non mostrare.
Un link apre un compito, non una pratica. Il fornitore vede il modulo della fase in sola lettura, con i dati riservati indicati come «Riservato», e solo il compito che gli è stato affidato. Non vede le altre fasi, gli altri partecipanti, i documenti interni. Nel Designer si vede in anteprima la pagina che riceverà. Accanto al compito c'è una nota che ricorda che descrizione e istruzioni saranno lette da fuori: niente informazioni interne, niente credenziali.
Il link non resta in giro. Nel database c'è solo l'impronta del token, non il token. La pagina pubblica non lascia cookie né tracce nel browser, non viene indicizzata dai motori di ricerca e non finisce nei log di accesso del server. Il link scade, per default dopo sette giorni. Si revoca dalla pratica, si rigenera quando è scaduto o già usato. Chi lo martella riceve un freno: sessanta richieste al minuto per link, trecento per indirizzo.
Un errore solo, sempre lo stesso. Link inesistente, scaduto, revocato, già usato, organizzazione disattivata: la risposta è identica. Chi prova a indovinare un link non deve poter capire se ne ha trovato uno vero. Il prezzo lo paga chi ha già risposto e ricarica la pagina: vede un messaggio neutro invece di «grazie, abbiamo ricevuto». Ci abbiamo ragionato, e l'abbiamo accettato. Meglio un fornitore un po' perplesso che un portale che conferma l'esistenza di un link a chi non dovrebbe averlo.
Tutto lascia una traccia. Ogni accesso, ogni esito e ogni documento caricato finisce nello storico della pratica con un attore nuovo, «parte esterna», con il nome del contatto al momento della risposta. Se la traccia non si può scrivere, la risposta non viene accettata. Chi ha solo il ruolo di lettura non vede nemmeno il nome del contatto: è un dato personale, e lo trattiamo come tale fin dal modo in cui è definito.
La costruzione è andata a strati, un giorno dopo l'altro. Mercoledì le specifiche scritte per Codex, l'agente che implementa. Venerdì 16 la v0.98.1 con le fondamenta nel motore, e una scelta precisa: nessun invio ancora acceso. Sabato le rotte pubbliche del portale e il task «Ottieni informazioni», con Salta e Conferma. Domenica i link partono davvero, per email, webhook o evento, con i solleciti nell'orario di lavoro, e il partecipante può compilare anche i campi richiesti, in più riprese. La fase «Collabora» entra nel Designer, la sezione «Partecipanti esterni» nel dettaglio pratica, e la guida ha un capitolo nuovo. Tutto in demo con la v0.99.3.
Il metodo di lavoro, ormai stabile: dieci handoff scritti a Codex in una settimana, una review a ogni consegna, le decisioni a me. Ventitré decisioni solo nella prima specifica. La parte più faticosa non è stata scrivere il portale. È stata decidere cosa non doveva fare.
La licenza, anche per il Free
Il contorno della settimana parte da sabato 11, con la v0.97.3: ogni installazione si attiva con una licenza, anche quella gratuita. Senza licenza FlowSharp resta consultabile ma non accetta modifiche. Il SuperAdmin viene portato alla pagina Licenza, dove può attivare la sua o chiederne una di prova gratuita.
Il motivo non è commerciale, o non solo. Voglio sapere quante installazioni esistono e dove. Quando esce un aggiornamento importante, o quando qualcosa va storto, devo sapere chi avvisare. Un prodotto che le aziende installano in casa propria e che nessuno conosce è un prodotto di cui nessuno risponde.
Effetto collaterale istruttivo: durante la settimana alcuni test sono diventati rossi in CI per un motivo solo. Non avevano una licenza. Abbiamo dovuto seminarne una di prova anche lì. Martedì 13 la v0.97.4 ha chiuso un'altra ambiguità: su un'installazione con più organizzazioni ognuna riceve le funzioni del proprio piano, senza ereditare in silenzio quelle dell'installazione.
L'ondata B dell'audit
L'audit interno dell'11 ottobre aveva prodotto 92 osservazioni e un piano a tre ondate. La prima è entrata tra lunedì e martedì: per entrare in un'organizzazione come supporto serve un motivo, e l'amministratore vede chi è entrato, quando e perché. Mercoledì 14 la v0.97.5 ha tolto le credenziali dei connettori dalle code di lavoro, dove restavano in chiaro, e i dati personali dai log.
La seconda ondata, la B, è la v0.99.0 di sabato 17, ed è quella a cui tengo di più.
- Niente AI di piattaforma senza consenso. Fino a sabato, un'organizzazione senza un provider AI configurato poteva finire, in silenzio, su una chiave di piattaforma. Da sabato i provider messi a disposizione dalla piattaforma valgono solo con il consenso dell'Admin, che vede quale provider, quale modello e quale fornitore riceve i dati.
- Il registro delle chiamate AI è acceso di default. Modello richiesto ed effettivo, parametri, impronte del testo, mai il testo, conservati 180 giorni. Un esito AI senza traccia non viene salvato.
- Il ripiego umano resta umano. Quando un'AI passa una decisione a una persona, solo una persona può chiuderla. Un assistente collegato via MCP, un timeout o un'automazione no.
- Termini d'uso e trasparenza. Al primo accesso si accettano i termini. Il Flow Agent apre ogni conversazione ricordando che si sta parlando con un'IA, e i testi scritti dall'AI e inoltrati fuori portano un segno riconoscibile.
- Retention. Sessioni e token scaduti si puliscono ogni notte. Le pratiche no: non vengono mai cancellate da sole, e se un flusso non ha una regola di conservazione compare un avviso.
Nel mezzo, in una riga ciascuna: lo storico della pratica si apre a pagine anche con migliaia di eventi; le schede di Flussi e Mappe mostrano la forma del processo in piccolo; ogni organizzazione sceglie la sua valuta; completare un compito segue le stesse regole dal browser, dall'estensione e da un agente via MCP.
Numeri della settimana
- Commit: 526 (113 solo domenica 18 ottobre)
- Versioni: 9, da v0.97.3 a v0.99.3
- Handoff scritti a Codex: 10
- Specifiche nate dal brainstorming del 13 ottobre: 3
- Scadenza predefinita del link di un partecipante: 7 giorni
- Conservazione del registro delle chiamate AI: 180 giorni
La settimana prossima
Il portale va in mano ai tester, e qualcosa da rifinire lo troveranno. Arriva la terza ondata dell'audit, quella sui diritti degli interessati: cosa succede quando una persona chiede di vedere, correggere o cancellare i propri dati. E il passo che ho rimandato apposta: la conversazione. Il fornitore che, invece di aprire una pagina, risponde su WhatsApp. Con il motore che continua a decidere. La 1.0.0 non è più una data lontana.