Il problema
Un documento Word (.doc) arriva via email da un'azienda cliente. Contiene un modulo da sottoscrivere: va inserita una data, aggiunta una firma digitale e il documento va riconsegnato in PDF.
Workflow manuale standard:
- Scaricare l'allegato da Gmail
- Aprirlo in Word o LibreOffice
- Inserire la data nei campi puntini
- Trovare la firma salvata da qualche parte
- Inserirla manualmente nel punto corretto
- Esportare in PDF
- Allegare il PDF alla email di risposta
20 minuti di lavoro meccanico. E succederà di nuovo — questo tipo di documento è ricorrente.
La pipeline automatizzata
Punti critici risolti
Compilazione campi data: i documenti legali usano spesso sequenze di puntini come placeholder. Il pattern matching funziona ma non è deterministico — ogni documento ha la propria convenzione (…………… vs .........). La soluzione è un set di pattern comuni.
for para in doc.paragraphs:
if '……………………' in para.text:
para.text = para.text.replace('……………………', "29/01/2026")
Inserimento firma immagine: para.clear() è necessario prima di inserire immagini — altrimenti il testo esistente rimane.
for para in doc.paragraphs:
if '.........' in para.text:
para.clear()
run = para.add_run()
run.add_picture('firma.jpg', width=Inches(1.5))
LibreOffice headless: stabile per entrambe le conversioni (.doc→.docx e .docx→PDF). Timeout 30 secondi sufficiente per documenti sotto 1MB. Output PDF di qualità alta.
Encoding firma da Drive: read_file restituisce contenuto escaped. Encoding latin1 per la conversione bytes → stringa.
Evoluzione del tool
- V1: firma testuale (nome scritto) — rapida ma non autentica
- V2: firma vera inserita manualmente — corretta ma non automatizzata
- V3: tool CLI completo — riutilizzabile su qualsiasi documento futuro
Interfaccia finale:
python3 document-signer/signer.py \ --message-id <gmail_message_id> \ --signature <drive_file_id>
Risultati
- Workflow da 20 min → 3 min (download + esecuzione + controllo)
- Tool riutilizzabile: funziona su qualsiasi documento con pattern simili
- Sviluppo totale: ~15 minuti inclusi 3 cicli di debug
Il pattern è replicabile per qualsiasi workflow di firma documenti via email: contratti, moduli, dichiarazioni ricorrenti. La chiave è non automatizzare per automatizzare, ma farlo quando il workflow si ripete — anche solo 3-4 volte l'anno il costo di sviluppo è già ammortizzato.