---
title: "What a chat-with-your-PDF SaaS pays per active user: a cost model from public pricing"
description: "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."
canonical: https://vynaris.com/blog/chat-with-pdf-saas-cost-per-active-user-teardown
author: "Dhrumil Barot"
author_bio: "Dhrumil is an AI inference and LLM infrastructure expert. Dhrumil built Vynaris to make model access, routing and pricing simple and transparent for developers."
published: 2026-07-19
updated: 2026-08-22
---

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

Published 2026-07-19 · Updated 2026-08-22 · By [Dhrumil Barot](https://vynaris.com/about#founder), Founder

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](https://vynaris.com/models#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](https://vynaris.com/glossary/category/inference-and-serving#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](https://vynaris.com/glossary/category/inference-and-serving) 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](https://vynaris.com/glossary/category/inference-and-serving#prompt-caching) sends the whole document but pays the cheap [cache-hit](https://vynaris.com/glossary/category/fine-grained-serving-and-inference-optimization-terms#warm-cache-hit-rate) rate on repeat reads within a session.

## Three architectures, five models, per active user per month

Same workload, same [cost-per-token](https://vynaris.com/glossary/category/cost-and-finops#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](https://cdn.sanity.io/images/u1qdn8dx/production/db1699de1feafc115e79972b85ca95b5e46dc175-1350x810.png?w=1440&fit=max&auto=format)

*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](https://vynaris.com/blog/prompt-caching-in-production-2026) 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](https://vynaris.com/blog/context-window-long-context-surcharge-costs).

If you want to run your own document size and question count through this, [the calculator](https://vynaris.com/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](https://vynaris.com/glossary/category/routing-and-cost#right-sizing-models) instinct that a document-QA task rarely needs a [frontier model](https://vynaris.com/glossary/category/ecosystem-and-products#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](https://vynaris.com/blog/llm-api-pricing-july-2026-cost-per-task) is set by document size. This is the same per-user teardown discipline we applied to [Cursor-style tab completion](https://vynaris.com/blog/cursor-tab-completion-cost-per-user-teardown).

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](https://vynaris.com/glossary/category/routing-and-cost#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.

## About the author

[Dhrumil Barot](https://vynaris.com/about#founder), Founder. Dhrumil is an AI inference and LLM infrastructure expert. Dhrumil built Vynaris to make model access, routing and pricing simple and transparent for developers. [LinkedIn](https://www.linkedin.com/in/bdhrumil) · [X](https://x.com/fyidhrumil)
