Every leaf in the conversation section of a segregated JSON data store will have a GOTO
keyword.
Either it will go for next section
or exitapp
# present node
update_Progress_at_Each_Step(node)
totalQuestions(node) = max(DFS_Find_Distance(node,`GOTO`))
node.step_no += 1
current_Progress = node.step_no
progress_val = current_Progress/totalQuestions(node)
show_progress(progress_val) # show progress on the front end
----------------------------
root.step_no = 0
conversation_flow(root)
update_Progress_at_Each_Step(root)
conversation_flow(next_node) # next_node decided based upon user choice, technical details ignored here