Runflow.

Ship AI image features. Without the complexity.

Visit Website
April 13, 2026 IndieHackers: $2.2M from AI headshots. The margins came from the workflow, not the model.

I bought an AI headshot company for $1 on a drunk night in Spain. Two years later it had done $2.2M in revenue at 87% gross margins, generating 35 million images on open-source models.

Here's the thing most people get wrong about AI image products: they think the model is what matters. Better model, better product, more money. We proved the opposite.

Our models were free. Open source. The same ones anyone can download from Hugging Face. What made the economics work was everything we built around them.

I'll walk you through the three things that took our COGS from 40% to 11% and eliminated every manual bottleneck.

Quick backstory

I was running a B2B SaaS marketing agency. Couldn't code. Wanted to build a product. A friend had built an AI headshot generator as his university project. It was making $1,500/month. He wanted $20,000 for it.

We made a deal over drinks: I buy it for $1, invest the capital, he keeps his shares (now worth more), stays on as CTO. I bring marketing and growth.

First batch of images I generated on Christmas Day? Horrific. Distorted faces. My family thought I'd lost it.

But I couldn't stop thinking: if this is where the tech is now, imagine where it's going.

Month by month: $1,400. $1,900. $3,400. $6,000. $10,500. $20,000.

By year two: $2.2M revenue. 35M images generated. Team of 9. Gross margins at 87%.

None of that came from finding a better AI model. It came from three decisions about the workflow.

Decision 1: Generate 4x more, deliver only the best

Most AI image products generate one image per request and ship it. We generated 240 candidates for every customer. Scored them all automatically. Delivered only the top 60.

Sounds expensive. Here's the math:

  • Extra generation cost per delivered image: ~$0.02

  • Cost of one refund from a bad image: ~$2.00

  • Cost of one support ticket: ~$5.00 in team time

At 100K+ images per month, overgeneration was the cheapest insurance policy we ever bought. The 180 rejects went straight to the trash. No human ever saw them.

Decision 2: Automate quality scoring (kill manual QA)

Early on, we had a person reviewing batches before they shipped. Slow. Expensive. Couldn't scale past a few hundred images a day.

So we built an automated scoring layer. Three levels:

  1. Basic quality: artifacts, sharpness, does it match the prompt?

  2. Headshot-specific: face looks right? Expression natural? Skin tone consistent?

  3. Custom rules: eyes open, no weird backgrounds, whatever the client needs.

Every image got scored on every dimension. Pass/fail thresholds were configurable per client.

The results:

Metric Before scoring After scoring Quality-related support tickets 40% of all tickets Under 3% Manual QA headcount 1 full-time Zero Images reviewed by humans Every batch None

This was the single biggest unlock. Not because it saved money on QA (it did). But because it let us scale without linear headcount growth. 10x the images, same team size.

Decision 3: Route every job to the cheapest GPU

We didn't use one AI provider. We used four. And we built a routing layer that checked all of them on every request and sent the job to the cheapest one available.

Why? Because provider pricing is all over the place. fal.ai might be cheapest at 2pm but slow at 6pm. Replicate has cold starts. Together.ai is cheaper for certain models. Capacity fluctuates constantly.

Routing approach Cost per image Monthly at 100K images One provider, no routing $0.035 $3,500 Cheapest available each time $0.012 $1,200 With automatic fallback $0.014 $1,400

That's a 60% cost reduction without changing anything about the output. Same models. Same quality. Just smarter about who runs the GPU.

The combined effect: COGS dropped from 40% to 11%. Gross margins hit 87%. On the same open-source models we started with.

The expensive lesson that followed

We were so confident in the playbook that we tried to apply it to fashion photography. Built a team of 15 to do AI-generated fashion images for brands.

Total disaster.

We generated 3,289 shots for one client to deliver 54 usable images. A 2% usable rate. Our cost per image was 6 to 8 euros. Our selling price was 4.95 to 9.95 euros. We couldn't produce a single image at breakeven.

Burned through roughly a million euros. Let go of half the team. Hardest thing I've ever done.

The lesson: the three-layer workflow (overgenerate, score, route) works brilliantly when the quality bar is achievable. AI headshots have a clear "good enough" threshold. Fashion doesn't. When a client knows an image is AI-generated, they optimize forever. A slightly off zipper, a coffee cup that's "too steamy." The approval rate was 50%. Traditional studios run under 3% rejection.

The workflow is powerful. But it doesn't fix a product-market fit problem.

What we built from the wreckage

When we paused the fashion product and looked at what was left, we realized the infrastructure was the real product all along. The scoring system. The routing layer. The deployment pipelines. All battle-tested at 100K+ jobs per month.

We rebranded it Runflow. Now we sell the infrastructure we built for ourselves: automated quality evaluation, multi-provider GPU routing, one-click ComfyUI deployment.

The first client conversations confirmed it. We pitched the infra layer. They wanted to test two things. A week later they came back with five more. We weren't selling a feature. We were solving a pain that every AI image team eventually hits.

The numbers today

  • BetterPic (headshot product) still runs, still profitable, still generating revenue

  • Runflow is the new bet, backed by the same investors who saw the pivot and doubled down

  • Team of 9, each person owns a channel, 90-day proving window

  • First Solutions API customer signed

I'm not going to pretend this is a clean success story. We made $2.2M, burned $1M learning a hard lesson, and started over. But the thing hiding inside the failed product turned out to be more valuable than the product itself.

What I'd tell you if you're building an AI product

Three things:

1. The model is a commodity. New ones ship every week. If your margins depend on having the best model, you're one Hugging Face release away from being commoditized. Build the workflow.

2. Automate quality before you scale. If you can't programmatically evaluate whether your output is good, you can't scale. You'll just ship garbage faster.

3. Never use one provider. Multi-provider routing is free margin. The price spread between providers at any given moment is 40-60%. Route to the cheapest healthy one. Always have a fallback.

The model is never the product. The workflow is the product.

If you want to compare scars or talk about what your AI pipeline looks like, find me on LinkedIn or in the comments.

Ricardo, CEO at Runflow

Comment

About

Its what we needed 2 years ago when we launched betterpic.io