Agile boards are a great way to organize sprints and brainstorming/design sessions, but the major flaw is that they can quickly become chaotic and difficult to manage. What do you do when the sprint is over? Gets too cluttered? You spill coffee over it? Why not digitize it for quick storage, manipulation, and documentation!
What it does
Users will select, customize or create their own agile board (i.e Sprint Retro) and upload an image. This image is run through thresholding and contouring scripts to extract images of individual post-it notes from a picture, and these images are cleaned up to be fed into a handwritten text recognition Convolutional Recurrent Neural Network (C-RNN), which will output the most likely values for the text. Values are stored, and then used to populate the web application where they can be manipulated, shared among team members, or exported to different software.
How we built it
The image processing and deep learning is all done in Python with OpenCV and Tensorflow. The neural network consists of 5 CNN layers that feed into 2 RNN cells to extract text from the feature images. The backend is built using node.js and express paired with postgreSQL and knex.js. Web application is built using Vue.js and Google Cloud Buckets are used to store images.
Challenges we ran into
- Cleaning up and extracting the processed text well enough to be fed into a C-RNN model.
- Getting high confidence predictions from a pre-trained C-RNN model.
- Establishing communication between node backend and the Python processing code.
- Connecting all the BE and FE together.
What we learned
- Image processing techniques.
- Deep learning for handwritten text recognition.
- Running python scripts in node.
- Vue.js & VueX.
What's next for Agilite
- Improve the neural network by training on a larger and more diverse data set.
- Use more robust thresholding techniques.
- Building out backend with better security, stronger architecture
- Implementing the team features on the FE
- Improve UI and add in animation
- Integration into Agile management software. (Jira, Asana, ...)