> ## Documentation Index
> Fetch the complete documentation index at: https://docs.osvi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a Journey

> Describe the use case in plain language and the AI builder drafts the AOPs, agents, and settings for you

Journeys are built the same way [Conductor](/platform/conductor) builds agents: you describe the use case, an AI builder asks questions and drafts the journey while you chat, and a live preview fills in as it works.

## Two ways in

* **Journeys → New journey** starts a new journey from a plain-language description.
* **Refine with AI** on an existing journey's page opens that journey for editing through the same kind of conversation — changes write back to the journey in place when you finish.

## Starting a build

The entry screen is a single prompt:

> Describe the use case in plain language — cart recovery, payment follow-up, booking — and the builder drafts its AOPs (Agent Operating Procedures), chooses the actions it can take, and wires up the agents it coordinates.

You can attach a brief, script, or policy document (PDF, Word, Markdown, TXT, CSV) to ground the journey before you even start typing. Press **Generate journey** (or ⌘/Ctrl + Enter) to begin.

## Working with the builder

Once a build is running, the screen is split in two:

* On the left, a **conversation** with the builder — answer its questions, ask for changes, and attach more files as you go.
* On the right, a **live preview** of the draft: its AOPs, the agents it coordinates, the actions it may take, its completion rules, and its guardrails, updating as the conversation progresses.

Attaching an agent is the one step that always needs your explicit sign-off. When the builder proposes attaching an agent, it appears under **Needs review** with **Attach** and **Skip** buttons — picking an agent in the conversation itself doesn't attach it. A journey saved with a pending attach card still unclicked has nothing to route to, so the workspace flags it until you either attach or skip it.

When the draft has a name, at least one AOP, and at least one attached agent, you can save it:

* **New journey** — choose **Save as draft** to keep testing before anyone sees it live, or **Create & go live** to start letting the Journey Manager handle real customers immediately.
* **Refining an existing journey** — **Update journey** writes your changes back, keeping its current status.

<Note>
  The AI builder can't set up phone numbers, telephony, or campaigns — those stay on the agent's own pages. Attach the agent to the journey after it already has what it needs to run.
</Note>

## AOPs — Agent Operating Procedures

An AOP is one situation the journey handles, written as:

* **Title** — a short name (e.g. "Promise to pay")
* **When** — the one triggering event or condition, stated concretely (e.g. "a payment check fires and payment is still uncaptured")
* **Steps** — up to 7 steps in plain English, with exact waits and attempt counts written as MUST / SHOULD / MAY / NEVER, and any stop point written into the step itself (e.g. "if paid, STOP and cancel the pending checks")

Needing more than 7 steps for one AOP usually means two situations have been merged — split it into two AOPs instead.

## Agents it coordinates

A journey attaches the chat and/or voice agents it steers. The agents keep handling their own conversations either way; attaching one only lets the Journey Manager act on it as well. An agent can belong to **at most one journey at a time** — if it's already attached elsewhere, the picker lists it as taken and names the journey holding it, and you'll need to detach it there first.

## Completion — how a run ends

Set any combination of these, or leave all of them empty and let the Journey Manager judge for itself when a customer is done:

* **Agent goals** — something an agent accomplishes in conversation, given a short label and a plain-English definition of what "met" looks like (e.g. label "Payment confirmed", definition "the customer confirms they've paid")
* **External events** — a signal from a connected app (a webhook or API event, such as a payment trigger) that ends the run
* **Escalation policy** — one journey-wide rule for when a human should take over (e.g. "a human takes over when the customer disputes a charge or asks for a manager"). This replaces per-AOP escalation — individual AOPs don't carry their own rule. Leave it empty and the journey escalates only where an AOP's own steps say so.

## Guardrails

Hard limits the Journey Manager cannot exceed, whatever an AOP asks for. Leave any field blank to use the platform default.

| Guardrail | What it limits |
| - | - |
| **Longest wait between steps** | The furthest ahead the Journey Manager may schedule the next step |
| **Most times we reach out** | How many times one customer may be contacted before the journey gives up on them |
| **Most times a call can move** | How many times a call already on the books may be rescheduled |
| **Most check-backs waiting at once** | How many check-backs may sit waiting at once for a single customer |
| **If a step can't run** | Either **try the next step anyway**, or **skip that customer**, when a call won't connect or a message won't send |
| **Who decides each step** | Either **follow the AOP exactly**, or let the **Journey Manager decide (AI)** by reading the situation |

## Standing watches

A standing watch checks in on a conversation that's gone quiet, with no trigger needed: set how many minutes of chat silence should arm it and, optionally, a cap on how many times it may fire for one customer. Once armed, the Journey Manager follows the AOP that covers it — a nudge, a call, or nothing, depending on what you've written.

## Connected apps

Where your workspace has connected apps available, a journey can:

* **When this happens** — an event from a connected app (a webhook, an order-management update, and so on) completes or cancels the journey
* **What this journey can do** — tools the Journey Manager may run while deciding; they run immediately and it reasons over the result

## Memory, timezone, and business hours

You can also tell the builder, in the same conversation, to:

* **Remember specific facts** for the life of a run — a promised payment date, a preferred callback time — so they carry across chat, voice, and wakes instead of being lost after one turn
* **Work in a given timezone** and **within business hours**, so the Journey Manager only schedules calls and follow-ups inside the windows you describe

## Editing an existing journey

Open a journey and select **Edit** on the Overview tab (or on any individual AOP) to open the same form used while building — name, description, channel, agents, actions, completion, guardrails, and AOPs. Use the **+** on the AOP list to add another one, or **Remove** while editing one to delete it.

## Troubleshooting

<AccordionGroup>
  <Accordion title="This build is open in another tab">
    Moving it here will disconnect the other tab. Click **Reconnect here** to continue from this tab.
  </Accordion>

  <Accordion title="This journey has already been saved">
    The build behind this link was already finalized. Click **Go to journeys** to find it in your list.
  </Accordion>

  <Accordion title="Create & go live / Save as draft is disabled with no reason shown">
    The draft is missing one of: a name, at least one AOP, or an attached agent. If an agent is still waiting under **Needs review**, click **Attach** — proposing it in conversation alone doesn't attach it.
  </Accordion>
</AccordionGroup>
