Career · Strategy
From Freelancer to Agency Owner: Truths After Year One
My first year running an agency paid me less than freelancing did. The real lessons on revenue, hiring, founder dependency and cash flow that fixed it.
Anurag Verma
25 min read
Sponsored
I made more money as a freelancer than in my first year as an agency owner. Not slightly more. Noticeably 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 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 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 hiring disasters, client situations that nearly broke me, and the specific systems that eventually turned CODERCOPS from a chaotic mess into something that 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 sells a fantasy where freelancers get busy, hire people, and scale into a seven-figure agency almost automatically. The real path is messier. Hiring costs more time than it saves at first, margins shrink before they grow, and cash flow problems show up long before profit does.
The fantasy 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, it 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
- 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 close to my first months as an agency owner. I am not exaggerating.
Uncomfortable truth #1: revenue goes up, take-home pay goes down
Here is the part nobody talks about publicly. When I went from freelancer to agency, revenue went up a lot. My own take-home went down. And I was working much longer weeks than I ever had as a freelancer.
As a solo freelancer, the cost side of my business was almost nothing: a few tools and subscriptions, then taxes. Nearly everything else was mine. I was comfortable, I could choose my projects, and I worked a normal week.
A few months into running the agency, the cost side looked completely different:
| Line item | Freelancer | Agency |
|---|---|---|
| Salaries | None | The biggest cost by far |
| Tools and infrastructure | A few subscriptions | Many more seats and services |
| Accounting and legal | Occasional | A regular monthly cost |
| Marketing and sales | Mostly referrals | A real budget line |
| Taxes | On my income | On a much bigger business |
| Who gets paid last | Nobody, it is all mine | Me |
The reason is simple: agency economics are 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.
The “start your agency” content does not frame it this way. It shows you the revenue line and skips the expense lines.
When the math works
The math does eventually work, but only at a certain scale with healthy margins, and it depends a lot on how you structure retainer pricing versus one-off projects.
Work out your own breakeven before you jump. Add up what the agency will cost each month (salaries, tools, accounting, marketing, taxes) and ask what revenue it would take for your take-home to match what you earn freelancing today. Below that line, you are better off freelancing. Just above it, the agency is survivable but stressful. Well above it, you can pay yourself properly and still invest back into the business.
It took us well over a year to get to the point where things made sense. That is a long stretch 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 within weeks of 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 hours every day reviewing and fixing his code.
- Communication was almost non-existent. Clients would ask for updates and I would have to chase him 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 tiny agency fighting to survive, sometimes you need someone who will push through a critical client deadline.
I let him go soon after. It cost me 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 work style. Skills can be taught. Work habits and communication habits are deeply ingrained.
- I did not do a paid trial. I trusted the portfolio and the interview. Big mistake.
- I did not define the role clearly. I asked for a “full-stack developer,” but what I 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: a take-home project that mirrors real client work. Not leetcode. An actual feature build.
- Culture conversation: I ask about past team conflicts, how they handle unclear requirements, and what they do when they disagree with a client’s technical decision. There are no right answers. I am looking for self-awareness.
- Paid trial week: they work on a real project with the team, paid properly for the week. This is where bad fits show 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 the lack of it, tells you a lot.
Since we started hiring this way, the hires have worked out. The paid trial week is the most expensive step and by far the most valuable. It is also worth building a contractor network for overflow capacity before you need a full-time hire at all.
Uncomfortable truth #3: clients hired you, not your team
This one hit me hard a few months in.
I had just closed a solid project, a SaaS dashboard build for a fintech startup. Good budget, reasonable timeline. I assigned it to my developers and stepped back to focus on sales and new business.
A few 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 pulled a bait-and-switch by handing the project off.
This is the founder dependency problem, and it is the biggest bottleneck in early agency growth. The logic is simple:
- There is one of you
- You can only be hands-on for a handful of projects at a time
- So agency revenue is capped at what those few concurrent projects bring in
- So you cannot grow past that ceiling without solving the dependency
How I solved it (partially)
I say “partially” because I am still working on this. Here is what has helped:
Introduce the team before the project starts. On the kickoff call, I introduce the lead developer who will be the client’s primary contact. I explain my role (strategic oversight, architecture decisions, escalation point) and theirs (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, but goals, concerns and satisfaction. Clients get the founder access they want without me being in the trenches.
Build internal expertise that exceeds yours. I hired a developer who is 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. It shows founder-level involvement without me writing every line of code.
The founder dependency problem never fully goes away. But you can move it from “the agency cannot function without me” to “the agency runs fine, and clients appreciate it when I am involved.” Getting there is a matter of building operations and delegation systems on purpose instead of hoping it works itself out.
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.
A few months in, I realized I had not written production code in weeks. My days went to:
- Client calls
- Proposal writing
- Code reviews (every day)
- Hiring (always)
- Invoicing and accounting
- Internal team meetings
- Sales outreach (every day)
The identity crisis was real. I had been a developer for years, and “I build things” was core to who I was. Suddenly I was a manager, a salesperson and an accountant who sometimes 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 that just makes you bad at both.
Second, I carved out “maker time”: two mornings a week (Tuesday and Thursday) when I do actual development work. No calls, no Slack, no email. That is when I work on internal tools, contribute to client projects at the architecture level, or try 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 the code yourself.
Fourth, I got a hobby project. A side project with no clients and no deadlines where I can code for fun. It scratches the itch without competing with agency work.
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.
At an agency, scope creep becomes a political problem, because:
- You need repeat business. Tell a client “no” too often and 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 name.
- Small additions seem reasonable in isolation. “Can you also add a CSV export?” Sure, that is half a day. “Can you add email notifications?” Another day. “Can you make it work on mobile?” A few more days. Each request is reasonable on its own. Together, you have given away a week or more of unpaid work.
In my first year, scope creep cost us a lot of unbilled work. I tracked it: every “small favor,” every “quick addition,” every “while you are at it.” The total was far bigger than I expected.
The system that fixed it
I set up what I call the Scope Acknowledgment Protocol. It sounds bureaucratic, but it takes moments:
- The client requests something not in the original scope
- The 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?”
- The 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, many clients say yes. The rest usually 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.” It gives clients flexibility without a blank check. Our fuller playbook on protecting an agency from scope creep covers the contract language for this.
Uncomfortable truth #6: cash flow matters more than revenue
Revenue is a vanity metric. Cash flow is a survival metric. I learned this the hard way partway through the first year.
The scenario: we had three active projects and had already billed most of their value. Our bank balance was small. Payroll was due within the week, and it was bigger than what we had in the account.
How is that possible? Because:
- Client A (a US startup) had Net-30 terms and paid well after the due date.
- Client B (a European company) had Net-60 terms and still had not paid.
- Client C had approved the invoice, but their “finance department was processing it.”
We had plenty of money owed to us and almost none in the bank. 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 follow now
Rule 1: 50% upfront, no exceptions. Every project starts with a 50% deposit before any work begins. This is non-negotiable. A client who refuses this is a client who will have payment problems later.
Rule 2: milestone billing, not completion billing. Instead of 50% at the start and 50% at delivery, I bill 50% at the start, 25% at the midpoint and 25% at delivery. Cash keeps flowing through the project.
Rule 3: Net-15, not Net-30. We changed all our payment terms to Net-15. Some enterprise clients negotiate Net-30, but we never agree to Net-60. Ever.
Rule 4: keep a 3-month cash reserve. This took time to build, but the business account now holds enough to cover 3 months of operating expenses with no revenue coming in. It is the “sleep at night” fund.
Rule 5: send a payment reminder the day after the due date. Not a week later. The next day. A polite automated email: “Hi, invoice #X was due yesterday. Please let us know if there are any issues.” A late invoice is often just a forgotten one, and a next-day reminder puts it back on someone’s list before it drifts.
Rule 6: build in a buffer for international transfers. International payments can take several business days to arrive even after they are sent. Factor that into your cash flow projections. Our guide to agency client payment terms goes deeper on all of this, including the Net-30 vs. Net-15 conversation with enterprise clients.
What worked: the systems that saved us
After stumbling through most of the first year, I spent a concentrated few weeks rebuilding every system in the agency. Here is what we ended up with.
Pricing evolution: from hourly to value-based
My pricing went through three stages.
Stage 1: hourly billing
This is how I started. It is simple, transparent, and wrong for an agency.
Problems:
- Clients focus on hours, not outcomes
- You are penalized for being efficient (faster work means less revenue)
- Every minute is tracked and scrutinized
- Project costs are hard for clients to predict
Stage 2: project-based pricing
Better. We scoped projects and gave fixed prices. But we still estimated internally from hours, so it was hourly billing with a different label.
Problems:
- Scope creep risk (fixed price plus expanding scope is a disaster)
- We underestimated a lot of projects early on
- 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?”
An example: a client wanted a customer portal to replace a manual process that was eating many hours of their team’s time every week. We priced the portal against what that manual work cost them over a year, not against our hours. The price looked small next to the savings, the client was happy, and our margin was much better than hourly billing would have given us.
The three models compare like this:
| Pricing model | What the client is paying for | Main risk for the agency |
|---|---|---|
| Hourly | Your time | Efficiency lowers revenue |
| Project-based | A defined deliverable | Scope creep eats the margin |
| Value-based | The outcome and what it is worth | Needs a clear, agreed measure of value |
Same team. Same skills. Different framing, and much higher revenue per project. If you are weighing fixed-price against time-and-materials contracts, value-based pricing is a third option worth comparing against both.
The tool stack that 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 poor as a project management tool, because 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 short Loom video instead of writing a long message. Clients like it, and so does the team. Loom works especially well for code reviews and design feedback, where a quick walkthrough beats a wall of text.
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 matters for two reasons. It prevents knowledge silos, since anyone on the team can pick up context. And it protects us in disputes, since everything is written down. It also feeds directly into client handoff documentation at the end of a project.
Contracts: PandaDoc with specific clauses
We use PandaDoc for proposals and contracts, and our full technical proposal writing process is written up separately. Every contract includes these clauses:
- Scope definition, with an explicit “out of scope” section
- A change request process (any scope change needs written approval and adjusted pricing)
- Payment terms with late payment penalties (1.5% monthly interest after 15 days)
- An IP transfer clause (the client owns all work product after final payment, not before)
- A kill clause (either party can terminate with 14 days notice, and the 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 used it once, with a toxic client, and it saved me months of misery. Once engagements become repeatable, it is worth looking at productizing parts of your IP instead of rebuilding the same contract logic every time.
Client qualification: the questions we ask before saying yes
Not every project is worth taking. I learned this by taking projects that were not. 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 (a product launch, a funding milestone, a 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 gets a polite decline. Life is too short for projects with no success criteria, no budget and no decision-maker in the room. This list grew out of our discovery call process, which we run before any proposal goes out.
The power of saying no
Early on, 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 a pile of different technology stacks and time zones, with no specialization. The team could not build deep expertise because every project was different.
So I started saying no:
- No to projects outside our core stack. We are great at the tools we know best and average at everything else. Clients deserve specialists, not generalists pretending.
- No to budgets too small to cover our fixed overhead. Small projects carry the same overhead as big ones (kickoff calls, project setup, contracts) but bring in a fraction of the revenue.
- No to “urgent” projects without clear specs. Urgency plus ambiguity guarantees scope creep and unhappy clients.
- No to clients who disrespect the team. One prospect said on a sales call, “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 better, more profitable and far less stressful, and our average project value went up a lot once we got selective. We have since written a fuller playbook on when to fire a client for the cases where we said yes and should not have.
The moment it clicked
There is no single moment when an agency “starts working.” It is a gradual shift from chaos to order. But if I had to pick a turning point, it came near the end of the first year.
I was on a short personal trip to Jaipur. Not a work trip. My phone was mostly off, and I checked email once in the evening.
When I got back, I checked Linear. Projects were on track. One had a minor issue that the team had already resolved. Invoices had been sent. A new lead had been answered by the teammate who handles first conversations.
Nothing had broken. The agency had run for a couple of days without me touching anything.
That was when I realized it was not Anurag-with-helpers anymore. It was a team that could operate on its own. 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 of year one
Here is the honest summary of our first full year. Revenue was far higher than anything I had billed as a freelancer. Salaries were the biggest cost by a wide margin, followed by taxes, then tools, legal and accounting, and marketing. After all of that, my take-home was lower than in my last full year of freelancing, and I worked more hours to earn it.
The trajectory is what makes it worth it. 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. Revenue keeps growing with the same team, because we take on 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, separate from the business
- You have a clear specialization (not “I build websites” but “I build SaaS dashboards with real-time data”)
- You enjoy managing people and client relationships, not just coding
- You have a few 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 I wish I had tried first: the solo-plus model. You stay a freelancer, but you have one or two contractors you bring in for specific skills or overflow work. You do not hire full-time and you do not run payroll. You are still the main executor, but you can take on bigger projects.
Solo-plus gets you a good share of the agency upside with far less of the risk. If I could go back, I would have spent several months in solo-plus mode before going full agency. We break down this and the other paths in freelancing vs. agency vs. full-time, and there is current freelance rate data for anyone weighing the decision today.
What I would do differently
If I started CODERCOPS again from scratch:
- Stay in solo-plus mode for a while 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 spending months on hourly billing
- Build a bigger cash reserve before making the jump. I started with less than I needed
- 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 different, the problems are different, and the days are different.
It can be worth it. The financial upside is real, but it takes longer to show up than you expect. The impact you can have is greater, but only if you build the right team and systems. The freedom is eventually greater too, but in the first year, you have much less of it.
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 path is not glamorous. It can be deeply rewarding once you get through the ugly middle part.
I am past year one 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. I could not have said that back then.
Ready to build something together?
If you are looking for an agency that has been through the hard part and come out 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.
Frequently asked questions
- Do agency owners make more money than freelancers?
- Not at first. In this case, take-home pay as a solo freelancer was clearly higher than in the first year of running an agency, because salaries, tools, accounting and taxes all get paid before the owner does. The math only starts to favor the agency once revenue clears a breakeven you can work out from your own costs, and that can take more than a year.
- How do you avoid making a bad first hire at an agency?
- Add a paid trial week after the technical assessment and culture conversation, before any full-time offer. A real week of paid work on an actual project shows things a polished portfolio and interview hide, and a straightforward reference question ('would you hire them again?') catches much of the rest.
- Why do clients want the founder involved even after an agency has a team?
- Because early on they hired the founder's reputation and judgment, not an anonymous team. This 'founder dependency problem' caps how many projects an agency can run at once. Weekly founder check-ins, introducing the team clearly at kickoff, and documenting architecture decisions all reduce it, but it does not fully go away until the team's own reputation carries the work.
- How much does scope creep actually cost an agency?
- More than you think, because no single request looks big. In this agency's first year, small favors, quick additions and one-off requests added up to a large amount of unbilled work. The fix was a lightweight protocol: when a request falls outside scope, the developer flags it, the client gets a specific price and timeline impact, and work only proceeds after a yes.
- What payment terms protect an agency's cash flow?
- A 50% deposit before work begins, milestone billing (50/25/25 instead of 50/50), and Net-15 payment terms instead of Net-30 or Net-60. Combined with a 3-month cash reserve and payment reminders sent the day after an invoice is due, these rules prevent the receivables-rich, cash-poor situation that once forced a personal loan to cover payroll.
Sponsored
Sponsored
Discussion
Join the conversation.
Comments are powered by GitHub Discussions. Sign in with your GitHub account to leave a comment.
Sponsored