120,000 requests per minuteScalable cloud-based solutionRealtime monitoringSupport chat widgetVisitors events trackingCRMData segments and filters
Everyone likes to get great customer service: orders processed fast, questions answered in time.
When you run an ecommerce website (or any website you get customers from) it can be hard to organize everything right.
Not to lose a client. To leave better impressions so he will come back and purchase again.
Build your tools
One of our clients is a big company who
sells to sellers, providing equipment for retailers.
They know how important is to manage customer relations and they put a lot of attention to it.
So they decided to create a SaaS application to manage sales team tasks, track website visitors, answer their questions, offer help.
When their CEO contacted us, he already had prototypes for this app. It was great to have some constraints and initial ideas
of how things should work, but in development process a lot has changed.
The work was split down into two parallel processes: one team was developing client-side widget, a script that was to be embedded
into website which customers we needed to track; and a managers-side CRM, where website visitor behaviour was tracked.
Later we added notifications and chat functionality to allow visitors and managers communicate.
Remember yourself browsing an online shop: every second you waste on getting information reduces your desire to buy.
The solution to fix delays and reduce customers refusal was to make visitors tracking and chat realtime.
It was the toughest part at the moment. We split our backend into API and CRM apps.
API was made to receive and process visitors online status, events, messages.
CRM was getting data from API and sending managers actions and messages back.
This system was built with Faye, Rack (Sinatra), Sidekiq, Postgresql and ElasticSearch.
Later we rebuilt API with NodeJS to reduce server-side load and make the system scalable.
But managers who use CRM are people, too. They deserve an app where interactions are smooth and there and pages do not reload on every change.
We picked up Backbone and Marionette and made the CRM more front-end and client-side application than before.
It allowed us to implement segmentation to filter people and companies lists, receive chat notifications on every CRM page,
update visitors stats in realtime.
Sales team use LCRM to provide better customer service, improve their metrics and increase revenue.
Current code tests coverage is 90%, Code Climate GPA is 3.52.
The system works on three Hetzner servers with Nginx load balancer.