1. A computer-implemented method comprising: a graphical user interface (GUI) module, running on a server, creating a GUI to present a questionnaire having at least one question to an end-user; a rule engine, running on the server, receiving an answer to the at least one question via the GUI from the end-user; the rule engine using truth maintenance to determine what follow-up questions to ask the end-user based on the answer received; and the GUI module dynamically modifying the GUI to present the follow-up questions to the end-user.