Skip to content

fix: disclose data storage cost in BYOK copy - #3352

Merged
smakosh merged 2 commits into
mainfrom
fix/byok-storage-pricing-copy
Aug 1, 2026
Merged

smakosh merged 2 commits into
mainfrom
fix/byok-storage-pricing-copy

Conversation

@smakosh

@smakosh smakosh commented Aug 1, 2026 •

Copy link
Copy Markdown
Member

Summary

Marketing and docs copy claimed BYOK (bring-your-own-keys) usage is entirely free. That's still true for routing — 0% platform fee — but when an organization enables full data retention, storage is billed at $0.01 per 1M tokens from LLM Gateway credits in all modes, including BYOK (see #3247, which made that billing consistent). This PR adds the caveat everywhere the free-BYOK claim appears and links the storage pricing docs.

Changes

  • packages/shared: add MARKETING_STATS.dataStoragePrice ("$0.01 per 1M tokens") next to platformFee as the single source of truth for surfaces that already consume MARKETING_STATS.
  • Pricing page (apps/ui):
    • pricing-faq.tsx — the "Is there a fee when I bring my own API keys?" answer now explains the optional storage charge and links "See storage pricing" to the docs section (answer is reused verbatim for FAQPage JSON-LD).
    • pricing-table.tsx — the Data Retention row gets a description ("Metadata is free; full payloads are $0.01/1M tokens") and a "See storage pricing →" link.
  • Landing FAQ (landing/faq.tsx) — the "How much does it cost?" BYOK bullet (both the JSON-LD string and the rendered accordion, kept in sync) now mentions the charge, with the rendered version linking the docs section.
  • Comparison pages — pricing FAQ answers on /compare/open-router, /compare/portkey, /compare/litellm, /compare/vercel-ai-gateway, /compare/aws-bedrock, /compare/azure-ai-foundry, and the /open-source FAQ.
  • DevPass (apps/code/Faq.tsx) — the pay-as-you-go answer gets the same parenthetical.
  • Docs (learn/provider-keys.mdx) — the "without additional gateway fees" intro now notes the optional storage charge and links /features/data-retention#storage-pricing.

Deliberately unchanged

  • Headline one-liners, meta descriptions, hero badges, and referral copy saying BYOK has "0% / zero platform fees" — that claim remains accurate (storage is a separate, opt-in charge); the nuance lives in FAQ/detail copy where users check fees.
  • Comparison-table platform-fee rows ("5% or 0% (BYOK)") for the same reason.
  • Dated blog posts.

Testing

  • pnpm build — 17/17 tasks pass.
  • pnpm format — clean.

https://claude.ai/code/session_0196L4fULdokeKNu7stvbLWm

Summary by CodeRabbit

  • Documentation

    • Updated pricing FAQs and provider-key guidance to clarify that optional full data retention costs $0.01 per 1M tokens.
    • Added storage-pricing links and clearer explanations of retention charges.
  • Pricing

    • Displayed the data-storage price consistently across pricing, comparison, and retention sections.
    • Clarified that charges may apply to BYOK and managed usage when full data retention is enabled.

Marketing and docs copy claimed BYOK routing is entirely free, but
optional full data retention is billed at $0.01 per 1M tokens from
credits in all modes, including BYOK. Add the caveat and link the
storage-pricing docs section on the pricing FAQ, pricing table,
landing FAQ, comparison pages, open-source page, DevPass FAQ, and
the provider-keys docs page.

Claude-Session: https://claude.ai/code/session_0196L4fULdokeKNu7stvbLWm
@coderabbitai

coderabbitai Bot commented Aug 1, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b18092b1-c8f4-4283-b101-753eb87d3d7b

📥 Commits

Reviewing files that changed from the base of the PR and between 113e262 and eb7c310.

📒 Files selected for processing (11)
  • apps/code/src/components/Faq.tsx
  • apps/docs/content/learn/provider-keys.mdx
  • apps/ui/src/app/compare/aws-bedrock/page.tsx
  • apps/ui/src/app/compare/azure-ai-foundry/page.tsx
  • apps/ui/src/app/compare/litellm/page.tsx
  • apps/ui/src/app/compare/open-router/page.tsx
  • apps/ui/src/app/compare/portkey/page.tsx
  • apps/ui/src/app/compare/vercel-ai-gateway/page.tsx
  • apps/ui/src/app/open-source/page.tsx
  • apps/ui/src/components/landing/faq.tsx
  • apps/ui/src/components/pricing/pricing-table.tsx
🚧 Files skipped from review as they are similar to previous changes (9)
  • apps/ui/src/app/compare/open-router/page.tsx
  • apps/ui/src/app/compare/litellm/page.tsx
  • apps/ui/src/app/compare/azure-ai-foundry/page.tsx
  • apps/code/src/components/Faq.tsx
  • apps/ui/src/components/landing/faq.tsx
  • apps/ui/src/app/compare/vercel-ai-gateway/page.tsx
  • apps/ui/src/app/compare/portkey/page.tsx
  • apps/ui/src/app/open-source/page.tsx
  • apps/ui/src/components/pricing/pricing-table.tsx

Walkthrough

The PR adds a shared $0.01 per 1M tokens data-storage price. It updates BYOK, pay-as-you-go, managed-tier, documentation, and comparison pricing messages to describe optional full data retention.

Changes

Data retention pricing

Layer / File(s) Summary
Pricing contract and shared components
packages/shared/src/marketing.ts, apps/ui/src/components/pricing/...
Adds the shared storage price and displays data-retention pricing metadata and documentation links.
Application pricing messages
apps/ui/src/components/landing/faq.tsx, apps/code/src/components/Faq.tsx, apps/ui/src/app/open-source/page.tsx
Updates BYOK, pay-as-you-go, and managed-option messages with optional full data-retention charges.
Documentation and comparison messages
apps/docs/content/learn/provider-keys.mdx, apps/ui/src/app/compare/...
Adds optional full data-retention pricing to provider documentation and comparison FAQs.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: disclosing data storage costs in BYOK marketing and documentation copy.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/byok-storage-pricing-copy

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
apps/ui/src/components/pricing/pricing-table.tsx (1)

69-72: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use the shared storage-price contract across all pricing copy.

These surfaces embed $0.01 instead of using MARKETING_STATS.dataStoragePrice. A future price update can leave the pricing table and comparison pages inconsistent with the shared FAQ.

  • apps/ui/src/components/pricing/pricing-table.tsx#L69-L72: interpolate MARKETING_STATS.dataStoragePrice and use the canonical price format.
  • apps/ui/src/app/compare/open-router/page.tsx#L22-L22: interpolate MARKETING_STATS.dataStoragePrice.
  • apps/ui/src/app/compare/portkey/page.tsx#L22-L22: interpolate MARKETING_STATS.dataStoragePrice.
  • apps/ui/src/app/compare/vercel-ai-gateway/page.tsx#L27-L27: interpolate MARKETING_STATS.dataStoragePrice.

As per coding guidelines, apply DRY principles for code reuse.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/src/components/pricing/pricing-table.tsx` around lines 69 - 72,
Replace hardcoded storage prices with the shared
MARKETING_STATS.dataStoragePrice value using the canonical price format. Update
the pricing copy in apps/ui/src/components/pricing/pricing-table.tsx lines
69-72, apps/ui/src/app/compare/open-router/page.tsx line 22,
apps/ui/src/app/compare/portkey/page.tsx line 22, and
apps/ui/src/app/compare/vercel-ai-gateway/page.tsx line 27, ensuring each file
imports and reuses MARKETING_STATS rather than duplicating the price.

Source: Coding guidelines

apps/ui/src/app/open-source/page.tsx (1)

60-60: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Centralize the storage price in application FAQs.

These pages hard-code the same price while the repository provides MARKETING_STATS.dataStoragePrice. Use the shared value to prevent pricing drift.

  • apps/ui/src/app/open-source/page.tsx#L60-L60: interpolate MARKETING_STATS.dataStoragePrice.
  • apps/ui/src/app/compare/aws-bedrock/page.tsx#L27-L27: interpolate MARKETING_STATS.dataStoragePrice.
  • apps/ui/src/app/compare/azure-ai-foundry/page.tsx#L27-L27: interpolate MARKETING_STATS.dataStoragePrice.
  • apps/ui/src/app/compare/litellm/page.tsx#L27-L27: interpolate MARKETING_STATS.dataStoragePrice.

The PR objective identifies MARKETING_STATS.dataStoragePrice as the shared pricing value.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/src/app/open-source/page.tsx` at line 60, Replace the hard-coded
storage price in the FAQ text with the shared MARKETING_STATS.dataStoragePrice
value in apps/ui/src/app/open-source/page.tsx:60-60,
apps/ui/src/app/compare/aws-bedrock/page.tsx:27-27,
apps/ui/src/app/compare/azure-ai-foundry/page.tsx:27-27, and
apps/ui/src/app/compare/litellm/page.tsx:27-27, preserving the surrounding
wording and interpolation format.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/docs/content/learn/provider-keys.mdx`:
- Line 10: Update the pricing callout near the provider-key guidance, using the
existing text around “only charged the provider's standard rates,” to also
disclose the optional data-retention storage charge. Ensure the wording no
longer implies provider rates are the only possible charge and remains
consistent with the storage-pricing disclosure above.

In `@apps/ui/src/components/landing/faq.tsx`:
- Line 31: Update the FAQ answer in apps/ui/src/components/landing/faq.tsx at
line 31 to separate Credits and BYOK pricing from a statement that full data
retention is billed at MARKETING_STATS.dataStoragePrice for both modes. Apply
the same explicit both-mode wording in apps/code/src/components/Faq.tsx at line
90, replacing the BYOK-only parenthetical.

---

Nitpick comments:
In `@apps/ui/src/app/open-source/page.tsx`:
- Line 60: Replace the hard-coded storage price in the FAQ text with the shared
MARKETING_STATS.dataStoragePrice value in
apps/ui/src/app/open-source/page.tsx:60-60,
apps/ui/src/app/compare/aws-bedrock/page.tsx:27-27,
apps/ui/src/app/compare/azure-ai-foundry/page.tsx:27-27, and
apps/ui/src/app/compare/litellm/page.tsx:27-27, preserving the surrounding
wording and interpolation format.

In `@apps/ui/src/components/pricing/pricing-table.tsx`:
- Around line 69-72: Replace hardcoded storage prices with the shared
MARKETING_STATS.dataStoragePrice value using the canonical price format. Update
the pricing copy in apps/ui/src/components/pricing/pricing-table.tsx lines
69-72, apps/ui/src/app/compare/open-router/page.tsx line 22,
apps/ui/src/app/compare/portkey/page.tsx line 22, and
apps/ui/src/app/compare/vercel-ai-gateway/page.tsx line 27, ensuring each file
imports and reuses MARKETING_STATS rather than duplicating the price.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0a5b3405-8c19-4e1e-b577-ebf42bd2bfa6

📥 Commits

Reviewing files that changed from the base of the PR and between 56e4458 and 113e262.

📒 Files selected for processing (13)
  • apps/code/src/components/Faq.tsx
  • apps/docs/content/learn/provider-keys.mdx
  • apps/ui/src/app/compare/aws-bedrock/page.tsx
  • apps/ui/src/app/compare/azure-ai-foundry/page.tsx
  • apps/ui/src/app/compare/litellm/page.tsx
  • apps/ui/src/app/compare/open-router/page.tsx
  • apps/ui/src/app/compare/portkey/page.tsx
  • apps/ui/src/app/compare/vercel-ai-gateway/page.tsx
  • apps/ui/src/app/open-source/page.tsx
  • apps/ui/src/components/landing/faq.tsx
  • apps/ui/src/components/pricing/pricing-faq.tsx
  • apps/ui/src/components/pricing/pricing-table.tsx
  • packages/shared/src/marketing.ts

Comment thread apps/docs/content/learn/provider-keys.mdx
Comment thread apps/ui/src/components/landing/faq.tsx Outdated
Word the data-retention storage charge as applying in both credits
and BYOK modes (landing + DevPass FAQs), fix the provider-keys docs
callout that implied provider rates are the only charge, and reuse
MARKETING_STATS.dataStoragePrice instead of hardcoded prices on the
compare pages, open-source FAQ, and pricing table.

Claude-Session: https://claude.ai/code/session_0196L4fULdokeKNu7stvbLWm
@smakosh
smakosh enabled auto-merge August 1, 2026 12:59
@smakosh
smakosh added this pull request to the merge queue Aug 1, 2026
Merged via the queue into main with commit 0426572 Aug 1, 2026
12 checks passed
@smakosh
smakosh deleted the fix/byok-storage-pricing-copy branch August 1, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant