The Beginning: From a Bedroom Desk in Hanoi

Every agency starts somewhere. For us, it was a small bedroom in Hanoi, a single laptop, and a relentless drive to build things on the web. That was 2018. Today, we’re a team of 16 people delivering over 175 WordPress projects for clients across Europe, North America, and Southeast Asia.

This isn’t a story about overnight success — it’s about the messy, unglamorous reality of bootstrapping a technical services business in a market where the average monthly salary for a junior developer is around $400–$600 USD. It’s about what worked, what failed spectacularly, and what I’d do differently if I had to start over tomorrow.

If you’re running a WordPress agency, freelancing full-time, or thinking about building a team in a emerging tech hub, this one’s for you.

“The best time to start building a team was two years ago. The second best time is today. But you need to be ready for the cost — not just in money, but in everything else.”

— Khoi Pro, Founder of CODE TOT

Phase 1: The Freelancer Years (2018–2020)

Like many developers in Vietnam, I started with freelance platforms. The work was inconsistent. Some months I’d earn $3,000 — a fortune locally — others I’d scrape by with $500 while chasing late-paying clients across time zones.

The breakthrough came when I stopped competing on price and started specializing in WordPress performance optimization. Instead of pitching “I’ll build your website for cheap,” I started showing PageSpeed audits and saying “I’ll make your website fast.”

That shift changed everything. Clients stopped asking about hourly rates and started asking about project budgets. The perceived value went from “cheap Vietnamese freelancer” to “specialized WordPress performance engineer.”

The numbers that mattered

Metric2018 (Freelancer)2020 (Starting team)2025 (16-person)
Monthly revenue$800–$3,000$5,000–$8,000$40,000+
Team size1316
Active projects3–58–1220+
Avg. project value$500–$2,000$2,000–$5,000$5,000–$25,000
Client retention~20% (one-off)~40%~70% (with retainers)

“The biggest mistake freelancers make is thinking scaling means doing more of the same work faster. It doesn’t. Scaling means building systems that deliver value without you in every meeting, every code review, and every decision.”

— Paul Jarvis, Company of One

Phase 2: The First Hires (2020–2021)

Making the leap from solo freelancer to employer is terrifying. In Vietnam, labor laws require formal contracts, social insurance contributions (roughly 21.5% of salary on top of base pay), and paid leave. The math doesn’t work unless you have predictable pipeline.

My first hire was a junior developer — freshly graduated from a Hanoi university with solid HTML/CSS skills and basic PHP knowledge. I paid them $400/month. Within six months, they were handling client projects independently.

The second hire was a project manager. This was the single most important decision I made. Having someone to handle client communication, timelines, and scope management freed me to focus entirely on technical architecture and business development.

What I learned about hiring in Vietnam

  • Over-invest in English communication. Technical skills can be taught. English fluency is a multi-year investment that determines whether you can work with international clients.
  • Hire for ownership, not hours. A developer who takes ownership of a project will outperform a more skilled developer who needs constant direction.
  • Build a learning culture. We set aside 4 hours per week for structured learning — WordPress coding standards, modern JavaScript, performance audits. This investment paid back 10x.
  • Don’t hire friends. It’s tempting when you’re small, but mixing friendship with employment creates problems that are harder to resolve than hiring strangers.

Phase 3: Productizing Services (2021–2023)

This was the inflection point. Instead of selling custom-built everything, we created defined service packages:

  • WordPress Performance Audit — Fixed-scope, fixed-price audit with a detailed report and recommendations
  • WordPress Maintenance Retainer — Monthly updates, backups, security monitoring, and performance checks
  • Custom WordPress Development — ACF blocks, custom post types, and integration work (still custom, but with defined scopes)

The retainer model was the game-changer. A $500–$1,500/month retainer from 10 clients provides more stability than a $15,000 project that takes 3 months to deliver. Recurring revenue allowed us to make long-term commitments — better office space, full-time employees, better hardware.

We also made a strategic decision to move away from page builders entirely. Every project since 2022 uses ACF Pro with custom Gutenberg blocks. This gave us cleaner code, better performance, and more predictable development timelines.

Phase 4: Systems & Structure (2023–2025)

At 16 people, the challenges shift from “how do we get work” to “how do we manage work without chaos.” We invested heavily in:

Project Management

We standardized on a single process: discovery → proposal → development → staging review → launch → handover. Every project follows the same flow. Templates exist for every stage. This reduced our revision cycles by roughly 40%.

Technical Standards

We built an internal development playbook covering:

  • WordPress coding standards (WPCS) and PHPCS configuration
  • ACF block registration patterns (using acf_register_block_type())
  • Performance budgets (under 200KB CSS, under 300KB JS, LCP under 2.5s)
  • Deployment workflow via RunCloud staging → production

Client Communication

// Our weekly client update template
1. What we completed this week
2. What we're working on next
3. Blockers (if any)
4. Decisions needed from client
5. Next scheduled check-in

This simple structure eliminated the “where are we at?” meetings that waste everyone’s time.

The Hard Lessons

Not everything worked. Here are the failures that cost us the most:

1. We hired too fast in 2022

When demand spiked post-COVID, we onboarded 5 people in 3 months. The result: inconsistent quality, cultural friction, and two expensive departures within 6 months. We now hire one person at a time with a 3-month probation period and structured mentorship.

2. We underpriced retainers for years

Our first maintenance retainers were $200/month. The math didn’t work. Hosting support, emergency fixes, and after-hours calls ate all the margin. We now charge $500–$1,500/month based on site complexity, using a simple scoring system:

FactorWeightScoring
Number of plugins30%<20 = 1, 20–40 = 2, >40 = 3
Traffic volume25%<10K/month = 1, 10–100K = 2, >100K = 3
Custom functionality25%Simple = 1, Moderate = 2, Complex = 3
SLA required20%48h = 1, 24h = 2, 4h = 3

3. We neglected marketing for too long

Through 2023, 100% of our leads came from referrals. That’s great until it’s not. When referral flow slowed, we had no pipeline. We started khoipro.com as a content marketing engine — writing about WordPress performance, security, and agency operations. It took 6 months to see results, but it now generates consistent inbound leads.

What’s Next: The Code Tot Vision

Today, CODE TOT operates as a structured agency with distinct departments:

  • Development team (8 people) — WordPress, React, and custom development
  • Project management (3 people) — Client communication and delivery
  • Design (2 people) — UI/UX and brand work
  • Operations (2 people) — Finance, HR, and admin
  • Founder (me) — Strategy, business development, and technical direction

We’re now investing in open-source WordPress tools (like our SSO plugin for Microsoft Entra), experimenting with AI agents in our development workflow, and building toward being a recognized WordPress product and services company — not just another Vietnamese outsourcing shop.

Advice for Agency Founders in Emerging Markets

  1. Focus on value, not price. Vietnam has a reputation for cheap labor. Escape it by specializing deeply. A specialized Vietnamese agency charging premium rates beats a generalist one competing on price every time.
  2. Build systems before you need them. When you’re 5 people, you don’t need SOPs. When you’re 15, they’re survival. Build them at 5 while you have time to think.
  3. Invest in retainer revenue early. Every dollar of recurring revenue is worth 3x a dollar of project revenue in terms of business stability and valuation.
  4. Write. A lot. Your blog is your best salesperson. It works while you sleep, it qualifies leads before they email you, and it builds authority that no “About Us” page can match.
  5. Know when to say no. Not every client is worth having. A bad project at $5,000 costs more than a good project at $3,000 when you factor in stress, revisions, and team morale.

“Your agency will be shaped less by the clients you say yes to, and more by the ones you have the courage to walk away from.”

— David C. Baker, The Business of Expertise

Key Takeaways

  • Scaling from freelancer to agency requires systems, not just more hours
  • Vietnam offers talent advantages but also structural challenges (labor laws, English gap)
  • Productizing services (maintenance retainers, performance audits) creates predictable revenue
  • Content marketing is a slow burn that compounds — start today
  • Hiring for ownership and communication beats hiring for raw technical skill
  • Building a remote/hybrid team from Hanoi is absolutely viable for serving global clients

This post is part of our ongoing series about agency operations at CODE TOT. Read more about why cheap websites cost more and how we optimized website performance.

References

  1. Paul Jarvis — Company of One: Why Staying Small Is the Next Big Thing
  2. David C. Baker — The Business of Expertise: How Entrepreneurial Experts Convert Insight to Impact + Income
  3. Indie Hackers — Agency Scaling Discussions and Case Studies
  4. WP Engine — WordPress Agency Growth and Scaling Resources
  5. MicroConf — Bootstrapping and Saas Content for Service Businesses