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?
This is also a good way to deal with overlap, if topics false trigger together a lot, use the slot system to proactively DID YOU MEAN them per your own logic. Good luck!
Thanks @peterswimm - your approach is much like my first option (focus topics with an overarching "routing" topic). I like the idea of no trigger phrases for the focus topics and leveraging PVA's slot filling to "skill"(?) to the correct choice - I'll give this a try.
FULLY agree about spreading the complexity across many smaller (focus) topics rather than one giant topic, and I appreciate the observation that this enables different teams/coworkers to handle the focus topics. 👍
I personally do a blend of the two... so I would structure topics like this>
> I have questions about days off
>> Is this a question about about?
>>> [Personal] Time off
>>> [Sick Time] off
>>> [Extended] Time off
Where everything in [brackets] is an entity of something like [typesLeave]. This way if an end user asks something like:
I have a question about personal time off
The slot filling logic of pva will skill to the correct choice.
The next step here is the top topic will then route to three other topics, all without triggers. One of these can be "Personal time off" and managed by the team that handles that aspect. In this way the first subtopic exists as a kind of mini-bot, and you can spread the complexity across many topics, versus having one giant topic. One thing you really want to avoid is if you leave the bot, and its not easily discernable how the logic works. Because of the way PVA handles interruptions and slot filling, this is largely transparent to end users but your coworkers will thank you later.