Skip to content

Instantly share code, notes, and snippets.

What would you like to do?

Anshul Singh's Google Summer of Code 2019 Final report

gsoc-mifos another copy

Organisation: Mifos Initiative

Project Name: Mifos/Fineract Chatbot & Adapter 2.0

Mentors: Aleksandar Vidakovic, Raul Sibaja, Ramit Sawhney

Project github repository link: master branch

Pull Request made during GSoC: Pull Request

Project tree of my work: here


For many of our users today, chat is a much more familiar form of user interface for them and it would be valuable to provide an extensible chatbot connected to Mifos/Fineract. This chatbot appllication will allow user and Fineract platform to interact directly. During GSoC 2019, I worked on enhancing and adding additional features to this application for providing integration with major chat platforms like Slack, Telegram and Facebook messenger, also improving NLU integrated.

Description and Structure of Project

Chatbot and adapter to Apache Fineract is a Spring application build on Spring Boot framework. It provides a chatbot service to assist consumers and this chatbot service is implemented on Slack, Telegram and Facebook messenger. This project is divided in the following modules:

  1. server - Server module is responsible for starting of Spring application with the configured properties of protocol module and adapter module.
  2. adapter - Adapter module acts as adapter to nlp, client and protocol module. This module provides all the handler which handles requests coming from protocol module and return mifos response back to protocol module.
  3. client - This module is responsible for handling client request and communicating with Fineract API and generate and return mifos response back to adapter module. It is also responsible for authentication of client.
  4. core - Core module provides skeleton of the application. Interface for NLP service, chat service, adapter service, intent and small talk service are defined in this module.
  5. nlp - Rasa NLU is implemented in this module. Models are trained using Rasa NLU trainer and trained models are placed in models directory (here).
  6. protocol - Integration with all chat platforms are defined here.
  7. database - Authentication is provided by storing user information in database. All database related methods and templates are defined in this module.


Initially, I proposed to improve Slack integration, Apache open-NLP module, resolve bugs and issues, create authentication solution, Integrate of chatbot on Skype, Telegram, Facebook messenger and small talk feature in NLP. But during the community bonding period (after discussion with Mr. Aleksandar, Mr. Raul, Mr. Ramit and the community members), We decided to replace Apache open-NLP with Rasa framework and rest of the tasks are good to go.

Commit List

All my commits are under one Pull Request.

Following commits are of fixing bugs/issues, code improvement and code cleanup.
Following commits are to implement chatbot on Messenger.
Following commits are for implementing database used for Authentication by storing user information.
Following commits are for improvement in slack integration.
Following commits are to implement chatbot on Telegram.
Following commits are of implementation of Rasa NLU.
Following commits are for integrating small talk feature.
Commits regarding PR review fix.
Following commits are for updating documentation of the project.

Weekly Updates

Snapshots of my work

Response from Fineract API to Slack platform.

Response from Fineract API to Slack platform.

Small Talk feature implemented in chatbot.

Chatbot integrated with Telegram.

Chatbot integrated with Facebook Messenger.

Possible Future Improvements

There are still some future improvements that you can make if you are interested in this project.

  1. NLP: Generalise Rasa more, so that it can handle more use cases.
  2. Reduce code redundancy and improve it.
  3. Improve response format.


Thank you to all who helped me throughout GSoC. Special thanks Mr Ed Cable for reviewing my proposal and giving me valuable updates and giving me suggestions in weekly updates. And I will always be thankful to my mentors(Mr. Raul, Mr. Ramit and Mr. Aleksandar). Thanks for guiding me on the right path and helping me to resolve problems. Thanks for being a good mentor.


It's a great experience for me. I would say GSoC is the best program to help you learn new technology, learn best practices and reading awesome codes. Thank you The Mifos Initiative and GSoC community for giving me this great opportunity.

For any queries contact me at
My GitHub:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment