# Accordo sul Trattamento dei Dati / Data Processing Agreement

> **Italian text is authoritative.** The English text is provided as a courtesy
> for non-Italian-speaking signatories; in case of any discrepancy, the Italian
> version prevails.
>
> Template version `1.0`, effective from **2026-04-27**. Structured metadata
> (sub-processors, TOMs, retention windows) is defined in
> [`pkg/dpa.py`](../pkg/dpa.py); changes there propagate to this rendered
> template via the `GET /legal/dpa` route.

---

## ITALIANO (testo prevalente)

### 1. Parti

**Titolare del trattamento** ("Cliente"):
- Ragione sociale: **[NOME CLIENTE]**
- Partita IVA / Codice Fiscale: **[P.IVA CLIENTE]**
- Sede legale: **[INDIRIZZO CLIENTE]**
- Email di contatto: **[EMAIL CLIENTE]**

**Responsabile del trattamento** ("Econova-AI"):
- Ragione sociale: **Econova-AI s.r.l.**
- Partita IVA: **IT00000000000** *(da sostituire con la P.IVA effettiva al primo DPA firmato)*
- Sede legale: **Milano, Italia**
- Email di contatto per privacy: **gmmensi@gmail.com**
- DPO: non designato (le soglie dell'Art. 37 GDPR non sono raggiunte allo stato attuale; il contatto privacy gestisce ogni richiesta in materia di protezione dei dati).

### 2. Oggetto del trattamento

Il Cliente, in qualità di titolare, affida a Econova-AI il trattamento di dati
personali nell'ambito della piattaforma SaaS **ECOVSME**, finalizzata alla
generazione di report di sostenibilità VSME conformi allo standard EFRAG VSME 1.0.

### 3. Durata

Il presente DPA decorre dalla data della prima sottoscrizione di un report
sulla piattaforma ECOVSME e termina alla cessazione del rapporto contrattuale
fra le Parti, fatti salvi gli obblighi di conservazione previsti per legge
o nelle finestre di retention definite all'**Allegato III**.

### 4. Natura e finalità del trattamento

Le operazioni di trattamento svolte da Econova-AI sono limitate a:

a. estrazione strutturata di dati da file Excel e MUD PDF caricati dal Cliente;
b. invocazione di un modello linguistico AI (Google Gemini) per la
   generazione delle sezioni narrative del report, sotto la supervisione
   per-claim del Cliente (modalità Human-in-the-Loop);
c. consolidamento dei dati e della narrativa in un documento DOCX finale
   conforme allo standard EFRAG VSME;
d. logging append-only delle operazioni a fini di audit (Allegato II);
e. archiviazione temporanea dei file caricati e del DOCX prodotto, secondo
   le finestre di retention dell'**Allegato III**.

### 5. Tipi di dati personali trattati

I dati personali trattati hanno carattere prevalentemente aggregato e si
limitano a:

- **dati relativi alla forza lavoro del Cliente**: numero totale di FTE,
  ripartizione per genere, totale ore di formazione, tasso di turnover —
  in forma aggregata, senza nominativi individuali;
- **dati di soggetti terzi presenti nei documenti caricati**: ragione
  sociale e partita IVA dei trasportatori e gestori di rifiuti riportati
  nelle dichiarazioni MUD, ove applicabile;
- **dati identificativi degli utenti della piattaforma**: nome, cognome,
  email aziendale e ruolo della persona designata dal Cliente per
  l'utilizzo della piattaforma.

### 6. Categorie di interessati

a. Dipendenti del Cliente (in forma aggregata);
b. Fornitori e gestori terzi citati nei documenti caricati;
c. Persone fisiche autorizzate dal Cliente all'utilizzo della piattaforma.

### 7. Obblighi di Econova-AI (Art. 28(3) GDPR)

Econova-AI si obbliga a:

a. **trattare i dati personali soltanto su istruzioni documentate del
   Cliente**, comprese quelle relative al trasferimento di dati verso un
   paese terzo. Costituiscono istruzioni documentate il presente DPA, le
   condizioni d'uso della piattaforma e ogni richiesta inviata via email
   all'indirizzo di contatto privacy;

b. **garantire che le persone autorizzate al trattamento siano vincolate a
   un obbligo di riservatezza** o sottoposte ad adeguato obbligo legale di
   segretezza;

c. **adottare le misure tecniche e organizzative di cui all'Art. 32 GDPR**
   come dettagliate nell'**Allegato II**;

d. **rispettare le condizioni per il ricorso a un altro responsabile del
   trattamento** (sub-responsabile) come previste ai paragrafi 2 e 4
   dell'Art. 28 GDPR e dettagliate all'**Allegato I**;

e. **assistere il Cliente** con misure tecniche e organizzative adeguate,
   per quanto possibile, al fine di soddisfare l'obbligo del Cliente di
   dare seguito alle richieste degli interessati che esercitano i loro
   diritti (Capo III GDPR);

f. **assistere il Cliente** nel garantire il rispetto degli obblighi di cui
   agli articoli da 32 a 36 GDPR (sicurezza, notifica violazioni, valutazione
   d'impatto), tenendo conto della natura del trattamento e delle
   informazioni a disposizione di Econova-AI;

g. **a scelta del Cliente**, cancellare o restituire tutti i dati personali
   dopo la cessazione delle attività di trattamento, e cancellare le copie
   esistenti, salvo che il diritto dell'Unione o degli Stati membri preveda
   la conservazione dei dati. Le tempistiche operative sono indicate
   nell'**Allegato III**;

h. **mettere a disposizione del Cliente tutte le informazioni necessarie per
   dimostrare il rispetto** degli obblighi di cui all'Art. 28 GDPR, e
   contribuire alle attività di revisione, comprese le ispezioni, realizzate
   dal Cliente o da altro soggetto da questi incaricato.

### 8. Notifica di violazione (Art. 33 GDPR)

Econova-AI notificherà al Cliente, **entro 24 ore dall'effettiva conoscenza**,
ogni violazione di dati personali che riguardi i dati del Cliente. La notifica
includerà, ove disponibili al momento dell'invio:

a. la natura della violazione e, ove possibile, le categorie e il numero
   approssimativo di interessati e di registrazioni interessate;
b. i dati di contatto della persona presso Econova-AI in grado di fornire
   ulteriori informazioni;
c. le probabili conseguenze della violazione;
d. le misure adottate o di cui si propone l'adozione per porre rimedio alla
   violazione.

L'SLA di 24 ore è più stringente del minimo legale ("senza ingiustificato
ritardo") affinché il Cliente disponga delle restanti 48 ore (sulle 72 ore
previste dall'Art. 33) per la propria notifica all'autorità di controllo.

### 9. Trasferimenti internazionali

I dati del Cliente sono ospitati in regione UE (Allegato I, sub-responsabile
di object storage). Il sub-responsabile **Google LLC**, fornitore del modello
AI, può effettuare trattamenti su infrastrutture extra-UE: tale trasferimento
si fonda sulla **certificazione EU-US Data Privacy Framework di Google LLC**,
con clausole contrattuali tipo come fallback. Nessun ulteriore trasferimento
extra-UE avviene allo stato attuale del servizio.

### 10. Diritto di audit

Il Cliente, con preavviso scritto di almeno 30 giorni, può richiedere
verifiche documentali sull'osservanza del presente DPA da parte di
Econova-AI. Audit in loco sono possibili previo accordo sui costi e sulle
modalità di esecuzione, salvo i casi in cui la normativa preveda diversamente.
Econova-AI fornisce su richiesta:

- l'ultimo report di riconciliazione dei fattori di emissione
  (`eval/factor_audit_YYYY.md`);
- l'ultimo report di valutazione qualitativa
  (`eval/runs/eval_run_<timestamp>.md`);
- estratti del log audit append-only filtrati per `trace_id`;
- evidenze del rispetto delle misure tecniche e organizzative dell'Allegato II.

### 11. Cancellazione e restituzione dei dati

Alla cessazione del rapporto:

- i file caricati dal Cliente e i DOCX generati sono cancellati entro
  **30 giorni** (vedi Allegato III);
- gli eventi di audit sono conservati per **2 anni** dalla data di registrazione,
  in forma pseudonimizzata, conformemente all'impegno §B Layer 4 di
  ECOVSME (assenza di PII in chiaro nel log audit);
- la riga del Tenant nel database operativo può persistere per la durata
  del periodo statutario di conservazione delle scritture contabili (10 anni
  D.Lgs. 39/2010), con tutti i dati personali in essa contenuti
  pseudonimizzati.

Il Cliente può richiedere in qualsiasi momento, via email all'indirizzo di
contatto privacy, la cancellazione anticipata dei propri dati al di fuori dei
periodi statutari obbligatori.

### 12. Responsabilità e indennizzo

La responsabilità complessiva di Econova-AI ai sensi del presente DPA è
limitata, salvo dolo o colpa grave, a un importo pari al canone effettivamente
corrisposto dal Cliente nei dodici mesi precedenti l'evento da cui è derivata
la pretesa risarcitoria.

### 13. Legge applicabile e foro competente

Il presente DPA è regolato dalla legge italiana. Per ogni controversia è
competente in via esclusiva il Foro di **Milano**.

### 14. Sottoscrizione

| Parte | Firma | Data |
|---|---|---|
| Per il Cliente — il legale rappresentante | __________________ | __ / __ / 2026 |
| Per Econova-AI s.r.l. — l'Amministratore Unico | __________________ | __ / __ / 2026 |

---

## Allegato I — Sub-responsabili autorizzati / Authorised Sub-processors

L'elenco aggiornato dei sub-responsabili è anche pubblicato nel codice
sorgente in [`pkg/dpa.py::SUB_PROCESSORS`](../pkg/dpa.py); ogni modifica è
oggetto di notifica al Cliente con preavviso ai sensi dell'Art. 28(2) GDPR.

### 1. Google (Gemini API)

- **Entità giuridica:** Google LLC
- **Ruolo:** estrazione di testo da PDF tramite AI e generazione narrativa
  delle sezioni del report VSME.
- **Categorie di dati:** dati operativi aggregati di azienda (consumi
  energetici, tonnellaggi rifiuti, FTE), descrizioni testuali di policy
  fornite dal Cliente, codici EWC e ragioni sociali dei gestori terzi
  riportati nelle dichiarazioni MUD.
- **Paese di trattamento:** Stati Uniti, con endpoint EU regionali ove
  configurati; il transito può attraversare l'infrastruttura globale di
  Google.
- **Base giuridica per il trasferimento:** certificazione EU-US Data
  Privacy Framework di Google LLC, con Clausole Contrattuali Tipo come
  fallback.
- **Privacy policy:** <https://policies.google.com/privacy>
- **DPA del sub-responsabile:** <https://cloud.google.com/terms/data-processing-addendum>

### 2. Object storage UE (Hetzner / Scaleway / OVH)

- **Entità giuridica:** Hetzner Online GmbH **OPPURE** Scaleway SAS **OPPURE**
  OVH SAS — la specifica entità è indicata di volta in volta nel DPA firmato.
- **Ruolo:** archiviazione cifrata at-rest dei file caricati dal Cliente
  (Excel, PDF) e del DOCX generato.
- **Categorie di dati:** tutti i file caricati dal Cliente sulla piattaforma
  ECOVSME e il DOCX di output.
- **Paese di trattamento:** Germania, Francia o altra regione UE — pinning
  regionale obbligatorio.
- **Base giuridica per il trasferimento:** non è effettuato alcun
  trasferimento al di fuori dello SEE.
- **Privacy policy:** vedi privacy policy del fornitore selezionato.
- **DPA del sub-responsabile:** vedi DPA del fornitore selezionato.

> **Phase 5 — Stripe.** All'attivazione della funzionalità di pagamento,
> Stripe Payments Europe Ltd. (Irlanda) sarà aggiunto come sub-responsabile
> con notifica preventiva al Cliente. La P.IVA del Cliente, l'ammontare del
> pagamento e i metadati della transazione saranno gli unici dati condivisi.

---

## Allegato II — Misure Tecniche e Organizzative (Art. 32 GDPR)

Le misure di seguito elencate sono direttamente verificabili nel codice
sorgente del prodotto; ciascuna voce indica il modulo o la configurazione
che la implementa.

| # | Misura | Riferimento implementativo |
|---|---|---|
| 1 | **Hosting solo UE.** Tutti i dati a riposo risiedono in object storage di regione UE (Hetzner Frankfurt / Scaleway Paris by default). Nessun bucket US è configurato. | `web/settings.py: s3_region` (default `eu-central-1`) |
| 2 | **Cifratura in transito.** Tutto il traffico HTTP è esclusivamente HTTPS. I cookie di sessione sono `HttpOnly`, `SameSite=Lax`, e `Secure` in staging e produzione. | `web/main.py: SessionMiddleware (https_only)` |
| 3 | **Isolamento per tenant.** Ogni operazione di persistenza è limitata al `tenant_id` tramite dependency injection FastAPI; le query cross-tenant restituiscono 404 anziché 403 per evitare existence-leak. Verificato in `tests/web/test_tenant_isolation.py`. | `web/deps.py: CurrentTenant` |
| 4 | **Audit log append-only (Layer 4).** Ogni evento rilevante per la governance è registrato in tabella Postgres append-only con `trace_id` per richiesta. | `pkg/observability.py + web/observability.py` |
| 5 | **Pseudonimizzazione PII nell'audit.** I campi free-text potenzialmente contenenti PII sono SHA-256-hashed prima del write nel log audit; il DB operativo conserva il plaintext solo per la UI del Cliente. | `pkg/observability.py: hash_pii()` |
| 6 | **Kill-switch LLM.** L'env var `ECOVSME_AI_ENABLED=false` blocca immediatamente ogni invocazione del modello AI senza necessità di redeploy. | `pkg/safety.py + ECOVSME_AI_ENABLED` |
| 7 | **Rate-limit anti-abuso.** Throttle per IP sul signup e quota mobile-24h per tenant sulla creazione di report, applicate server-side e tracciate via eventi `RATE_LIMITED`. | `web/rate_limit.py` |
| 8 | **Human-in-the-Loop per claim.** Ogni claim numerico nella narrativa generata dall'AI è confermato o sostituito individualmente dall'utente del Cliente prima della consegna del DOCX. Gate vincolante server-side. | `web/routers/review.py + web/routers/download.py` |
| 9 | **Riconciliazione annuale dei fattori ISPRA.** La tabella dei fattori di emissione viene riconciliata annualmente contro la pubblicazione ISPRA corrente, con audit document pubblicato. | `pkg/factor_audit.py + docs/factor-audit.md` |
| 10 | **Eval harness ripetibile.** Una valutazione qualitativa contro un golden-set viene eseguita ad ogni model bump, prompt change, e con cadenza minimo trimestrale, con gate vincolante ≥95% di claim-trace ratio. | `pkg/eval_harness.py + docs/eval-harness.md` |

---

## Allegato III — Finestre di retention

| Categoria di dati | Finestra | Razionale |
|---|---|---|
| File caricati dal Cliente (Excel, PDF) | 30 giorni post-consegna | Ritenzione per la durata del flusso di generazione + 30 giorni per consentire la rigenerazione del report in caso di errore di estrazione. Cancellazione su richiesta del Cliente o automatica al termine, qualunque venga prima. |
| DOCX generato | 30 giorni post-consegna | Ritenzione 30 giorni post-consegna affinché il Cliente possa ri-scaricare senza dover rigenerare. Cancellazione su richiesta o automatica al termine. |
| Eventi audit (Layer 4) | 2 anni | Ritenzione 2 anni a supporto dell'impegno §B Layer 4 e di eventuali indagini di compliance. Pseudonimizzato al write-time, quindi nessun PII in chiaro nello scope di ritenzione. |
| Tenant + utenti (DB operativo) | Durata contrattuale + 10 anni statutari | Conservazione per la durata del rapporto contrattuale + periodo statutario di conservazione delle scritture contabili (D.Lgs. 39/2010). Alla cessazione del contratto, i dati personali del Cliente nelle righe Tenant sono cancellati entro 30 giorni; la riga "scheletro" può persistere per la finestra statutaria con tutti i dati personali pseudonimizzati. |

---

## ENGLISH (informative translation)

### 1. Parties

**Controller** ("Customer"):
- Legal name: **[CUSTOMER NAME]**
- VAT ID / Tax code: **[CUSTOMER VAT]**
- Registered office: **[CUSTOMER ADDRESS]**
- Contact email: **[CUSTOMER EMAIL]**

**Processor** ("Econova-AI"):
- Legal name: **Econova-AI s.r.l.**
- VAT ID: **IT00000000000** *(to be replaced with the actual VAT before the first signed DPA)*
- Registered office: **Milan, Italy**
- Privacy contact: **gmmensi@gmail.com**
- DPO: not appointed (the Art. 37 GDPR thresholds are not currently met; the privacy contact handles all data-protection inquiries).

### 2-13. Substantive clauses

The English text mirrors the Italian clauses 2 through 13 above. In case of
any discrepancy, the Italian text prevails.

The substantive commitments are:

- Processing only on documented controller instructions; the DPA itself,
  the platform terms of use, and any email to the privacy contact are
  documented instructions.
- Confidentiality obligation on every staff member with access.
- Technical and organizational measures per Annex II.
- Sub-processor authorisation per Annex I, with prior notice of any change.
- Assistance with data-subject rights and Art. 32–36 obligations.
- Deletion or return of data per Annex III at the end of the engagement.
- All compliance evidence available on request — the factor-audit and eval-run
  documents are published in the repository.
- 24-hour breach-notification SLA from awareness (tighter than the legal
  minimum so the controller has the remaining 48 hours for the supervisory
  authority).
- EU-region storage; only the AI sub-processor (Google) processes outside
  the EU under DPF + SCC.
- Audit rights with 30 days' notice; on-site audits by separate agreement.
- Liability cap at the fees paid in the trailing 12 months, save for
  willful misconduct or gross negligence.
- Italian law and Milan jurisdiction.

### 14. Signatures

| Party | Signature | Date |
|---|---|---|
| For the Customer — legal representative | __________________ | __ / __ / 2026 |
| For Econova-AI s.r.l. — Sole Director | __________________ | __ / __ / 2026 |

---

*Source of truth for the structured metadata referenced in the annexes:
[`pkg/dpa.py`](../pkg/dpa.py). Any sub-processor change, TOM change, or
retention-window change in that module triggers the Article 28(2)
notification workflow documented in [`docs/dpa-runbook.md`](dpa-runbook.md).*
