DEVELOPMENT CASE STUDY
CARAMEL CRM
A story of building a custom CRM that fully covers internal Sales needs and adapts to any business model.
PROBLEM Project Team Project Manager Business Analyst UI/UX Designer 2 Backend PHP Developers 1 QA Engineer
“It was a complex project, but I loved how we dealt with it!” Sergey Verklov Project Manager
“It was a CRM system development project that was based on our own experience of system usage for in-house needs. The step-by-step improvements led us to excellence, but we never stop improving and provide custom CRM development for customers’ projects.” Olga Zhuk Account Manager
As an outsourcing company that deals with a large number of clients daily, the Mobilunity Sales team faced the problem of tracking those clients in a way that was simple and non time-consuming. Our story starts years ago, with a simple spreadsheet that the team used to keep track of leads and clients via Google Drive. The file was growing exponentially and within a year was unable to provide answers to a number of important business questions. The desire to have all contacts along with a growing number of leads organized internally led to CaRaMel, our custom CRM development project. Key problems the new system had to solve included: Organization of all Company contacts Differentiation of contacts by type and source Assignment of clients to proper Account Managers Notifications/reminders to Sales associates to follow up with prospects Status tracking of every lead Communication with clients directly through the system Decreased time spent on email communication Report on sales team KPIs
With the motto “no contact is lost” in mind, our backend development team started crafting the product, what would be the beginning of our new lead management system.
1
THE CASE STUDY BUSINESS ANALYSIS
As with any project, our Project Manager began researching and comparing existing CRM solutions on the market. We looked at the industry giants and deďŹ ned what our Sales team might be lacking with those client relationship systems.
Requirements
Zoho
Hubspot
Insightly
Bitrix24
Client contacts
X
X
X
X
Leads
X
X
-
X
Potentials
X
-
-
Mailing system
X
-
X
Scheduled emails
-
X
X
Tasks
X
X
X
X
Project board
X
-
X
X
Campaigns
X
-
X
X
Easy customization
X
-
X
-
Analytics per project
-
-
X
-
Analytics per client
records for emails,
X
X
X
online meeting
all additional
very simple to
calendar, drive,
rooms, calendar
functionality is
use and similar
chat, complex UI
not free
to gmail
free
from $12/user a
free for up to 12
month
users
X
events, campaigns, closed and opened activities
Additional features
Cost
up to 10 members free, more - $25/user a month
Based on market analysis, feature requests received from research department, and the needs of our project and sales teams; our Project Manager closed the project deďŹ nition phase with creating a full technical requirements document along with the CRM system wireframes. It was crucial for the system to be able to handle large volumes of contacts currently the database includes over 30 000 contacts, while technically the system is able to handle over 1 000 000 contacts. 2
TECHNICAL REQUIREMENTS
Technical requirements to the lead tracking system included: Project plan System database architecture User flow and user stories CRM wireframes
The concept of the whole system was based on optimizing sales processes and promoting interaction of Sales and Account Management Teams with contacts.
Our Project Manager defined the following user roles for the system: Reporting Manager - is allowed to view all clients and users, as well as generate reports Researcher - is allowed to create and edit information about clients, and can manage clients added by users Manager - is allowed to create and manage all clients Admin - is allowed to create, edit, and delete information about all clients, add users, and change CRM settings
User profiles covered all relevant information including name, email, gender, and position. Client profiles included more detailed information such as the source, Researcher, Account Manager, date of creation, contact email, phone number, LinkedIn profile, company name, position, industry, and website, as well as fields for comments, and an ability to attach files. Clients were separated by the following types: Leads (found and added by research team)
Prospects (clients, who agreed to a meeting;
with the statuses:
physical or a call) with the statuses:
Attempted to contact
Junk
Contacted
Lost
Junk
Not interested
Lost
Idle
Not interested Qualified lead Idle
3
Potential (clients, who received our
Customer (clients, who signed a service
proposal after a call) with the statuses:
contract) with the statuses:
Junk
Active
Lost
Inactive & Potential
Not interested
Inactive & Lost
Idle
Canceled
The first version of the customer relationship management system had the following features: Ability to add new clients and assign them any category Importation of MS Excel databases Ability to Filter by date, source, Researcher and Account Manager Ability to Filter by client statuses Execution of the logic that changes the status of the client, who is not replying for a week, to Idle Reports on the number of new clients added and lost within a specified period
Further versions of the lead follow up system included the development of an advanced calendar and reporting features along with a separate HelpDesk module. This would enable communication between users and clients, allow for the creation of email templates, provide functionality to do mass mailing, define SLA’a, allow automatic follow-ups to be sent, and receive reminders.
Email attachment wireframe suggested by the Project Manager
4
The Project Manager deďŹ ned the custom workflow for the whole CRM project in Redmine in line with Scrum Agile framework methodology for development, splitting the development into the initial Sprints.
Screenshot of the CaRaMel project in Redmine
5
DESIGN
Our CRM designer suggested mockups to meet the acceptance criteria deďŹ ned by the Product Owner, and focused on creating an intuitive interface for lists and cards of users, clients, tasks and tags. The UX design for the CRM was done using Photoshop and presented in InvisionApp.
CRM clients list design
CRM clients list design
6
CRM clients list design
BACKEND DEVELOPMENT
The project involved 2 PHP backend developers, who coded it from scratch and who continue to work on improving it now. Technologies used in the development of the CRM include: Yii2 PHP framework due to its fast speed, stability and flexibility. Apache Lucene-based ElasticSearch was used for quick records discovery. Thanks to Ajax scripts our Yii developers enabled quick refreshes of data without the need to reload the page. MySQL and MariaDB systems were used to manage the databases. Emailing was implemented through Sendgrid SMTP service, our developers used its API to send continuous queries and ďŹ ght spam issues particular to large CRMs. TinyMCE JavaScript HTML WYSIWYG editor was implemented in the email module to enable the creation of aesthetically appealing emails.
Deployment environments included development, testing and production servers.
TESTING & BUGFIX
The QA Lead prepared a Master Test Plan and Smoke Checklist for the CRM project. Along with basic client and user cards testing our team thoroughly worked out possible test cases for security vulnerabilities. 7
CHALLENGES & SOLUTIONS Custom CRM development lasted 4 months and was quite a challenging experience for the team. Our backend frontend developers and Project Managers came across the following issues: Thread identification To implement convenient email communication, our PHP backend developer had to split emails into threads. To solve this issue we developed thread identification algorithms, which checked every email for the thread and subject ID and of course emails of users involved into communication.
Slowly loading pages Our team detected a bug with the theme used in the first release of the CRM MVP, which loaded a long list of contacts on every page, thus, causing issues with the page loading speed. To fix the problem we disabled the calendar and stopped showing clients on every screen.
Email issues Having the whole system depend on one email server always raises the risks of possible downtimes and even bans, due to the large volume of emails and spam prevention AI algorithms on the server side. To avoid such issues our team implemented 2 independent mail servers.
Possible SMTP downs Usage of any third-party service creates dependencies on the service uptime. To be aware of possible SMTP service downtimes, our CRM developers applied the system of SMTP service status notifications.
Advanced reporting KPIs of any mailing campaign includes a number of replies, the open rate, and click through rate. To have this information in the CRM our team wrote an algorithm, which retrieves this data through Sendgrid API.
Contacts import To optimize the work of the research team and diminish the need of manual client data entry into the CRM, we developed an “Import of contacts” feature. Now any user of the system can download a csv template, which includes all required columns in the system, and then upload lists of contacts from an Excel spreadsheet. The system will validate them and automatically create new clients.
8
TECHNOLOGIES USED The New custom CRM system turned out to be a successful project with implementation of such technologies as: Yii2 PHP framework Ajax MySQL and MariaDB ElasticSearch SendGrid API TinyMCE JavaScript HTML WYSIWYG editor
Despite that fact that the system was developed based on our internal Sales team’s request, the final CRM system is fully customized to the needs of any industry from an ecommerce startup to large manufacturing corporations.
Are you ready to scale your sales to the next level? Let’s develop a CRM for your business together!
https://mobilunity.com
sales@mobilunity.com