Skip to content
Mahavir

← All work

Cloint — B2B SaaS CRM

2018 – 2020 · Infobizzs Services Pvt Ltd · Software Engineer — full-stack build, including mobile + backend

Architecture
12-factor
Roles
Multi-tenant
Calling
Twilio VoIP
Imports
Event-driven

Highlights

  • Multi-role CRM with workflows, pipelines, statuses, tasks, notifications
  • In-app Twilio VoIP calling for staff and vendors
  • Event-driven Python data-import microservices (RabbitMQ/Redis)
  • Converted a monolith into a 12-factor distributed system
  • Multi-tenant SaaS serving staff, vendor, and customer roles

Overview

Cloint was an operations-heavy B2B SaaS CRM — the kind of product where “CRM” undersells it. It had multi-role workflows, pipelines, statuses, tasks, notifications, and in-app voice calling. I built it full-stack and, over time, converted the monolith into a 12-factor distributed system.

This is the project where I cut my teeth on production B2B software: real operational complexity, real money (VoIP minutes), and real scale on data imports.

The challenge

A B2B CRM used by staff, vendors, and customers — each with different roles, permissions, and workflows. Operations teams live in it all day, so it had to be fast and reliable. On top of that:

  • Calling inside the app — staff should be able to call leads/vendors without leaving the CRM.
  • Heavy data imports — bulk data coming in from external sources, constantly.
  • Multi-tenant — different organisations and roles, properly isolated.
  • It had to scale beyond a single monolith as usage grew.

What I built

Multi-role operations CRM

A full CRM with pipelines, statuses, tasks, and notifications — the operational backbone. Multi-role design serving staff, vendor, and customer roles, each with the right visibility and permissions. Multi-tenant SaaS so different organisations were properly isolated.

In-app Twilio VoIP calling

Twilio VoIP calling built into the app — staff could call leads and vendors directly from the CRM without switching tools. This was a real differentiator for an operations team: the call, the context, and the follow-up task all in one place.

Event-driven data imports

Event-driven Python microservices (RabbitMQ/Redis) handled the heavy data-import workload — bulk data from external sources ingested asynchronously, so the main app stayed responsive. This was the beginning of the move off the monolith.

Monolith → 12-factor distributed system

I converted the original Laravel monolith into a 12-factor distributed system — decoupling the import workers, the calling logic, and the core CRM. The kind of architecture work that pays off forever: each piece independently deployable and scalable.

React Native mobile

A React Native mobile app so field staff could work from anywhere — same workflows, optimised for mobile.

Why it matters

Cloint taught me that operations-heavy B2B software is won and lost on the operational details: the calling integration that actually works, the data imports that don’t time out, the multi-role permissions that are correct. It’s also where I first did serious distributed-systems work — the monolith-to-12-factor conversion.

My role

Software Engineer — full-stack build of the CRM, the React Native mobile app, the Twilio VoIP integration, the event-driven Python import microservices, and the monolith-to-distributed-system conversion.