Umar Rajput.
Custom Web Application2026

An operating system for web and marketing agencies

Clientdesk: from the first form submission to the paid invoice, in one multi-tenant system

Agencies run on a CRM for leads, a project tool for delivery, a spreadsheet for retainers and an invoicing app for billing, and nothing joins them up. Clientdesk follows a client from the website form that created the lead through the pipeline, the project, the approvals and the invoice.

You work directly with the developer who built it. No handoffs.

Product
Clientdesk
Built for
Web, SEO and marketing agencies
Type
Multi-tenant SaaS
Year
2026
  • Next.js and TypeScript
  • PostgreSQL and Prisma
  • Multi-tenant SaaS
  • Visual automation builder
  • Client portal
  • 30+Modules, from leads and pipeline to invoices and reports
  • 1Record per client, from first enquiry to final payment
  • MultiTenant: every agency gets its own isolated workspace
Clientdesk dashboard with leads, pipeline value, active clients, retainers, tasks and invoices
Overview

The context

A small agency sells websites, SEO and ads to many clients at once. Leads arrive from forms on several websites, deals move through a pipeline, won clients turn into projects or monthly retainers, work goes out for approval and invoices go out at the end of the month.

Most agencies stitch this together from four or five tools. The lead lives in one, the project in another, the retainer in a spreadsheet and the invoice somewhere else, so nobody can answer a simple question like which client is profitable or which lead went cold.

The problem

What I was solving

  • Leads come in from many websites and forms, and each needs to land in the right place with its source attached.
  • A lead not contacted in the first hour is usually lost, so follow-ups cannot depend on someone remembering.
  • Agencies sell both one-off projects and monthly retainers, and the system has to bill and report on both.
  • Clients want to see progress and approve work without being given access to internal notes.
  • It had to work for more than one agency, with each agency’s data completely separate.
The approach

How I built it

  • Made the organisation the root of every record, so each agency gets an isolated workspace with its own users, roles, websites, leads and billing.
  • Gave every website its own forms with a webhook token, so a submission from any client site arrives as a lead with its form, page and source attached.
  • Added configurable lead scoring, so phone provided, budget and proposal requested raise a lead up the list automatically.
  • Built a visual automation builder: when a lead arrives, assign it, add it to a pipeline, send an email, create a follow-up; when nobody has replied in 30 minutes, notify the manager.
  • Carried the won deal into a client, a project or a retainer, with tasks, milestones, deliverables and approvals hanging off it.
  • Gave clients their own portal for progress, files, approvals, quotations and invoices, without any of the agency’s internal notes.
  • Closed the loop with quotations, invoices, payments and a finance dashboard, so revenue per client and per service is a report, not a spreadsheet.
What it does

The system

  • FormsWebsite forms and webhooks into leads
  • PipelineDeals, proposals and lead scoring
  • PortalClient approvals, files and invoices
  • AutoVisual automation builder

Clientdesk running on demo data for a sample agency: dashboard, sales pipeline, leads, automations and projects. Names, figures and contacts are sample data, not real clients.

Takeaway

Why one system

Every hand-off between tools is a place where a lead, a task or an invoice goes missing. Putting the whole journey on one record is what lets an agency see which leads convert, which clients pay and where its team’s time actually goes.

It is also the same lead flow I set up for clients: a website form, a CRM and an instant alert, with the follow-up handled by the system rather than by memory.

Start a project

Want something like Clientdesk built?

Straight answer on whether I can help, and a fixed quote if it is a fit.