
TypeScript or nothing
One language from the phone to the database. Here's why every project I take on is TypeScript end to end, and why I stopped apologising for it.
Impressions feel great and pay nothing. Here's how I think about growth for founders, where the only number that counts is revenue you can trace back to the work.

A founder pinged me last month, buzzing. Forty thousand views on a post. Screenshot of the spike, the line going straight up, the little dopamine graph everyone loves. I asked one question. How many of those turned into a call, a signup, a rupee. Silence. Then, "well, none yet, but the reach."
That "but the reach" is the most expensive phrase in growth. I spent twenty years selling before I wrote a line of code, and this pattern makes me flinch every time, because a spike that produces nothing isn't a win waiting to happen. It's a bill you already paid.
Impressions, followers, likes. They move fast, they feel like momentum, and they lull you into thinking the machine is working. It isn't. A number that goes up while your bank balance stays flat is not growth. It's applause.
Here's the trap. Vanity metrics are easy to grow and easy to show off, so they get all the attention in the standup. Meanwhile the number that actually keeps the lights on, revenue you can trace to a specific action, sits ignored because it's harder to move and less flattering when it's small.
| The metric that flatters you | The metric that pays you |
|---|---|
| Impressions | Qualified leads |
| Followers | Email signups you can email |
| Likes and shares | Booked calls |
| Time on page | Trial starts |
| Traffic spike | Revenue traced to a source |
Read that right column again. Every one of those is something a buyer did with intent. That's the difference between an audience and a pipeline.
Forget the ten-stage diagrams. A working funnel does three things, in order.
First, it brings the right traffic. Not the most traffic. The right traffic, meaning people with the problem you solve and the budget to solve it.
Second, it gives them a reason to act now instead of "someday." A specific offer. A trade. Something worth handing over an email for.
Third, it captures the conversion in a way you can trace back to where it came from. If someone books a call and you can't say which post, ad, or page sent them, you learned nothing you can repeat.
They nail step one and skip steps two and three. Beautiful traffic, no offer, no tracking. It's like filling a bucket with a hole in the bottom and celebrating how fast the water goes in.
Before you spend a rupee on ads, look at what happens when the traffic lands. If your offer is mush, more traffic just means more people bouncing. You're paying to show more strangers a door they won't open.
I've watched founders double ad spend to fix a conversion problem. It never works, and it's the expensive way to learn a cheap lesson. Ad budget amplifies whatever you already have. Point it at a fuzzy offer and you amplify the fuzz. Point it at a sharp one, priced and positioned for a specific person, and the same budget suddenly performs.
Positioning does the quiet heavy lifting here. "Software for teams" gets ignored. "The invoicing tool for freelance designers who hate chasing payments" gets a click, because the reader thinks, that's me. Get the words right before you get the wallet out.
You don't have a traffic problem until you have a conversion that works. Send a hundred right-fit visitors to your page. If a healthy slice acts, you've found message-market fit and scaling makes sense. If none act, more visitors won't save you.
Proof is what closes the gap between interest and action. A specific result. A named use case. One line from a customer that sounds like a real person, not a testimonial generator. This is the same instinct I wrote about in building for the buyer, not just the user: the person deciding to pay is watching a different scoreboard than the person clicking around. Speak to that scoreboard.
Attribution is where most growth stories quietly fall apart. Not because tracking is hard, but because honest tracking is uncomfortable. It tells you which of your favorite channels does nothing.
Be ruthless here. Tag your links. Ask new leads how they found you and write it down. Watch which source turns into booked revenue, not which one has the prettiest chart. The research is clear that companies grounding decisions in real data outperform the ones running on gut, and McKinsey's work on data-driven organizations puts hard numbers on the gap. Growth without honest attribution is a story you tell yourself. Growth with it is a system you can repeat.
For every growth activity, ask: if this doubles, does revenue move, and can I prove the connection. If the answer is no, it's a hobby, not a growth channel. Fun, maybe. Free, never.
Only if your page already converts organic traffic. Send fifty right-fit visitors first. If a decent share signs up, books, or buys, ads will pour fuel on a fire that's already lit. If nobody acts, ads just help you lose money faster and at scale.
Paid gives you fast answers, SEO gives you cheap compounding traffic later. If you need to learn what converts this quarter, buy a little traffic and read the data. If you're playing a longer game and can wait, SEO earns its keep, and most founders end up running both once the offer is proven.
Almost always the offer or the message, not the traffic volume. People are landing, not seeing themselves in your words, and leaving. Sharpen who it's for and what they get before you touch the ad budget. A vague promise leaks visitors no matter how many you send.
Tag every link so you know the source, and ask each new lead how they found you. Then track which source produces booked revenue, not impressions or clicks. When you can name the channel behind a paying customer, you can spend more there with confidence.
Growth is not attention. It's revenue you can point at and say, that came from this. The whole game is closing the distance between a stranger seeing your work and a customer paying for it, and everything between those two points is either moving money or wasting it. I keep my client roster to one or two at a time, so when I take on growth work, we chase the number that pays, not the one that flatters. If you've got traffic that isn't turning into pipeline, tell me what you're building and I'll tell you honestly where the leak is. The spike feels good for a day. Pipeline pays every month.
Prabir Singh
Full-stack engineer from Mumbai. Twenty years in sales, now I build products that sell. More about me or start a project.

One language from the phone to the database. Here's why every project I take on is TypeScript end to end, and why I stopped apologising for it.

Express shaped a generation of Node APIs. Here's why my new backends start with Hono instead, and the three places it actually changes how I build.

Two React full-stack frameworks, one decision. Here's how I actually choose between Next.js and TanStack Start, and the projects where each one wins.