You can copy full or partial flows between projects using 
Cmd/Ctrl + C and Cmd/Ctrl + V in the Flow Editor.
- Step-specific prompts and function references
 - ASR biasing for input accuracy
 - Clean state transitions between flow steps
 
Start step
To help identify some of the key parts of a flow step, the start step is annotated. Click a lettered heading to go to the relevant section.
A. Flow name (breadcrumb)
The flow name appears at the top of the editor and identifies the current flow — in this case,reservation confirmation.
It also acts as a breadcrumb, allowing you to return to the list of all flows. This is useful when working across multiple projects or agents.
B. Step name and icon
This shows the current step:Collect confirmation code. The 🏁 icon indicates it’s the start step of the flow.
Each step contains:
- A prompt shown to the user
 - Transition logic to guide conversation flow
 - A set of visible functions the LLM can call.
 
C. Transition function reference
Inside the step prompt, the LLM is told to callsave_confirmation_code if the user provides a valid input.
This example uses both the conversation and flow objects:
/ and appear as underlined blocks in the prompt editor.
See the transition function page for more details.
D. Add another reference
Clicking the . icon below the prompt lets you:- Add another function reference
 - Insert a transition to another step
 - Reference rules or knowledge base topics
 
goto_step() calls inside a single function. Always return after calling goto_step.
E. ASR biasing
This step has ASR biasing set to Alphanumeric, improving recognition of spoken confirmation codes like “B–4–Z–Q–9”. You can enable other biasing types as needed, including:- Name spelling
 - Time and date
 - Numbers
 - Addresses
 
F. Flow toolbar (bottom panel)
At the bottom of the Flow Editor:- Flow functions opens a modal to manage logic used in the flow
 - + Step adds a new node to the flow canvas
 
Middle steps

- If the user has already provided the name, the agent calls the relevant function (e.g. 
save_first_name,save_last_name) and proceeds. - If not, the agent asks for it directly.
 
End step

- It compares the 
confirmation code,first name, andlast nameagainst entries in the$reservationslist. - If a match is found, it calls the 
confirm_reservationfunction and moves forward. - If no match is found, it calls 
transfer_callwith the following parameters:destination="RESERVATIONS"reason="RESERVATION_NOT_FOUND"utterance="Right, let me put you through to someone who can help. Just a moment."
 
Reminders
- LLMs only see the current step’s prompt and function list — not previous steps
 - Always use 
returnafterflow.goto_step()to prevent silent overrides - Avoid naming transitions by position (
goto_step_4) — use intent-based names likematch_reservationorretry_lookup 
Improving date accuracy from speech
Voice transcription (ASR) often produces unstructured date strings liketwenty seventh of june twenty twenty five, which can be hard to parse — especially if you’re enforcing a strict format like DD/MM/YYYY.
Instead of checking the date format in the step prompt or rejecting invalid inputs immediately:
- Move format enforcement into the LLM context field of the parameter.
 - Let the LLM interpret and convert the input to the required format.
 - Then validate it in the function.
 
The user will say a date. You must extract the intended date and convert it to DD MM YYYY format. If they use a different format, rewrite it before returning.

