An introduction to HelloLily
Written by Ednan Pasagic on 12th March 2015
Say Hello to Lily
Allow me to introduce you to the CRM we’re building called HelloLily. We started this project because our old CRM (SugarCRM) wasn’t satisfying our needs and since we didn’t want to pay for a different CRM which was not based on communication, we decided to build our own. Building the CRM ourselves obviously means that we have full control over it, but it also costs a lot of time. Still, HelloLily is coming along quite nicely, though there’s still a lot of work to be done. That being said, I would like to give you a small introduction to HelloLily, its features, and our future plans.
Our vision for the CRM system of the future is that it is built around communication and that it does work for you, instead of you having to do the work.
HelloLily consists of five pages (or features, however you want to call them) that serve as the base for everything in HelloLily.
Accounts and contacts
First up are the accounts and contacts. They’re mostly the same, but the difference is that while an account is a company, a contact is a single person. An important thing the account and contact detail page have in common is something we’re calling the history list. The history list contains all the communication that has happened with that account or contact.
Deals and cases
Next up are the deals and cases. A deal is mostly meant for our salespeople. Whenever there is a potential sale, a deal can be created so there’s an overview. Cases are pretty much any action that someone needs to do. This can be a callback request, a problem reported by a customer, etc. Both deals and cases are also displayed in the history list.
This is where the magic happens, and it’s also the element that took us two years to build. E-mail forms the basis for business communication. This is the part we had to do well and the starting point for the rest of the system.
Now that I’ve told about HelloLily’s features, I’d like to give you an overview of the main frameworks and libraries we are using.
The main programming language we’re using is Python along with the Django framework. There might be other languages or frameworks that are better suited for the application we’re building, but for now Python and Django are doing just fine.
The features for the MVP (minimal viable product) are pretty much done. This means we’ve been focusing on improving the user experience before we continue implementing new features. An important thing we wanted to tackle was the overall speed and responsiveness of the application.
We decided that a web application framework would be a good solution for this. Eventually we decided to go for AngularJS. The primary reason we chose Angular over EmberJS or ReactJS is mostly because Angular is the biggest one, which means there’s a lot of documentation and support is already available. Another reason is that some members of the team were already familiar with Angular.
The database for HelloLily is becoming bigger and bigger and the Django ORM wasn’t able to keep up with the increasing amount of data. The solution? Elasticsearch. Colleague Ferdy has written an in-depth article about using Elasticsearch.
Most email clients will use an IMAP implementation to do various email actions. Our IMAP implementation worked, but IMAP is very slow. As an experiment we decided to try out the Gmail API. This API gives us direct access to the Gmail data, which means it doesn’t have to go through the whole IMAP protocol. The downside is that it (as you can guess) only gives access to Gmail accounts. Of course Gmail isn’t the only email provider we want to support. In the future this we want to support more email providers, which means we’ll probably reintroduce the IMAP protocol.
If the features mentioned above were the only ones HelloLily would contain, it would be kind of a plain and boring application. That’s why we have a lot of cool features in mind. Here are a few things that we want to build in the future.
Since one of our other products is the VoIP platform VoIPGRID, we have a lot of options regarding telephony. One of the plans we have for HelloLily is to integrate calls. This could mean that you get a popup when someone calls you, displaying their phone number and (if available) their contact info. This also means the history list will contain the calls you had with that contact.
Let’s say you want to search something, but you can’t remember if it’s a contact or account. You’d have to go to both list views and type in your search query there. This isn’t really user friendly, which is why we want to implement a search similar to the one Facebook has. This means you can search for whatever you want and it will return any results containing the search string you entered. Another feature we want to implement is the ability to create new contacts, accounts or whatever straight from the search.
Of course the aforementioned things aren’t everything HelloLily contains or will contain, but hopefully this post gave you a good impression of what HelloLily is now and will be in the future. There is still a lot to do before HelloLily is ready to be released and we’ll try to keep you updated. If you want to follow our progress more closely, you can always check our Github repository.