{"nodes":{"4utogag8sr9xrxey14yx5mjligci37ll":{"id":"4utogag8sr9xrxey14yx5mjligci37ll","type":"start","x":0,"y":0,"properties":{"title":"Talking to Your Own Flow: An Ice Cream Configurator That Explains Itself","excerpt":"A tiny ice cream configurator you can actually talk to. Because a Wanderer flow is a visual graph and executable data at the same time, a reflector node can export its full structure, edges and current state included, straight into a GPT node. The result is a configurator that stays strictly deterministic while an LLM explains its own logic to you. Ask why you cannot have a spoon, and it will tell you: no cup, no spoon.","slug":"Talking-to-Your-Own-Flow-An-Ice-Cream-Configurator-That-Explains-Itself","post":"Every Wanderer flow is two things at once. It is a visual graph you can look at, and it is data you can read. Because Reactive Graph Sequencing keeps the visual representation and the executable code as the same object, a flow can hand a description of itself to a language model. The result is a configurator you can actually talk to while you use it.\n\nThis example is a tiny ice cream configurator, embedded as a chat on a website. You pick a cup or a cone, choose a flavor, decide whether to eat here or take it away, and if you went with a cup you get asked about a spoon. Nothing surprising so far. The interesting part is that a GPT node sits alongside the flow and can answer questions about the flow itself.\n\n### Copy and Paste These Into the Chat\n\n- What can I do here?\n- What are my options?\n- Walk me through all the steps before I start.\n- How many decisions will I have to make?\n- Why can I not have a spoon?\n- What do I need to choose to unlock the spoon question?\n- Which of my choices depend on each other?\n- What happens if I pick a cone instead of a cup?\n- How did I decide so far?\n- What have I chosen up to now?\n- What is the next question going to be?\n- Can I still change my flavor?\n- Show me all the paths through this flow.\n- Which questions only appear in the cup branch?\n- Is there any choice I cannot undo?\n- What is the shortest way to finish?\n\n### How It Works\n\nA reflector node walks the graph and collects every message node and every question node together with the edges that connect them. It exports all of that, plus the current state of the run, as plain JSON text. That JSON gets pushed into a GPT node. The model now sees the full structure of the configurator and where you currently are inside it.\n\nBecause the JSON carries the edges, the model does not just see the questions. It sees the logic. It knows that the spoon question only exists downstream of the cup choice. So when you ask why you cannot have a spoon, GPT can tell you the real reason. No cup means no spoon. The spoon is a consequence of an earlier decision, and the graph makes that consequence visible in the data it exports.\n\n### What the Conversation Looks Like\n\nThe user in the example starts by asking what they can even do here. The assistant reads the exported flow and explains the available path. You will be asked cup or cone, then a flavor like strawberry, chocolate, or vanilla, then whether you eat here or take it away, and a spoon question appears only for a cup.\n\nLater the user picks a cone with chocolate to take away, then asks how they decided. The assistant reads the current state and reports it back accurately. When the user asks for a spoon, the assistant explains that the spoon question lives behind the cup branch, so a cone never reaches it, and it even suggests going back and choosing a cup instead. The user does exactly that, gets the spoon question, and confirms. The assistant then confirms why the question appeared this time. Cup selected, spoon offered.\n\n### Why This Matters\n\nThe system stays strictly deterministic. The graph decides what happens next, the edges enforce the rules, and the flow never guesses. The language model does not drive the flow and cannot break its logic. It reads the same structure the runtime uses and reflects on it with you. You get a configurator that behaves predictably and an assistant that can explain that behavior in your own words, because both are looking at the exact same graph.\n\nThat is the whole idea behind Context Reactivity. The context is not an approximation of the flow written by hand. It is the flow, exported as it really is, current state included, ready to be reasoned about.","author":"Wanderer","license":"CC BY 4.0","channel":"chat","category":"Context Reactivity","private":false}},"gz9pvvpbkqywe71jq8wxhamsw4u6ehet":{"id":"gz9pvvpbkqywe71jq8wxhamsw4u6ehet","type":"message","x":189.856359150927,"y":215.32188058341774,"properties":{"text":"Hey! Welcome to the ice cream configurator.","repeatOnReentry":true,"repeatOnChance":true}},"vycu2m8ngoiu12e5moftgmblwi0i6xka":{"id":"vycu2m8ngoiu12e5moftgmblwi0i6xka","type":"question","x":4.209976819372031,"y":407.19873759820575,"properties":{"text":"Would you prefer your ice cream in a cone or a cup?","multiple":false,"reviewable":true,"repeatOnReentry":false}},"2dnagf1ftzkmlgbhm144y56f5vta49rc":{"id":"2dnagf1ftzkmlgbhm144y56f5vta49rc","type":"suggestion","x":-74.72794413305306,"y":589.3289815215106,"properties":{"label":"Cup","value":""}},"zg0sghqa20ruch3ma4k50g3fuyylm3yq":{"id":"zg0sghqa20ruch3ma4k50g3fuyylm3yq","type":"suggestion","x":175.1589074025984,"y":589.2635721227074,"properties":{"label":"Cone","value":""}},"ba78wfrecih90ydpqqseqar5ao66a9j4":{"id":"ba78wfrecih90ydpqqseqar5ao66a9j4","type":"question","x":288.44284561799816,"y":1132.801637343625,"properties":{"text":"Which flavor would you like?","multiple":false,"reviewable":true,"repeatOnReentry":false}},"a9uqpvli6bh2mu2ynx57bleq9q5bqb58":{"id":"a9uqpvli6bh2mu2ynx57bleq9q5bqb58","type":"suggestion","x":649.9648198640452,"y":981.1030138035791,"properties":{"label":"Strawberry","value":""}},"qv2geyrx501cn7h584bdkvxbljsl0h62":{"id":"qv2geyrx501cn7h584bdkvxbljsl0h62","type":"suggestion","x":561.8631110292579,"y":1340.1546899209397,"properties":{"label":"Chocolate","value":""}},"kh05lg8im8qpurdaoyfb9grws5nv0ipf":{"id":"kh05lg8im8qpurdaoyfb9grws5nv0ipf","type":"suggestion","x":653.9720811977238,"y":1171.4352704127446,"properties":{"label":"Vanilla","value":""}},"f556kjt7cv145nsrka98qcc8p60okasf":{"id":"f556kjt7cv145nsrka98qcc8p60okasf","type":"question","x":178.59119244587833,"y":1469.7902773955254,"properties":{"text":"Would you like to take it with you or eat it here?","multiple":false,"reviewable":true,"repeatOnReentry":false}},"4rrgyzzc7z3r94uk6zknnzw6l35nvqdy":{"id":"4rrgyzzc7z3r94uk6zknnzw6l35nvqdy","type":"suggestion","x":268.5273746862754,"y":1651.9741203543508,"properties":{"label":"Eat here","value":""}},"7vr6sz8jwwluu0pdsb1d1z62y1fhcz15":{"id":"7vr6sz8jwwluu0pdsb1d1z62y1fhcz15","type":"suggestion","x":12.53322155116689,"y":1660.1251088389681,"properties":{"label":"Takeaway","value":""}},"ll85d9aj20tug6wu9y0gv3kqfw8yf3v6":{"id":"ll85d9aj20tug6wu9y0gv3kqfw8yf3v6","type":"message","x":701.4234831148086,"y":1711.8053325714695,"properties":{"text":"Perfect. Enjoy your ice cream. \ud83c\udf68","repeatOnReentry":true,"repeatOnChance":true}},"188u59jnjrpoptw5l4147goyog1myzqw":{"id":"188u59jnjrpoptw5l4147goyog1myzqw","type":"prompt","x":-1102.4150732421874,"y":337.3650244140625,"properties":{"label":"How can I help you?","placeholder":"Type your message","hideAfterSent":false}},"2k5474ikwvedmojd43vfap18krcvz98o":{"id":"2k5474ikwvedmojd43vfap18krcvz98o","type":"conclusion","x":-933.9339751600675,"y":136.74048126862468,"properties":{"text":""}},"oviuokndduyrhw60ahasgny9ut5jqhz9":{"id":"oviuokndduyrhw60ahasgny9ut5jqhz9","type":"reflector","x":-754.4913939146259,"y":349.9579772352954,"properties":[]},"bfq5lf7uo6os4hbikhpgrd5s7d7pmtp4":{"id":"bfq5lf7uo6os4hbikhpgrd5s7d7pmtp4","type":"chatgpt","x":-957.1055995858655,"y":727.4832715104374,"properties":{"systemPrompt":"You are a node in a deterministic chat flow. You receive an overview of the conversation graph as JSON. Answer the user's questions about the potential conversation. You cannot answer or re-display questions yourself. You cannot add new options. However, you can tell the user that they can scroll up in the chat and adjust their answers.","userPrompt":"conversation graph: {{json reflection}}\nuser prompt: {{prompt}}","model":"gpt-4.1-mini","manageHistory":false,"onReentry":"reset","onChange":"nothing"}},"e9nnh5brnz4hxvm1ivonfoura0y7qkbt":{"id":"e9nnh5brnz4hxvm1ivonfoura0y7qkbt","type":"message","x":-944.1149286554285,"y":1023.7775691608689,"properties":{"text":"\ud83e\udd16 Assistant: {{answer}}","repeatOnReentry":true,"repeatOnChance":true}},"c12p8x5uqsqjm8rji7ovch8z1rtq2zm6":{"id":"c12p8x5uqsqjm8rji7ovch8z1rtq2zm6","type":"conclusion","x":-1338.1099755859375,"y":1038.1139267578124,"properties":{"text":""}},"u0122u3f9mz46ycjchbeka4p6aozi8g3":{"id":"u0122u3f9mz46ycjchbeka4p6aozi8g3","type":"question","x":-123.54854320346453,"y":796.9143464688765,"properties":{"text":"Would you like a spoon?","multiple":false,"reviewable":true,"repeatOnReentry":false}},"fvraq8amb8f7mtv7f1i4m8n7vyb0i5xa":{"id":"fvraq8amb8f7mtv7f1i4m8n7vyb0i5xa","type":"suggestion","x":-117.59895370129921,"y":1020.3822870876317,"properties":{"label":"Yes","value":""}},"v8gud314hbni51n5b3vpx314ve38z765":{"id":"v8gud314hbni51n5b3vpx314ve38z765","type":"suggestion","x":-274.25396918719866,"y":971.4048364815687,"properties":{"label":"No","value":""}}},"edges":{"e9yqo2sa6xw9256w9xzuqbtu2syq6rwh":{"id":"e9yqo2sa6xw9256w9xzuqbtu2syq6rwh","type":"may","from":"4utogag8sr9xrxey14yx5mjligci37ll","to":"gz9pvvpbkqywe71jq8wxhamsw4u6ehet","properties":{"priority":6}},"qzls16643o4s7o0vmlmzmaztov65fmbm":{"id":"qzls16643o4s7o0vmlmzmaztov65fmbm","type":"may","from":"gz9pvvpbkqywe71jq8wxhamsw4u6ehet","to":"vycu2m8ngoiu12e5moftgmblwi0i6xka","properties":{"priority":4,"condition":"arrived"}},"fbgmj46lv7bdb6g3gtqufzerms5a9xp9":{"id":"fbgmj46lv7bdb6g3gtqufzerms5a9xp9","type":"may","from":"vycu2m8ngoiu12e5moftgmblwi0i6xka","to":"2dnagf1ftzkmlgbhm144y56f5vta49rc","properties":{"priority":4,"condition":""}},"1vnzixs76cbi68czx6lzrwel1iokt66x":{"id":"1vnzixs76cbi68czx6lzrwel1iokt66x","type":"may","from":"vycu2m8ngoiu12e5moftgmblwi0i6xka","to":"zg0sghqa20ruch3ma4k50g3fuyylm3yq","properties":{"priority":4,"condition":""}},"bbh8xhqpxl4c6ycgghp4aq1e49pg1u5o":{"id":"bbh8xhqpxl4c6ycgghp4aq1e49pg1u5o","type":"may","from":"ba78wfrecih90ydpqqseqar5ao66a9j4","to":"a9uqpvli6bh2mu2ynx57bleq9q5bqb58","properties":{"priority":4,"condition":""}},"ed6muqmernpa5tosmqh2xgzdxsu1d3kl":{"id":"ed6muqmernpa5tosmqh2xgzdxsu1d3kl","type":"may","from":"ba78wfrecih90ydpqqseqar5ao66a9j4","to":"qv2geyrx501cn7h584bdkvxbljsl0h62","properties":{"priority":4,"condition":""}},"uv66ldu8igw4vro9u1mcqohof67678gu":{"id":"uv66ldu8igw4vro9u1mcqohof67678gu","type":"may","from":"ba78wfrecih90ydpqqseqar5ao66a9j4","to":"kh05lg8im8qpurdaoyfb9grws5nv0ipf","properties":{"priority":4,"condition":""}},"o6mnix82imzyo6hhrvud9nl0a8sxlwll":{"id":"o6mnix82imzyo6hhrvud9nl0a8sxlwll","type":"may","from":"ba78wfrecih90ydpqqseqar5ao66a9j4","to":"f556kjt7cv145nsrka98qcc8p60okasf","properties":{"priority":4,"condition":"answered"}},"kvpadzom56r1cmt6638qsiv3li2466jw":{"id":"kvpadzom56r1cmt6638qsiv3li2466jw","type":"may","from":"f556kjt7cv145nsrka98qcc8p60okasf","to":"4rrgyzzc7z3r94uk6zknnzw6l35nvqdy","properties":{"priority":4,"condition":""}},"0yl0gtyxmwk8cx2jbt1svqfao7o0ccmy":{"id":"0yl0gtyxmwk8cx2jbt1svqfao7o0ccmy","type":"may","from":"f556kjt7cv145nsrka98qcc8p60okasf","to":"7vr6sz8jwwluu0pdsb1d1z62y1fhcz15","properties":{"priority":4,"condition":""}},"s0cb90mag9e8yhu0d9iun4scj77jpovl":{"id":"s0cb90mag9e8yhu0d9iun4scj77jpovl","type":"may","from":"f556kjt7cv145nsrka98qcc8p60okasf","to":"ll85d9aj20tug6wu9y0gv3kqfw8yf3v6","properties":{"priority":4,"condition":"answered"}},"prnwwqrmxr0snvn2kkl610q9l6mi6k44":{"id":"prnwwqrmxr0snvn2kkl610q9l6mi6k44","type":"may","from":"4utogag8sr9xrxey14yx5mjligci37ll","to":"2k5474ikwvedmojd43vfap18krcvz98o","properties":{"priority":4}},"uc9kxgez03srtjovtux2jos2h4acab7e":{"id":"uc9kxgez03srtjovtux2jos2h4acab7e","type":"may","from":"2k5474ikwvedmojd43vfap18krcvz98o","to":"188u59jnjrpoptw5l4147goyog1myzqw","properties":{"priority":4}},"sit50uuzgyte3s7vj18gfi3otwz5ah0x":{"id":"sit50uuzgyte3s7vj18gfi3otwz5ah0x","type":"may","from":"2k5474ikwvedmojd43vfap18krcvz98o","to":"oviuokndduyrhw60ahasgny9ut5jqhz9","properties":{"priority":4}},"opi4wgiff0j6uv06nzvvosn4k11m4vic":{"id":"opi4wgiff0j6uv06nzvvosn4k11m4vic","type":"must","from":"188u59jnjrpoptw5l4147goyog1myzqw","to":"bfq5lf7uo6os4hbikhpgrd5s7d7pmtp4","properties":{"priority":4,"condition":"sent","push":"value","as":"prompt"}},"dk6k8e5pbjo35kabfjll6liqh0nwfy49":{"id":"dk6k8e5pbjo35kabfjll6liqh0nwfy49","type":"must","from":"oviuokndduyrhw60ahasgny9ut5jqhz9","to":"bfq5lf7uo6os4hbikhpgrd5s7d7pmtp4","properties":{"priority":4,"push":"result","as":"reflection"}},"skid76m9vof2bl1wk2zzjuuqj194lh0d":{"id":"skid76m9vof2bl1wk2zzjuuqj194lh0d","type":"may","from":"bfq5lf7uo6os4hbikhpgrd5s7d7pmtp4","to":"e9nnh5brnz4hxvm1ivonfoura0y7qkbt","properties":{"priority":4,"condition":"done","push":"answer"}},"dxw0cmk912xm51jfpbqp6av5lkhmwplg":{"id":"dxw0cmk912xm51jfpbqp6av5lkhmwplg","type":"may","from":"e9nnh5brnz4hxvm1ivonfoura0y7qkbt","to":"c12p8x5uqsqjm8rji7ovch8z1rtq2zm6","properties":{"priority":4,"condition":"arrived"}},"p9zzm6uxowm9ih8ci9hs0cntw5blkqji":{"id":"p9zzm6uxowm9ih8ci9hs0cntw5blkqji","type":"call","from":"c12p8x5uqsqjm8rji7ovch8z1rtq2zm6","to":"188u59jnjrpoptw5l4147goyog1myzqw","properties":{"priority":4,"method":"reset"}},"70pscwonktrprajek5wvpiqd7g0bu2ov":{"id":"70pscwonktrprajek5wvpiqd7g0bu2ov","type":"may","from":"2dnagf1ftzkmlgbhm144y56f5vta49rc","to":"u0122u3f9mz46ycjchbeka4p6aozi8g3","properties":{"priority":4,"condition":"selected"}},"jbmlklnrq0h4le3re8no8okd6m2boibm":{"id":"jbmlklnrq0h4le3re8no8okd6m2boibm","type":"may","from":"u0122u3f9mz46ycjchbeka4p6aozi8g3","to":"fvraq8amb8f7mtv7f1i4m8n7vyb0i5xa","properties":{"priority":4,"condition":""}},"24x4ro98i3p0rh8tlxi4wut3ngpb9gm5":{"id":"24x4ro98i3p0rh8tlxi4wut3ngpb9gm5","type":"may","from":"u0122u3f9mz46ycjchbeka4p6aozi8g3","to":"v8gud314hbni51n5b3vpx314ve38z765","properties":{"priority":4,"condition":""}},"h1tpvce1z3fxpur6wbafl6lctz7bcevb":{"id":"h1tpvce1z3fxpur6wbafl6lctz7bcevb","type":"may","from":"u0122u3f9mz46ycjchbeka4p6aozi8g3","to":"ba78wfrecih90ydpqqseqar5ao66a9j4","properties":{"priority":4,"condition":"answered"}},"m8vd4atn8vpko6x6jg1vhx53q0xlygud":{"id":"m8vd4atn8vpko6x6jg1vhx53q0xlygud","type":"may","from":"zg0sghqa20ruch3ma4k50g3fuyylm3yq","to":"ba78wfrecih90ydpqqseqar5ao66a9j4","properties":{"priority":4,"condition":"selected"}}}}