Blog · 2026-07-19 · Vynaris Team
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 pointThree 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.194Read 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.

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.
- Retrieval quality is not free. RAG's $1.83 assumes the top-5 chunks contain the answer. When they miss, the user re-asks, which adds questions, or you retrieve more chunks, which grows the context. A product with weak retrieval quietly drifts toward the full-context bill through re-asks. The cheap number assumes retrieval that works.
- Sessions may not fit a cache window. The cached column assumes 15 questions arrive inside one cache lifetime. A user who asks one question an hour writes the cache and lets it expire before the next read, paying the write premium repeatedly. Bursty usage caches well; trickle usage does not.
- DeepSeek inverts the rule. deepseek-v4-flash is the one row where full-context cached ($0.194) undercuts RAG ($0.218), because its cache-hit rate is $0.0028 per million, about 2% of its input price. When the cache read is that cheap, re-reading the whole document costs less than the retrieval overhead. The rule "retrieval beats stuffing" is a function of the cache discount, not a law.
- Whole-document questions need the whole document. RAG cannot answer "does this contract contradict itself" by fetching five chunks. For those, full-context is correct, caching is mandatory to afford it, and the cost-per-task is set by document size. This is the same per-user teardown discipline we applied to Cursor-style tab completion.
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
- Anthropic pricing (Haiku 4.5, Sonnet 5, cache read/write multipliers), captured 2026-07-19: https://platform.claude.com/docs/en/about-claude/pricing
- OpenAI API pricing (gpt-5.6-luna, gpt-5.4-mini), captured 2026-07-19: https://developers.openai.com/api/docs/pricing
- DeepSeek API pricing (v4-flash, cache-hit rate), captured 2026-07-19: https://api-docs.deepseek.com/quick_start/pricing
- Cost model script and per-question 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-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.