I'm working on an intranet bot that will be used by staff across the organisation with the intent of cutting down calls/emails to internal support teams. One of the teams (as an example) is the HR department. And one of the most frequent topics is "Leave & Absence".
Inside that topic, there are lots of subtopics that they get questions about, but a short list might be: Annual leave; Time Off In Lieu; Maternity leave; Paternity/Partner leave; Career breaks/Sabbaticals; Sickness; Absent Without Leave (AWOL).
The questions may be very general "I have a question about leave" or very specific "why haven't I been paid for the first three days of sickness", and I'm working through how best to structure the topics (and triggers) to quickly route the person to the answer they're looking for.
One structure I've considered is to build lots of focused topics - e.g. one topic for each subtopic above, with an overarching generic "leave/absence" topic that asks questions to narrow the focus until it can hand-off to the appropriate focus topic. The focus topics would be triggered by non-overlapping focused keywords/phrases, while the generic topic would contain the broader "leave" or "absence" keywords. Call this approach Specialist with Generalist backup if needed.
An alternate structure I've considered is to build one or two comprehensive topics that have NO trigger phrases and that ask clarifying questions with the answers stored in "can be set by another topic" variables, along with a number of focused topics that hand-off to the comprehensive topics by setting the appropriate variables to route the person quickly through the clarifying questions. Call this approach Specialist with Generalist resolver.
I'm favouring the first approach as it isolates keywords and answers for specific subtopics in small, specialist topic flows that can be triggered directly while providing a general-purpose "step by step" topic if the person is unsure. It also maximises decoupling - each of the specialist topics doesn't need to know anything about the general-purpose variables/values.
Have you used either of the above approaches? What worked for you? Or is there another approach you'd recommend?