Content Editing

All marketing copy, brand identity, AI model lists, pricing, prompts, and long-form content live in plain TypeScript or Markdown files. No CMS to install: edit, save, redeploy.

The 3 layers of editable content

LayerWhereChanges touch...
Brand/identitysrc/config/brand.ts, src/config/app.ts, src/config/seo.tsProduct name, emails, OG metadata
Marketing & UI copysrc/config/ui/*.ts (28 files)Hero, features, pricing, FAQ, footer, etc.
AI behaviorsrc/config/ai-models.ts, src/config/rag.ts, src/config/pricing.tsAvailable models, RAG knobs, credit math
Long-form contentcontent/docs/*.mdx, content/blogs/*.mdx, legal page componentsDocumentation, blog, terms/privacy

Brand & identity

src/config/brand.ts

Product name, company name, support/legal/privacy emails, social links, footer copyright.

src/config/app.ts

App-level metadata: title, description, default locale, build version.

src/config/seo.ts

Default SEO title, description, OG image. Per-page overrides live in each page's generateMetadata().

src/config/pricing.ts

Plan tiers, prices, features, credit allocations. Stripe Price IDs come from env vars (STRIPE_PRO_PRICE_ID, STRIPE_TOPUP_PRICE_ID, STRIPE_ENTERPRISE_PRICE_ID).

src/config/ai-models.ts

The list of LLMs the user can pick. Controls the model-selector.tsx dropdown and the credit cost per model.

src/config/rag.ts

RAG knobs: chunk size, chunk overlap, retrieval top_k, max context tokens.

src/config/features.ts

Feature flags toggled at build/runtime.

src/config/routes.ts

Route constants used across the app. Edit if you rename URL paths.

src/config/docs.ts

List of in-product docs (slug, title, description, category). Add a new entry whenever you add a .mdx file under content/docs/ so it appears in the docs sidebar.

Marketing copy (src/config/ui/)

Each marketing section reads from a matching config file. Edit the file, the section updates.

Config fileRenders in
branding.tsLogo paths (light, dark, mobile) and theme defaults
header.tsTop-nav links, login button copy
footer.ts, footer2.tsFooter link groups, social, copyright
hero.ts, hero2.tsLanding page hero (two variants)
features.tsFeatures grid
pricing2.tsPricing table
faq.ts, faq2.tsFAQ sections
testimonials.tsTestimonials carousel/grid
cta.tsCall-to-action bands
integrations.ts, integrations2.tsIntegrations grids
process.ts"How it works" steps
services.ts, comprehensive-services.tsService cards
readiness.tsProduction-readiness checklist section
stats.tsNumeric stats strip
chat-demo.tsThe mocked chat thread + starter prompts on the landing page
highlight-product.tsFeatured product callout
most-popular-products.ts, product-list.tsProduct showcases
blog.tsBlog listing metadata
login.tsSign-in page copy
help-center.tsHelp center landing
index.tsRe-exports: leave alone unless adding a new section
types.tsTypeScript types: leave alone

Editing example: change available LLMs

// src/config/ai-models.ts
export const AI_MODELS = [
  {
    id: "gpt-4o",
    name: "GPT-4o",
    provider: "openai",
    creditsPerKToken: 5,
    tierAccess: ["free", "pro", "enterprise"],
  },
  {
    id: "claude-3-5-sonnet-20241022",
    name: "Claude 3.5 Sonnet",
    provider: "anthropic",
    creditsPerKToken: 3,
    tierAccess: ["pro", "enterprise"],   // gate behind Pro
  },
  // add new entries here for additional models
];

Editing example: tune RAG retrieval

// src/config/rag.ts
export const RAG_CONFIG = {
  chunkSize: 1000,        // chars per chunk before embedding
  chunkOverlap: 200,      // overlap between chunks
  topK: 5,                // number of chunks to retrieve per query
  maxContextTokens: 4000, // cap on retrieved context fed to LLM
};

Editing example: starter prompts in chat empty state

// src/config/ui/chat-demo.ts
export const chatDemoConfig = {
  starterPrompts: [
    { label: "Summarize my latest PDF", prompt: "Summarize the PDF I just uploaded" },
    { label: "Compare these two docs", prompt: "Compare the two documents I selected" },
    // add more cards here
  ],
};

AI persona / system prompt

The system prompt that frames every assistant turn lives in the chat API route: typically src/app/api/chat/route.ts or src/lib/ai/system-prompt.ts. Edit the string there to change the assistant's persona, capabilities, or tone. Restart the dev server to pick up changes.

Long-form content

In-product documentation (content/docs/)

This page is one of them. To add a new doc:

  1. Create content/docs/my-new-page.mdx with a top-level # Title heading.
  2. Add an entry to DOCS_CONFIG in src/config/docs.ts:
    {
      slug: "my-new-page",
      title: "My New Page",
      description: "Short description for the sidebar.",
      category: "core", // "getting-started" | "core" | "integrations" | "deployment"
    }
    
  3. Save. The page is live at /docs/my-new-page.

Blog posts (content/blogs/)

Each post is an .mdx file with frontmatter. The blog listing reads from this directory automatically. Sample posts ship covering AI/SRAM/quantization topics: read them as templates.

---
title: "Your blog post title"
description: "One-line summary"
date: "2026-04-18"
author: "Your Name"
tags: ["ai", "rag"]
---

# Your blog post title

Body content as Markdown / MDX...

Legal pages (src/components/legal/)

Terms, Privacy, DPA: React components so they can interpolate brand values from src/config/brand.ts. Edit the JSX directly. Run a legal review before going live.

Where to find a piece of copy

If you spot a string in the UI you want to change and don't know where it lives:

  1. Quote-search the project for the exact string ("Choose the right plan").
  2. Hits in src/config/ui/*.ts → edit the config file.
  3. Hits in src/config/ai-models.ts / src/config/pricing.ts → edit AI/billing config.
  4. Hits in src/components/ → edit the component (rare; usually wrap in a config).
  5. Hits in src/components/legal/ → edit the legal component.
  6. Hits in src/app/api/chat/route.ts or src/lib/ai/ → it's in the system prompt.

After editing

  • Local dev: changes hot-reload.
  • Production: redeploy (Vercel auto-deploys on push to main).
  • For per-page metadata, each page exports generateMetadata(): edit that for SEO control beyond defaults in src/config/seo.ts.