Un atlante della costa slovena dove nessun numero è scritto a mano
Abbiamo messo online sloveniavillas.com: un rilievo 3D con shader nostri, tempi di guida misurati, sette strumenti di calcolo e undici controlli che fermano il sito quando scrive una cosa che non sa provare.

Il 6 ottobre è andato online sloveniavillas.com, il sito del nostro gruppo sulla costa slovena e sul Carso: i luoghi fra 18 e 45 minuti d'auto da Piazza Unità. Quattro lingue, undici luoghi, guide per chi compra e per chi vende, sette strumenti.
Una premessa spiega quasi tutte le scelte tecniche. Oggi in Slovenia non facciamo mediazione: l'avvio è previsto nel corso del 2027. Il sito non ha case in vendita, ha dati. Per questo il grosso del lavoro è andato in un problema preciso: impedire al sito di scrivere un numero che non sa da dove viene.
Nessuna cifra scritta a mano
Nei testi del sito non ci sono numeri, ci sono segnaposto: uno dice «minuti da Trieste a Capodistria», un altro «mediana dei prezzi delle case nel registro sloveno delle compravendite». Una sola funzione li risolve quando il sito si costruisce, e ogni valore porta con sé fonte e data. Un segnaposto che non esiste non lascia un buco sulla pagina: ferma la costruzione. Un controllo dedicato rifiuta le cifre scritte a mano accanto a un'unità di misura, con un elenco esplicito di eccezioni (anni, date, riferimenti di legge).
Anche «2027» sta in un solo punto, con una data entro cui qualcuno deve rileggerlo: dopo il 15 dicembre il sito non si costruisce più finché una persona non lo aggiorna. Perfino il titolo della home è un calcolo. In italiano prende il luogo più vicino, Sežana a 18,3 minuti, e arrotonda: «Venti minuti oltre Trieste». In tedesco confronta i tempi da Monaco e da Vienna, da dove Capodistria risulta meno di un minuto più lontana di Trieste: «Koper liegt eine Minute hinter Triest». Se la differenza crescesse cambierebbe il numero; oltre i nove minuti, la frase.
I minuti, misurati
I tempi di guida arrivano da OSRM, il motore di percorsi su dati OpenStreetMap: una sola richiesta restituisce l'intera matrice, da dieci città d'origine verso gli undici luoghi. Sono tempi senza traffico, e lo scriviamo accanto a ogni numero: di solito sono ottimistici del 10-20%, e d'estate sulla costa possono raddoppiare.
L'onda dei minuti che si allarga sul rilievo è una griglia di 72 per 70 celle agganciate alla strada più vicina, levigata e poi confrontata con la matrice: sugli undici luoghi lo scarto resta entro 1,6 minuti, tranne Pirano, a −4,4, e la documentazione lo dice.
Un rilievo 3D senza librerie
Il rilievo viene da dati altimetrici aperti (EU-DEM e SRTM), circa 47 metri per pixel, esagerato in altezza con la legenda che lo dichiara. La specifica prevedeva three.js; il motore non lo usa. La scena ha sei passate fisse con shader nostri in WebGL2, la geometria si costruisce in un Web Worker e il codice pesa circa 27 KB compressi.
three.js è rimasto come arbitro. La matematica della camera è nostra, e uno script la confronta con quella di three.js su circa 2.500 punti casuali: lo scarto massimo è di 1,2 milionesimi, e sopra un decimillesimo lo script si ferma con un errore. Se i primi 30 fotogrammi sono lenti, il motore abbassa la risoluzione e, se non basta, passa a immagini ferme della stessa scena.
Sette strumenti, e il loro errore
Gli strumenti vanno dai costi d'acquisto confrontati con Italia, Austria e Germania fino ai documenti per vendere. Tre episodi.
Il prezzo d'esempio cadeva sul confine. Il calcolatore dei costi legge le regole fiscali da un elenco in cui ognuna ha fonte e stato di verifica: una regola non verificata non si stampa. La tassa slovena per l'iscrizione nel registro fondiario va a scaglioni, e il nostro prezzo d'esempio, 600.000 €, è esattamente il limite fra due. Il codice includeva il limite superiore, la tariffa slovena lo esclude: il calcolatore scriveva 160 € invece di 200. Ora ogni tabella dichiara la sua convenzione.
Una formula che ignorava il budget. Per «trova la tua Slovenia» la specifica chiedeva di confrontare i luoghi sui metri quadri comprabili con il budget. Normalizzati fra minimo e massimo, però, quei metri quadri danno la stessa classifica per qualunque budget: il budget si semplifica nella divisione e vince sempre il luogo più economico, anche per chi ha due milioni. Al loro posto conta quante case si sono vendute nel comune, dal 2021, in quella fascia di prezzo.
Un modello con l'errore in vista. «Quanto vale casa tua» copre Capodistria, Ancarano, Isola e Pirano: un modello statistico su 685 case e 2.341 appartamenti venduti fra gennaio 2021 e agosto 2026, dal registro pubblico delle compravendite dell'amministrazione geodetica slovena. È un'analisi di mercato per chi legge, non una perizia. L'errore percentuale mediano, misurato fuori campione con una validazione incrociata a cinque pieghe ripetuta tre volte, è del 21,3% sulle case e del 13,0% sugli appartamenti: una casa su due sta fuori da ±20%. Sulle case il modello non fa meglio del rapporto con il valore catastale sloveno (21,3% contro 20,7% sulle stesse vendite), e per questo lo strumento mostra i due calcoli affiancati, sempre come forchetta. Il file pubblico contiene solo aggregati: uno script controlla che non ci siano prezzi né posizioni di singole vendite.
Undici controlli, provati su ciò che devono fermare
Prima della costruzione girano undici controlli, dalle lingue al contrasto. Ognuno ha i suoi casi di prova: un piccolo insieme di file da rifiutare e uno da lasciar passare. Il caso rifiutato deve fallire per la ragione prevista, e solo per quella; quello accettato deve aver letto almeno quanto dichiara, perché un controllo che non legge niente passa sempre. Le varianti sono 33, e si comportano tutte come devono.
- Frasi vietate, lingua per lingua. In sloveno «posredujemo» (facciamo da intermediari) è vietato, ma «še ne posredujemo» (non ancora) deve passare, e così «posredujemo podatke», cioè «trasmettiamo i dati».
- Immagini. Le 28 immagini passate da un modello generativo partono, tranne una, da foto a licenza libera; ognuna ha il segno AI e una riga di registro con fonte, licenza, modello e modifiche. La verifica a occhio ne ha rimandate indietro quattro, per scritte inventate su cartelli e persone aggiunte.
L'assistente che non vede il database
Sul sito c'è un assistente AI, ma il sito non parla con il modello. Cerca nei propri testi con BM25, un indice a parole scritto senza librerie, e manda i brani al nostro CRM con una firma. Il CRM fa il resto: un interruttore che nasce spento, un tetto di spesa, tre domande libere e alla quarta nome, recapito e consenso. Il modello non vede il database, e i link della risposta che non stanno nel materiale mandato si tolgono dopo.
Cosa non funziona ancora
- La home pesa troppo: quasi un megabyte di HTML, circa 190 KB compressi, contro un budget di 100. Più della metà sono dati passati ai componenti che girano nel browser.
- Il rilievo vivo non l'abbiamo ancora guardato su una scheda video vera. I collaudi automatici usano Chrome senza finestra, che disegna in software: il motore lo riconosce e passa alle immagini ferme.
- Manca la rilettura umana di tedesco e sloveno: finora hanno riletto agenti.
- I tempi vengono dal server pubblico di OSRM, non da un'istanza nostra come chiedeva la specifica.
Un sito che non vende niente ha un solo capitale: che i suoi numeri reggano. Per questo la parte più grande del lavoro non si vede: sta nei controlli che fermano la costruzione, nei dati che chiunque può scaricare, e nel fatto che ogni controllo, prima di essere creduto, è stato costretto a fallire.


