Sunday, 14 October 2018

Graph CRM - proof of concept


Introduction

Having worked on a CRM project in the past, there were things the product did well and things the product didn’t do so well or didn’t do at all. What I would like to do is take what I have done over the years and use that knowledge to build more complete product.

CRM Experience

Originally marketed as a CRM system, the product I worked on was more of a case management system and data integration view. The product has a rudimentary BPM engine to drive cases, it also has a integration piece also acting as a rudimentary BPM engine. The product had dashboards displaying data gathered from multiple sources, these 2 things were the key selling points of CRM. Other notable features of CRM, it also has a forms engine which allows for the designing of forms that can be used in the core application, a portal or mobile application.
CRM Systems


A typical system would usually consist of the following features (
Taken from https://www.salesforce.com/eu/learning-centre/crm/crm-systems/ and https://crm.walkme.com/components-customer-relationship-management/
)

Contact management

All the latest information about customers — from contact details to service conversations — is easily available to access and update.

Customer Service

Customer Relationship Management emphasises on collecting customer information and data, their purchase information and patterns as well as involves providing the collected information to the necessary and concerned departments. This makes customer service an essential component of CRM. Almost all the major departments including the sales department, marketing team and the management personnel are required to take steps to develop their awareness and understanding of the customer needs as well as complaints. This undoubtedly makes the business or the company to deliver quick and perfect solutions and assistance to the customers as well as cater to their needs which increases the dependability and trust of the customers and people on the organisation.

Lead management

Lead Management as the name suggests, refers to keeping the track of the sales leads as well as their distribution. The business that are benefited by this component of CRM the most are the sales industries, marketing firms and customer executive centres. It involves an efficient management of the campaigns, designing customised forms, finalising the mailing lists and several other elements. An extensive study of the purchase patterns of the customers as well as potential sales leads helps to capture the maximum number of sales leads to improve the sales.

HR Management

Human Resource Management involves the effective and correct use of human resource and skills at the specific moment and situation. This requires to be make sure that the skills and intellectual levels of the professionals match the tasks undertaken by them according to their job profiles. It is an essential component not only for the large scale corporations but the medium industries as well. It involves adopting an effective people strategy and studying the skills or the workforce and the growth being generated thereby designing and implementing the strategies needed accordingly with the aim of achieving development.

Sales forecasting

Forecasting reports enable salespeople to get better visibility over their pipelines, qualify leads more accurately, and see how close they are to hitting their targets. Sales managers can use reports to motivate and manage their people.

Instant messaging between employees

Real-time instant messaging functionality makes it easier for coworkers to ask and answer each other’s queries, for instance in support of a live sales opp or service interaction. Managers can check in on staff in the field, and employees can ask for instant feedback or support as needed.

Email tracking and integration with Outlook and Gmail

Syncing email clients instantly with the CRM system allows business people to get a complete view of their customers and leads without having to log in and out of different systems. Calendars and contacts can be viewed across every device, and emails can be created and managed from within a single workflow.

Marketing

Marketing is one of the most significant component of Customer Relationship Management and it refers to the promotional activities that are adopted by a company in order to promote their products. The marketing could be targeted to a particular group of people as well as to the general crowd. Marketing involves crafting and implementing strategies in order to sell the product. Customer Relationship Management assists in the marketing process by enhancing and improving the effectiveness of the strategies used for marketing and promotion. This is done by making an observation and study of the potential customers. It is a component that brings along various sub-elements or aspects. Some of the major elements of marketing are List Management, Campaign Management, Activity Management, Document Management, Call Management, Mass Emails and Reporting. The use of the aforesaid elements varies from business to business according to its nature and requirements as well as the target crowd.

Workflow Automation

A number of processes run simultaneously when it comes to the management and this requires an efficient cost cutting as well as the streamlining of all the processes.The phenomenon of doing so is known as Workflow Automation. It not only reduces the excess expenditure but also prevents the repetition of a particular task by different people by reducing the work and work force that is getting wasted for avoidable jobs. Routing out the paperwork and form filling are some of the elements of the process and it aims at preventing the loss of time and excess effort.

File and content sharing

Team members can upload information to a centrally stored location, and share easily and instantly with coworkers.

Dashboard-based analytics

Information is aggregated and presented in intuitive, meaningful dashboard displays that can be customised based on each individual’s priorities.

Graph Database

This project is born initially out of the desire for me to play around with graph databases and primarily the one I'm focusing on is NEO4J. If nothing else comes from this project it will give me the change to play around with NEO4J. The previous CRM product I work on had and issue with it's contact system, it was limited and adding relationships between different types of contacts was not easy, querying which join between different types of contact in most cases was very slow and in many cases was not possible at all. I've always felt a graph database sounds from the little I know of them to be a good good fit to easily add that capability so this project will allow me to find out if that is the case. From the table above, I believe a flexible entity system would allow for the handling of all that different types of data.

Plan

I have a very rough plan in mind for a proof of concept, I want to use NEO4J to build an entity system. Where before in my old CRM system, I spent a lot of effort in writing the case management functionality, this case management software was no where near being a full BPMN engine, the thought I had is that there most be open source BPMN engines that I could utilise to support case management, and after a small amount of time and watching videos on a particular product I found Apache Activiti. So the plan at the moment is simple, take Activiti, create an entity system with NEO4J integrate the 2 together into a CRM system.

Roadmap

  1. Create a entity system in NEO4J which allows me to define entities, I should be able to define from data the entity holds and how different types of entity can relate. 
  2. Implement entity searching to perform cross entity searching 
  3. Create basic GUI to support the entity creation and search features. 
  4. Setup Activiti 
  5. Implement user service and integrate with the CRM app and Activiti instance 
  6. Push cases into CRM system and display in GUI.