[{"id":"0axzkgt6uu2cp619h42k3xanqr5sujxh","title":"Branches","excerpt":"A branch structure is like the branches of a tree. They branch out further and further.\n","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Patterns","channel":"builder"},{"id":"0w8kl8g0ykzwi8fkj5v87vkrzb3q734m","title":"2 Understanding flow edges (may, must, not)","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"## Flow Edges in Wanderer: How Flows Move from Node to Node\n\n**Edges** connect nodes and shape the actual **flow**. In Wanderer, edges are **directional**, they define what can happen first, and what can happen next.\n\n### The three flow edge types\n\nWanderer uses three flow edge types to control execution:\n\n- **May-Edges**\n- **Must-Edges**\n- **Not-Edges**\n\n### May-Edges: \u201cThis could happen next\u201d\n\nA **May-Edge** is the most common connection. It simply means the next node **could** be executed if the flow reaches it through that edge.\n\nImportant detail: for the **target node**, it doesn\u2019t matter *which* May-Edge activated it. Once the node is reached, it runs.\n\n### Must-Edges: \u201cAll conditions must be met\u201d\n\nA **Must-Edge** is stricter: it **must be traversed** to activate the destination node. If there are multiple Must-Edges pointing to the same destination, **every single one** has to be satisfied before the node can launch.\n\nThink of it like a checklist. Only when all required \u201cyes\u201d answers (or required steps) have happened does the flow unlock the next node.\n\n### Not-Edges: \u201cThis blocks the destination\u201d\n\nA **Not-Edge** does the opposite of enabling: it **blocks** a destination node as soon as it\u2019s traversed.\n\nThat makes Not-Edges useful for ruling out paths e.g., when a certain answer should prevent a specific suggestion or outcome from appearing.\n\nWith these three flow edge types, you can build flows that are flexible (May), strict (Must), and guarded (Not).","category":"Tutorial - Basics","channel":"chat"},{"id":"1crgp4dxfail80av1ckxvu1x8tm89svj","title":"Start node","excerpt":"The start node is your central entry point into every flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"1gl77xe5fw2ug2eeeluzuenv51fcztxp","title":"Message node","excerpt":"The message node allows the flow to send messages to the chat.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"message-node","post":"## The Message Node: Sending Chat Messages from Your Flow\n\nThe **Message Node** lets your flow **send messages directly to the chat** as soon as the node is reached.\n\n### Chain messages easily\n\nYou can **chain multiple Message Nodes** to create a smooth sequence e.g., a greeting, some context, and the next instruction.\n\n### Use the `arrived` state for branching\n\nIn your edges, you can use the **`arrived`** state to detect when a message **has arrived**. This is useful if you want the flow to continue only after delivery is confirmed.\n\n### Send multiple messages at once\n\nIf you want, you can also send **multiple messages in one Message Node**, for example:","category":"Nodes","channel":"chat"},{"id":"20l4vo9at74nsveaxlzgauppccjejb2x","title":"Logical XOR gate","excerpt":"This flow demonstrates how a logical XOR gate works.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"School and education","channel":"chat"},{"id":"2egvh2tdgz8c2f2pyojv6ribbwns1lm6","title":"Mail node","excerpt":"With the Mail node, you can easily send emails from your flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"30j2p7ssblc35u5fcea95y6byke3983p","title":"Contains node","excerpt":"The contains node checks whether a specific word is present in an input.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"3p0golcbd8zwsdi64da34tsl5mpta0mb","title":"Select your favorite animal","excerpt":"This example generates a button list. You can always revisit the selection and correct it.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Examples","channel":"chat"},{"id":"43rwriwvt82w57wckd07fcmfzjnumln4","title":"Stress Test direkt im Browser - Perceived Stress Scale (PSS-10) - German \/ Deutsch","excerpt":"Finde in nur 2-3 Minuten heraus, wie gestresst du wirklich bist. Dieser kostenlose Selbsttest basiert auf der wissenschaftlich validierten Perceived Stress Scale (PSS-10) und misst dein subjektiv wahrgenommenes Stresslevel der letzten 30 Tage.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Stress-Test-direkt-im-Browser-Perceived-Stress-Scale-PSS-10-German-Deutsch","post":"## Stress-Selbsttest: Wie gestresst bist du wirklich?\n\nF\u00fchlst du dich manchmal \u00fcberfordert, nerv\u00f6s oder hast das Gef\u00fchl, die Kontrolle zu verlieren? Mit diesem **kostenlosen Stress-Selbsttest** kannst du in nur 2-3 Minuten herausfinden, wie hoch dein aktuelles Stresslevel ist.\n\n---\n\n## Was misst dieser Test?\n\nDer Test basiert auf der **Perceived Stress Scale (PSS-10)**, einem der weltweit am h\u00e4ufigsten verwendeten wissenschaftlichen Instrumente zur Messung von subjektiv wahrgenommenem Stress. Entwickelt von Cohen, Kamarck und Mermelstein, wird die PSS-10 in **klinischer Forschung, Arbeitspsychologie und Gesundheitsf\u00f6rderung** eingesetzt.\n\nDie PSS-10 erfasst nicht einzelne Stressereignisse, sondern **wie du pers\u00f6nlich dein Leben in den letzten 30 Tagen erlebt hast** \u2013 ob unvorhersehbar, unkontrollierbar oder \u00fcberlastend. Der Fokus liegt auf deiner **subjektiven Bewertung**: Wie sehr f\u00fchlst du dich gestresst, unabh\u00e4ngig davon, was konkret passiert ist?\n\n---\n\n## So funktioniert's\n\nDu beantwortest **10 kurze Fragen** auf einer **5-stufigen Skala** von \"niemals\" (0) bis \"sehr oft\" (4). Die Fragen erfassen zwei wichtige Dimensionen:\n\n- **Belastung und \u00dcberforderung**: Wie oft f\u00fchlst du dich nerv\u00f6s, gestresst oder mit Problemen \u00fcberfordert?\n- **Kontrolle und Bew\u00e4ltigung**: Wie gut kannst du mit unerwarteten Ereignissen umgehen und hast du das Gef\u00fchl, alles im Griff zu haben?\n\nEinige Fragen sind positiv formuliert (z.B. \"Wie oft hattest du das Gef\u00fchl, alles im Griff zu haben?\") und werden bei der Auswertung umgekehrt bewertet. Am Ende erh\u00e4ltst du **einen Gesamtscore zwischen 0 und 40 Punkten** mit einer Einsch\u00e4tzung deines Stresslevels:\n\n- **0-13 Punkte**: niedriger Stress\n- **14-26 Punkte**: moderater Stress  \n- **27-40 Punkte**: hoher Stress\n\nDu erh\u00e4ltst **sofort dein pers\u00f6nliches Ergebnis** direkt im Browser.\n\n---\n\n## Warum ist die PSS-10 so wertvoll?\n\nDie PSS-10 ist **einfach anzuwenden, gut validiert** und in vielen Sprachen verf\u00fcgbar. Sie wird weltweit in der Forschung eingesetzt, um:\n\n- **Zusammenh\u00e4nge zwischen Stress und Gesundheit** zu untersuchen\n- **Arbeitsbelastung und Burnout-Risiken** zu erfassen\n- **Stressbew\u00e4ltigungsprogramme** zu evaluieren\n- Als **Screening-Instrument** in epidemiologischen Studien zu dienen\n\nIm Gegensatz zu Tests, die nur objektive Stressfaktoren messen, erfasst die PSS-10, wie du Stress **wirklich empfindest** \u2013 denn zwei Menschen k\u00f6nnen dieselbe Situation v\u00f6llig unterschiedlich erleben.\n\n---\n\n## 100% anonym und sicher\n\nDieser Test l\u00e4uft **komplett in deinem Browser**. Es werden **keine Daten \u00fcbertragen, gespeichert oder an Dritte weitergegeben**. Sobald du das Fenster schlie\u00dft, sind alle Eingaben gel\u00f6scht. Deine Privatsph\u00e4re ist garantiert \u2013 eine reine Frontend-Anwendung ohne Server-Kommunikation.\n\n---\n\n## Gebaut mit dem Wanderer Flow Builder\n\nDieser Stress-Test wurde als **Beispiel-Anwendung** mit dem **Wanderer Flow Builder** erstellt \u2013 einem Tool zum Erstellen interaktiver Chatflows ohne Programmierkenntnisse. Der Flow Builder erm\u00f6glicht es dir, eigene Tests, Umfragen, Beratungs-Bots oder interaktive Guides zu bauen \u2013 schnell, einfach und flexibel.\n\nOb psychologische Selbsttests, Produktberater, Onboarding-Flows oder Gesundheits-Screenings: Mit dem Wanderer Flow Builder kannst du **professionelle, interaktive Erlebnisse** erstellen, die komplett im Browser laufen und h\u00f6chste Datenschutzstandards erf\u00fcllen.\n\n---\n\n**Bereit, deinen Stresslevel zu checken?** Starte den Test direkt hier im Browser und erhalte in wenigen Minuten dein Ergebnis!","category":"Medical & Therapy","channel":"chat"},{"id":"47urdkbh6ho5aqr2xcl1rh2ust0dyaiu","title":"Select node","excerpt":"The Select Node generates dynamic buttons from a data list.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"4klu6pqihjd5403a98ugvrluqmkunuvw","title":"A chatbot that helps you fill out a form","excerpt":"In many systems, a form pauses everything until the user completes it. In Wanderer, the form can stay visible while the bot continues reacting, sending messages, and offering guidance in the background.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"a-chatbot-that-helps-you-fill-out-a-form","post":"Wanderer chatbots **do not block**. That means they can keep doing **work in parallel** while showing an interface to the user. Whether that interface is a set of buttons, a prompt input, or a full form, the conversation does not have to stop.\n\nThis changes what a chatbot can do in practice. In many systems, a form pauses everything until the user completes it. In Wanderer, **the form can stay visible while the bot continues reacting**, sending messages, and offering guidance in the background.\n\nA simple example is a support form with a serial number field. If the serial number **is not entered**, the bot does not have to replace the form or wait silently. It can keep the form on screen and at the same time explain where to find the number and what it looks like.\n\nIf the user leaves the serial number field empty, the interface can **reveal additional help buttons**. The chat can then show supporting messages step by step, while the form remains available and unchanged. This makes the interaction feel much more natural because help appears exactly when it is needed without interrupting the task.\n\nThe consequence is that chatbot interfaces no longer have to choose between interaction and assistance. Wanderer can **collect input and provide contextual support at the same time**. That makes flows more resilient, more user friendly, and much closer to real human guidance.\n\nFeel free to also read the blog post on this topic: [Why Wanderer Chatbots Don't Block and What That Means in Practice](https:\/\/wanderer-flow.de\/blog\/why-wanderer-chatbots-dont-block-and-what-that-means-in-practice)","category":"Context Reactivity","channel":"chat"},{"id":"4kr10qync9z5n1mzp46x2ao0ts1zxhbb","title":"List, Next and Prev nodes","excerpt":"Lists can store and collect data. Add data, delete it, or iterate over it.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"4qccf1j0x30i7avujowekvmonjoppl4r","title":"Tutorial: Create new nodes","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial: Builder","channel":"builder"},{"id":"54v6dg43j88haesxwg6uv3grpb6gdi2s","title":"Tutorial: Connect nodes","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial: Builder","channel":"builder"},{"id":"58261oaor5dmas1e7ocec1ghvqh8oq36","title":"Conclusion node","excerpt":"Use conclusion nodes to make conclusions visually understandable.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"5gi6gfyab13nc4rzh3dxkjfr3u4lawn6","title":"Board node","excerpt":"A board is like a bulletin board. You can display data and text there using Markdown. A board is always visible in the interactive part of the chat. Ideal for real-time data or summaries.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"5qdvtptcn0bacbmu9jxbq3kvseua1day","title":"The Time Traveling Pizza Configurator","excerpt":"Pick your dough, your sauce, your toppings. View the summary. Jump back. Change your mind. Break it if you can. Backtracking, follow up questions, and data invalidation all happen on their own, without a single line of code, so the configuration always stays consistent, no matter how often you reshape it.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"The-Time-Traveling-Pizza-Configurator","post":"**Most configurators ask you a list of questions. Wanderer asks the right questions, in the right order, and quietly rewrites itself whenever you change your mind.**\n\nTo show what Wanderers engine (Reactive Graph Sequencing) actually feels like in practice, let's build something familiar: a pizza configurator. You can try the live demo right on this page.\n\n## The Setup\n\nThe configurator walks you through a series of choices. Dough. Sauce. Cheese. Crust. Toppings. Each answer feeds into the next, and at the end you get a clean summary of your pizza.\n\nSo far, nothing unusual. Any form builder can do this.\n\nBut here's where it gets interesting.\n\n## Conditional Follow-Ups\n\nWhen you pick **size**, you can choose between small, medium, large, and party pizza. If you pick party pizza, a new question appears: **do you want it pre sliced?** If yes, another question follows: **how many slices?**\n\nThat slice count then shows up in the final summary, right next to your toppings.\n\nIn a traditional flow builder, you'd wire this up with conditional branches, store the slice count in a variable, and write a bit of glue code to make sure the summary reflects the choice. Doable, but tedious.\n\nIn Wanderer, you just draw it. The graph handles the rest.\n\n## The Magic: Going Back\n\nNow imagine you've finished configuring your party pizza with 12 slices. You scroll back through your answers and decide that actually, you want a small pizza instead.\n\nYou click on the size question. You change party pizza to small.\n\n**Three things happen automatically:**\n\n1. The slice questions disappear from your configuration\n2. The slice count vanishes from the summary\n3. The flow continues cleanly from wherever the last valid question was\n\nYou didn't write any logic for this. You didn't define rollback rules. You didn't mark dependencies. The graph already knew that the slice questions only existed *because* of the party pizza choice. When that premise disappeared, everything downstream of it disappeared too.\n\nThis is **retroactive adaptation**, and it's the defining feature of RGS.\n\n## Why This Works\n\nEvery node in the graph holds state. Every edge carries a condition. When you change an answer, the graph doesn't just move forward to the next question. It re traverses itself from scratch, evaluates which paths are still valid given the new state, and collapses into a fresh sequence.\n\nThe questions that no longer belong simply aren't part of the new sequence. Their state is invalidated. Their entries in the summary vanish. The flow resumes at the first unanswered question in the new path.\n\nYou're not patching a flow. You're regenerating it.\n\n## Why You Care\n\nIf you've ever built a wizard, a configurator, or a chatbot with conditional logic, you know the pain. Forward flow is easy. Backward flow is where things break. Users change their minds, and suddenly your state is inconsistent, your summary is wrong, and you're writing invalidation logic by hand for every possible dependency.\n\nRGS handles this by default. **Backtracking, follow up questions, and data invalidation all happen on their own**, because the graph itself encodes the dependencies.\n\nThat means:\n\n* You can let users freely jump back and edit any earlier answer\n* You don't need to track which fields depend on which other fields\n* You don't need to manually clear stale data\n* The summary always reflects the current valid state of the configuration\n\n## Try the Demo\n\nThe pizza configurator on this page is running on Wanderer right now. Change your mind as often as you like. Jump backwards. Pick party pizza, set your slice count, then switch to small and watch the slices quietly disappear. The graph is doing all of it for you.\n\nYou can learn more about the technology (Reactive Graph Sequencing) here: https:\/\/wanderer-flow.de\/blog\/reactive-graph-sequencing-the-technology-behind-wanderer\n","category":"Context Reactivity","channel":"chat"},{"id":"64nw07i1s969t1rdnd46gmnsm3pqmilo","title":"Print node","excerpt":"Use the print node to dynamically create documents from Flow data. Give users the ability to print data directly.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"6a83q5pfdndlg0d6rt2ox1uwn4a2gzqp","title":"Race, Racer and Finish nodes","excerpt":"A race allows for the simultaneous execution of parallel branches \u2014 until one arm wins the race.\n","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"6lvwn1j9f4yi0gw4t9qacevihb2key4w","title":"Comment node","excerpt":"Comment nodes don't do anything. You can theoretically use them to forward signals. But in reality, they only contain details and comments about why certain things in the flow are the way they are.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"7c98rkyfygcjwim0kpwjs6fbmfeias9j","title":"Intake form for therapists, doctors or medical processes","excerpt":"This is a demo intake form for doctors and therapists. Ready to use or adapt.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Intake-form-for-therapists-doctors-or-medical-processes","post":"Building patient-friendly intake forms doesn\u2019t have to mean PDFs, clipboards, or rigid portals. With **Wanderer** you can create modern, adaptive intake flows in minutes\u2014without coding\u2014and run them anywhere your clients need them.\n\n### Build once, run everywhere\nWanderer intake forms work smoothly on **tablets in your practice** and can also be embedded on your **website**. That means clients can complete their intake at reception, at home before the appointment, or wherever it\u2019s most convenient.\n\nYou can also **send forms via email** as a simple link. And if you prefer a \u201cpaper-friendly\u201d workflow, patients or clients can **print the completed intake** and bring it to the appointment\u2014ideal for hybrid processes or practices transitioning away from paper.\n\n### Smart questions that adapt in real time\nInstead of static forms, Wanderer lets you build **reactive, branching conversations**:\n\n- Questions can **build on previous answers**\n- Entire sections can **appear or disappear** based on earlier inputs\n- Answer options can change dynamically depending on context\n\nThis creates an intake experience that feels more like a real conversation\u2014shorter for simple cases, deeper when needed, and more relevant for every patient.\n\n### Your team can understand (and improve) the flow\nWanderer is a **no-code flow builder** where the logic is visible. Staff can quickly understand *why* a certain question appears, then **adjust, extend, or refine** the intake without waiting for developers. You can watch the flow execute live while editing, making it easy to test and iterate.\n\n### Optional: connect to your existing software\nIf you already use a practice management system or documentation tool, an **optional integration** can enable **structured import** of the collected data\u2014so intake answers don\u2019t have to be retyped manually.\n\n### Built for real-world clinical workflows\nWanderer was designed for complex, sensitive use cases like **medical and therapy intake**\u2014where transparency, flexibility, and a smooth patient experience matter. You can create unlimited flows, share them by URL, and run them on your own terms\u2014whether in-practice, online, or both.","category":"Medical & Therapy","channel":"chat"},{"id":"a1j2pf8ppngpzr19kxhee6751a13frlz","title":"Conversational XOR","excerpt":"Sometimes, in a conversation, it's necessary to check if exactly one condition is met. It doesn't matter which one condition is met, as long as it's one.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Logic","channel":"chat"},{"id":"a6q0kwtnishaw169k96i0x31e3km2rlc","title":"Switch node","excerpt":"This flow contains a switch. You can use 'call edges' to turn the switch on or off. When this happens is determined by a simple question. You can turn the switch on or off from the chat.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"affcgj1qaaa56mfswge8gmgvtpunf3az","title":"JSON node","excerpt":"Use the JSON node to define any kind of data. Use handlebars in the data to make it dynamic.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"ay5fwmjk8jhbjp88ztb2n7rz772zot8n","title":"Question node","excerpt":"With questions, you can let users actively make decisions. Each question can have multiple suggestion nodes.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"bsv9cd2i5azr000as1ye7ykwwvwhlx5z","title":"Automatic UI Cleanup","excerpt":"Thanks to the Graph-driven engine, Wanderer always knows which elements in the UI make sense at any given moment. If forms, buttons, or other input fields are no longer needed, Wanderer automatically removes them.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Context Reactivity","channel":"chat"},{"id":"c972i1eu29uz5d0eefs4gw0h52nxfll4","title":"4 Understanding the flow order","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial - Basics","channel":"builder"},{"id":"d4vukweaz6xeidp0h9fqeteupw4ztf5l","title":"Restore and watch contexts","excerpt":"This example shows you how repeatedly changing the answers to a question causes the count nodes in the branches to count their activations. You can use this to address users differently if they have already visited a branch before.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Examples","channel":"builder"},{"id":"di5amx9hykcbvtlmctzu02mjpm3gy7lo","title":"Markdown","excerpt":"You can use Markdown to format text. This example shows you how.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"markdown-support","post":"**Markdown** is a lightweight markup language that lets you format text using simple, readable syntax. Here's a quick guide to get you started.\n\n---\n\n## Bold and Italic Text\n\nTo make text stand out, you can use **bold** or *italic* formatting:\n\n- **Bold**: Wrap text in double asterisks or double underscores\n  - `**bold text**` or `__bold text__` \u2192 **bold text**\n- *Italic*: Use single asterisks or single underscores\n  - `*italic text*` or `_italic text_` \u2192 *italic text*\n- ***Bold and italic***: Combine them with triple asterisks\n  - `***bold and italic***` \u2192 ***bold and italic***\n\n---\n\n## Lists\n\nMarkdown supports both **ordered** and **unordered lists**.\n\n### Unordered Lists\n\nUse asterisks, plus signs, or hyphens followed by a space:\n\n```\n* First item\n* Second item\n* Third item\n```\n\nResult:\n* First item\n* Second item\n* Third item\n\n### Ordered Lists\n\nSimply use numbers followed by periods:\n\n```\n1. First step\n2. Second step\n3. Third step\n```\n\nResult:\n1. First step\n2. Second step\n3. Third step\n\n---\n\n## Images\n\nTo add images, use this syntax: `![alt text](image-url)`\n\n**Example:**\n```\n![A beautiful sunset](https:\/\/example.com\/sunset.jpg)\n```\n\nThe **alt text** (inside square brackets) describes the image for accessibility and appears if the image fails to load. The **URL** (inside parentheses) points to the image location.\n\n---\n\n## Links\n\nCreating links works similarly to images, just without the exclamation mark:\n\n```\n[Click here](https:\/\/example.com)\n```\n\nResult: [Click here](https:\/\/example.com)\n\n---\n\n## Quick Reference\n\n| Element | Syntax | Example |\n|---------|--------|---------|\n| **Bold** | `**text**` | **bold** |\n| *Italic* | `*text*` | *italic* |\n| Unordered list | `* item` | \u2022 item |\n| Ordered list | `1. item` | 1. item |\n| Image | `![alt](https:\/\/example.com)` | (image) |\n| Link | `[text](https:\/\/example.com)` | [text](https:\/\/example.com) |\n\nThat covers the essentials! These elements will handle most of your formatting needs in any markdown-enabled chat builder.","category":"Examples","channel":"chat"},{"id":"eyrmry3w4v0obbxqdxv0ogdpkmvokp7x","title":"5 Understanding control edges","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial - Basics","channel":"builder"},{"id":"febkalxmyik1atins12rw7evur6eouta","title":"Product configurator with live stock context invalidation","excerpt":"Imagine this: What would happen if you were in the middle of configuring a product, and\u2014right at that moment\u2014the very last unit was sold? The stock drops to zero. The chatbot interrupts the configuration, tidies up the UI, explains what happened, and offers you alternatives.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Product-configuration-with-live-context-invalidation","post":"## What's happening here?\nIn this theoretical example flow, the user can add either a skateboard or shoe to their shopping cart. While the prompt for shoes or skateboards is displayed, the __stock is simultaneously checked__. The stock level is simulated here using two number nodes. One for shoes and one for skateboards.\n\nThis example demonstrates how flows __dynamically can react__ to parts of the context that no longer exist. What happens if you're still configuring your skateboard when the last one is __suddenly sold__? Test it by editing the number node in the builder! (You must load this flow in the Builder to change the values.)\n\nIt doesn't matter whether you're already configuring your skateboard or haven't yet decided between shoes or skateboards. The flow __recognizes__ when skateboards are sold out and, if necessary, returns you to the initial selection. This also happens if you were in the middle of configuring your product. If a product has a count of 0, the entire __branch disappears from the context__.\n\nAll of this works thanks to __RGS__ (Reactive Graph Sequencing) without any complicated programming.\nTry it out and play around!","category":"Context Reactivity","channel":"chat"},{"id":"fu1ntdhddy3y37ezqrkbaz89l6s77612","title":"Form with initial data","excerpt":"This example shows you how to fill the fields of your form with initial data.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Forms","channel":"chat"},{"id":"fy4ngidrwftqwxhcd19yrd714vnkj6w3","title":"Automatic Multi Intent Serialization","excerpt":"This example demonstrates how the flow derives multiple intents from a single input prompt and cleanly processes them sequentially. Each task knows its position in the queue. This allows linguistic transitions between the intents to be modeled cleanly.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Automatic-Multi-Intent-Serialization-Online-Shop-example","post":"**Your user sends: \"Opening hours? Address? I want skincare products.\" Most chatbot builder picks one. Wanderer processes all three.**\n\nTry it yourself. Just type to the chat on this page: *\"I would like to buy a skin cream, please, and I have questions about my last order. And what are the opening hours?\"*\n\nWatch what happens. The bot doesn't panic. It doesn't pick the first intent and ignore the rest. It doesn't ask you to \"please repeat your other questions one at a time.\" It identifies all three requests, tells you it found them, and works through each one \u2014 sequentially, transparently, and completely.\n\nThis is **multi-intent serialization**, and it's one of the most practical things Wanderer can do.\n\n## The problem everyone knows\n\nThink about how people actually talk to chatbots. They don't send one clean, perfectly scoped request per message. They dump everything at once. It's natural. It's efficient. It's how you'd talk to a human.\n\n*\"What are your opening hours, where are you located, and do you carry organic skincare?\"*\n\nThat's three distinct intents packed into a single input. And here's what happens in most chatbot builder on the market: the system detects one intent \u2014 usually the first or the strongest match \u2014 and runs with it. The other two? Gone. Silently dropped. The user has to repeat themselves, which means frustration, which means abandonment.\n\nThis isn't a niche edge case. It happens constantly. Anyone who's ever used a chatbot has experienced it. Anyone who's ever built one has struggled with it. The standard workaround is to tell users to ask one thing at a time. That's not a solution. That's an admission of failure.\n\n## How Wanderer handles it: the full pipeline\n\nWanderer solves this with a structural approach, not a hack. Here's the actual architecture behind multi-intent serialization:\n\n### 1. Prompt Input Node \u2192 GPT Node: decomposition\n\nThe user's message enters through a **Prompt Input Node**. From there, it's sent to a **GPT Node**, which analyzes the raw input and breaks it down into structured intents \u2014 returned as JSON. This is where the intelligence lives: the GPT Node doesn't just classify the message into a single category. It identifies *every* intent present and outputs them in a structured format that the rest of the graph can work with.\n\nIt looks like this:\n\n```\n\"intent\": {\n    \"order\": true,\n    \"store\": false,\n    \"product\": true,\n}\n```\n\n### 2. GPT Node \u2192 Queue Node: orchestration\n\nThe structured JSON flows into a **Queue Node**. This is the orchestrator. The Queue Node doesn't execute anything itself \u2014 it organizes. Using **Reactive Graph Sequencing (RGS)**, it discovers which Task Nodes in the graph are contextually relevant based on the intents it received. The edges connecting the Queue Node to the Task Nodes determine which tasks get activated: if the GPT Node identified \"opening hours,\" \"skincare products,\" and \"order inquiry\" as intents, only the Task Nodes connected via matching edges get unlocked.\n\nThe order in which tasks are processed is determined by **edge strength** \u2014 the weight of the connection between the Queue Node and each Task Node. This gives you full visual control over task priority, right there in the editor.\n\n### 3. Task Nodes: sequential execution\n\nOnce the queue knows what to do and in what order, it begins working. It sets the first Task Node to `running = true`. That task's entire subflow executes \u2014 messages are sent, user input is collected, APIs are called, whatever the flow requires.\n\nEach Task Node is aware of its position in the sequence. It knows whether it's the first, second, or third task, and it knows the total task count. This allows the bot to adapt its messaging dynamically: different framing for the first task versus transitions into subsequent ones, and different behavior depending on whether there's one task or five.\n\n### 4. Done Nodes: completion signals\n\nHere's the critical piece. Further down each task's branch sits a **Done Node**. When a Done Node executes, it signals to the Queue Node that its parent task is complete. The queue then moves on to the next task and sets that one to `running = true`.\n\nThe beauty of this design is that **the Done Node determines when a task is finished \u2014 not the Queue Node, and not a timer.** This means it doesn't matter whether a task completes instantly (like sending store hours) or requires extended interaction (like asking for an order number, waiting for the user to type it, validating it, and forwarding it to support). The Done Node fires when it fires. The queue waits. No polling, no timeouts, no race conditions.\n\nThis is what makes the system genuinely sequential rather than just parallel with a wrapper. Each task gets the time and space it needs to fully resolve before the next one begins.\n\n## Context-aware messaging: every task knows where it stands\n\nBecause each Task Node receives metadata from the Queue \u2014 its position, the total count, what's been completed \u2014 the bot can shape its communication at every stage.\n\nLook at how this plays out in practice:\n\n**Three tasks:**\n\n* Bot: \"I found 3 tasks. Let's begin.\"\n* Bot: \"Regarding the question about the care products...\"\n* Bot: \"Let's take a look at your order now. What is the order number?\"\n* User: \"423345\"\n* Bot: \"Thank you! The order number is: 423345. Support will take care of it.\"\n* Bot: \"All 3 tasks done. Is there anything else I can do for you?\"\n\n**Two tasks:**\n* Bot: \"I found 2 tasks. Let's begin.\"\n* Bot: \"All 2 tasks done. Is there anything else I can do for you?\"\n\n\u2192 Handles opening hours \u2192 Handles skincare\n\n**One task:**\n* Bot: \"I found one task.\"\n\n\u2192 Handles it directly. No \"let's begin,\" no completion summary. The framing scales down because it doesn't need ceremony for a single request.\n\nThis isn't cosmetic. It's structural intelligence. The transitions between tasks (*\"Regarding the question about...\"*, *\"Let's take a look at your order now\"*) happen because each task knows it's not the first one in the queue and adjusts accordingly. All of this is configurable visually in the editor \u2014 you decide what the bot says before, between, and after tasks.\n\n## Before and after: the real difference\n\n**Without multi-intent handling:**\n\n* User: \"I'd like skincare products, I have a question about my last order, and what are the opening hours?\"\n* Bot: \"Our opening hours are Monday to Friday, 8 a.m. to 4 p.m.\"\n\n*(Skincare? Order question? Never happened.)*\n\n**With Wanderer's multi-intent serialization:**\n\n* User: \"I would like to buy a skin cream, please, and I have questions about my last order. And what are the opening hours?\"\n* Bot: \"I found 3 tasks. Let's begin.\"\n* Bot: \"Our address and opening hours: Garmisch-Partenkirchen, 82467, Germany. Monday to Friday, 8 a.m. to 4 p.m.\"\n* Bot: \"Regarding the question about the care products: Sure, I'll show you skincare products. Just follow this link: *Skin care products*\"\n* Bot: \"Let's take a look at your order now. What is the order number?\"\n* User: \"423345\"\n* Bot: \"Thank you! The order number is: 423345. Support will take care of it.\"\n* Bot: \"All 3 tasks done. Is there anything else I can do for you?\"\n\nNotice the third task. It didn't just fire off a canned response. It asked a follow-up question, waited for user input, processed it, and *then* the Done Node fired to complete the task. That's real sequential task execution with full conversational depth per task \u2014 not string concatenation.\n\n## Why this is hard \u2014 and why RGS makes it natural\n\nIn a traditional chatbot builder, conversation flow is linear. One input maps to one intent maps to one response path. The architecture doesn't have a concept of \"multiple things to do.\" You'd have to build a custom middleware layer to split inputs, manage a queue, track completion state per task, handle tasks that require user interaction mid-sequence, and reassemble everything into a coherent conversation.\n\nWanderer's underlying technology \u2014 **Reactive Graph Sequencing (RGS)** \u2014 makes this behavior architecturally natural. RGS continuously evaluates the state of the entire graph. When the Queue Node populates with tasks, the graph doesn't choke. It re-sequences. When a Done Node fires, the graph reacts \u2014 the queue advances, the next Task Node activates, and the conversation continues. There's no polling loop, no state machine you have to hand-code. The graph *is* the state machine, and RGS keeps it moving.\n\n## Why this matters for real businesses\n\nMulti-intent isn't an academic curiosity. It directly impacts metrics that businesses care about:\n\n- **Resolution rate goes up.** If the bot handles all three requests instead of one, fewer users need to repeat themselves or escalate to a human.\n- **User satisfaction improves.** People notice when a bot actually listens. They also notice when it doesn't.\n- **Conversation length drops.** Three requests resolved in one exchange instead of three separate back-and-forth cycles.\n- **Drop-off rate decreases.** Users who get ignored tend to leave. Users who feel heard tend to stay.\n- **Support ticket volume goes down.** When the bot can handle a multi-part question about orders, products, and store info in a single pass, that's one interaction instead of three \u2014 or one frustrated escalation.\n\nFor support bots, e-commerce assistants, intake forms, and FAQ systems, multi-intent handling isn't a nice-to-have. It's the difference between a bot that feels like a tool and a bot that feels like a wall.\n\n## Try it yourself\n\nMulti-intent serialization isn't a plugin or a premium feature. It's just how Wanderer works.","category":"Context Reactivity","channel":"chat"},{"id":"g92xlurpz5iyqlvxfrw8d2fc3kw0rnyp","title":"Tutorial: Edit nodes and edges","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial: Builder","channel":"builder"},{"id":"g98805v2j4g3i6wyxm8legk9bbp4hsct","title":"Once node","excerpt":"The once node can only be taken once. Ideal for things that can only happen once.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"gyfp0a3r61ka3j98iwcju4k7ic7el6wy","title":"Rendering data with handlebars","excerpt":"Some node properties support handlebars. For example, the message text of the message node. Handlebars is a simple syntax for displaying existing state data at specific points within the text.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Using-Handlebars-inside-Node-properties","post":"## Using Handlebars inside Node properties\n\nSome node properties support Handlebars. For example, the message text of the message node. \n\nHandlebars lets you insert dynamic state data directly into a node\u2019s message content. In practice, you write templates like `{{text}}` and the builder replaces them with values from the node\u2019s **state** at runtime.\n\n### How data reaches your Message Node\n\nIn this example:\n\n- A **Text Node** produces a value (e.g. `\"Cat\"`)\n- A **Number Node** produces a value (e.g. `42`)\n- A **Message Node** receives both values via **push edges**\n\nThose edges push the incoming values into the **Message Node\u2019s state**, so the Message Node can render them immediately.\n\n### Basic example: print values in a Message Node\n\nPut this directly into your Message Node:\n\n```handlebars\nYour text: {{text}}\nYour number: {{number}}\n```\n\nAfter the edges have delivered the values, your Message Node state might look like this (some fields are created by the Message Node itself, others were pushed in):\n\n```json\n{\n  \"sent\": true,\n  \"arrived\": true,\n  \"text\": \"Cat\",\n  \"number\": 42\n}\n```\n\n### Inspecting state: what can you use in Handlebars?\n\nYou can inspect a node\u2019s current **state** anytime by selecting the node in the builder. This is the easiest way to decide which variables are available for your templates (for example `text`, `number`, `sent`, `arrived`, etc.).\n\n---\n\n## Common Handlebars patterns you can use\n\n### 1) Conditional text with `if \/ else`\n\n```handlebars\n{{#if text}}\nYou entered: {{text}}\n{{else}}\nPlease provide a text value.\n{{\/if}}\n```\n\n### 2) Comparisons (greater than, less than, equal)\n\n**Greater than**\n\n```handlebars\n{{#if (gt number 10)}}\nBig number: {{number}}\n{{else}}\nSmall number: {{number}}\n{{\/if}}\n```\n\n**Less than**\n\n```handlebars\n{{#if (lt number 10)}}\nSmall number: {{number}}\n{{else}}\nBig number: {{number}}\n{{\/if}}\n```\n\n**Equal**\n\n```handlebars\n{{#if (eq text \"Cat\")}}\nMeow. \ud83d\udc3e\n{{else}}\nYou typed: {{text}}\n{{\/if}}\n```\n\n### 3) Range checks (between)\n\nUseful for scoring, ages, levels, budgets, etc.:\n\n```handlebars\n{{#if (between number 1 5 true)}}\nRating accepted (1\u20135): {{number}}\n{{else}}\nRating must be between 1 and 5.\n{{\/if}}\n```\n\n*(In this example, `true` means \u201cinclusive\u201d, so 1 and 5 are allowed.)*\n","category":"Examples","channel":"chat"},{"id":"h5d4n736f5rqae2z3o637r4cpze3yam9","title":"Count node","excerpt":"This node helps you determine how often a user has been in a specific branch of the flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"hr3vdgb122ici3ahiqrwf8oobocnqabm","title":"Star structure","excerpt":"In a star structure, there is a central node from which the signals are sent outward. You can see that the connected nodes are processed in parallel. The respective layers are discovered simultaneously and sorted and executed according to the order of the widest edges.\n","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Patterns","channel":"builder"},{"id":"hvjtkrhp5vxbbb8n2tkpbyn5m6vrcwol","title":"Simple calculator","excerpt":"This example shows a simple calculator demo. Select the two numbers and see the result. Go back in the chat, change the numbers, and get a new result.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Examples","channel":"chat"},{"id":"i6ddgkutrvphik7852vmwdi0caxs3cnh","title":"Queue and Task node","excerpt":"Queue and Task nodes help you process complex tasks sequentially.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"i7lhup96dhpcql0o5pfitkabhuz9rb96","title":"Pattern: Sequenz","excerpt":"A sequence is simply a chain of nodes that are activated one after the other.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Patterns","channel":"builder"},{"id":"ifvozz5gllscayqv2hqvcexojt100h4g","title":"Number node","excerpt":"You can use the number node to define numbers or to calculate them.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"ij36qmmlm4f67frln0w87smr3y7x8huc","title":"Text node","excerpt":"The text node helps you define strings or build them dynamically.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"imkdjhcfygw14tc0xf7h8uqoohsacwvq","title":"A simple todo list","excerpt":"Tell me something and I'll add it to my to-do list.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Examples","channel":"chat"},{"id":"iuisdbesuo2p91e5lnyodrwme1tavau6","title":"Talk to your browser-native on-device AI","excerpt":"On some devices, you can already talk to a local AI. This flow demonstrates this using the Google Chrome browser-native on-device AI. The future is local. Your flows should be too!","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Talk-to-your-browser-native-on-device-AI","post":"Something important is starting to happen in the browser. AI is slowly becoming **a native capability of the platform** itself. Instead of routing every prompt through a server stack, a database, and a remote API, the browser can begin to offer language model features directly on the device.\n\nThis changes the shape of software.\n\nFor years, most AI products have **depended on external infrastructure. You needed a backend, API keys, cloud storage, orchestration logic, and often a fair amount of engineering** just to make a simple conversational workflow work. That model is still common, but it is no longer the only direction.\n\nWith native browser AI, a different path becomes possible. A language model can **run closer to the user, directly inside the browser** environment. That opens the door to simpler tools, more portable workflows, and entirely new product ideas built around local first interaction.\n\nThis is exactly why I started experimenting with a local AI node in Wanderer Flow.\n\nIn Wanderer, a flow is ultimately just JSON and the graph itself is the runtime. That makes it a natural place to explore what browser based AI could look like when it becomes a normal part of the web platform. Instead of treating AI as an external service that must always be connected through a remote stack, it can become **just another node in a reactive system**.\n\nThe result is exciting even in this early form. A prompt can be sent to a native local language model directly from within a visual flow. The response can then be used dynamically in the graph, without requiring a separate server architecture or database layer. It is a much lighter mental model. You build a flow, the browser executes it, and AI becomes part of the same local runtime.\n\nThis is still an **early preview of where things are going**. Support is emerging and not every browser environment can do this yet. But that is exactly what makes it interesting. It gives us a chance to design for the next generation of the web before it becomes standard everywhere.\n\nI do not see this only as a technical experiment. I see it as a product direction. When AI becomes native to the browser, **software can become simpler, more local, and more composable**. Visual builders, reactive graphs, and on device models fit together surprisingly well.\n\nWanderer is a small exploration of that future. It lets people play with a model that feels much closer to the platform itself. **No heavy stack**. No mandatory backend. Just flows, nodes, local execution, and a glimpse of how AI on the web may soon feel completely normal.","category":"Context Reactivity","channel":"chat"},{"id":"j6s7sgkqqm1eg4n2bnmtwhs7f119jivy","title":"Try Catch node","excerpt":"With Try \/ Catch, you can capture and redirect events deep within a conversation.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":"","category":"Nodes","channel":"chat"},{"id":"jflz4k8otvjtjun86fq4fbb25d5ox6yc","title":"1 Understanding Nodes","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"## How Wanderer Flows Work: Nodes, State, and Properties\n\nIn **Wanderer**, flows are built from **nodes**. Each node can both **hold knowledge** and **perform actions**. For example, a **Message Node** can send a message directly to the chat.\n\n### When does a node become active?\n\nA node only becomes **active** if it\u2019s **directly or indirectly connected to the Start Node**. If it isn\u2019t connected, it stays **inactive** which makes it easy to spot parts of a flow that can\u2019t be reached.\n\n### State: what a node knows about itself\n\nNodes also track knowledge about themselves, called **state**. If you click a node, you can inspect its state like seeing which messages have already been sent or whether the last question has been answered.\n\nState matters because it can be referenced in **edges** to decide **which path the flow should take next**. And because state can change repeatedly, paths can be **enabled or disabled dynamically** over time.\n\n### Properties: stable configuration\n\nIn addition to state, nodes have **properties**. You edit these in the editor, and they remain **stable throughout a session**. In short: anything you can actively configure on a node is a **property**.\n\nThat\u2019s the core idea: nodes act, state drives decisions, and properties define stable behavior.","category":"Tutorial - Basics","channel":"chat"},{"id":"jj5abj5fr1ajja2632rnnzar8wojbw28","title":"3 Understanding the context","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial - Basics","channel":"builder"},{"id":"jljccw420qmp66u4167f22vufh2qe8au","title":"Jump node","excerpt":"The jump node embeds a button in the chat that allows you to jump to the stored flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"k551fbsybyiv3bvfxqdbgj6k0ddf7rf0","title":"Conversational AND","excerpt":"This example shows a conversational AND. The process only continues if both questions are answered with \"yes\".","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Logic","channel":"builder"},{"id":"keevhyvfot4wbyzo60wd1vjamwdh2zag","title":"Logical OR gate","excerpt":"An OR gate is a logical structure. It describes how different conditions can occur for the same event to be triggered. OR gates are represented in this system using 'may edges'.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"School and education","channel":"builder"},{"id":"kwgvyktxuq4l7g7awjlehwwhq9nkrhfs","title":"Multiple Questions at once","excerpt":"You can display multiple questions and answer options at once if they are active simultaneously.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":"","category":"Examples","channel":"chat"},{"id":"lfvdiy3m25xrk68ogeras94402y46fyz","title":"Catch unexpected entries using Try and Throw nodes.","excerpt":"This example shows what happens when a user types a new intention into a prompt instead of an expected order number. This example illustrates this for online shops.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Catch-unexpected-inputs-with-Try-and-Throw-nodes","post":"**Users don't follow scripts. RGS makes that a feature, not a problem.**\n\n## The Scenario\n\nA customer opens your e-commerce support chat. The flow is straightforward:\n\n1. A **Prompt node** captures the user's initial message.\n2. A **GPT node** classifies the intent.\n3. A **Queue node** routes to the matching **Task node** \u2014 here, \"Order Details.\"\n4. Further down, a second **Prompt node** asks for the order number.\n\nNow the user types: *\"What's your address?\"*\n\nThis has nothing to do with order tracking. In most chatbot systems, this is where things break. In RGS, it's where things get elegant.\n\n5. A **Throw node** on the order-number prompt performs a clean exit and pushes its state upward to a **Try node** sitting before the GPT node at the top of the graph.\n6. The GPT node re-evaluates the intercepted input, classifies the new intent, and the Queue and Task nodes react accordingly.\n\nThe conversation pivots seamlessly. The user notices nothing.\n\n## Why This Works in RGS\n\nThe core mechanism: **Throw pushes state to an earlier node, and when any node's state changes, the entire graph re-sequences.**\n\nRGS doesn't \"continue from where it left off.\" It re-evaluates everything. The GPT node sees the new input. The Queue picks up the new intent. The downstream sequence recalculates. No special-case logic, no rewiring \u2014 the behavior emerges from the graph structure itself.\n\nThis is fundamentally different from traditional try\/catch in programming. The Throw node doesn't signal an error. It signals *\"this input belongs somewhere else\"* \u2014 and uses a control edge to send it there. The graph then asks: *\"Given everything we know right now, what should be happening?\"* \u2014 and re-answers that question from scratch.\n\nEach node keeps a single responsibility. No node needs to understand the full flow. Add a new intent? Add a new task node. The Try\/Throw pattern handles rerouting automatically.\n\n## How Traditional Builders Handle This\n\nMost flow builders are linear \u2014 once you're in a branch, you're stuck. The usual workarounds:\n\n- **Fallback intents** that don't know the current context and just say \"Sorry, try again.\"\n- **Global intents** that compete with local ones and create priority conflicts.\n- **Manual state management** in custom code \u2014 functional but fragile and hard to maintain.\n\nThe fundamental limitation: traditional builders execute forward. Once a node has run, its result is final. There's no way to retroactively change an earlier node's state and have everything downstream recalculate. RGS can do exactly that, which is why late intent switching isn't an edge case \u2014 it's a natural consequence of how the system works.\n\n---\n\n*Try the live example above, or start building your own adaptive conversations at [wanderer-flow.de](https:\/\/wanderer-flow.de).*","category":"Context Reactivity","channel":"chat"},{"id":"mbo9idv868f1a8gz6egm1y9d42jedbc4","title":"Logical NOT gate","excerpt":"A logical NOT gate inverts the input. If the input is enabled the output is disabled for example.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"School and education","channel":"chat"},{"id":"mh9qco1sbybn2slnvx5p8qe28jsaeifz","title":"Echo: Repeat a prompt","excerpt":"This flow takes your input from a prompt, then sends a message and resets itself to wait for input again.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Examples","channel":"chat"},{"id":"ndqa2j197478yg6o476bqmquc5xt8n4e","title":"Send a message if a form field is invalid","excerpt":"In this example, I'll show you how to send a message if a form field has been filled out incorrectly.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Forms","channel":"chat"},{"id":"nomt8q8gjr2dpinscyhs1teeua9tl21t","title":"Timer node","excerpt":"With a timer, you can start things at a later time.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"prrd0adz2lx7p3whr6tymo3aftuvw1jv","title":"Fetch node","excerpt":"This node allows you to send data from the flow to HTTP APIs and send data from APIs back to the flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"pzw1npp9whbeqo0yomv506fik2un46lj","title":"Engine Test","excerpt":"This flow was designed to test the core engine (RGS) and ensure all functions are working as expected.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Tests","channel":"chat"},{"id":"qbr3svmapgatkfax1m04pyt9g2tv58xz","title":"Self repeating structures","excerpt":"Sometimes you need a structure that repeats itself after it has been completed.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":"","category":"Patterns","channel":"chat"},{"id":"qvjrdd7g2gv1mykv8dzk5yejde088rbo","title":"Form and input nodes","excerpt":"Use this node to collect form data in the chat. Connect input nodes to this node to create new input fields.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"rct7wmr0d4k21quf4s0ozy0wt5oo2yh7","title":"ChatGPT node","excerpt":"GPT nodes can be used to generate dynamic prompts from the flow. These are answered by ChatGpt. You can then use the response in the flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"ry0kzcbn8vn0vy9nijhgs0be5fpzik5w","title":"Dev.to Challence: Alan Turing\u2019s Ghost Was Not Ready for a Probabilistic Afterlife","excerpt":"I built this little text adventure for the dev.to June Solstice Game Jam 2026. It's about Alan Turing, who is reborn as a browser-native AI, logical gates, and bananas.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Dev-to-Challence-Alan-Turing-s-Ghost-Was-Not-Ready-for-a-Probabilistic-Afterlife","post":"For the dev.to June Game Jam, I built a small text adventure with **wanderer-flow.de**. It is a privacy by design chat experience that runs directly in the browser and turns a local LLM into an NPC inside the game.\n\nThe premise is simple and a little absurd in the best way. Ancient writings warn that if the solstice ever stops working, a chosen one must restore it. Naturally, the player is that chosen one. From there, the adventure begins with a weapon selection that sets the tone immediately. You can pick something like a sword or a banana and step into a short interactive journey that mixes humor, dialogue, and logic puzzles.\n\nOne of the key moments is the encounter with **Alan Turing\u2019s ghost**, who appears as the guardian of the logical gates. He is deeply annoyed by the fact that his afterlife has turned out to be probabilistic instead of deterministic. The player has to talk to him, understand what kind of answer he is looking for, and find a way to convince him to reveal the truth and allow passage.\n\nAfter that, the game shifts into a sequence of classic logic gate challenges. The player must correctly activate **OR**, **AND**, and **XOR** gates to bring the machine back online and save the solstice. If they succeed, they are rewarded with a printable certificate that closes the adventure on a playful note.\n\nWhat makes this project special to me as its creator is the combination of lightweight storytelling, browser based interaction, and local AI. The LLM is not the protagonist. Instead, it becomes an in world NPC that helps shape the tone of the experience and gives the dialogue its strange and memorable energy.\n\nI built this mini adventure with **wanderer-flow.de**, the flow builder I created for interactive chat experiences. This project was a fun way to explore how conversational interfaces, game design, and local AI can come together in a compact format that feels playful and experimental without becoming overly complex.\n\nOne important note is that the game currently runs only in **Chrome** and requires suitable hardware, since it depends on a **local LLM** running on device.","category":"Games","channel":"chat"},{"id":"u4ne9rzq88dgp04non88ksb5q399n4sl","title":"Logical AND gate","excerpt":"This flow demonstrates a logical AND gate","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"School and education","channel":"chat"},{"id":"ucav23z0ge7w3yv10wqvgie4cdcetwrw","title":"Welcome!","excerpt":"This flow is part of the onboarding chatbot on the homepage of wanderer-flow.de.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Wanderer Flowy","channel":"chat"},{"id":"uuxx5kmss3ogtb0hq2q8emzgq5m6qayk","title":"Multi intent to select","excerpt":"Various buttons are generated from your text input. So you can decide for yourself what you want to start with.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Examples","channel":"chat"},{"id":"v9bhfnheq5wr5wnvtyrbjfm2jnoja555","title":"Clear node","excerpt":"This example shows you how to clear the chat. This will delete all messages in the history.","license":"CC BY 4.0","author":"Wanderer","tags":[],"slug":null,"post":null,"category":"Nodes","channel":"chat"},{"id":"vtr5kq5oly41o66m911eaaepd7n1n1eg","title":"A simple contact form","excerpt":"This is a simple contact form. It provides a form and sends an email.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Forms","channel":"chat"},{"id":"w8lwh5jgfrnmw0hlsl19k4wj6die93es","title":"Context Change Detection: Recognizing Uncertain Users","excerpt":"In Wanderer, users can jump back and change their minds at any time. Most answers can be changed afterwards using the icon in the chat history. This flow reacts automatically when a user frequently switches back and forth between two product branches and then offers help. This demo shows a selection of products suitable for online shops, for example. ","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"Context-Change-Detection-Recognizing-Uncertain-Users","post":"When users browse an online shop, hesitation often reveals itself through behavior, not words. A customer looking at shoes, then switching to skateboards, then back to shoes. That back and forth signals uncertainty. Wouldn't it be great if your chatbot could detect this pattern and respond intelligently?\n\nThat's exactly what the **Context Change Detection** flow demonstrates. It's a practical example of what the underlying technology Reactive Graph Sequencing (RGS) makes possible without writing a single line of custom code.\n\n### How It Works\n\nThe flow is built around one of Wanderer's core mechanics: **you can always jump back in a conversation and correct an answer.** This isn't a workaround or an edge case. In RGS, retroactive re-sequencing is the default. When a user changes a decision, the graph re-traverses and generates a new sequence based on the updated state.\n\nBut here's where it gets interesting. You can **detect** these context changes and react to them.\n\nEach product sub-branch in the flow contains a **count node**. A count node does exactly what the name suggests: it counts how often it has been activated within the current context. Outgoing edges can then evaluate this count and enable alternative routes through the graph.\n\n### Escalating Responses\n\nThe flow uses this counting mechanism to gradually escalate its responses:\n\n**First visit:** The chatbot responds normally.\n> *I'd be happy to help you with shoes.*\n\n**After the first switch back:** The message subtly changes to acknowledge the return.\n> *Of course I'll help you with shoes **again**.*\n\n**After multiple switches between branches:** The flow recognizes a pattern of uncertainty and offers personal assistance.\n> *You have switched between shoes and skateboards several times. Would you prefer to receive personal advice?*\n\nEach escalation level is simply an alternative edge route, activated by the count node reaching a specific threshold. No scripting, no external logic. Just the graph doing what it does best.\n\n","category":"Context Reactivity","channel":"chat"},{"id":"w8no8c2zeadngr0pmx0inbrd9k5wm8ox","title":"PHQ-9 Depression-Screening direkt im Browser (German\/Deutsch)","excerpt":"Der PHQ-9 (Patient Health Questionnaire-9) ist ein wissenschaftlich validiertes Screening-Instrument zur Erfassung depressiver Symptome. Auf dieser Website k\u00f6nnen Sie den Test vollst\u00e4ndig anonym als interaktiven Chat durchf\u00fchren \u2013 alle Daten bleiben ausschlie\u00dflich in Ihrem Browser und werden beim Schlie\u00dfen automatisch gel\u00f6scht. Der Test umfasst neun Fragen zu typischen Depressionssymptomen der letzten zwei Wochen und liefert eine sofortige Auswertung mit Schweregradeinsch\u00e4tzung. Mit einer Sensitivit\u00e4t und Spezifit\u00e4t von jeweils 88% ist der PHQ-9 ein zuverl\u00e4ssiges Werkzeug f\u00fcr die Ersteinsch\u00e4tzung, ersetzt jedoch keine professionelle Diagnostik durch Fachpersonal.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"PHQ-9-Depression-Screening-direkt-im-Browser","post":"## PHQ-9 Depression-Screening direkt im Browser\n\nAuf dieser Website k\u00f6nnen Sie den **PHQ-9 Test vollst\u00e4ndig anonym und sicher in Ihrem Browser durchf\u00fchren**. Der Test wird als interaktiver Chat pr\u00e4sentiert, der Sie Schritt f\u00fcr Schritt durch die neun Fragen f\u00fchrt und Ihnen am Ende eine automatische Auswertung liefert.\n\nDieser Test wurde mit dem Wanderer Flow Builder erstellt. Sie k\u00f6nnen zu jeder Zeit nachvollziehen wie der Test aufgebaut wurde, wenn Sie auf den Button \"Inspect this Flow\" klicken.\n\n### Ihre Privatsph\u00e4re ist gesch\u00fctzt\n\n**Alle Ihre Antworten bleiben ausschlie\u00dflich auf Ihrem Ger\u00e4t.** Es handelt sich um eine reine Frontend-Anwendung \u2013 das bedeutet:\n\n- **Keine Daten\u00fcbertragung**: Zu keinem Zeitpunkt verlassen Ihre Antworten Ihren Browser\n- **Keine Speicherung auf Servern**: Es werden keinerlei Daten an externe Server gesendet oder dort gespeichert\n- **Automatische L\u00f6schung**: Alle Informationen werden beim Schlie\u00dfen des Browser-Tabs vollst\u00e4ndig gel\u00f6scht\n- **Vollst\u00e4ndige Anonymit\u00e4t**: Es werden keine pers\u00f6nlichen Daten erfasst oder gespeichert\n\nSie k\u00f6nnen den Test also in einer **vollkommen sicheren und vertraulichen Umgebung** durchf\u00fchren.\n\n---\n\n## Was ist der PHQ-9?\n\nDer **Patient Health Questionnaire-9 (PHQ-9)** ist ein **standardisiertes Screening-Instrument zur Erfassung depressiver Symptome**. Er wurde aus dem umfangreicheren PRIME-MD entwickelt und basiert auf den **diagnostischen Kriterien f\u00fcr Major Depression aus dem DSM-IV** (Diagnostic and Statistical Manual of Mental Disorders).\n\n---\n\n## Aufbau und Struktur\n\nDer PHQ-9 besteht aus **neun Items**, die jeweils eines der neun DSM-Kriterien f\u00fcr Major Depression abbilden:\n\n1. **Wenig Interesse oder Freude** an T\u00e4tigkeiten\n2. **Niedergeschlagenheit, Schwermut oder Hoffnungslosigkeit**\n3. **Schlafst\u00f6rungen** (Ein- oder Durchschlafprobleme, zu viel Schlaf)\n4. **M\u00fcdigkeit oder Energiemangel**\n5. **Ver\u00e4nderter Appetit** (verminderter oder gesteigerter Appetit)\n6. **Negatives Selbstbild** (Gef\u00fchle von Wertlosigkeit oder Schuld)\n7. **Konzentrationsschwierigkeiten**\n8. **Psychomotorische Ver\u00e4nderungen** (verlangsamte oder unruhige Bewegungen)\n9. **Suizidgedanken** oder Gedanken, sich selbst zu verletzen\n\nJedes Item wird auf einer **4-Punkte-Likert-Skala** bewertet:\n- **0** = \u00fcberhaupt nicht\n- **1** = an einzelnen Tagen\n- **2** = an mehr als der H\u00e4lfte der Tage\n- **3** = beinahe jeden Tag\n\nDer Zeitraum bezieht sich auf die **letzten zwei Wochen**.\n\n---\n\n## Auswertung und Interpretation\n\n### Scoring\n\nDer **Gesamtscore** wird durch Addition aller neun Items berechnet und kann zwischen **0 und 27 Punkten** liegen.\n\n| **Score-Bereich** | **Schweregrad der Depression** | **Empfehlung** |\n|-------------------|--------------------------------|----------------|\n| **0-4** | Keine oder minimal | Keine Behandlung notwendig |\n| **5-9** | Leicht | Watchful waiting, ggf. Verlaufskontrolle |\n| **10-14** | Mittelgradig | Behandlung erw\u00e4gen (Psychotherapie oder Pharmakotherapie) |\n| **15-19** | Mittelschwer | Aktive Behandlung mit Psychotherapie und\/oder Medikation |\n| **20-27** | Schwer | Sofortige Behandlung, ggf. spezialisierte Versorgung |\n\n### Diagnostische Hinweise\n\nEin **Score von \u226510** wird h\u00e4ufig als **Cut-off-Wert** f\u00fcr klinisch relevante Depression verwendet und hat eine **Sensitivit\u00e4t von 88%** und **Spezifit\u00e4t von 88%** f\u00fcr Major Depression.\n\n---\n\n## Einsatzbereiche und Vorteile\n\n### Wo wird der PHQ-9 eingesetzt?\n\n- **Hausarztpraxen** und Prim\u00e4rversorgung\n- **Psychiatrische und psychotherapeutische Einrichtungen**\n- **Klinische Forschung**\n- **Verlaufskontrolle** w\u00e4hrend der Behandlung\n- **Screening-Programme** in der Bev\u00f6lkerung\n\n### Warum ist der PHQ-9 so verbreitet?\n\n- **Kurz und effizient**: Ausf\u00fcllen dauert nur 2-3 Minuten\n- **Kostenlos verf\u00fcgbar**: Keine Lizenzgeb\u00fchren erforderlich\n- **Wissenschaftlich validiert**: Umfangreiche Studienlage zur Reliabilit\u00e4t und Validit\u00e4t\n- **Multifunktional**: Sowohl f\u00fcr Screening als auch f\u00fcr Verlaufsbeurteilung geeignet\n- **International etabliert**: In viele Sprachen \u00fcbersetzt und kulturell validiert\n\n---\n\n## Besonderheiten und Limitationen\n\n### Item 9 - Suizidalit\u00e4t\n\nDas **neunte Item** erfasst Suizidgedanken und erfordert **besondere Aufmerksamkeit**. Jede Antwort au\u00dfer \"0\" sollte klinisch nachverfolgt werden, unabh\u00e4ngig vom Gesamtscore.\n\n### Was der PHQ-9 nicht leistet\n\n- **Keine Differenzialdiagnose**: Unterscheidet nicht zwischen verschiedenen depressiven St\u00f6rungen\n- **Kein Ersatz f\u00fcr klinisches Interview**: Sollte als Erg\u00e4nzung, nicht als alleiniges Diagnoseinstrument verwendet werden\n- **Kulturelle Faktoren**: Symptomausdruck kann kulturell variieren\n- **Komorbidit\u00e4t**: K\u00f6rperliche Erkrankungen k\u00f6nnen Symptome verf\u00e4lschen\n\n---\n\n## Wichtiger Hinweis\n\nDieser Test dient ausschlie\u00dflich dem **Screening und der Selbsteinsch\u00e4tzung**. Er ersetzt **keine professionelle Diagnostik oder Behandlung** durch qualifizierte Fachkr\u00e4fte. Bei Verdacht auf eine Depression oder bei akuten Belastungen wenden Sie sich bitte an Ihren Hausarzt, einen Psychotherapeuten oder eine psychiatrische Fachkraft.\n\n**Bei akuten Suizidgedanken** wenden Sie sich bitte sofort an:\n- **Telefonseelsorge**: 0800 111 0 111 oder 0800 111 0 222 (kostenlos, 24\/7)\n- **Notarzt**: 112\n- Die n\u00e4chste psychiatrische Notaufnahme","category":"Medical & Therapy","channel":"chat"},{"id":"webml51rrvkzlu4oira5h1xh83e2nu5c","title":"Tutorial: Interface Basics","excerpt":"","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial: Builder","channel":"builder"},{"id":"xnggg7ykv5sppva649cd73r6zh2zfedg","title":"Tutorial: Start","excerpt":"This flow is part of the tutorial, which can be loaded within the builder.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Tutorial: Start","channel":"builder"},{"id":"yafjyoakipdkdaxz9wedil1dtwwlo591","title":"Cat quiz","excerpt":"A little cat quiz. Can you find the right answer before time runs out? If you like, you can use the 50% joker.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Games","channel":"chat"},{"id":"yoszf2oaib40th368srvrpcb7o0zm1ep","title":"Logical NAND gate","excerpt":"This flow demonstrates a logical NAND gate","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"School and education","channel":"builder"},{"id":"ysilstmyjaawq32c15fs3r6vx9nprpco","title":"Button node","excerpt":"A button emits an ultra short signal. Ideal for doing things once for a short moment. Like counting or adding data once.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":"","post":"","category":"Nodes","channel":"chat"},{"id":"ytczvu57dkjbfyla5xhuz7j7d4pyw7x7","title":"Fetching random cat facts from an API","excerpt":"This example shows how you can quickly turn a public API into a chatbot.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Examples","channel":"chat"},{"id":"z1la21glzroj69anfoab0kyitw22ihcq","title":"State Merging","excerpt":"This example demonstrates the advantages of state merging over crossing edges.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":"","category":"Patterns","channel":"chat"},{"id":"zrrplij5u8bio6bgq0zw6rq6y95aum57","title":"Prompt node","excerpt":"Prompt nodes display a prompt in the chat when they are in context. Use the entered data in the flow.","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Nodes","channel":"builder"},{"id":"zuey7m9cz7p6qb8hfmy9krn50fcbchu9","title":"Prompt for a password","excerpt":"This chat will wait until you type the correct password. Can you find it?","license":"CC BY 4.0","author":"Wanderer","tags":null,"slug":null,"post":null,"category":"Examples","channel":"chat"}]