A presentation-ready walkthrough. The UI has this script built in: the Demo script card in the right rail has clickable chips that fill the chat input for you (A = Gabs / Software-Engineering, B = Diego / Finance). Click a chip, press Enter, narrate.
Setup: log in, confirm the top bar shows LangCache connected, and keep the Cache scope card on Person (the default).
Click: chip A "My role is Software Engineer.", then chip B "My role is Financial Analyst."
Say: "Each user writes their own profile fact. LangCache stores it with attributes = { company, business_unit, person }, so the write is scoped to that person only."
Audience sees: a STORED badge on both sides and a LangCache SET trace line. Two writes, two isolated scopes.
Click: chip A "What is my role at the company?", then the same chip on side B.
Say: "Same question, different people. The cache filters by the person attribute, so Gabs gets Software Engineer and Diego gets Financial Analyst. Scopes never mix."
Audience sees: a CACHE HIT badge on each side with 100% similarity (exact match on the identity key) and single-digit-to-tens-of-ms latency. Point at the trace: no LLM call happened.
Click: the "Switch scope to Business Unit" chip (it flips the scope card), then chip A and chip B "What does the term deploy mean?"
Say: "Now the cache is shared within each BU. The question is ambiguous, so the backend rewrites it with the domain inferred from the persona's BU before touching the cache or the LLM: software engineering for Gabs, corporate finance for Diego."
Audience sees: two different answers to the same words: releasing software to production vs rolling out a process or investment. The debug panel shows the rewritten prompt (... (in the context of software engineering)). First ask is an LLM miss that gets stored; repeat it to show the hit.
Click: the "Switch scope to Company" chip, then chip A "Explain what machine learning is."
Say: "At company scope everyone shares the cache. This first ask is a miss: the LLM answers in English and the answer is stored for the whole company."
Audience sees: an LLM badge with the model latency (typically 1-3 s) and a "saved to cache" badge. That latency number is your baseline for the next step.
Click: chip B "O que é machine learning?" (a Portuguese question keeping the borrowed English term, exactly how Brazilian devs speak)
Say: "Diego asks the same thing in Portuguese. Zero words in common with the cached entry, but the embedding is close enough: semantic cache hit on the English answer. The search is by meaning, not words."
Audience sees: a CACHE HIT badge with a high similarity score and a "Nx faster" badge comparing against the LLM latency from step 4. This is the closing beat: multilingual reuse for free.
Use the in-UI flush, never the LangCache console:
- The trash icon on each chat card deletes the entries for that side's current scope (
delete_queryby attributes). - Advanced settings → Flush both scopes (A + B) clears both in one click.
- To be thorough, flush once per scope you used: with the scope card on Person, then on Business Unit, then on Company. The index itself is never dropped.
Between steps you can also re-ask a question to contrast miss (LLM) vs hit (cache): the KPI row at the top accumulates hits, LLM calls, tokens saved and the estimated USD savings for the session.