I made more money as a freelancer than in my first year as an agency owner. Not slightly more -- 40% more. Nobody tells you that part.
Every "how I started my agency" story online goes something like: I was freelancing, I got too busy, I hired people, and now I run a seven-figure agency from a beach. That is not what happened to me. What happened to me was closer to: I was freelancing, I got too ambitious, I hired people, I started losing sleep, my bank account got weird, and I spent six months wondering if I had made the biggest mistake of my career.
This post is the story I wish someone had written for me before I made the jump. I am going to share numbers, hiring disasters, client situations that nearly broke me, and the specific systems that eventually turned CODERCOPS from a chaotic mess into something that actually works. If you are a freelancer thinking about starting an agency, read this first. It might save you a year of pain.
The Romanticism Problem
The internet has a freelancer-to-agency pipeline fantasy. It goes like this:
- You are good at what you do
- You get more clients than you can handle
- You hire people
- You scale
- Profit
In reality, the journey looks more like:
- You are good at what you do
- You get more clients than you can handle
- You hire someone and spend more time managing them than if you had done the work yourself
- Your profit margin craters
- Two clients leave because the work quality dropped
- You panic-hire another person to fix the mess
- Payroll is due and your biggest client has not paid their invoice
- You question every life choice you have ever made
That second version is closer to my first eight months. And I am not exaggerating.
Uncomfortable Truth #1: Revenue Goes Up, Take-Home Pay Goes Down
Here is the math nobody talks about publicly. I will share approximate ranges because I think the transparency matters more than my ego.
As a solo freelancer (last full year):
| Line Item | Monthly Amount |
|---|---|
| Revenue | $12,000 - $15,000 |
| Tools & subscriptions | $200 |
| Taxes (estimated) | $3,000 - $3,750 |
| Take-home | $8,800 - $11,050 |
Not bad. I was comfortable. I could choose my projects. I worked maybe 35-40 hours a week.
Agency, month 6:
| Line Item | Monthly Amount |
|---|---|
| Revenue | $28,000 - $32,000 |
| Salaries (3 people) | $9,000 - $12,000 |
| Tools & infrastructure | $800 |
| Accounting & legal | $400 |
| Marketing & sales | $500 |
| Taxes | $4,200 - $4,800 |
| Take-home | $5,500 - $7,500 |
Read that again. Revenue more than doubled. My take-home dropped by 30-40%. And I was working 55-60 hours a week instead of 35-40.
The reason is simple: agency economics are fundamentally different from freelancer economics. As a freelancer, almost everything you earn is yours. As an agency owner, you are the last person to get paid. Salaries come first. Tools come second. The government comes third. You get what is left.
Nobody frames it this way in the "start your agency" content. They show you the revenue line and conveniently forget about the expense lines.
When the Math Actually Works
The math does eventually work -- but only if you hit a certain scale and maintain healthy margins. Here is the rough breakeven I figured out:
- Below $30K/month revenue: You are probably better off freelancing
- $30K-$50K/month: Survivable but stressful, you are paying yourself less than you could freelancing
- $50K-$80K/month: Things start making sense, you can pay yourself well AND invest back
- $80K+ /month: Now you have a real business
We did not hit the "things start making sense" mark until month 14. That is 14 months of earning less than I could have as a solo freelancer.
Uncomfortable Truth #2: Your First Hire Will Be Wrong
I hired a full-stack developer three weeks into starting the agency. His portfolio was great. His interview was solid. He seemed motivated.
Within the first month, I noticed the problems:
- Code quality was inconsistent. Great when he was interested in the project. Sloppy when he was not. I was spending 3-4 hours per day reviewing and fixing his code.
- Communication was almost non-existent. Clients would ask for updates and I would have to hunt him down for a status report. He saw communication as overhead, not as part of the job.
- He was a 9-to-5 thinker in a startup environment. There is nothing wrong with 9-to-5 -- but when you are a four-person agency fighting for survival, sometimes you need someone who will go the extra mile during a critical client deadline.
I let him go after two months. It cost me roughly $6,000 in salary for work I mostly had to redo, plus the time I spent managing him instead of doing billable work.
What I Learned About Hiring
The mistake was not that I hired the wrong person. The mistake was my hiring process:
- I hired for skills, not for work style. Skills can be taught. Work ethic and communication habits are deeply ingrained.
- I did not do a paid trial. I just trusted the portfolio and the interview. Big mistake.
- I did not define the role clearly. I wanted a "full-stack developer" but what I actually needed was "a senior developer who can own client relationships and work independently with minimal oversight."
My hiring process now looks completely different:
- Technical assessment (2-3 hours): A take-home project that mirrors real client work. Not leetcode. An actual feature build.
- Culture conversation (1 hour): I ask about past team conflicts, how they handle unclear requirements, what they do when they disagree with a client's technical decision. No right answers -- I am looking for self-awareness.
- Paid trial week ($500-$800): They work on a real project with the team. This is where 80% of bad hires reveal themselves. You cannot fake a week of real work.
- Reference check: I call their previous manager or client and ask one question: "Would you hire them again?" The hesitation (or lack of it) tells you everything.
Since implementing this process, our retention rate has been 100% over the last 10 months. Every single hire has worked out. The paid trial week is the most expensive step and the most valuable by far.
Uncomfortable Truth #3: Clients Hired YOU, Not Your Team
This one hit me like a truck around month four.
I had just closed a solid project -- a SaaS dashboard build for a fintech startup. Good budget, reasonable timeline. I assigned it to my two developers and stepped back to focus on sales and new business.
Three weeks later, the client emailed me directly: "Anurag, the team is doing okay but we expected you to be hands-on. That is what we signed up for."
He was right. He had not hired CODERCOPS. He had hired Anurag Verma. And I had basically pulled a bait-and-switch by handing the project off.
This is the founder dependency problem, and it is the single biggest bottleneck in agency growth. The math is simple:
- There is one of you
- You can only be hands-on for maybe 2-3 projects at a time
- So your agency revenue is capped at what 2-3 concurrent projects generate
- Which means you cannot grow beyond that ceiling without solving the dependency
How I Solved It (Partially)
I say "partially" because I am still working on this. But here is what has helped:
Introduce the team before the project starts. During the kickoff call, I introduce the lead developer who will be their primary contact. I explain my role (strategic oversight, architecture decisions, escalation point) and their role (daily execution, communication, code delivery). Setting expectations upfront avoids the "where is Anurag?" email later.
Weekly founder check-ins. I do a 15-minute call with every active client, every week. Not to discuss code -- to discuss goals, concerns, and satisfaction. This gives clients the "founder access" they want without me being in the trenches.
Build internal expertise that exceeds yours. I hired a developer who is genuinely better than me at frontend animation and interactive design. When clients see his work, they stop caring whether I wrote the code. They care about the outcome.
Document your thinking. I write a one-page architecture document for every project: why we chose this stack, how the system will scale, what the tradeoffs are. This demonstrates founder-level involvement without me writing every line of code.
The founder dependency problem never fully goes away. But you can reduce it from "the agency cannot function without me" to "the agency runs fine, but clients appreciate when I am involved."
Uncomfortable Truth #4: You Stop Coding
I did not start an agency because I wanted to send emails, review proposals, and sit in meetings. I started it because I loved building things and wanted to build bigger things with a team.
Somewhere around month three, I realized I had not written production code in two weeks. I was spending my days on:
- Client calls (4-5 per week)
- Proposal writing (2-3 per week)
- Code reviews (daily, 1-2 hours)
- Hiring (ongoing)
- Invoicing and accounting (weekly)
- Internal team meetings (3 per week)
- Sales outreach (daily)
The identity crisis was real. I had been a developer for years. "I build things" was core to who I was. Suddenly I was a manager, a salesperson, and an accountant who occasionally looked at code.
What I Did About It
First, I accepted it. Running an agency means your job is the agency, not the code. Fighting this reality just makes you bad at both.
Second, I carved out "maker time" -- two mornings per week (Tuesday and Thursday, 7 AM to noon) where I do actual development work. No calls, no Slack, no emails. This is when I work on internal tools, contribute to client projects at the architecture level, or explore new technologies.
Third, I redefined what "building" means. Building a team is building. Building systems is building. Building client relationships is building. The artifact is different, but the creative satisfaction can be similar -- once you get past the ego of needing to write code specifically.
Fourth, I got a hobby project. A side project with zero clients and zero deadlines where I can just code for fun. It scratches the itch without conflicting with agency responsibilities.
Honestly? I still miss coding full-time some days. But I have made peace with the tradeoff.
Uncomfortable Truth #5: Scope Creep Becomes YOUR Problem
As a freelancer, scope creep was manageable. "That is not in the scope. I can do it for $X more." Simple.
As an agency, scope creep becomes a political problem. Because:
- You need repeat business. Telling a client "no" too many times means they will not come back.
- Your team's reputation is at stake. If a developer says "that is not in scope" and the client feels nickel-and-dimed, the agency gets a bad reputation.
- Small scope additions seem reasonable in isolation. "Can you also add a CSV export?" Sure, that is 4 hours. "Can you add email notifications?" That is 8 hours. "Can you make it work on mobile?" That is 20 hours. Individually, each request is reasonable. Collectively, you have just added 32 hours of unpaid work.
In my first year, scope creep cost us roughly $18,000 in unbilled work. I tracked it. Every "small favor," every "quick addition," every "while you are at it." Eighteen thousand dollars.
The System That Fixed It
I implemented what I call the Scope Acknowledgment Protocol. It sounds bureaucratic but it takes 30 seconds:
- Client requests something not in the original scope
- Developer flags it immediately (they are trained to spot it)
- I send a short message: "Great idea. That is outside the current scope. We can add it for $X, which adds Y days to the timeline. Want to go ahead?"
- Client says yes or no
- If yes, we update the contract with a one-line amendment
The key insight: clients do not mind paying for extra work. They mind being surprised by it. When you acknowledge the scope change explicitly and give a clear price, 70% of clients say yes. The other 30% say "let us save it for phase two" -- which is also fine.
We also started including a "scope change budget" in every proposal. We tell clients upfront: "We have allocated 10% of the project budget for minor scope adjustments. Anything beyond that is billed separately." This gives clients flexibility without giving them a blank check.
Uncomfortable Truth #6: Cash Flow Is More Important Than Revenue
Revenue is a vanity metric. Cash flow is a survival metric. I learned this the hard way in month five.
Here is the scenario: We had three active projects. Total value: $45,000. We had billed $30,000 of that. Our bank balance: $4,200. Payroll due in six days: $9,000.
How is that possible? Because:
- Client A (US startup) had a Net-30 payment term. They paid on day 45.
- Client B (European company) had a Net-60 payment term. They were on day 52.
- Client C had approved the invoice but their "finance department was processing it."
We had $30,000 in receivables and $4,200 in cash. I had to call my father and ask for a short-term personal loan to make payroll. It was the most embarrassing moment of my professional life.
The Cash Flow Rules I Now Follow
Rule 1: 50% upfront, no exceptions. Every project starts with a 50% deposit before any work begins. This is non-negotiable. Any client who refuses this is a client who will have payment problems later.
Rule 2: Milestone-based billing, not completion-based. Instead of billing 50% at start and 50% at delivery, I bill: 50% at start, 25% at midpoint, 25% at delivery. This keeps cash flowing throughout the project.
Rule 3: Net-15, not Net-30. We changed all our payment terms to Net-15. Some enterprise clients negotiate to Net-30, but we never agree to Net-60. Ever.
Rule 4: Maintain a 3-month cash reserve. This took time to build, but we now keep enough cash in the business account to cover 3 months of operating expenses even if zero revenue comes in. This is the "sleep at night" fund.
Rule 5: Send payment reminders on day 1 after the due date. Not day 7. Not day 14. Day 1. A polite automated email: "Hi, invoice #X was due yesterday. Please let us know if there are any issues." Early reminders reduce late payments by roughly 40% in our experience.
Rule 6: International wire transfer buffer. For international clients, payments can take 3-7 business days to arrive even after they have been sent. Factor this into your cash flow projections.
What Actually Worked: The Systems That Saved Us
After stumbling through the first 6-8 months, I spent a concentrated three weeks rebuilding every system in the agency. Here is what we ended up with.
Pricing Evolution: From Hourly to Value-Based
My pricing journey went through three stages:
Stage 1: Hourly billing ($60-$80/hour)
This is how I started. It is simple, transparent, and completely wrong for an agency.
Problems:
- Clients focus on hours, not outcomes
- You are penalized for being efficient (faster work = less revenue)
- Every minute is tracked and scrutinized
- Hard to predict project costs for clients
Stage 2: Project-based pricing
Better. We scoped projects and gave fixed prices. But we still internally estimated based on hours, so we were really just doing hourly billing with a different label.
Problems:
- Scope creep risk (fixed price + expanding scope = disaster)
- We underestimated 60% of projects in the first six months
- No upside for delivering more value
Stage 3: Value-based pricing (where we are now)
This changed everything. Instead of asking "how many hours will this take?", we ask "what is this worth to the client?"
Example: A client wanted a customer portal that would replace a manual process taking their team 20 hours per week. At $35/hour average employee cost, that is $36,400/year in savings. We priced the portal at $18,000 -- a 6-month payback period. The client was happy. We were happy. Our margin was 65% instead of the 40% we would have gotten with hourly billing.
The impact on revenue:
| Pricing Model | Average Project Value | Average Margin |
|---|---|---|
| Hourly | $5,000 - $8,000 | 35-40% |
| Project-based | $8,000 - $15,000 | 40-45% |
| Value-based | $15,000 - $35,000 | 55-65% |
Same team. Same skills. Different framing. Revenue per project nearly tripled.
The Tool Stack That Actually Works
I tried a lot of tools. Most were overkill. Here is what we settled on:
Project Management: Linear
We used Trello, then Asana, then Notion for project management. All three failed for different reasons. Trello is too simple for multi-project tracking. Asana is too bloated. Notion is great for documentation but terrible as a project management tool -- tasks get lost in pages.
Linear is the one that stuck. It is fast, opinionated, and designed for software teams. Every client project is a Linear project. Every task has an owner, a priority, and a due date. The cycle view gives us a natural sprint rhythm.
Communication: Slack + Loom
Slack for quick questions. Loom for anything that takes more than two sentences to explain. I record a 3-minute Loom video instead of writing a 500-word message. Clients love it. The team loves it. Miscommunication dropped by roughly 70% when we started using Loom for code reviews and design feedback.
Documentation: Notion
Every project gets a Notion workspace with:
- Project brief
- Technical architecture doc
- Meeting notes
- Decision log (why we chose X over Y)
- Client feedback tracker
This documentation is critical for two reasons: it prevents knowledge silos (anyone on the team can pick up context) and it protects us in disputes (everything is documented).
Contracts: PandaDoc with specific clauses
We use PandaDoc for proposals and contracts. Every contract includes these non-negotiable clauses:
- Scope definition with explicit "out of scope" section
- Change request process (any scope changes need written approval and adjusted pricing)
- Payment terms with late payment penalties (1.5% monthly interest after 15 days)
- IP transfer clause (client owns all work product after final payment -- not before)
- Kill clause (either party can terminate with 14 days notice; client pays for work completed)
- Limitation of liability (capped at the total project value)
The kill clause is the most important. It gives both sides an exit without a legal battle. I have exercised it once (toxic client, month eight) and it saved me months of misery.
Client Qualification: The Questions We Ask Before Saying Yes
Not every project is worth taking. I learned this by taking projects that were not worth taking. Now, before we send a proposal, I ask:
- "What does success look like for this project?" If they cannot define it, the project will have scope problems.
- "What is your budget range?" If they say "we do not have a budget" or "we want to see what it costs first," that is a red flag. Every serious buyer has a range.
- "Who is the decision-maker?" If I am talking to someone who needs to "run it by their boss," I ask to include the decision-maker in the next call.
- "What is your timeline and why?" Arbitrary deadlines cause bad work. Real deadlines (product launch, funding milestone, regulatory requirement) are fine.
- "Have you worked with an agency or freelancer before?" First-time buyers need more hand-holding and education. Not a dealbreaker, but it changes how we manage the relationship.
- "Why are you not building this in-house?" The answer tells you about their team, their constraints, and whether they see you as a partner or a code monkey.
Any project that fails questions 1, 2, or 3 is a polite decline. Life is too short for projects with no clear success criteria, no budget, and no decision-maker in the room.
The Power of Saying No
In my first six months, I said yes to everything. A WordPress site for a restaurant? Sure. A mobile app for a fitness startup? Absolutely. A blockchain project for a crypto bro? Why not.
The result was chaos. We were stretched across five different technology stacks, three time zones, and zero specialization. Our team could not build deep expertise because every project was different.
Starting in month seven, I started saying no:
- No to projects outside our core stack (Astro, Next.js, Supabase, Claude API). We are great at these. We are average at everything else. Clients deserve specialists, not generalists pretending.
- No to clients with budgets under $10,000. Small projects have the same overhead as big projects (kickoff calls, project setup, contracts) but generate a fraction of the revenue.
- No to "urgent" projects without clear specs. Urgency + ambiguity = guaranteed scope creep and unhappy clients.
- No to clients who disrespect the team. One potential client, during a sales call, said "I just need some Indian developers, the cheaper the better." We politely declined. CODERCOPS is a team of skilled professionals, not a body shop.
Saying no was terrifying at first. It felt like turning away revenue. But the projects we took instead were higher quality, higher margin, and far less stressful. Our average project value went from $8,000 to $22,000 after we started being selective.
The Moment It Clicked
There is no single moment where an agency "starts working." It is a gradual shift from chaos to order. But if I had to pinpoint a turning point, it was in month 11.
I was on a two-day trip to Jaipur -- not a work trip, a personal one. My phone was mostly off. I checked email once in the evening.
When I got back, I checked Linear. Three projects were on track. One had a minor issue that the team had already resolved. Invoices had been sent. A new lead had been responded to by my teammate who handles initial conversations.
Nothing had broken. The agency had functioned for 48 hours without me touching anything.
That was the moment I realized it was not just Anurag-with-helpers anymore. It was an actual team that could operate independently. That transition -- from "founder does everything" to "team handles operations" -- is the real milestone. Not the first client. Not the first hire. The first time the business runs without you.
The Financial Reality: Year One Numbers
I believe in transparency, so here are the approximate ranges for our first full year:
| Metric | Amount |
|---|---|
| Total revenue | $280,000 - $320,000 |
| Total salaries paid | $110,000 - $130,000 |
| Tools, infrastructure, and subscriptions | $9,500 |
| Legal, accounting, and compliance | $4,800 |
| Marketing and sales | $6,200 |
| Taxes | $42,000 - $48,000 |
| My take-home | $82,000 - $95,000 |
| Equivalent hourly rate | $38 - $44/hour |
For comparison, my last full year of freelancing, I earned roughly $140,000 and worked fewer hours.
The agency take-home is lower, but the trajectory is different. As a freelancer, my income was capped by my time. I could not earn more without working more hours. The agency has no such cap. Year two is tracking at 40-50% higher revenue with the same team size, because we are doing higher-value projects and our processes are more efficient.
The agency is an investment. Year one is the painful part. If you are not prepared for that financially and emotionally, do not make the jump.
Advice for Freelancers Considering the Jump
When to Start an Agency
- You are consistently turning away work (not occasionally -- consistently, every month)
- You have at least 6 months of personal living expenses saved up, separate from the business
- You have a clear specialization (not "I build websites" but "I build SaaS dashboards with real-time data using Supabase and Astro")
- You genuinely enjoy managing people and client relationships, not just coding
- You have at least 2-3 existing clients who would follow you to an agency model
When to Stay Solo
- You love coding and would be miserable not doing it daily
- You do not want to manage people
- You are happy with your income and work-life balance
- You do not have a financial buffer
- You want more freedom, not less (agencies reduce freedom in the short term)
The Hybrid Model Nobody Talks About
There is a middle ground that I wish I had explored first: the solo-plus model. You stay a freelancer but you have 1-2 contractors you bring in for specific skills or overflow work. You do not hire full-time. You do not have payroll. You are still the primary executor but you can take on bigger projects.
The solo-plus model gives you 70% of the agency upside with 30% of the risk. If I could go back, I would have spent 6-12 months in solo-plus mode before going full agency.
What I Would Do Differently
If I started CODERCOPS again from scratch:
- Stay in solo-plus mode for 6 months before hiring anyone full-time
- Hire a project coordinator before a developer -- someone to handle communication, scheduling, and invoicing so I could focus on billable work
- Start with value-based pricing from day one instead of wasting months on hourly billing
- Build the cash reserve before making the jump -- I started with 3 months of expenses and needed 6
- Specialize immediately instead of trying to be a "full-service" agency
- Set up the legal and financial infrastructure first -- contracts, business entity, accounting system, payment terms -- before taking the first client
The Bottom Line
Going from freelancer to agency owner is not a promotion. It is a career change. You go from being a skilled craftsperson to being a business operator. The skills are completely different, the challenges are completely different, and the daily experience is completely different.
It can be worth it. The financial upside is real -- but it takes 12-18 months to materialize. The impact you can have is greater -- but only if you build the right team and systems. The freedom is eventually more -- but in the first year, it is considerably less.
If you are considering it, go in with realistic expectations, a financial buffer, and a willingness to be bad at a lot of new things for a while. The freelancer-to-agency journey is not glamorous. But it can be deeply rewarding once you get through the ugly middle part.
I am 18 months in now. The ugly middle part is (mostly) behind us. CODERCOPS is not perfect, but it is real, it is growing, and it runs without me being the single point of failure. That is more than I could say 12 months ago.
Ready to Build Something Together?
If you are looking for an agency that has been through the trenches and come out the other side with working systems and hard-earned lessons, let's talk. We bring founder-level attention to every project because we remember what it was like when nobody cared about our work.
And if you are a freelancer thinking about starting your own agency, feel free to reach out. I am always happy to share what I have learned -- including the mistakes. Especially the mistakes.
Check out more of our thinking on the CODERCOPS blog -- where we write about the real side of building software and running a tech business.
Comments