Skip to content
luftflow

Getting started

Make a flow, find your way around the workspace, and dial it on the built-in phone.

A flow is one USSD service: the screens a caller sees after dialling a code such as *384#, and the rules that move them from one screen to the next. You design it here, test it without a phone, and then point a short code at it.

Make your first flow

Choose New flow on the flows page. You can start from a working service you can dial straight away, from a small blank menu, or from a .yaml file you already have.

Starting from a working service is the quickest way to see how the pieces fit: it comes with screens, test answers for its API calls, and passing scenarios.

The workspace

A flow opens as one full window:

  • The journey fills the middle. Each card is a screen and each line is a way a caller can move. Drag a card to arrange it, drag the dot on an exit onto another screen to link them, or drag it onto empty space to create a new linked screen.
  • The phone sits on the right. Press Dial and type replies the way a caller would. It runs the same engine that serves real callers.
  • The dock underneath holds Checks (what is wrong with the flow), Screens (a list you can filter), Network (the flow's API calls and their test answers), Scenarios, Versions, Traffic and YAML (the flow as text).

Click a card to open it in the side panel. Everything you change there saves as you type, and teammates see it without reloading.

Key What it does
⌘K or Ctrl K Open the command menu
P Show or hide the phone
C, S, N Open Checks, Screens or Network
T, V, Y Open Scenarios, Versions or YAML
F Fit the journey to the window
D Fold the dock
J and K Move the selection through the screens; Enter opens it

The four kinds of screen

Kind What it does
Menu Shows a message and numbered options. Each option goes to a screen.
Input Asks for an answer, checks it against rules, and saves it to a variable.
Router Shows nothing. Runs actions and picks the next screen from conditions.
End Shows a final message and ends the session.

Screens explains each one.

What a flow looks like as text

The forms and the YAML are two views of the same thing. You never have to write YAML, but it helps to recognise it:

name: "bank_flow"
default_language: en
screens:
  main_menu:
    type: menu
    text:
      en: "Welcome to Example Bank"
    options:
      - text: "Check Balance"
        next: enter_pin
      - text: "Exit"
        next: goodbye
  goodbye:
    type: end
    text:
      en: "Thank you. Goodbye."

Editing through the forms rewrites only the part of the YAML that changed, so comments you add by hand survive.