VynarisEarly betaGet your API key

What a chat-with-your-PDF SaaS pays per active user: a cost model from public pricing

A chat-with-PDF app pays about $1.83/active user/mo with retrieval on Claude Haiku 4.5, but $12.63 stuffing the whole doc every question. Caching pulls it back to $2.75. The architecture, not the model, decides the margin. Verified 2026-07-19.

A chat-with-your-PDF product pays about $1.83 per active user per month to answer 300 questions on Claude Haiku 4.5, if it retrieves the right chunks. The same product built the lazy way, stuffing the whole document into every question, pays $12.63, which is 63% of a $20 subscription and no margin left. Caching pulls that back to $2.75. The architecture decides whether the business works; the model is the second decision. Prices verified 2026-07-19.

The finding, before the envelope

Document-QA SaaS looks cheap from the outside. A user uploads a PDF, asks questions, gets answers. The bill hides in a detail: every question needs the document's relevant text in the context window, and how you get it there moves the per-user cost by roughly 7x on the same model.

We reverse-engineered the inference bill from public pricing only. No product telemetry, no vendor's internal numbers. Every input below is an assumption you can change, and every price comes from a provider's live page. The point is a model you can re-run with your own document sizes and question volume, not a single headline.

The envelope (edit these)

One active user, one uploaded document, a month of questions. These are the knobs.

Assumption                         Value               Note
---------------------------------  ------------------  ------------------------------------------------------------------------
Document size                      40,000 tokens       a ~60-page PDF after tokenizing
Questions per active user / month  300                 ~15 per session, 20 sessions
RAG context per question           4,600 tokens        top-5 chunks (800 each) + 600 system/question
Full-context per question          40,600 tokens       whole doc + 600 system/question, every time
Answer length                      300 tokens          [output tokens](https://vynaris.com/glossary/output-tokens) per question
Embedding rate                     $0.02 / 1M tokens   editable; public small-embedding tier
Plan price                         $20 / user / month  a common self-serve price point

Three ways to get the document text in front of the model, priced below. Retrieval (RAG) embeds the document once, then fetches only the top-k relevant chunks per question. Full-context stuffing sends the entire document on every question. Full-context with prompt caching sends the whole document but pays the cheap cache-hit rate on repeat reads within a session.

Three architectures, five models, per active user per month

Same workload, same cost-per-token math, three retrieval strategies. Prices verified 2026-07-19.

Model                                                              RAG / mo  Full-context uncached / mo  Full-context cached / mo
-----------------------------------------------------------------  --------  --------------------------  ------------------------
[Claude Sonnet 5](https://vynaris.com/models#claude-sonnet-5)      $3.66     $25.26                      $5.50
[gpt-5.6-luna](https://vynaris.com/models#gpt-5-6-luna)            $1.92     $12.72                      $2.64
Claude Haiku 4.5                                                   $1.83     $12.63                      $2.75
[gpt-5.4-mini](https://vynaris.com/models#gpt-5-4-mini)            $1.44     $9.54                       $1.98
[deepseek-v4-flash](https://vynaris.com/models#deepseek-v4-flash)  $0.218    $1.73                       $0.194

Read the middle column first. Full-context stuffing without caching is the default a team ships when it wants the product working by Friday, and it is a margin killer. On Haiku 4.5 it costs $12.63 per active user, 6.9x the RAG bill of $1.83. On Sonnet 5 it costs $25.26, more than the entire $20 subscription. You are paying to re-read the same 40,000-token document 300 times a month because the model has no memory between calls.

Where caching becomes decisive

Caching does not beat retrieval on cost. It rescues the case where you cannot retrieve. The chart sweeps document size on Haiku 4.5 and holds the three architectures against the $20 plan line.

Per-active-user monthly LLM cost of a chat-with-PDF SaaS versus document size, on Claude Haiku 4.5, for three architectures on a log scale; uncached full-context crosses the $20 plan price near 65k tokens while RAG stays flat at $1.83
RAG cost is flat in document size because it retrieves a fixed top-5 chunks; full-context cost grows with the document and crosses a $20 plan around 65k tokens uncached. Caching keeps whole-doc reasoning affordable. Prices verified 2026-07-19.

RAG is the flat line at $1.83, because it retrieves a fixed five chunks no matter how long the document is. Uncached full-context is the diagonal that crosses the $20 plan price near a 65,000-token document and reaches $60.63 at 200,000 tokens. Cached full-context tracks below it: $3.28 at 50k, $11.23 at 200k. The gap between the two full-context lines is the prompt-caching in production discount doing its job, and it widens with document size because there is more stable prefix to cache.

The decision rule falls out of the shape. For factoid questions where the answer lives in a few chunks, retrieval wins on cost and is roughly flat as documents grow. For questions that need the whole document at once, summarize this contract, compare clause 4 across both versions, reconcile these tables, chunking loses the cross-references and full-context is the honest choice. There, caching is the difference between a viable product and one that costs more than it charges. Past about 50,000 tokens the uncached version eats a $20 plan, which lines up with the same cliff we measured for long-context surcharges.

If you want to run your own document size and question count through this, the calculator takes the per-question input and output token counts directly.

Does it fit a $20 plan?

A self-serve SaaS wants model cost well under a third of the plan price, leaving room for infrastructure, support, and profit. Here is the LLM bill as a share of a $20 subscription.

Model              RAG    Full-context uncached  Full-context cached
-----------------  -----  ---------------------  -------------------
Claude Sonnet 5    18.3%  126%                   27.5%
gpt-5.6-luna       9.6%   63.6%                  13.2%
Claude Haiku 4.5   9.2%   63.2%                  13.8%
gpt-5.4-mini       7.2%   47.7%                  9.9%
deepseek-v4-flash  1.1%   8.7%                   1.0%

RAG on any of the cheaper models leaves comfortable margin. Uncached full-context leaves none, and on Sonnet 5 it runs the product at a loss before you pay for a single server. The right-sizing instinct that a document-QA task rarely needs a frontier model is worth real money here: Sonnet 5 RAG at $3.66 is exactly 2x Haiku 4.5 RAG at $1.83, and most PDF questions do not need the difference.

The embedding line rounds to noise

The one cost people expect to matter, embeddings, does not. Embedding a 40,000-token document once, at the public small-embedding rate of $0.02 per million tokens, costs $0.0008. Re-embedding every user's document once a month is still a fraction of a cent against a QA bill measured in dollars. Embeddings are a one-time, amortized line; the recurring cost is the question traffic. If you swap in a pricier embedding model the number moves to fractions of a cent, and the conclusion does not change. This is why the headline math ignores it, and why "we cut embedding costs" is almost never the lever that matters for a chat-with-PDF product.

Where this model is wrong, and where full-context wins

Every envelope has a soft edge. Ours has a few.

The expensive setup wins when the product's value is whole-document reasoning, not fact lookup. A legal-diff tool that misses a cross-reference is worthless at any price, so it pays the full-context bill and caches hard. A support-doc chatbot that answers "what's the refund window" from one paragraph should never pay it.

FAQ

What does a chat-with-PDF app cost per user per month? On our model, about $1.83 per active user asking 300 questions on Claude Haiku 4.5 with retrieval, which is 9% of a $20 plan. Built with naive full-context stuffing it costs $12.63, and caching brings that to $2.75. The architecture moves the number more than the model does.

Is RAG or full-context cheaper for document QA? Retrieval is cheaper for factoid questions and stays flat as documents grow, because it fetches a fixed few chunks. Full-context grows with document size and only becomes affordable past ~50k tokens if you cache. The exception is a model with a very deep cache discount like deepseek-v4-flash, where cached full-context can undercut retrieval.

How much does prompt caching save on document QA? On Haiku 4.5 with a 40,000-token document, caching cuts the full-context bill from $12.63 to $2.75 per user per month, a 78% reduction, by charging the cheap cache-hit rate on repeat reads within a session. The saving grows with document size.

Do embeddings drive the cost? No. Embedding a 40,000-token document once costs about $0.0008 at public small-embedding rates. The recurring question traffic, not the one-time embedding, is the bill.

Which model should a document-QA SaaS use? The cheapest one that answers correctly. RAG on gpt-5.4-mini ($1.44) or Haiku 4.5 ($1.83) fits a $20 plan with margin; deepseek-v4-flash ($0.22) fits it many times over. Reserve Sonnet 5 for questions that measurably need the stronger model.

Sources

Prices change. We re-verify every figure in this post monthly and stamp updates. Numbers here are current as of 2026-07-19.

The lesson from the envelope: retrieval architecture and model routing decide whether a document-QA product has a gross margin. Vynaris is an OpenAI-compatible gateway that routes each request to the cheapest right-sized model and shows the per-request cost, retrieval-sized or full-context. One base URL swap. Get an API key at vynaris.com.