Dati sintetici — nessuna persona reale
Comune di Parma

Come calcoliamo il livello di allerta

Perché serve una stima

Il Ministero della Salute pubblica ogni giorno un bollettino di allerta caldo per 27 città italiane: i capoluoghi di regione più i comuni sopra 200.000 abitanti. Parma non è tra queste. Non è un caso singolare: Parma ha circa 198.000 abitanti, sotto la soglia per poche migliaia, e con lei la maggior parte dei comuni italiani. CheCaldo! è pensato per loro — comuni «grandi ma non abbastanza» per il perimetro ministeriale, dove chi si prende cura di persone fragili deve comunque decidere ogni mattina chi contattare.

Le soglie del bollettino ministeriale sono calibrate sulla mortalità storica di ciascuna città: vent'anni di dati epidemiologici che collegano temperatura, ricoveri e decessi. Le soglie della nostra stima invece sono percentili statistici della temperatura apparente locale (85° / 95° / 98° della climatologia). È la differenza che spiega perché una stima non è un bollettino, e perché ovunque nella pagina pubblica il livello stimato è dichiarato tale. Per Parma il bollettino ministeriale non esiste, quindi la stima è quello che abbiamo.

Per rispondere lo stesso alla domanda «oggi a Parma quanto fa caldo davvero per una persona anziana?» ci siamo costruiti una stima locale, che viene calcolata ogni giorno automaticamente. Il livello che vedi in cima alla pagina pubblica — quando dice «livello stimato, non ufficiale» — è il risultato di questa stima.

Come funziona la stima, passo per passo

Il calcolo usa un solo dato di ingresso, e lo confronta con la storia meteorologica del luogo:

  1. Temperatura apparente. Non la temperatura del termometro, ma quella che il corpo sente davvero — che tiene conto di umidità e vento. Il valore massimo della giornata viene preso da Open-Meteo, un servizio meteo aperto e senza costi.
  2. Confronto con la storia di questo periodo. Per capire se oggi è caldo «normale» o «molto sopra la media», prendiamo tutte le temperature apparenti degli ultimi 12 anni nella stessa finestra di calendario (dieci giorni prima e dieci giorni dopo la data di oggi). Sono circa 250 valori: la nostra «climatologia locale».
  3. Percentile. Il valore di oggi viene collocato in questa distribuzione storica. Se supera l'85° percentile (più caldo dell'85% dei giorni storici comparabili), il livello passa a 1. Sopra il 95°: livello 2. Sopra il 98°: livello 3.
  4. Notti tropicali. In parallelo contiamo le notti consecutive con temperatura minima sopra i 20°C — il corpo non si raffredda mai davvero. Compaiono accanto al livello.

Cosa questo metodo NON è

Le soglie 85 / 95 / 98 sono una scelta statistica: descrivono «giorni statisticamente molto sopra la media locale del periodo». Non sono state calibrate su dati sanitari — cioè non sono state ricavate confrontando temperature e ricoveri, accessi al pronto soccorso, decessi.

Le soglie del bollettino ministeriale, per le 27 città che copre, invece lo sono: derivano da vent'anni di studi epidemiologici che collegano temperatura ed effetti sulla salute. È una differenza importante, e la scriviamo per prima: il livello che leggi qui è un'indicazione utile ma non equivalente al bollettino ufficiale, e ogni volta che lo mostriamo lo dichiariamo («livello stimato, non ufficiale»).

Quanto vale il metodo

Abbiamo verificato la stima confrontandola con il bollettino ufficiale di Bologna (una delle 27 città coperte) per tutta l'estate 2025, dal 1° giugno al 15 settembre. Il bollettino esce a tre orizzonti — il giorno stesso, domani, dopodomani — e abbiamo misurato ciascuno separatamente.

OrizzonteGiorniEsattiEntro unoSottostimeCosa vale
Oggi (24 ore)7074,3%92,9%4,3%misurato
Domani (48 ore)15≤ 73,3%≤ 93,3%≥ 6,7%tetto — con forecast meteo perfetta
Dopodomani (72 ore)14≤ 64,3%≤ 85,7%≥ 7,1%tetto — con forecast meteo perfetta

I numeri di domani e dopodomani sono un tetto massimo, non l'accuratezza reale. Il nostro backtest usa la temperatura effettivamente osservata di quel giorno — come se la previsione meteo di allora fosse stata perfetta. In produzione, invece, la nostra stima parte dalle previsioni Open-Meteo, che hanno un errore loro; quell'errore si somma al nostro. Il valore reale a 48 e 72 ore è più basso di quanto la tabella indica; di quanto, non lo sappiamo, e non lo scriviamo.

A due giorni il tetto tiene, a tre giorni cala visibilmente. È il comportamento normale di qualunque previsione meteorologica: più ci si spinge in avanti, meno si sa. La pagina mostra tutti e tre gli orizzonti, e va detto insieme.

Il campione di 15 e 14 giornate per domani/dopodomani è più piccolo di quello a 24 ore perché il bollettino ministeriale esce dal lunedì al venerdì; le previsioni a 48 e 72 ore escono solo quando una singola pubblicazione copre più giorni — tipicamente il venerdì che copre il weekend.

Quando il livello sale a 3, ce ne accorgiamo prima?

Le percentuali qui sopra dicono «quanto ricalchiamo il bollettino». Ma la domanda vera per un'organizzazione che gestisce una lista di persone da chiamare è un'altra: quando la situazione si fa seria, ce ne accorgiamo prima? Un pomeriggio di anticipo permette di chiamare più volontari.

Nell'estate 2025 il bollettino di Bologna è salito a livello 3 due volte — il 26 giugno e l'11 agosto. In entrambi i casi il nostro criterio, applicato ai dati del giorno, ci era già arrivato.

Due casi in una stagione non fanno una misura statistica: serve almeno un'altra estate, o due o tre città con climi diversi, per dire qualcosa di solido sull'anticipo del criterio. E vale la stessa avvertenza di sopra — la misura usa la temperatura osservata del giorno, come se la previsione meteo di due giorni prima fosse stata perfetta; l'anticipo reale in produzione è più basso.

Perché dichiariamo la sottostima

Quando la nostra stima dice «livello 1» e il bollettino ufficiale dice «livello 2» siamo più rilassati del reale. È l'errore che conta di più: la promessa di questo sistema è aiutare a decidere chi contattare quando fa caldo davvero, e sbagliare per difetto vuol dire lasciar fuori qualcuno che ne aveva bisogno.

Per questo lo scriviamo qui, in chiaro: 3 giorni su 70 nel confronto con Bologna. Se lo tenessimo nascosto in fondo a una nota tecnica, dichiareremmo un metodo migliore di quello che è. Per lo stesso principio, quando la stima è più cauta del bollettino — cioè sovrastima — ci va bene: il costo di un giro di telefonate in più è basso, quello di uno in meno può essere alto.

Dove il progetto usa un modello di linguaggio e dove no

Un'architettura che sa dove fermarsi è più credibile di una che mette l'LLM ovunque. In Parma l'intelligenza artificiale interviene in tre punti: due sulla pagina pubblica, uno sulla dashboard del coordinatore. Tutti e tre con fallback silenzioso — se il modello non risponde, il blocco semplicemente sparisce e il resto della pagina resta.

Dove usiamo un modello (dichiarato accanto al testo, come vuole l'art. 50 dell'AI Act, oltre che qui):
  • La frase «allerta città» in cima alla pagina pubblica, dentro la card colorata del livello. Parla della città intera — livello di oggi, previsioni a 48 e 72 ore quando ci sono, notti tropicali consecutive.
  • Il consulente locale quando scegli un quartiere sulla pagina pubblica. Dice dove andare per stare al fresco — nome, distanza, orari dei punti che il codice ha già scelto per quel quartiere. Non ordina, non inventa numeri, non attribuisce orari che non gli abbiamo passato.
  • Il riassunto della giornata sulla dashboard del coordinatore (non visibile sulla pagina pubblica). In poche righe racconta cosa è successo oggi — contatti fatti, esiti, sintomi rilevati. Descrive numeri già calcolati, non li produce.
  • La sintesi vocale accanto ai tre testi qui sopra: un pulsante di ascolto legge il testo con una voce sintetica. Il motore è Piper (voce it_IT-paola-medium), modello neurale che gira sul server della stessa istanza: nessun testo viene inviato a servizi esterni per essere letto. È un modello, ma locale — e la differenza è il punto.
Dove NON usiamo un modello (deterministico, senza chiamate API, dove l'affidabilità conta):
  • Il livello di allerta: è calcolato statisticamente su Open-Meteo, descritto in dettaglio più sopra; per le 27 città del bollettino arriva direttamente dal Ministero della Salute. Un modello non stima un livello di allerta meglio di questi metodi.
  • Il profilo del quartiere (persone per famiglia, abitazioni per edificio, distanza dal parco): sono aggregati del censimento ISTAT 2021 e distanze calcolate da PostGIS su geometrie OpenStreetMap. Dati fissi, non generati.
  • Le raccomandazioni sanitarie (bevi acqua, chiudi le persiane, ecc.): testo fisso preso dalle indicazioni ufficiali. Se un modello le riscrivesse ogni volta, prima o poi ne ometterebbe una e nessuno lo intercetterebbe.
  • I punti freschi e le distanze nella mappa e nell'elenco: elenco OpenStreetMap + Iren, distanze in linea d'aria calcolate da PostGIS. Il modello non sceglie quali punti mostrare — quello è codice.

Clic su un pallino: nome, tipo, orari se noti. Dove gli orari non sono nel dato è scritto “verifica gli orari” — meglio che presumere un'apertura che non c'è.

Ogni testo generato porta accanto la dichiarazione «Testo generato con il supporto di intelligenza artificiale», sotto il testo stesso. È una scelta coerente con l'art. 50 dell'AI Act (Regolamento UE 2024/1689): i testi generati che informano il pubblico su questioni di interesse pubblico devono essere dichiarati in modo chiaro e contestuale, non nascosto in una pagina legale. L'etichetta compare accanto al testo perché è lì che il cittadino la incontra.

Fonti dei dati

  • Temperature: Open-Meteo. I dati sono rilasciati con licenza CC-BY 4.0; l'uso gratuito dell'API è riservato a impieghi non commerciali, con tetto di 10.000 chiamate al giorno. I termini di Open-Meteo considerano non commerciale l'uso da parte di enti pubblici e organizzazioni senza scopo di lucro — chi installa in un contesto diverso deve verificare le condizioni.
  • Bollettino ufficiale del Ministero: pubblicato per 27 città in formato aperto da onData (licenza CC-BY 4.0).
  • Basi territoriali del quartiere: censimento ISTAT 2021 (licenza CC-BY 4.0).
  • Distanze dai parchi e punti freschi (biblioteche, farmacie, centri commerciali, centri sociali, chiese, fontanelle, casette dell'acqua, parchi): OpenStreetMap contributors (ODbL 1.0).
  • Casette dell'acqua Iren: elenco pubblicato dal Comune di Parma. Erogazione gratuita.

← Torna alla pagina pubblica di Parma