Come costruire un check-in con QR senza diventare un archivio di passaporti

Ogni sistema di check-in autonomo raccoglie documenti d'identità. Pochissimi hanno un piano per cancellarli, ed è proprio quella la parte che trasforma una comodità in una responsabilità.

Aggiornato

La metà facile

Il check-in autonomo è semplice da descrivere. Prima dell'arrivo l'ospite riceve un link. Lo apre dal telefono, compila i dati richiesti dalla legge, fotografa il documento, firma e paga quel che resta da pagare. All'arrivo, alla reception non c'è più nulla da fare.

Anche i meccanismi sono semplici. Un token per singola prenotazione identifica la sessione: niente account, niente password, perché chiedere a un ospite di registrarsi prima di poter fare il check-in vanifica lo scopo. Il link resta valido per una breve finestra dopo la fine del soggiorno, così l'ospite può ancora recuperare la ricevuta, e poi smette di funzionare.

Un link è una credenziale, quindi trattalo come tale

Una URL non indovinabile è l'unica cosa fra uno sconosciuto e l'elenco ospiti di una prenotazione, e questo ha conseguenze progettuali.

La prima è il rate limiting. La scansione dei documenti e i suggerimenti sui campi sono le operazioni costose, e sono anche quelle che conviene abusare: entrambe sono limitate per ospite e per ora — in Boris, dodici scansioni di documento e una finestra di throttling di un'ora. Non si tratta di infastidire l'ospite che rifà davvero tre volte una foto mossa, ma di rendere inutile l'uso automatizzato di massa di un link trapelato.

La seconda conseguenza è che i token devono essere revocabili in blocco. Se i link vengono mai esposti, deve esistere un modo per invalidare tutti quelli già distribuiti, e dev'essere un'operazione deliberata e tracciabile, non un aggiornamento non documentato al database.

La metà difficile: cancellare i documenti

Ecco la parte che quasi tutte le implementazioni saltano. Raccogli la fotografia del passaporto di qualcuno perché la legge ti impone di comunicare il suo soggiorno. Una volta comunicato, la base giuridica per conservare l'immagine non esiste più. Tenerla "per sicurezza" non è prudenza: è una conservazione illecita, e trasforma una funzione ordinaria nella cosa più dannosa del tuo database in caso di violazione.

Quindi la cancellazione non può essere un'impostazione. In Boris il job di riconciliazione distrugge le fotografie dei documenti nel momento in cui il soggiorno viene comunicato all'autorità, e alle 23:59 del giorno di arrivo comunque, a prescindere dall'esito della comunicazione. Le rimuove dal disco e dal database. Non c'è nessun interruttore per ammorbidire il comportamento, perché un interruttore sarebbe una richiesta di accumulare passaporti.

Due dettagli contano nell'implementazione. La cancellazione deve coprire sia il file sia la riga: una riga orfana con un percorso è comunque la traccia che quel documento è esistito, e un file orfano è peggio. E una richiesta rifiutata o fallita non deve mai innescare la distruzione: l'ospite che carica una foto che il sistema scarta deve poter riprovare, quindi cancella solo il percorso completato.

La schermata di reception di Boris, con arrivi e partenze del giorno e un'azione di check-in per ciascuno
Il check-in autonomo non copre mai tutti: alla reception serve comunque un percorso che produca gli stessi record.

L'estrazione è una comodità, non una fonte di verità

Leggere il documento con l'OCR per precompilare nome, data di nascita, numero e nazionalità elimina quasi tutta la digitazione, e digitare da telefono è il punto in cui gli ospiti si arrendono. Ma i valori estratti sono suggerimenti. Vanno presentati come campi modificabili che l'ospite conferma, perché un errore di lettura che diventa silenziosamente una comunicazione ufficiale è un esito peggiore di un ospite che digita il proprio cognome.

Cosa resta comunque alla reception

Il check-in autonomo non arriva mai al cento per cento, e un sistema che lo dà per scontato lascia le persone a piedi. Ci sono ospiti che arrivano senza aver mai aperto il link. Pagamenti che falliscono. Un provider delle porte fuori servizio nel momento sbagliato. Ognuno di questi casi ha bisogno di un percorso che un operatore possa completare a mano, e ognuno di quei completamenti manuali deve comunque produrre la stessa comunicazione, lo stesso record fiscale e la stessa traccia di esecuzione del percorso automatico: altrimenti il buco di conformità viene spostato, non chiuso.

I job non sono facoltativi

Un flusso di check-in online non è autosufficiente. L'invito viene messo in coda invece che inviato in linea, quindi senza un job che svuota quella coda i link non arrivano mai e nessuno segnala un errore: le righe semplicemente si accumulano. I pagamenti il cui webhook è andato perso vanno riconciliati. L'imposta di soggiorno pagata in contanti va completata quando un provider non era raggiungibile. E i documenti vanno distrutti.

Se c'è una cosa da portarsi via: la modalità di guasto di un sistema di check-in è il silenzio. Non si rompe niente. Semplicemente i link non arrivano e le fotografie non vengono cancellate, e tutte e due le cose sembrano identiche a un sistema che funziona.