Introduzione all’assistente AI di Yelp
Nel 2024 Yelp ha lanciato l’assistente AI su iOS, progettato per aiutare gli utenti a creare richieste di progetto per professionisti locali. Da allora la funzionalità è stata estesa per rispondere a domande su attività commerciali, gestire prenotazioni, appuntamenti e ordini di cibo. Per supportare questa crescita, Yelp ha adottato un’architettura ibrida che combina componenti UI nativi con una UI guidata dal server, sfruttando il framework interno chiamato CHAOS (Content Hosting Architecture with Optimization Strategies).
CHAOS è stato originariamente sviluppato per gestire contenuti web, iOS e Android, ma le esigenze dell’assistente AI hanno richiesto nuove capacità, tra cui campi di input testuale e richieste di rete specifiche. Per evitare ritardi nella consegna, il team ha optato per un approccio ibrido: la navigazione e l’input dei messaggi rimangono nativi, mentre l’area di conversazione è renderizzata da CHAOS.
Come funziona l’architettura ibrida
Il modello separa la configurazione della vista dai dati della conversazione. Quando un utente avvia una chat, il client scarica la configurazione CHAOS e crea un dataset per gli eventi dei messaggi. Gli eventi successivi aggiornano la vista esistente senza dover ricaricare nuovamente la configurazione.
Gli eventi includono:
- Messaggi persistenti dell’utente e del bot
- Indicatore di digitazione temporaneo
- Risposte rapide (quick replies)
- Link che aprono destinazioni esterne
Il backend può anche inviare azioni per controllare l’interfaccia. Per esempio, al completamento di una richiesta di progetto, il server può restituire un messaggio, un link per visualizzare le corrispondenze e un’azione che disabilita l’input della chat. Questo design basato su eventi separa la logica di rendering da quella della conversazione, rendendo più semplice l’evoluzione indipendente delle due componenti.
Confronto con approcci simili
Airbnb ha documentato un approccio analogo tramite la sua Ghost Platform, che utilizza UI definita dal server su client web e mobile. Entrambi i metodi consentono ai team di aggiornare la presentazione supportata senza dover rilasciare una nuova versione dell’app. Yelp ha adattato questo modello a un’interfaccia conversazionale, mantenendo però i controlli nativi per la gestione dello stato dei messaggi e delle interazioni.
Flusso di interazione della chat
Il ciclo di vita di una conversazione è gestito in modo chiaro:
- Il client mostra i messaggi inviati dall’utente e l’indicatore di digitazione.
- L’input viene disabilitato temporaneamente e la richiesta viene inviata al backend.
- Al ricevimento della risposta, il client visualizza il messaggio del bot, le risposte rapide e riattiva l’input.
- Gli errori recuperabili attivano tentativi di retry automatici.
- Gli errori non recuperabili disabilitano l’input e mostrano all’utente un messaggio di invito a riprovare più tardi.
Questo flusso garantisce un’esperienza utente fluida, anche in presenza di problemi di rete o di servizio.
Vantaggi e sfide dell’approccio ibrido
Tra i principali vantaggi, l’architettura permette aggiornamenti dell’interfaccia senza dover pubblicare una nuova versione dell’app su App Store o Google Play. Inoltre, la separazione tra configurazione della vista e dati della conversazione facilita lo sviluppo di funzionalità in modo indipendente per ogni piattaforma.
Tuttavia, gli ingegneri hanno segnalato alcune difficoltà:
- Coordinamento tra i team responsabili di CHAOS e dell’assistente AI.
- Curva di apprendimento per comprendere sia il nuovo assistente sia il framework CHAOS.
- Possibili discrepanze di comportamento tra le implementazioni native su iOS e Android.
Nonostante queste sfide, Yelp è riuscita a riutilizzare l’assistente Android per lanciare il progetto pilota “Biz Ask Anything”, dimostrando la flessibilità dell’architettura.
Prospettive future
Secondo il team di Yelp, l’implementazione di questa architettura ibrida ha posto le basi per la prossima generazione di assistente AI, che integrerà informazioni commerciali con azioni concrete che gli utenti possono compiere. L’obiettivo è creare un’interfaccia conversazionale più ricca, capace di gestire richieste complesse mantenendo al contempo la rapidità di aggiornamento tipica delle UI server‑driven.