Sagar Sonawane
All work

ClivoCRM

An AI CRM that asks before it acts

A multi-tenant sales CRM for small and mid-size teams. The web app is live; the Expo mobile app on the same Supabase backend is built and in pre-launch. I'm the primary engineer on the web app and backend, and the sole developer of the mobile app.

  • 76edge functions
  • ~80Postgres tables
  • 85AI tools
  • 23mobile screens
Live at crm.clivo.io

Mobile app: pre-launch

The problem

Small sales teams were running their pipeline on spreadsheets, WhatsApp and scattered email threads. The CRMs on the market were either too expensive or too complex for a team that size, and none of them offered an AI assistant the team could trust with its customer data. The bet behind ClivoCRM was a CRM where the AI does the admin work but never changes a record without the user's approval.

What I built

ClivoCRM has three parts: a web app that is live at crm.clivo.io, an Expo mobile app that is built and in pre-launch, and one Supabase backend that both of them share.

I'm the primary engineer on the web app and backend, and the sole developer of the mobile app.

ClivoCRM deals board with opportunity, proposal sent, negotiation and won columns; contact details blurred
The deal board, from a demo workspace. Contact details are blurred.Select any screenshot to see it full size.
ClivoCRM tasks list grouped by due dateClivoCRM team chat between colleagues inside the workspace

The AI assistant

The assistant works through 85 tools. It never writes SQL: it calls a typed query layer, so every request for data goes through code that already knows the shape of that data.

For questions about documents, it uses retrieval over the files a team uploads, with embeddings stored in pgvector behind an HNSW index.

Reading is immediate. Changing is not: every action that would change data waits for the user's approval. The approval is hash-checked, single-use and expires after 15 minutes.

  1. 1

    User asks

    A question or a request, in plain language.

  2. 2

    Model proposes

    The assistant picks a tool and prepares the change.

  3. 3

    User approves

    Hash-checked, single-use, expires after 15 minutes.

  4. 4

    Action runs

    Only the approved action, only once.

What happens before the assistant changes any data.

Read the deep dive: how the approval gate works →

ClivoCRM AI assistant listing the user's overdue tasks in answer to a plain-language question

Security between companies

Every company works in its own workspace. Isolation between workspaces, and the role scopes inside each one, are enforced by row-level security in Postgres itself rather than in application code.

A live check tests that two workspaces can't see each other's data.

The mobile app (pre-launch)

The Expo app runs on the same backend across 23 screens.

Edits made offline are queued and replayed when the phone reconnects, with conflict detection so an older edit can't silently overwrite a newer one. The deal board updates live, new versions ship as over-the-air updates, and Android native modules provide caller ID.

Integrations and billing

  • Gmail inbox
  • Google Calendar and Meet
  • Zoom
  • Slack
  • Notion
  • Meta Lead Ads
  • AI voice calls
  • Razorpay subscriptions with GST
ClivoCRM integrations settings with connectable services
ClivoCRM calendar with scheduled meetingsClivoCRM quote detail with line items, discount, tax and total

Architecture

Both apps talk to one Supabase project. Postgres holds the data and enforces row-level security, Realtime pushes changes to the clients, and edge functions connect to outside services.

ClivoCRM architectureTwo clients, the React web app and the Expo mobile app, connect to one Supabase project containing Postgres, row-level security, edge functions and Realtime. Edge functions connect to external services: OpenAI, Gmail, Google Calendar and Meet, Zoom, Slack, Notion, Meta Lead Ads, AI voice calls, Razorpay.Web appReactLiveMobile appExpoPre-launchSupabasePostgres~80 tablespgvector, HNSW indexEdge functions76 functionsCall outside servicesRow-level securityWorkspace isolationRole scopesRealtimeLive deal boardPushes changesExternal servicesOpenAIGmailZoomSlackNotionMeta Lead AdsAI voice callsRazorpayGoogle Calendar and Meet
Back to all work