---
title: "The making of the Yelp Assistant UI"
description: "Yelp Assistant is the first large-scale consumer LLM product at Yelp, connecting users with local professionals via chat. To iterate quickly across iOS, Android, and web while avoiding long app-store update cycles, the team chose a hybrid architecture: the top bar and input bar are native, while the chat content area is server-driven using Yelp’s CHAOS framework. The view and data are separated — the client fetches a CHAOS view template once, then conversation data hydrates that template on each turn. The backend sends MessageEvent objects, quick replies, and client actions (such as DisableChat) to control the UI. This hybrid approach enabled rapid iteration, but required building new CHAOS components for text input and network requests, and posed cross-platform consistency challenges."
---

# The making of the Yelp Assistant UI

[Yelp](https://yomu.fyi/company/yelp) · Daniel Andrade Groppe, Services Tech Lead · Sep 29, 2026

**Type:** Explainer

## Summary

Yelp Assistant is the first large-scale consumer LLM product at Yelp, connecting users with local professionals via chat. To iterate quickly across iOS, Android, and web while avoiding long app-store update cycles, the team chose a hybrid architecture: the top bar and input bar are native, while the chat content area is server-driven using Yelp’s CHAOS framework. The view and data are separated — the client fetches a CHAOS view template once, then conversation data hydrates that template on each turn. The backend sends MessageEvent objects, quick replies, and client actions (such as DisableChat) to control the UI. This hybrid approach enabled rapid iteration, but required building new CHAOS components for text input and network requests, and posed cross-platform consistency challenges.

## Approach / What changed

Yelp built the Assistant UI with a hybrid architecture using CHAOS, its server-driven UI framework, combined with native UI elements. The top bar and input bar are native-driven while the chat content area is server-driven. The view (template) and data are separated: the client fetches a CHAOS view configuration once as a blueprint, then incremental conversation data hydrates that template on each turn. The backend returns MessageEvent objects, quick replies, and client actions such as DisableChat to control the UI. Two failure modes (recoverable and non-recoverable) handle errors by retrying or disabling input.

## Takeaways

- Yelp built the Assistant with a hybrid native/server-driven UI to avoid slow app-store update cycles; only the chat content area is server-driven.
- Separating view (template) from data lets the client fetch a CHAOS blueprint once and hydrate it incrementally with each conversation turn.
- The backend controls the UI by returning MessageEvent objects, quick replies, and client actions such as DisableChat to remove the input bar when the chat ends.

## FAQ

### Can the user send multiple messages at once?

After a message is sent, the chat is turn-based: the user must wait for the bot to reply or fail before sending another message.

### How does Yelp Assistant end a conversation?

The backend includes a DisableChat client action in its last response, which removes the text input bar from the UI.

### What happens when the bot fails?

In the first failure mode, the client retries several times before asking the user to resend. In the second, the client permanently disables the chat.

**Tags:** [Android](https://yomu.fyi/topic/android), [iOS](https://yomu.fyi/topic/ios), [LLMs](https://yomu.fyi/topic/llm), [Server-Driven UI](https://yomu.fyi/topic/server-driven-ui), [Swift UI](https://yomu.fyi/topic/swift-ui)

- Source: [Yelp](https://engineeringblog.yelp.com/2026/09/the-making-of-the-yelp-assistant-ui.html)
- Source URL: https://engineeringblog.yelp.com/2026/09/the-making-of-the-yelp-assistant-ui.html
- Ingested by Yomu: 2026-09-29T18:00:11.237Z

[Read original post](https://engineeringblog.yelp.com/2026/09/the-making-of-the-yelp-assistant-ui.html)
