At Mobikon, we built a full-stack CRM platform for restaurant customer engagement — serving restaurant chains across Singapore, India and the United Kingdom. I worked on both the Scala/Play Framework backend and the AngularJS manager dashboard that restaurant operators used daily.
The platform combined feedback collection, loyalty programs, marketing campaigns, and order management into a unified analytics dashboard. Elasticsearch powered aggregations across millions of records, while WebSocket connections enabled live updates — managers could see a customer's feedback appear on their dashboard in real-time.
A replica of the mEngage manager dashboard. Hover over the orange sidebar to expand navigation. Widgets display sample restaurant metrics with live updates every 3 seconds via the same WebSocket pattern used in production.

Customer feedback, orders, bookings, and loyalty data from restaurant locations are aggregated into a dashboard with customizable chart widgets — giving managers visibility into what's happening at every outlet.
Segment customers by demographics, order history, and satisfaction scores, then reach them with targeted email and SMS campaigns — all with built-in budget controls.
Managers are notified instantly when negative feedback comes in. Daily digests, analytics exports, and industry benchmarking reports are generated and delivered automatically on schedule.
A shared AngularJS library was developed and maintained as a Git submodule across multiple production applications. The real-time analytics dashboard used WebSocket connections to support high-frequency data updates, with independently rendered widgets consuming Elasticsearch aggregations and displaying live AmCharts visualizations.
Elasticsearch percolation enables inverted/reverse search — managers pre-register alert queries (e.g., 'feedback rating < 3 at outlet X'), and every incoming document is automatically tested against all registered queries, triggering instant push notifications on match.