Due anni fa un'IA scriveva un paragrafo. Oggi un agente produce un report di trenta pagine con le sue tabelle, una documentazione tecnica completa, un verbale a partire da una trascrizione, una proposta commerciale a partire da un CRM. Claude Code, Cursor, Notion AI, gli agenti interni collegati ai tuoi strumenti: consegnano quasi tutti la stessa cosa — Markdown, a volte HTML, raramente un PDF.
Ed è proprio nel momento di trasformare quel risultato in PDF che molti team reintroducono, senza pensarci, esattamente ciò che avevano evitato con cura: un servizio terzo che legge, conserva e a volte impara.
Il punto critico: l'agente ha già letto tutto
Un agente che redige un report ha avuto accesso a quanto gli serviva per scriverlo: il codice, i ticket, le email, la base clienti, la trascrizione della riunione. Il documento che produce è un condensato di quelle fonti. Spesso è il file più sensibile di tutta la catena — più di ogni singola fonte presa a sé — perché le mette insieme.
Il percorso dell'agente in sé, in un'azienda seria, è regolato: piano business, accordo sul trattamento dei dati, nessun addestramento, magari un modello ospitato in Europa o in locale. Poi lo sviluppatore o il project manager trascina rapporto.md sul «primo convertitore Markdown → PDF di Google» — un sito sconosciuto, di cui nessuno ha letto le condizioni, e che riceve in chiaro il condensato di tutto ciò che l'agente ha visto.
Il percorso pulito, passo dopo passo
1. L'agente produce il Markdown — nel suo perimetro. È qui che si applicano le tue garanzie contrattuali. Chiedi all'agente di scrivere un file, non di incollare nella chat: il file conserva gli a capo delle tabelle e i blocchi di codice.
2. Revisione umana — e traccia di questa revisione. È ciò che l'AI Act si aspetta da te se il documento viene pubblicato per informare il pubblico: un controllo editoriale assunto esonera dalla dicitura «generato da IA» (i dettagli). Per un documento destinato a un cliente, è comunque l'unico modo per non inviare una clausola inventata. Correggi nel Markdown, non nel PDF.
3. Conversione in locale, nel browser. Markdown in PDF su PDFKami impagina il file sulla tua macchina: titoli, tabelle, blocchi di codice, link conservati, PDF vettoriale e testo selezionabile tramite la finestra di stampa del browser. Nessun invio, nessun modello, nessuna lettura. Le immagini remote non vengono caricate di proposito — un documento ricevuto non deve poter segnalare la propria apertura —; quelle in base64 sì.
4. Rifiniture, sempre in locale. Numerare le pagine; unire con una copertina o degli allegati; applicare una filigrana «Riservato — [cliente] — [data]», che vale tanto per un documento prodotto da un agente quanto per un documento d'identità; comprimere se il report contiene screenshot.
5. Controllo prima dell'invio. Analizzare un PDF sul file finale: nessuno script, nessuna azione, nessun allegato — un documento pulito non ne contiene, e un cliente attrezzato lo verificherà.
In nessun momento, tra il passaggio 1 e l'invio, il documento lascia il computer. I passaggi da 3 a 5 puoi farli in modalità aereo.
Il caso degli agenti di codice
Claude Code, Cursor, Copilot e gli altri generano README, ADR, report di audit, note di migrazione — documentazione che descrive con precisione l'architettura, le dipendenze e a volte le falle note di un sistema. Per un attaccante sono documenti di prima scelta.
Due riflessi: non convertirli su un servizio online (il report di audit di sicurezza caricato su un convertitore gratuito è un classico di cui ci si pente); e trattarli come documenti da consegnare, con filigrana e destinatario nominato, quando escono dal team.
Automatizzare senza reintrodurre terzi
Per un flusso regolare — report settimanale, scheda prodotto, documentazione versionata — uno script locale (Pandoc, oppure markdown + WeasyPrint in Python) esegue la conversione nella tua CI senza alcun servizio esterno; i comandi li trovi in Convertire un Markdown in PDF. Per un documento occasionale, PDFKami è più rapido e non richiede nulla da installare — sul computer del project manager come su quello dello sviluppatore.