PROJECT / PRODUCT
FreelanceCRM
CONSULTING WORKFLOW APP
A simple CRM I built for my own consulting work - clients, leads, opportunities, tasks, time, and invoices in one place, without fighting Salesforce-scale software.
- Status
- Private beta
- Project type
- Workflow application
- Role
- Founder & developer
WHY I BUILT IT
I built FreelanceCRM for my own consulting practice. I still needed to track prospects, client work, tasks, time, and invoices - I did not need an enterprise CRM I would spend more time configuring than using. The product is that loop in one application, shaped around how I actually run the work.
THE WORKFLOW
Lead to invoice, without switching tools.
The application follows the freelance cycle instead of a generic sales cloud. A lead can become an opportunity. Won work lives on a client record. Tasks and time sit on that work. Invoices can pull from logged time. The point is one path, not six disconnected tools.
- 01Lead
- 02Opportunity
- 03Work
- 04Time
- 05Invoice
ONE PLACE FOR THE WORK
The workspace is the operating loop.
The signed-in app is a workspace, not a brochure. I grouped it around winning the work, doing the work, and getting paid - the parts of consulting I open every day - rather than exposing every object on the home screen.
WIN THE WORK
- Leads and follow-up
- Opportunity pipeline - list and Kanban
- Convert a lead into an active client
DO THE WORK
- Client workspaces
- Tasks, including recurrence
- A daily command center for what is due
- Inbox for quick capture
- Time tracking
- Documents and notes
GET PAID
- Invoices, including time that is ready to bill
- Expenses with receipts
- Revenue insights
AUTOMATION BUILT IN
The next action can leave the app.
Open tasks can arrive as a daily summary email, so what is due is not trapped behind a login. Inbound mail can be logged onto the record instead of living only in a personal inbox. Recurring invoice drafts can appear when a cycle is due.
- 01Daily task summary email - opt-in, sent through Resend
- 02Inbound email logging onto the matching record
- 03Recurring invoice drafts when a cycle is due
THE SYSTEM UNDERNEATH
A real application, with a waitlist in front.
Each account is its own tenant. Authentication and data live in Supabase. Postgres rows are scoped to the signed-in user with row-level security. The public site is a waitlist; the workspace is behind login. Outbound mail uses Resend. The app runs on Vercel, including the daily digest job.
NEXT.JS · TYPESCRIPT · SUPABASE · RESEND · VERCEL
ACCOUNT / DATA
- Supabase Auth
- Postgres with row-level security
- File storage for documents
MAIL / HOSTING
- Resend for the daily digest
- Scheduled job on Vercel
- Next.js App Router
WHERE IT LANDED
I use FreelanceCRM to run my own consulting work.
Leads, opportunities, client work, tasks, time, and invoices live in one application, shaped around that loop instead of an enterprise CRM.
The waitlist is public. The workspace is private beta.
MORE WORK
01WEB APP
Will It Flow
A rental-analysis web app I built and run - live rates and rent data so investors can evaluate a deal in one place, plus market pages that bring in organic traffic.
VIEW PROJECT →02WEBSITE
Timeless Touches
A redesign and enhancement of an Eau Claire event-decor site that was already live, plus local SEO so people nearby can find it.
VIEW PROJECT →
Dupey Consulting

