diff --git a/docs/docs/llms/flow-policy.mdx b/docs/docs/llms/flow-policy.mdx
index 7675c40b51f0..83ac5b6eb5c1 100644
--- a/docs/docs/llms/flow-policy.mdx
+++ b/docs/docs/llms/flow-policy.mdx
@@ -3,7 +3,7 @@ id: flow-policy
sidebar_label: Flow Policy
title: Flow Policy
abstract: |
- Guide on implementing and managing Flows with the FlowPolicy.
+ This is a guide to implementing and managing conversational flows using the FlowPolicy.
---
import RasaDiscoveryBanner from "@theme/RasaDiscoveryBanner";
@@ -12,35 +12,34 @@ import flowStackOverview from "./flow_stack.png";
-The Flow Policy in Rasa is a state machine that enables you to manage
-conversational flows in your chatbot and combine your business logic with
-machine learning.
+Rasa's Flow Policy is a state machine that allows you to manage and control your
+chatbot's conversational flows. It facilitates the integration of your business
+logic with machine learning capabilities.
-The policy manages the state of your bot, transitioning between states, and
-initiating new flows when required. The "Flow Stack" represents all flows that
-have been started and not yet completed and reference steps defined using the
+The Flow Policy oversees your bot's state, handles state transitions, and
+triggers new flows when needed. The "Flow Stack" represents all started but
+incomplete flows and refers to steps defined in the
[flows specification](../flows.mdx).
-The policy allows you to express your logic in flows, shaping the way a
-conversation progresses based on user input and system response. Other
-classifiers will modify the underlying state machine to handle edge-cases.
+Using the Flow Policy, you can encapsulate your logic into flows, thereby
+guiding the conversation based on user input and system response. Other
+classifiers adjust the underlying state machine to handle edge cases.
-Please refer to the [flows specification](../flows.mdx) for detailed information
-on defining flows.
+For more detailed information on defining flows, refer to the
+[flows specification](../flows.mdx).
## Adding the `FlowPolicy` to your bot
-The flow policy can be used like [any other policy](../policies.mdx).
-Incorporating the `FlowPolicy` into your bot involves a two-step process. First,
-you need to configure the `FlowPolicy` in your `config.yml` file. The
-configuration ensures that your bot recognizes and applies the `FlowPolicy` when
-running:
+The Flow Policy can be integrated like [any other policy](../policies.mdx). It
+involves two steps:
+
+1. Configure the `FlowPolicy` in your `config.yml` file:
```yaml-rasa title="config.yml"
policies:
@@ -49,33 +48,31 @@ policies:
# - ...
```
-Second, you need to add flows to your bot in accordance with the
-[flows specification](../flows.mdx). This step involves defining the states and
-transitions your bot should recognize and respond to.
+2. Add flows to your bot as per the [flows specification](../flows.mdx). This
+ step involves defining the states and transitions that your bot should
+ recognize and react to.
Once added, the `FlowPolicy` will read all defined flows from your training data
and apply them.
## How does it work?
-The `FlowPolicy` leverages a Flow stack structure (Last In First Out) together
-with internal slots to manage the state of your bot.
+The `FlowPolicy` employs a Flow stack structure (Last In First Out) along with
+internal slots to manage your bot's state.
### Managing the State
-The state of your bot is managed using a "flow stack". The flow stack stores the
-position in each started flow. The stack is ordered as "last in, first out"
-queue. The flow that got started last, will be completed first, before flows
-inserted earlier will be continued. The flow stack is stored in the `flow_stack`
-slot.
+Your bot's state is managed using a "flow stack". The flow stack stores the
+current position in each started flow. The stack follows a "last in, first out"
+sequence. The last started flow will be completed first, and then earlier
+inserted flows will continue. The flow stack is stored in the `flow_stack` slot.
-Let's take the following example flow and a conversation that is currently using
-it:
+Here's an example flow and a conversation currently using it:
```yaml title="flows.yml"
flows:
transfer_money:
- description: This flow let's users send money to friends and family.
+ description: This flow enables users to send money to friends and family.
steps:
- id: "start"
@@ -92,54 +89,50 @@ flows:
-The correction _"oh sorry I meant John"_ from the user triggers a correction
-flow to be started. This **correction is not explicitly modeled** in the
-`transfer_money` flow but rather handled by a so called "conversational
-pattern".
+A correction by the user, _"oh sorry I meant John"_, initiates a correction
+flow. This correction is not explicitly modeled in the `transfer_money` flow;
+it's handled by a conversational pattern.
-The correction flow is only executed when the user wants to correct a prior
-input. When triggered, the correction flow is put on top of the flow stack and
-executed.
+The correction flow only executes when the user wants to correct a previous
+input. Once triggered, it's placed on top of the flow stack for execution.
-From the `transfer_money` flow, the correction flow is an interruption. Once the
-correction flow is completed, the `transfer_money` flow is resumed. Before the
-`transfer_money` is resumed, the `resume_flow` flow is triggered. What happens
-in the `resume_flow` and `correction` flows can be
-[customized](./unhappy-paths.mdx).
+For the `transfer_money` flow, the correction flow is an interruption. Once
+completed, the `transfer_money` flow resumes. Before its res
-Once the `resume_flow` flow is completed, the `transfer_money` flow is resumed
-and the bot is back in the state it was before the correction flow was started.
-The `transfer_money` flow will re-ask the question that was interrupted by the
-correction flow.
-
-Both, the `resume_flow` and the `correction` flow are "conersational patterns"
-that are not explicitly modeled in the `transfer_money` flow. They are
-automatically triggered by the `FlowPolicy` when required. Details on how to
-define conversational patterns can be found in
+umption, a `resume_flow` flow is activated. You can customize what happens in
+`resume_flow` and `correction` flows in
[Handling Unhappy Paths](./unhappy-paths.mdx).
+Upon completion of the `resume_flow` flow, the `transfer_money` flow resumes,
+and the bot returns to the state before the correction flow started. The
+`transfer_money` flow will re-ask the interrupted question.
+
+The `resume_flow` and `correction` flows are conversational patterns not
+explicitly modeled in the `transfer_money` flow. The `FlowPolicy` automatically
+triggers them when needed. For more details on defining conversational patterns,
+refer to [Handling Unhappy Paths](./unhappy-paths.mdx).
+
### Transitioning Between States
-The `FlowPolicy` transitions between states in response to user inputs or after
-an action has been completed. Initially, it waits for user input. Once received,
-it advances the state of the machine until it makes an action prediction. After
-the action has been completed and its result incorporated, it continues
-advancing to the next state.
+The `FlowPolicy` transitions between states either in response to user inputs or
+after an action's completion. Initially, it awaits user input. Once received, it
+advances the state of the machine until an action prediction is made. After
+completing the action and incorporating its result, it moves to the next state.
### Starting New Flows
-Starting a new flow in the `FlowPolicy` can be done in one of two ways. Either,
-by user input that matches the first step in a flow or by predicting the "flow
-action".
+Starting a new flow in the `FlowPolicy` can occur in two ways: by user input
+matching the first step in a flow, or by predicting the "flow action".
#### User Input
-The user message _"i want to transfer money"_ will trigger a flow
-`transfer_money` if this flow is defined to be triggered by this message, e.g.:
+A user message like _"I want to transfer money"_ will trigger the
+`transfer_money` flow, provided this flow is defined to be initiated by such a
+message:
```yaml title="flows.yml"
flows:
@@ -154,57 +147,53 @@ flows:
# - ...
```
-The NLU model will predict the intent `transfer_money` and the `FlowPolicy` will
-start the flow `transfer_money` as a result.
+Here, the NLU model predicts the `transfer_money` intent, and as a result, the
+`FlowPolicy` initiates the `transfer_money` flow.
#### Predicting Flow Actions
-Another policy can predict the action `flow_transfer_money` and the `FlowPolicy`
-will start the flow `transfer_money` as a result.
+Another policy predicting the action `flow_transfer_money` will result in the
+`FlowPolicy` initiating the `transfer_money` flow.
### Interruptions and Digressions
-Flows and their specification should model the happy path of a conversation.
-Digressions and interruptions are not explicitly modeled in a flow. Instead, the
-`FlowPolicy` relies on other components to identify these cases and interrupt
-the flow. The digressions and interruptions the flow policy is able to handle
-are documented in [Handling Unhappy Paths](./unhappy-paths.mdx).
-
-Sometimes, the user might provide something that a flow does not expect. The
-`FlowPolicy` does not identify these cases itself, but relies on other
-components to identify these cases and interrupt the flow.
+Flows and their specifications should ideally model the happy path of a
+conversation. The `FlowPolicy` depends on other components to identify
+digressions and interruptions and interrupt the flow accordingly. For details on
+which digressions and interruptions the flow policy can handle, refer to
+[Handling Unhappy Paths](./unhappy-paths.mdx).
For example, the user message _"oh sorry I meant John"_ is a correction to a
-prior input. The `FlowPolicy` relies on another component to identify that this
-is a correction and set the corresponding slots, e.g. the
-[LLM Flow Classifier](./llm-flow-classifier.mdx). Based on this, the
-`FlowPolicy` will then start the correction flow.
+prior input. The `FlowPolicy` depends on another component, like the
+[LLM Flow Classifier](./llm-flow-classifier.mdx), to identify it as a correction
+and set the corresponding slots. Based on this, the `FlowPolicy` initiates the
+correction flow.
## Configuration
-Currently, there is no additional configuration required for the FlowPolicy
-beyond what has been outlined above.
+No additional configuration is required for the FlowPolicy beyond what's already
+outlined above.
-## FAQ
+## Frequently Asked Questions
-### Using the FlowPolicy with other Polices
+### Can FlowPolicy be used with other Policies?
-Currently, we recommend to avoid using the `FlowPolicy` together with the
-`RulePolicy`. The `RulePolicy` is not aware of the flow stack and its
-predictions are known to interfere with the `FlowPolicy`.
+Currently, we recommend not using the `FlowPolicy` in conjunction with the
+`RulePolicy`. The `RulePolicy` isn't aware of the flow stack and may interfere
+with the `FlowPolicy`.
-### What triggers the start of a flow?
+### What triggers a flow start?
-A flow can be started in multiple ways:
+A flow can be initiated in several ways:
-1. one flow can ["link" to another flow](../flows.mdx#next-next), which will
- start the linked flow and return to the original flow once the linked flow is
- completed.
-2. a flow will be started when the user message matches the
+1. One flow can ["link" to another flow](../flows.mdx#next-next), which will
+ initiate the linked flow and return to the original flow once the linked flow
+ completes.
+2. A flow starts when the user message matches the
[`user_message` step](../flows.mdx#user-message-user_message) of the flow. A
- match is based on the intent and entities of the user message.
-3. Flows, which are "comversational patterns" (e.g. correction, resume flow) are
- started automatically by the `FlowPolicy` when required.
-4. A flow will be started when another policy predicts the corresponding flow
- action named `flow_{flow_name}`. This action will push the flow onto the flow
- stack and the `FlowPolicy` will run it.
+ match is determined by the intent and entities of the user message.
+3. Flows, which are conversational patterns (e.g. correction, resume flow), are
+ automatically initiated by the `FlowPolicy` when needed.
+4. A flow starts when another policy predicts the corresponding flow action
+ named `flow_{flow_name}`. This action pushes the flow onto the flow stack,
+ and the `FlowPolicy` executes it.