Blog · 2026-07-28 · Vynaris Team
What a 10-K summarizer costs per company brief: the map-reduce fan-out sets the bill
A financial-analyst 10-K summarizer costs $0.037 to $0.66 per company brief in model fees, and the number that moves it most is the map-reduce fan-out architecture, not the model you pick.
A financial-analyst 10-K summarizer costs $0.037 to $0.66 per company brief in model fees, and the number that moves it most is not the model. It is the architecture. Summarizing an 80,000-token 10-K with a map-reduce fan-out costs 33% to 47% more than one long-context call, because you pay to re-send the instructions on every chunk and to re-read every chunk summary in the reduce step. Prices verified 2026-07-28. This is a reproducible cost model, per brief, you can re-run with your own filing sizes.
TL;DR
- One 80,000-token 10-K, summarized map-reduce (8 chunk passes plus one synthesis pass), costs $0.05 to $0.66 per brief across six models, a 13x model spread. Prices verified 2026-07-28.
- The same 10-K in a single long-context call costs $0.037 to $0.46, which is 33% to 47% cheaper than the fan-out at this size. Below the 200,000-token cliff, splitting the document costs money, it does not save it.
- A weekly refresh that re-processes only the changed sections and reuses stored summaries cuts the ongoing per-brief cost about 60%. That reuse, not the model choice, is the real lever.
The finding, before the model
A financial-analyst summarizer turns a company filing into a research brief: the numbers that moved, the risk-factor changes, the management-discussion tone. A 10-K is long, roughly 80,000 tokens of body text, so most teams reach for map-reduce. Split the filing into chunks, summarize each chunk (the "map" step), then run one pass over the chunk summaries to write the brief (the "reduce" step).
That shape has a cost consequence the token count on the pricing page hides. Your bill is not one request's tokens. It is N chunk passes plus a reduce, and the total input you pay for comes out larger than the document itself, for three reasons. A static extraction rubric rides on every chunk. The reduce step re-reads every chunk summary. And the map step emits intermediate summaries you pay for on output before the brief exists.
We built this from public pricing only. No product data. Every token count below is an assumption you can edit, and every price is from a provider's live page, captured 2026-07-28.
The workload (edit these)
One company brief is the outcome unit: one 10-K in, one research brief out.
Assumption Value Note
-------------------- ------------------------------ ----------------------------------------------------------
10-K body 80,000 input tokens a typical annual report, tokenized
Chunk size 10,000 tokens 8 chunks per filing
Extraction rubric 2,000 tokens per map call instructions plus 2 few-shot examples, re-sent every chunk
Map output 500 tokens per chunk one section summary each
Reduce input 2,000 rubric + 4,000 summaries the synthesis instruction plus all 8 chunk summaries
Reduce output 2,000 output tokens the final brief
Weekly refresh delta ~15,000 tokens the sections that change quarter to quarterTwo things drive the map-reduce bill. The rubric is re-sent 8 times, so 16,000 of the input you pay for is duplicated instruction, not document. And the reduce pass adds a ninth call that re-reads the summaries. On a single long-context call, neither cost exists: the rubric is sent once and there is no reduce.
The model fee, six models, two architectures
Same 80,000-token filing, same cost-per-token math, six models, two architectures. Prices verified 2026-07-28.
Model Single call Map-reduce Fan-out tax
--------------------------------------------------------------- ----------- ---------- -----------
[deepseek-v4-pro](https://vynaris.com/models#deepseek-v4-pro) $0.0374 $0.0496 1.33x
[Claude Haiku 4.5](https://vynaris.com/models#claude-haiku-4-5) $0.0920 $0.1320 1.43x
[gemini-3.6-flash](https://vynaris.com/models#gemini-3-6-flash) $0.1380 $0.1980 1.43x
[gemini-3.1-pro](https://vynaris.com/models#gemini-3-1-pro) $0.1880 $0.2760 1.47x
[gpt-5.4](https://vynaris.com/models#gpt-5-4) $0.2350 $0.3450 1.47x
[Claude Opus 5](https://vynaris.com/models#claude-opus-5) $0.4600 $0.6600 1.43xThe model spread is 12x on a single call and 13x map-reduce. But look down the last column instead of across the rows: at 80,000 tokens the fan-out adds 33% to 47% to the bill on every model. The reduce pass, the rubric sent eight times, and the intermediate summaries all bill on top of the document.

If the fan-out costs more, why split? Two reasons that have nothing to do with the token bill. Quality: a focused 10,000-token chunk gets a more thorough read than one section buried in an 80,000-token prompt, where models lose detail in the middle. And limits: a filing plus exhibits can exceed a model's context window, so you have to chunk. Splitting a 10-K is a quality-and-limits decision, not a cost optimization, and anyone who sells it as one is not counting the reduce pass.
The 200k cliff: where the fan-out actually wins
There is one place the fan-out flips to cheaper. gemini-3.1-pro re-rates the entire request once the prompt crosses 200,000 tokens: input jumps from $2 to $4 per 1M, output from $12 to $18. We quantified that step in the 200k-token cliff. A single call over a big filing pays the higher rate on every token. Map-reduce keeps each chunk under 200,000 and never triggers the re-rate.
Filing size Single call (gemini-3.1-pro) Map-reduce Cheaper
-------------- ---------------------------- ---------- -----------
80,000 tokens $0.1880 (base rate) $0.2760 single call
150,000 tokens $0.3280 (base rate) $0.4930 single call
200,000 tokens $0.8440 (re-rated) $0.6480 map-reduce
250,000 tokens $1.0440 (re-rated) $0.8030 map-reduceThe crossover lands near a 198,000-token filing. Below it, one long call wins on cost. Above it, a 10-K with its full exhibits attached, the fan-out beats the whole-request re-rate. So the decision rule is size-driven, not model-driven: stay single-call under the cliff, split above it, and on a flat-rate Anthropic model the cliff never enters the math at all. Price your own filing sizes before you commit to a shape.
The weekly refresh: the lever that actually cuts the bill
Research desks do not summarize a 10-K once. They refresh the brief as new filings, earnings calls, and news land, often weekly. And most of a 10-K does not change week to week: the risk-factor boilerplate, the MD&A section headers, the accounting-policy language are the same text you already summarized. A refresh that re-maps only the ~15,000-token delta and reuses the stored summaries for the unchanged chunks changes the ongoing economics.
Model Full fan-out / week Delta refresh / week Amortized / week Cut
---------------- ------------------- -------------------- ---------------- ---
Claude Opus 5 $0.6600 $0.2250 $0.2585 61%
gpt-5.4 $0.3450 $0.1200 $0.1373 60%
gemini-3.1-pro $0.2760 $0.0960 $0.1098 60%
Claude Haiku 4.5 $0.1320 $0.0450 $0.0517 61%
deepseek-v4-pro $0.0496 $0.0157 $0.0183 63%Amortized over a 13-week quarter, one full run plus twelve delta refreshes, the ongoing per-brief cost drops about 60% on every model. This is the fan-out's compensating advantage: because the work is already split into chunk-level units, you re-run the two chunks that changed and skip the six that did not. A single long-context call cannot do this. It reprocesses the whole filing every time, with no chunk boundaries to reuse.
Where prompt caching helps, and where it barely does
The obvious next move is prompt caching: the 2,000-token rubric is identical on every map call, so cache it. On Anthropic, a cache write costs 1.25x and a read 0.1x. Caching the rubric across the 8 chunks of one brief shaves 9.2%, about 6 cents on Claude Opus 5. Real, but minor: the rubric is only 2,000 tokens of a 12,000-token map call. We worked the general break-even in prompt caching in production. Here the caching to reach for is the coarse kind, reusing whole chunk summaries across weekly refreshes, not the token-level cache of a shared prefix.
Where routing changes the unit economics
Model routing has a real job on this workload, and it is the map-reduce split itself. The map and reduce steps are not the same difficulty. Chunk summarization is a bounded extraction task a cheap model handles well. Synthesizing eight summaries into a coherent, numerically accurate brief is the harder pass, where a frontier model earns its rate.
So run the map on a cheap model and the reduce on a strong one. The eight map calls on deepseek-v4-pro cost about $0.045, versus $0.58 for the same maps on Claude Opus 5. Then the reduce, which sets the quality of the brief a human reads, runs on Opus 5 for about $0.08. That split brief costs about $0.13, roughly 81% below the $0.66 all-Opus fan-out, while still paying frontier rates for the synthesis pass. It is a fixed, up-front routing decision, not the double-spend of a confidence cascade.
When this workload does not need a router, or a fan-out
The honest tradeoff: if your filings sit under the 200,000-token cliff and fit one context window, skip the fan-out. One long-context call on a flat-rate model is cheaper and simpler, and you lose nothing but the quality margin of focused chunks, which you can win back with a better single prompt. Reach for map-reduce when the filing is genuinely too large for one call, or when chunk-level quality measurably beats the single-shot read, or when you refresh often enough that chunk reuse pays for the added plumbing. And route the map-reduce split only if your synthesis pass measurably needs a stronger model than your extraction pass. This is the mirror image of the chat-with-a-PDF case, where a user asks many questions of one document and retrieval sets the bill. Here one document produces one brief, and the fan-out sets the bill.
FAQ
What does it cost to summarize a 10-K with an LLM? In model fees, $0.037 to $0.66 per 80,000-token filing across deepseek-v4-pro through Claude Opus 5, a single call being $0.037 to $0.46 and a map-reduce fan-out $0.05 to $0.66. Prices verified 2026-07-28.
Is map-reduce cheaper than one long call? Not under the 200,000-token cliff. At 80,000 tokens the fan-out costs 33% to 47% more, because you re-send the rubric on every chunk and re-read every summary in the reduce. It wins on cost only above the cliff, near a 198,000-token filing on gemini-3.1-pro, where a single call re-rates the whole request.
How do I cut the ongoing bill? Refresh incrementally. Re-map only the ~15,000 tokens that change each week and reuse the stored summaries for the unchanged chunks. Amortized over a quarter that cuts the per-brief cost about 60%.
Which model should run the reduce pass? The strong one. Chunk summarization is cheap-model work, but the synthesis pass sets the quality of what an analyst reads, so a frontier model on the reduce and cheap models on the map is the routing split that pays.
Sources
- Anthropic pricing (Claude Opus 5 $5/$25, Claude Haiku 4.5 $1/$5, cache write 1.25x / read 0.1x, flat rate across the full context window), captured 2026-07-28: https://platform.claude.com/docs/en/about-claude/pricing
- OpenAI pricing (gpt-5.4 $2.50/$15), captured 2026-07-28: https://developers.openai.com/api/docs/pricing
- Google Gemini API pricing (gemini-3.1-pro $2/$12 at ≤200k, $4/$18 above 200k; gemini-3.6-flash $1.50/$7.50), captured 2026-07-28: https://ai.google.dev/gemini-api/docs/pricing
- DeepSeek API pricing (deepseek-v4-pro $0.435/$0.87), captured 2026-07-28: https://api-docs.deepseek.com/quick_start/pricing
- Cost model script and per-brief arithmetic: from the assumptions table above.
Prices change. We re-verify every figure in this post monthly and stamp updates. Numbers here are current as of 2026-07-28.
The lesson from the model: a 10-K summarizer's bill is set by the shape of the pipeline before the model. A map-reduce fan-out costs more than one call under the 200,000-token cliff, wins above it, and its one durable advantage is incremental reuse. Pick the architecture for your filing size and refresh cadence first, then pick the cheapest model that clears your quality bar for each pass. Vynaris is an OpenAI-compatible gateway that routes each request to the cheapest right-sized model and shows the per-brief cost so you watch the number that matters. One base URL swap. Get an API key at vynaris.com.