"Where do I find clients" eats weeks from people who can write code. The résumé is updated, the cold emails went out. At the same time the person you need googles a surname and finds a blank page.
I have been asked this dozens of times in a year. How many times did I hunt clients myself in that span? Zero. Not because the stars lined up. At some point I stopped mailing myself and started leaving traces people can follow.
Two developers, one stack. The first answers 50 postings in a month, sits five interviews, and takes the client's terms under stress. Rate $30, will do $25 so the project does not walk. The second, in the same weeks, picks one project out of three inbound: two are below the line. Rate $60-80, and it does not move.
The difference is not React. The difference is whether the person is visible when someone looks.
In the last month, how many inbound requests did you get? Not replies to your applications. Letters where someone wrote first. If the answer is zero or one, the rest of this is about that.
What thirty seconds show
A LinkedIn line that says "know React, ready to work" is noise. Three live projects with a problem, a stack and a number; an article that unpacks a decision; useful answers in a chat: that is already a signal.
A résumé says what a person did. A public trace says they can still do it, and you can check without a call.
These are my numbers, not an industry report. Before: 5-7 replies per 100 applications, $30 an hour. After: 5-7 inbound a month, $50-80. The hidden gain beats the rate: you can refuse a toxic project. One decent inbound job covers a year of this work.
Where 7-8 hours go: 2-3 on a Saturday draft, an hour of edits and examples, an hour to publish, 1-2 on chats and GitHub Issues, 1-2 on a pet project or the portfolio, half an hour on announcements. Less than one workday, stretched across a week.
The shop window they open first
A client almost always opens GitHub first. Three to five live repos with a README. Not commit-less forks and not TodoMVC.
Weak: "built a site". Usable: "LCP from 4.5s to 1.2s".
## Freelancer marketplace
Job: MVP in 6 weeks
Stack: Next.js 14, PostgreSQL, Stripe, TypeScript
- 500+ sign-ups in month one
- Core Web Vitals in the green
- 0 critical bugs in production
Demo and repo in the links.The template I paste into pinned repos:
# Name
Problem: which hole in money or deadline you closed
Solution: which move, and why
My part: what I decided, not "the team"
Stack
Result: 2-3 numbers
Demo, if it is aliveOpen the profile in a private window. If a CTO cannot tell in thirty seconds why they need you, fix one repository. The next one waits.
A portfolio without metrics is a technology list. Nobody hires from a list.
Text that works without you
One article can bring people for years. I write what I just fixed or just learned. Double effect: I sort my own head and leave a window.
The topic is usually nearby. Remember the last non-trivial thing you googled. Someone is googling it now and not finding a write-up. Be that write-up.
The pace I can hold: at least one or two articles a month. Weekly if quality holds. "10 tips for developers" does not work. "How I killed slow LCP in production" does.
Two or three places are enough. Medium or Dev.to, a Discord for the stack, GitHub. I already tried being everywhere a little. In 2020 I opened LinkedIn, Twitter, Medium, YouTube, Discord at once. Two months later only GitHub was left.
In a chat, "looking for React work, DM me" smells like a flyer. "Here is how I got around this hole in Next.js, write-up in the link" leaves a name.
In chats I do not collect cards. After a talk I write about one specific move I recently fixed. Under someone else's article: "we had the same LCP hole, we fixed it via X, your Y looks cleaner, I will try it". In a thread I drop a gist if I dug the same thing yesterday. The first touch is not a contract. The second and third sometimes bring a letter on their own.
Three of my failures
In 2018 I started a blog, wrote three TypeScript pieces, got 100 views and zero letters. I decided "this does not work" and left it for a year. Those same texts now feed search: in five years they grew links. If I had not quit, the result would have arrived a year earlier.
The first article brings 10 views a month. Six months later two other texts link to it: 30. A year later Google brings 50 more people. Another year, five more links, 150 views and one or two requests a quarter. After three years one text works like a small landing page.
I first wrote "how I configured webpack". Interesting to me. To nobody else. When I switched to "how I killed slow LCP in production", the articles started to land. The reader needs their hole, not my evening with a config.
When to count the trace as working
The main fraction: inbound requests per hour of content. Ten hours a week and zero letters a month means the topics or the places are wrong. Five hours and three to five letters already feeds you.
First two weeks: a domain, one page (who, stack, contacts, GitHub), three pinned repos with a real README. First month: two articles, three to five chats for the stack, answers with no "hire me". First quarter: one or two articles a month and a note of where views and letters come from. After three months you usually get recognition in a narrow circle. After six: 2-3 inbound. After a year, a flow and a rate up by a third or a half.
The first months are blind. I already tried quitting after three articles. The rule I hold myself to in a feed: five useful pieces, three of someone else's that are actually needed, two about me. Otherwise the channel becomes a shop window with a price on every shelf.
A $10-20 domain I already counted. A year at 7-8 hours is about 400 hours. At the old $30 rate that is $12k of alternative. One inbound at $5-10k does not cover a year. Two or three do. So quitting after three texts, before compound interest starts, is the most expensive saving I know.
Today's step is one: private window, one README, one pin. The rest compounds if you do not quit at view one hundred.

