.. for a telephonic help service. Typically the client will phone in and the help-operator will drill down a series of questions & answer pairs to refine the client's problem and eventually arrive at a solution.

Are there any algorithms or templates for this type of user-interface available?

Any further ideas on how to implement this efficiently will be most welcome.

  • Help-operator can not know how many (questions)answers you should drill down (any progress will be unuseful).
    – igor
    Commented Oct 4, 2010 at 11:48
  • what information do the user need from the user algorithm
    – user7535
    Commented Aug 21, 2011 at 5:57

4 Answers 4


I would like to propose using Structured Matcher pattern and its implementation.

A Structured Matcher is useful when making choices from a small, discrete set of alternatives. It decomposes a complex decision into simpler decisions about relevant factors and then uses decisions about these factors to make the decision.

I think, it possible to display every decision type as view (UI control, web page, form and so on). You have to have a decision tree (predefined) or collect all information to build this decision tree during your (your client's) work. In the second case you may use Sponsor-Selector pattern (for example) to select the best decision by using statistics built on previous ones.

Please, review for more details.


It sounds like you need an expert system.

It's been a while since I did anything on this, but you start with the most basic question and work from there - very much like the game "20 questions".


The method I would prefer is similar to an e-commerce site, where you apply multiple filters to refine the results.

Consider that in the beginning (before a single question has been asked), all the solutions in your database can fit.

Once you answer one question (I assume the answers are either "yes/no" or a small finite number), that narrows down the solution's list. Answer a few more and narrow it down still further.

Visually I envision it as two columns, one with the questions (and the possible answers, from which you select one per question) and the second with the possible solutions.


  • You always have the solutions showing (and assuming a smart algorithm, you can also order them by relevance, probability, etc.)
  • You could easily determine any preferred order for the questions, skip some and the get back to them

Back to the analogy, imagine you're buying a TV online and you can choose the desired screen size. In this model the question would be "what's your desired screen sized" and the various sizes would be your answers.

A different approach would be like troubleshooters in Windows - they make a suggestion or ask a question and then you can indicate whether this helped or not. According to this, they troubleshooter asks the next questions or suggests another fix.

The disadvantage is that if you skip a step you usually cannot return, you don't quite know where you are in the process (how many questions left) the results (the possible solutions) are suggested one by one.


As you state it in your title, it is a dual question about a UI and an algorithm.

I think that as your help operators may also have little knowledge, they need an extremely simple UI. The simplest it to give them a wizard with one question at a time. Each step eliminates some other questions. The last step is a list of possible solutions, when there is no more question.

The second part is a little off topic as it is an algorithm. Basically on each step you should ask the question that will potentially eliminate the most other questions. Actually the best question to ask is the one that eliminates half of the remaining questions. If the answer is 'yes', one half is eliminated, if the answer is 'no' the other half is eliminated. This is inspired by the decision tree model.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.