At UrbanCompany we keep organising internal hackathons every once in a while. It’s fun as engineers take out some time to work on the craziest ideas possible and some of them actually do make it into production 💥
This time the hackathon was particularly interesting as the backend engineers were expected to build Android Apps, that too in 24 hours. 🤨
There are very few things in this world which are as frustrating as Android development. Those slow builds, heavy Android Studio, large SDK downloads… Grrr! 🤬
Assistant Chat Bot For UC Professionals
For my project I decided to build a basic chat bot for out professionals. After all we do consider that these professionals are micro-entrepreneurs, so they do deserve a personal assistant to help them with their bust work schedule. 🕴️
UrbanCompany is a managed home services marketplace where we offer end-to-end managed home services like salon, spa, electrician, plumber and 100s of more to our customers. And folks who make all of this possible are our UC professionals, who work punctiliously to deliver these jobs.
The high level plan for the project was also pretty simple and fun:
- Get the APIs from the codebase which are related to certain professional actions.
For example: get credits balance, get new leads, get credits transactions etc.
- Train a simple got against utterances like : “What’s my credit balance?” and map it to actions like “get_credits”
- Build the chat interface on the Android apps.
I used wit.ai to train the chat bot. It’s was really simple to build a basic bot and was free as well!
High Level Architecture
The most time taking part of this project was building the Android app. By around 2 AM, I was ready with the last 2 components: the application server was up on AWS, and the bot was also trained for all the utterances and intents.
This was the point when Android Studio decided to update some gradle plugin for no reason 🤷🏻♂️
Anyway I somehow managed to build a basic chat interface using Recycler View and for making requests to the server I used a library called OkHttp (this was pretty simple to use, I liked this one).