ID | MoSCoW Feature | Priority | State Of Completion | Contributors |
---|---|---|---|---|
1 | Website Integrable | Must | Done (chatbot logic is separated from WebApp) | Ivan, Neil, Maheem |
2 | Data Retrieval | Must | Done (one of the main features of the chatbot is to retrieve filtered data from BHF's compendium) | Ivan, Neil, Maheem |
3 | Thoughtful Error Messages | Must | Done (Chatbot guides users by showing them what's wrong with their query) | Ivan, Neil, Maheem |
4 | Retrieves, filters & displays statistics in tabular form | Must | Done (Chatbot utilizes Pandas data frames to display relevant information) | Ivan |
5 | Answers FAQs | Must | Done (one of the main features of the chatbot is to answer FAQs) | Neil |
6 | Chatbot utilizes fast algorithms | Should | Done (Chatbot relies on fast algorithms for string matching using advanced Python libraries) | Maheem |
7 | Chatbot website is fast and user-friendly | Should | Done (Users say that the chatbot website is easy to use and quickly retrieves the required data) | Ivan, Neil, Maheem |
8 | Chatbot performs complex data analysis - computes mean, median, mode, etc. | Could | Left for Future Work | NA |
9 | Chatbot provides additional meaningful query suggestions to further assist the user (In the form of “Did you mean…”, “The closest match is…”) | Would | Left for Future Work | NA |
Key Functionalities Completed | 100% |
---|---|
Optional Functionalities Completed | 50% |
Note: This is only a summary of the achievements, not all features have been included in this table. Throughout the development phase, we have moderately refined and adjusted a few of requirements in coordination with the client to better fulfil all requirements.
Tasks / Work Packages | Ivan | Maheem | Neil |
---|---|---|---|
Extract data from the BHF compendium and store it in appropriate formats (.csv,.txt,.json), connect to an SQLite database (for different implementations and to make the project extendable) | 33.3% | 33.3% | 33.3% |
Develop an FAQ answering system using regex | 33.3% | 33.3% | 33.3% |
Develop efficient algorithms for string matching | 33.3% | 33.3% | 33.3% |
Make a data retrieval system using the algorithms for string matching, synonyms, and n-grams checks | 33.3% | 33.3% | 33.3% |
Filter and display data, extracted through keywords from the string matching algorithms | 33.3% | 33.3% | 33.3% |
Integrate Chatbot logic into a WebApp using Flask | 33.3% | 33.3% | 33.3% |
Web Portfolio Contents | 45% | 45% | 10% |
Web Portfolio Website and Content Integration | 20% | 20% | 60% |
Manuals and Legal Documentation | 33.3% | 33.3% | 33.3% |
Overall Contribution | 33.3% | 33.3% | 33.3% |
Note: Contribution percentages are just a approximation, all technical and non-technical tasks were distributed equally between all members
HeartBot presents its user with an interactive and easy-to-understand user interface. The chatbot employs a design similar to most messaging apps. The messages field is well-organized and intuitive. There is also a 'Help' button that users can hover on, to get additional guidance on using the interface, if needed.
All main features that were required from the client can be found in HeartBot - it provides easy access to the BHF compendium, saving users a lot of time and effort. It also answers FAQs and gives a visual representation of what the user is searching for in the form of a table.
HeartBot was tested extensively with numerous unit and systems tests to ensure that a high coverage (99%) is reached and that all code segments and functions behave as expected. Furthermore, the chatbot was tested for robustness, and it continued to function properly, even with invalid/complex queries. A huge advantage of HeartBot is that it doesn't rely on any external software, which makes it self-sustainable and more stable.
HeartBot employs efficient custom algorithms based on well-established Python frameworks for string processing and matching. It generates a response quite quickly for FAQs and can take up to a few seconds to filter out and display data for a data retrieval type of question, based on the specificity of the query and the size of the table from the compendium being queried.
HeartBot is very compatible, as the main chatbot logic is separated from the Web framework used (Flask). Having many auxiliary functions, the chatbot code can easily be integrated into any web application (or context) to serve different purposes.
HeartBot is easily maintainable, as its database can be updated whenever needed. The system is flexible, in that it can be adapted to suit many purposes. It employs the principle of separation of concerns, which keeps the code clean and ensures that the chatbot is extendable and future-proof.
Project management was hassle-free as team members got along nicely from the start, separated tasks equally, and met weekly to update on progress and make the relevant technical decisions to ensure that the development process is on track.
ID | Bug Description | Implication | Priority |
---|---|---|---|
1 | A data retrieval question may get mapped to an FAQ, if it is of the same string length | This would happen when a user presents a question that is too vague, doesn't contain enough keywords to get recognized as a data-retrieval question, and has a lot of similar words to a question from the FAQ database. In practice, this is highly unlikely to happen because FAQs contain few keywords that are similar to row/column names from the BHF compendium. Furthermore, users of the app are knowledgeable of the compendium and are going to ask targeted specific questions. | Low |
Note: Sometimes, more rows may be displayed in the list of results. After all, HeartBot is a data retrieval bot that works by recognizing and extracting keywords - users need to be specific in their queries, otherwise, they will just get filtered data, instead of the specific values they asked for