← All writing

Applied AI · Startups · Engineering

Scaling AI from Seed to Series A

How to evolve your models, evaluations, data, and engineering team while preserving the speed and customer focus of an early startup.

Thomas Howard · 12 min read

At seed, the people building an AI product can often explain every surprising result. They know which customer supplied the unusual document, why a prompt contains a particular instruction, and which output needs a quick correction before anyone sees it. That closeness is useful. It helps a small team learn quickly.

As the company grows, more of the product runs without those people watching. Customers bring unfamiliar inputs. New engineers change behavior they did not originally design. Sales commits to workflows with different latency and quality expectations. A model update reaches customers whose use cases never appeared in the original demo.

That is the scaling problem I care about: preserving the ability to learn and improve as the number of customers, decisions, and contributors increases.

For a startup using external foundation models, much of this work concerns the application around the model: context, tools, evaluation, serving, and feedback. For a team training its own predictive models, it also includes reproducible data preparation, training, and validation. In both cases, the company needs a repeatable way to decide whether a change improves the customer’s outcome.

Seed and Series A are useful shorthand here, not universal engineering milestones. A small healthcare company may need stricter controls than a much larger creative tool. I would pace the work according to customer dependence, failure consequences, and the team’s ability to operate the system.

At seed, make one workflow worth repeating

The first job is to find a narrow task where the product creates value. Name the user, the input, the expected result, and what happens when the system cannot produce it. “An AI assistant for operations” leaves too much unresolved. “Prepare a reviewable summary from these documents, with support for each material claim” gives the team something it can build and assess.

Start with a capable baseline and inspect actual failures. A strong model can be useful early because it helps establish whether the task is feasible before the team spends weeks optimizing it. A simple classifier or deterministic rule may be a better baseline for a well-defined prediction or decision. The baseline’s job is to make subsequent choices measurable.

Human review can be part of this phase. Make that work visible: how often someone intervenes, how long the correction takes, and why it was necessary. Those observations reveal product requirements and future evaluation cases. They also prevent manual effort from disappearing inside an apparently automated workflow.

Even at this stage, I want prompts and configuration in version control, a small representative test set, basic cost and timing measurements, and a way to disable or revert a change. These are inexpensive foundations for learning. A bespoke model-serving platform can wait until a demonstrated problem justifies it.

Change the operating practice as customer dependence grows
  1. Seed · DiscoverProve a useful workflow

    Work closely with users, inspect failures, and establish a measurable baseline.

  2. Growing adoption · RepeatMake quality reproducible

    Version the complete configuration, evaluate by customer segment, and expose review cost.

  3. Approaching Series A · DelegateMake ownership durable

    Give teams clear release criteria, operational responsibilities, and a reliable feedback loop.

Build the evaluation system before optimizing the model

When a team cannot reliably detect a regression, every model or prompt change becomes a negotiation based on examples. The engineer with a compelling demo can win even when the candidate performs worse on a customer segment nobody examined.

I would separate a development set from a held-out evaluation set, then maintain a growing regression set for known failures. Development examples help the team improve the system. The held-out set provides a less contaminated estimate of performance. Regression cases preserve hard-earned lessons. Once people repeatedly tune against a held-out set, it needs to be treated accordingly and supplemented with fresh evaluation data.

Measure the workflow at several levels. Structured output can be valid while its contents are wrong. An answer can be accurate while relying on information the user was not authorized to access. A tool call can be well formed while selecting the wrong record. Task completion, evidence quality, authorization, latency, and failure handling deserve separate checks.

Use deterministic assertions where the requirement can be checked directly. Use expert review and model-assisted judging for qualities that need interpretation, and compare judge decisions with human assessments. Sample repeated generations when variability matters. Break results down by task, customer segment, language, document type, or other relevant conditions so an average does not hide a concentrated failure.

My AI evaluation work follows this layered approach. The practical benefit is that a team can investigate a particular behavior instead of arguing about whether a model is “better.” As adoption grows, review a representative sample of ordinary production outcomes as well as reported failures. Users do not report every mistake.

Choose model complexity from the failure you observe

A growing startup will encounter several problems that look similar from the outside. The model may lack relevant information. It may misunderstand instructions. A tool may return incomplete data. The product may ask for a decision that the available evidence cannot support. Each calls for a different intervention.

If the problem is missing or changing knowledge, investigate the context supplied to the model. Retrieval may help, but it creates a pipeline that needs its own tests: whether the right material was found, whether it is current, and whether the requesting user can access it. If the evidence is wrong, a more fluent answer can make the failure harder to notice.

If the task is stable and the remaining failures concern behavior, style, or a recurring transformation, fine-tuning becomes a candidate experiment. It needs representative examples, clear data rights, and a comparison against the existing baseline. Keep the evaluation data independent. Adopt the tuned model when its measured improvement justifies the added training, release, and maintenance work.

Model routing is another experiment. A smaller model might handle a defined class of straightforward tasks while a stronger model handles more demanding work. The router becomes part of the product and needs evaluation too. Decide how it identifies a difficult case, how escalation changes latency and cost, and what happens when it confidently chooses the wrong path. A model’s own confidence statement is insufficient validation.

For supervised prediction, put the same discipline into features and labels. Reproduce the information available at prediction time, and choose time-based or grouped splits when the deployment setting requires them. Fit learned preprocessing on training data only. The scikit-learn guidance on leakage and preprocessing explains why these boundaries matter. If the output is a probability used for decisions, examine calibration as well as discrimination.

Self-hosting or distilling a model should answer an equally concrete requirement: sustained workload economics, deployment constraints, latency, or control. Compare full operating costs and the capability you can actually staff. A financing milestone alone does not make owning inference infrastructure or training a foundation model a sensible next step.

Measure cost per accepted outcome

Token prices are visible, but the customer buys a completed task. A useful operating measure is the total variable cost of a workflow divided by the number of outcomes that meet its acceptance criteria. Include model calls, tools, serving, retries, and human review. Count the costs of unsuccessful attempts too.

Consider two hypothetical candidates evaluated on the same 1,000 tasks. Assume each reviewed task takes three minutes, with review labor costed at $40 per hour. The acceptance rate is measured after the complete workflow, including any review. These figures illustrate the calculation; they are not vendor prices or results from my projects.

Illustrative cost across 1,000 attempted tasks
MeasureCandidate ACandidate B
Model cost per attempt$0.12$0.04
Total model cost$120$40
Other variable service costs$50$50
Tasks requiring review150350
Review labor$300$700
Total variable cost$470$790
Accepted outcomes900800
Cost per accepted outcome$0.52$0.99

Candidate B has a lower model bill and a higher cost per accepted result. The example does not establish that expensive models are preferable. It shows why the evaluation has to include the workflow they create.

Once that baseline exists, optimization becomes more focused. Remove unnecessary calls, reduce irrelevant context, bound output length, and move work that can wait into asynchronous processing. Cache only when the result remains valid for the relevant input, permissions, model configuration, and freshness requirements. Test each change against both quality and cost.

Track these economics by workload and customer cohort. A growing enterprise account may bring much longer documents or more tool interactions than the customers used in the original forecast. Also track total spending, review capacity, and retention: unit efficiency alone does not establish a sustainable business, and this variable-cost measure is not a complete profit calculation.

Turn customer learning into a maintained data asset

The first useful dataset often begins as a collection of examples that surprised the team. Growth calls for more structure around that collection: where each example came from, what it may be used for, who reviewed the expected result, and which product behavior it represents.

Store a correction with the reason for it. “The user edited this response” is ambiguous. They may have corrected an error, expressed a preference, or adapted the output for a different purpose. Training indiscriminately on those edits can teach the system the wrong lesson.

Customer data also needs boundaries across retrieval, logging, evaluation, and training. Access to a document for one workflow does not automatically establish permission to retain it indefinitely or use it for another purpose. Make retention, deletion, tenant separation, and permitted use explicit in the design, with the appropriate product and legal owners involved.

For learned systems, watch how product behavior changes the data you observe. A ranking system influences which candidates users inspect; labels collected only from selected candidates describe that selected population. Preserve enough context to recognize these feedback effects. Otherwise, the team can mistake changes in its own collection process for improvements in the model.

Scale the workload with explicit limits

As traffic grows, measure the shape of the work. Request count alone can hide long contexts, large outputs, concurrent tool calls, and retry loops. Track latency distributions, queue time, token consumption, tool duration, and completion rates for the end-to-end workflow.

Give each request a time budget and each agent run a bounded allowance for work. Queue background jobs, constrain concurrency, and avoid retrying an entire workflow when only one safe step needs another attempt. Retry limits and backoff help contain overload; externally visible actions also need idempotency or reconciliation so a timeout does not produce a duplicate action.

Define what the customer experiences when a dependency fails. That might be a delayed result, a saved draft, a request for review, or a clearly unavailable capability. A fallback model is useful only if it meets the task’s requirements and data constraints. A response with a lower quality bar should not silently inherit the product’s normal guarantees.

Google’s SLO guidance provides a useful way to connect reliability targets to engineering priorities. For an AI workflow, I would pair service availability and latency objectives with separately measured task quality. An HTTP success rate cannot reveal whether the result was useful. Serious authorization or safety violations also need their own handling rather than being traded against an ordinary availability budget.

Roll out meaningful model and prompt changes gradually. A shadow run can compare outputs without allowing the candidate to perform external actions; a limited live rollout can reveal workflow effects that offline evaluation missed. Keep the tested configuration identifiable, define rollback conditions in advance, and remember that reverting software cannot undo an action already completed in another system.

Grow ownership before adding organizational layers

A founding engineer may initially own the prompt, the application, the dataset, and the release. As the team grows, that arrangement becomes difficult to maintain. The answer begins with assigning responsibilities clearly, even while several still belong to the same person.

Someone owns the customer outcome and acceptance criteria. Someone owns model behavior and the evaluation evidence. Someone owns the data contracts and permitted use. Someone owns release and operational recovery. These responsibilities need to meet in the same delivery process so a model change is assessed against the product it will affect.

Hire against the constraint the team can demonstrate. If the bottleneck is integrating models into a useful workflow, an applied AI engineer with strong software skills may add more value than a research function. If reliable labels and evaluation are missing, invest in domain expertise and data quality. If a trained model is central to the product and repeated experiments are producing gains, dedicated ML expertise may be justified.

Shared tooling should follow repeated needs. When multiple teams independently build the same evaluation reporting or inference instrumentation, consolidate that capability with a clear owner. Keep product-specific acceptance criteria close to the teams that understand the users. A shared service should make a recurring task easier without making every experiment wait for another team.

A practical weekly review can stay small: inspect a few consequential failures, examine quality and cost by workload, and decide which experiment comes next. Record the decision and its evidence. The purpose is to make learning cumulative as more people join.

Scale AI-assisted engineering with the same discipline

There are two AI systems growing at once: the product customers use and the engineering workflow producing it. Coding agents can increase the rate of changes faster than a team’s capacity to evaluate those changes. That makes clear requirements, reproducible environments, focused tests, and reviewable patches increasingly valuable.

Start with bounded tasks and explicit repository guidance. Give agents the context and tools required for their assignment, along with a way to report uncertainty and stop. Expand autonomy when the team has evidence that the workflow handles failure and produces reviewable results.

Anthropic’s Building effective agents distinguishes predefined workflows from agents that choose their own next steps, and recommends adding complexity when it improves the task. That is a useful design test for a startup. A fixed sequence of checks may need ordinary orchestration; an open-ended investigation may benefit from an agent. More independent actors also create more handoffs to evaluate.

My Symphony work explores those handoffs between scoped execution, evidence, and review. I would measure engineering improvements through accepted changes, escaped defects, rework, and review time. Generated code volume provides little information about whether the organization can maintain what it is producing.

What I would want to see approaching Series A

I would expect the team to explain why customers depend on the AI workflow, where it still fails, and what it costs to deliver an acceptable result. A new engineer should be able to reproduce a baseline, make a bounded change, and understand the evidence required to release it. A customer incident should have an owner and a recovery path.

The next investment should follow from those facts. A costly review queue may justify a targeted model experiment. Repeated retrieval failures may justify better data preparation. A slow release process may need stronger tests and clearer ownership. Each is a specific constraint with a way to measure progress.

The advantage of an early team is its closeness to the customer and its ability to change direction quickly. Good AI engineering preserves those qualities as the company grows. Evaluations preserve what the team has learned. Data practices make future learning usable. Clear ownership lets more people act without losing accountability. Measured model choices keep the product improving for reasons the whole team can explain.