salon/ package runs on LiveKit and Pipecat.
Your code and the example
The full example isexamples/salon-concierge-unmute/. Its names are the ones you used, so you can read it next to your files. Its salon/ package keeps its code in salon/src/salon/.
What the example adds
- Knowledge.
look_up_salon_infoandlook_up_refund_policysearch the salon’s own documents, so Robin quotes the guide instead of guessing a price. - Receipts and confirmations for every write. Booking, moving and cancelling each ask a question first and say a fixed line after. Most turns cost one model request.
- Held saves. A save made before the caller answered is held, and the call’s end settles it. Pipecat calls
UnmuteFlows.settle. LiveKit does it on its own. - A locked phone number.
customer_phoneis locked to the state on every diary tool, so the model never types it. - Phone calls.
sip_call_infoandtelephony_call_inforead what a phone call carries intostate.call. On a browser or console call,UNMUTE_CALL_STARTsimulates a caller. - A complaint mid-booking.
manage_bookingoffersto_complaintstoo, so a complaint in the middle of a booking goes straight to the specialist.
Run the full example
Copy the.env.example in each project to .env, and fill the keys it lists. Langfuse keys are optional.
- “I’d like to book a haircut on Friday.” The agent checks your number, offers times, confirms and books.
- “How much is a full head colour?” It answers from the salon guide.
- “My last colour went wrong, I want to complain.” It hands you to the complaint specialist.
- “Can I also move my haircut to Saturday?” It hands you back to the concierge, who moves it.
- “That’s all, bye.” It says goodbye and hangs up.
Where to go next
State
Types, confirmation and prompt placeholders.
Tools
Typed tools, locked arguments and announce lines.
Tasks
Steps, groups and finish checks.
Handoffs
Pass the call between agents.
Prefetch
Read values before the greeting.
Turn taking
Pace, interruptions and quiet callers.
Knowledge
Answer from your own documents.
Telemetry
Langfuse, Logfire, Coval and more.
On LiveKit
How the library plugs into LiveKit Agents.
On Pipecat
How the library plugs into a Pipecat pipeline.