Skip to content
Back to articles

5 Lessons from Building AI Products at Scale

·4 min read

After two years of shipping AI-powered features to production, I've accumulated a set of lessons that I wish someone had told me on day one. These aren't theoretical — they come from late-night debugging sessions, failed launches, and the slow process of learning what actually matters.

1. Latency is a feature

When we shipped our first LLM-powered feature, we obsessed over output quality. The model's answers were great. Users hated it anyway.

The problem was a 6-second response time. It didn't matter how good the answer was — by the time it appeared, users had already lost patience and context-switched.

We ended up restructuring the entire pipeline to stream responses:

async function* streamResponse(prompt: string) {
  const stream = await model.generate({
    prompt,
    stream: true,
  });

  for await (const chunk of stream) {
    yield chunk.text;
  }
}

Streaming cut perceived latency from 6 seconds to under 500ms for the first token. Perceived speed matters more than actual speed.

2. Your eval suite is your most important asset

Early on, we made prompt changes based on vibes. "This feels better" was our quality bar. It worked until it didn't — one "improvement" silently broke 30% of edge cases, and we didn't catch it for two weeks.

Now, every prompt change goes through an eval suite before it ships. The suite isn't fancy:

  • 200 representative inputs across key categories
  • Automated scoring with a rubric-based LLM judge
  • A/B comparison against the current production baseline
  • Hard gates on regression metrics

The eval suite catches more bugs than our QA team. It's the single highest-ROI investment we've made.

3. Users don't care about your model

Nobody has ever said "wow, this uses GPT-4." Users care about outcomes:

  • Did it save me time?
  • Was the answer correct?
  • Did it do what I expected?

This means your product layer — the prompts, guardrails, fallbacks, and UX around the model — matters more than the model itself. We've seen cases where a well-prompted smaller model outperforms a larger one with a naive prompt, purely because of better system design.

Invest in the product layer, not just the model layer.

4. Build for failure from day one

AI systems fail in ways traditional software doesn't. The model will hallucinate. It will misunderstand context. It will confidently produce garbage. You need to design for this:

  • Confidence scoring — surface uncertainty to the user when the model isn't sure
  • Graceful degradation — fall back to simpler methods when AI quality is low
  • Human-in-the-loop — let users correct mistakes and feed that back into the system
  • Output validation — check model outputs against known constraints before showing them

The best AI products don't feel magical because the AI is perfect. They feel reliable because the failure modes are well-handled.

5. Ship the v0, then instrument everything

The temptation with AI products is to wait until the model is "good enough." But "good enough" is a moving target, and you can't know what good looks like without real usage data.

Ship the minimum viable version. Then instrument:

  • What queries do users actually send?
  • Where do they abandon the flow?
  • Which outputs get thumbs-down?
  • What do users do after getting an AI response?

This data is worth more than any benchmark. It tells you where to focus next, and it feeds directly into your eval suite.

The meta-lesson

All five lessons point to the same underlying truth: AI product management is systems engineering, not feature shipping. You're managing a complex, probabilistic system where every component — data, model, prompt, UX, feedback loop — affects every other component.

The PMs who thrive in AI are the ones who embrace that complexity instead of trying to simplify it away.