How Flows Work
Every Plural project starts with two special system nodes at the top of your canvas: Human detected and No human detected.- When a robot or avatar detects a human (via face detection), it begins executing the flow connected to the Human detected node, following arrows from element to element.
- When no human is in the robot’s field of view, the device loops on the No human detected node — your idle screen.
- If a robot or avatar loses sight of a face while a flow is running, the flow immediately jumps back to the No human detected node.
NAO behaves differently from other devices. While a flow is running, NAO does not cancel it when no human is detected. You can use open-ended flows (elements with no outgoing arrow) to give NAO natural pause points where it can restart or wait for interaction. See the section below for more details.
Awareness Feature
The Awareness Feature governs the transition between idle and active states:- The “No human detected” node acts as a repeating idle state — it loops as long as no human is seen.
- As soon as a face is detected, the flow following “Human detected” triggers and runs until no human has been seen for 3 seconds.
- Use the “No human interaction for 20 seconds” trigger on elements to prompt the robot to repeat a question or offer a hint if the user goes quiet.
Frames
Frames are containers on the canvas that group a set of connected elements into a logical flow. Each frame is associated with a specific device type (Avatar, Pepper, Temi, or NAO).Add a frame
Click the + button on the canvas or use the toolbar to add a new frame and select the device type.
Resize a frame
Click the frame’s border to highlight it, then drag any side or corner to resize. Frames also expand automatically when you drag elements to the edge.
Move a frame
Hover over the top bar of the frame until your cursor changes, then click and drag to reposition it on the canvas.
Flow Navigation
Use these controls to move around large canvases comfortably:| Action | How to do it |
|---|---|
| Pan the canvas | Hold the left mouse button (or middle-click) and drag |
| Zoom in / out | Scroll the mouse wheel |
| Jump to a specific frame | Use the frame selector in the top toolbar |
| Move a frame | Drag its top bar |
Connecting Elements with Flow Arrows
Draw connections between elements by dragging the output circle on one element to another element or to an empty area (which opens the element picker). The arrow defines the sequence the robot follows.- Add back buttons by drawing an arrow from a later element back to an earlier one.
- For long flows, return users to the second element at the end rather than the first to skip repeated introductions.
- Leave no dead ends — an element with no outgoing arrow leaves the robot frozen on the last screen. Connect open ends back to a menu or the flow start.
General Design Suggestions
Good flows feel like natural conversations, not monologues. Keep these principles in mind:Keep it conversational
Avoid long introductory speeches, especially ones that repeat on every visit (like main menus). Guide users by suggesting options they can say or tap.
Give users a way out
Always provide back buttons or verbal escape routes so users can revisit content or exit gracefully.
Use media thoughtfully
When displaying images or video, give users enough time to view them. Consider hiding buttons and letting users say “next” or “back”.
Handle silence
Use the “No human interaction for 20 seconds” feature to prompt users who have gone quiet — repeat the question or offer a gentle hint.
NAO-Specific Differences
NAO is a screenless robot with unique flow behavior. Keep these differences in mind when designing for NAO.
- Open ends are intentional — leaving an element without an outgoing arrow gives NAO a natural breakpoint where it can return to its idle state.
- No screen — NAO cannot show visual buttons or UI panels. Every instruction must be delivered verbally. Always tell the listener what words or phrases NAO expects to hear.
- No “No human interaction for 20 seconds” fallback is needed in the same way — use open-ended flows instead to create return-to-idle points.
