MoSCoW Achievement List

Summary of achievements:

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.

Contributions

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

Critical Evaluation


User Interface & Experience

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.

Functionality

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.

Stability

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.

Efficiency

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.

Compatibility

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.

Maintainability

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

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.

Bugs List

HeartBot has only one known bug, its implication is described below:

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

Future Work, Additions & Ideas

A list of extensions to the project that could be made:

  • Add a “Did you mean…?” on responses without a match, to improve user experience by suggesting to the user, how they could improve their query
  • Automatic addition of FAQs from files with data (The BHF staff wouldn't have to update databases manually)
  • Add 'I'm feeling lucky' button
  • Add complex data analysis - mean, median, mode, etc. of statistical data
  • Add graphing functionalities and tools - to display statistics in different forms - pie charts, histograms, etc.
  • Implement various to make the string matching algorithms run even faster