Research
ModelsNovember 20266 min read

Small models are bad generalists and great specialists

How Gamma's agent gets big-model results from small, cheap models.

Slides our agent wrote with small models, from made-up briefs on templates from our library.

More than 100 million people have signed up for Gamma. Every day they make more than a million presentations, documents and websites: students and teachers, founders and sales teams, in dozens of languages and nearly every country. Serving this broad user base sustainably is core to our strategy. That means we have to be rigorous, and data-driven, about which model does which piece of work.

The obvious move is to use smaller models. OpenAI's Luna series, built for ChatGPT's huge consumer audience, and Anthropic's Haiku cost a fraction of their flagship siblings. The hard part is getting flagship-quality work out of them. This post is about the harness we built to do that: it breaks creative work into small jobs, each of which can be evaluated and A/B tested on its own, so that small models composed together perform at the level of big ones.

1One big model, doing everything

When we started testing our new harness in August, ahead of the launch of Gamma 5 on October 6, it worked the way most AI agents do: one capable model with a long prompt and a set of tools. It talked with the user, planned the deck, picked a look, wrote every slide, looked at the result and fixed what was wrong. On a frontier model, our early prototypes took 10 to 30 minutes and cost $1.30 to $7.40 per deck.

Swapping in a small model cut the cost by a factor of ten. But a small model dropped into a harness built for a big one fails in ways the big one doesn't: slides that don't render, content that goes missing, instructions it forgets. A small model can't hold the whole job of designer, writer and quality checker at once. So we stopped asking it to.

2Breaking the work into jobs

We rebuilt the harness so that no single model holds the whole job, and frontier models could “teach” smaller ones that would run more efficiently.

Design comes from a template. Small models are much better at filling a design than inventing one. So before any writing starts, a separate step picks a template from our library of thousands of templates and variations. Each is a complete presentation with its own fonts, colors, layouts and story. The writer's job shrinks from "design a deck" to "write this story into this design." It doesn't fill the boxes literally: it reuses and recombines the template's elements to fit the user's content.

This also gives users much more predictability and control: choosing a visual style becomes a matter of browsing through a catalog, which is often easier than describing a look in words.

Fig. 1The writer reuses and recombines the template's elements instead of filling in its boxes

On the left, a slide from one of our library templates. On the right, a slide our agent wrote with small models on the same template, for a made-up brief on another topic.

Building that library is a story of its own. Our largest models, running for hours per template, acted as teachers: they designed templates that small models could then fill in, much as a big model is distilled into a small one. That's the subject of a future post.

Correctness is checked by code. We found that even the biggest models have surprisingly weak vision for design. Shown two versions of a slide, one of them improved by a person, a top frontier model picked the better one only 61% of the time. So we stopped asking models whether a slide looked right. Every slide is rendered in a real browser and run through hundreds of fast, programmatic checks: text overflowing its box, shapes colliding, unreadable contrast, a chart running off the edge. A model sees a slide again only if a check fails, and then it gets a screenshot and a precise list of what's wrong. Fixing a named problem is a job a small model does well, and we're already seeing promising results from post-training even smaller open models for it.

Every job gets its own model, and its own experiment. With the work split up (plan, pick a template, write, generate images, repair, edit, review), each job can run on a different model, including several image models, and each one is a switch we can flip for a slice of users. Because so many people use Gamma every day, an experiment at a few percent of traffic reaches thousands of users within hours. We ran more than twenty of these model experiments in October alone, measured by what people do with the result: whether they keep the AI's edits, present the deck, share it or export it.

Fig. 2Instead of one model doing every job, each job gets its own model

Left, our first agent. Right, the jobs we split its work into, and the models that do them in Gamma's default for free users.

3What the experiments showed

We expected one small model to come out on top. Instead, the same models traded wins depending on the job:

Fig. 3Your call: which model won each job?

Six matchups from our production tests this fall. Pick a winner in each, then see what decided it.

There's no best small model, only a best model for each job. Haiku edits our decks and Luna reviews them, for the same users. Any leaderboard that ranks models overall would have picked one and been wrong half the time.

Newer isn't always better. GPT-6 Luna is cheaper per token than GPT-5.6 Luna, and it's now our slide-repair model, the job that makes the most calls. But the older model still plans most of our decks, because it finished more of them.

Thinking level is part of the choice. The same model at two thinking settings can behave like two different products. We test thinking levels the way we test models.

An offline win isn't worth any price. For writing custom themes, a model costing 17 times as much scored slightly higher on our internal judge. We kept Luna, at about a third of a cent and six seconds per theme.

4What it costs

Fig. 4Small models took a deck from dollars to cents

Language-model cost per deck on a log scale, images excluded, for most decks in the week of Oct 27, and how the free default's cost splits by job.

That covers every language-model call in a session: the conversation before the deck, the plan, the writing, every repair, and the user's follow-up edits. (Generated images are separate.) It's how we can give a free user a real design agent and keep our margins.

Small models still leave more behind than big ones: about 4% of slides from our small-model configuration still fail a check after repair, against under 2% when larger models do the same jobs. We expect to close that gap.

5Going further with open models

Splitting the work into narrow jobs has a second benefit. A job with a clear input, a clear output and an automatic check is exactly the kind of job you can train a model for.

So we've started training our own. This summer we welcomed the Lica team and built a Research team around it focused on visual design. That team now trains models on the stream of live data our product generates: millions of slides checked every day, every repair that passed or failed, and how people respond to what the AI made, which edits they keep and which they undo. Using our rendering checks as the reward, they trained a small model that does nothing but repair slides. In its first live test, it fixed 76% of failing slides on its first try, against 57% for the general model it was up against. We believe we can push this much further.

Fig. 5In one edit, our own model made this slide fit without cutting a word or shrinking the type

A slide our agent made with small models, before and after one edit by our own model.

Next time, we'll write about how a QA system became a training gym, and what those models learned to cheat on along the way.

Jon Noronha is a co-founder of Gamma.

@article{gamma2026specialists, title = {Small models are bad generalists and great specialists}, author = {Noronha, Jon}, journal = {Gamma Research}, year = {2026}, url = {https://research.gamma.app/small-models} }