> ## Documentation Index
> Fetch the complete documentation index at: https://inference-docs.cerebras.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Inference Cookbook

export const cookbooks = [{
  id: "build-a-docs-checker",
  date: "February 12, 2026",
  title: "Build Your Own Docs Checker with Cerebras & Browserbase",
  description: "Build a docs checker that can crawl your documentation site and analyze each page for quality issues.",
  authorName: "Sherif Cherfa & Sarah Chieng",
  tags: ['TOOL-USE', 'AGENTS', 'SEARCH'],
  href: "/cookbook/agents/build-a-docs-checker"
}, {
  id: "realtime-voice-translation",
  date: "January 23, 2026",
  title: "Realtime Voice Translation Agent",
  description: "Translate spoken conversations to any language with sub-second latency by building a realtime voice translation agent powered by Cerebras and LiveKit.",
  authorName: "Seb Duerr",
  tags: ['VOICE', 'LIVEKIT', 'TRANSLATION'],
  href: "/cookbook/agents/realtime-voice-translation"
}, {
  id: "hyper-personalization",
  date: "January 23, 2026",
  title: "Hyper-Personalized Web Page Generation",
  description: "Build hyper-personalized web pages using Cerebras AI with Pydantic structured outputs and Jinja2 templating. Pages that adapt to each visitor's preferred colors, tone, and products in real-time.",
  authorName: "Seb Duerr",
  tags: ['PERSONALIZATION', 'PYDANTIC', 'STRUCTURED-OUTPUTS'],
  href: "/cookbook/agents/hyper-personalization"
}, {
  id: "academic-research-agent",
  date: "January 20, 2026",
  title: "Academic Research Agent with Cerebras and Unstructured",
  description: "Generate arXiv search queries, analyze academic papers, download and process PDFs, and synthesize research insights with a conversational AI research assistant powered by PydanticAI + Cerebras + Unstructured.",
  authorName: "Seb Duerr",
  tags: ['TOOL-USE', 'AGENTS', 'STRUCTURED-OUTPUTS'],
  href: "/cookbook/agents/academic-research-agent"
}, {
  id: "docs-checker",
  date: "January 12, 2026",
  title: "Build Your Own Content Fact Checker with gpt-oss-120B, Cerebras, and Parallel",
  description: "Learn how to build a content fact checker that can automatically search the web, analyze multiple sources, and provide verdicts with supporting evidence in under 60 seconds.",
  authorName: "Zhenwei Gao",
  tags: ['TOOL-USE', 'AGENTS', 'SEARCH'],
  href: "https://cookbook.openai.com/articles/gpt-oss/build-your-own-fact-checker-cerebras"
}, {
  id: "livekit",
  date: "September 18, 2025",
  title: "Interviewer Voice Agent with LiveKit",
  description: "Learn how to integrate LiveKit's voice capabilities with Cerebras's fast inference to build a real-time voice interview agent that analyzes your resume and job descriptions to conduct personalized mock interviews.",
  authorName: "Golara Azar",
  tags: ['VOICE', 'LIVEKIT'],
  href: "/cookbook/agents/livekit"
}, {
  id: "sales-agent-cerebras-livekit",
  date: "August 11, 2025",
  title: "Build a Real-Time AI Sales Agent with LiveKit",
  description: "Build a sophisticated real-time voice sales agent that can have natural conversations with potential customers.",
  authorName: "Sarah Chieng",
  tags: ['VOICE', 'LIVEKIT'],
  href: "/cookbook/agents/sales-agent-cerebras-livekit"
}, {
  id: "build-your-own-perplexity",
  date: "August 11, 2025",
  title: "Build Your Own Perplexity with Exa",
  description: "Build a Perplexity-style deep research assistant that can automatically search the web, analyzes multiple sources, and provide structured insights in under 60 seconds.",
  authorName: "Sarah Chieng",
  tags: ['SUMMARIZATION', 'RETRIEVAL', 'EXA'],
  href: "/cookbook/agents/build-your-own-perplexity"
}, {
  id: "automate-user-research",
  date: "August 11, 2025",
  title: "Automate User Research with LangChain",
  description: "Learn how to build an AI-powered user research system that can automatically generate user personas, conduct interviews, and synthesize insights using LangGraph's multi-agent workflow.",
  authorName: "Sarah Chieng",
  tags: ['MULTIAGENT', 'AGENTS', 'LANGCHAIN'],
  href: "/cookbook/agents/automate-user-research"
}, {
  id: "gist-memory",
  date: "July 15, 2025",
  title: "Implementing Gist Memory: Summarizing and Searching Long Documents with a ReadAgent",
  description: "Build an AI agent that reads, summarizes, and answers questions about long documents using Gist Memory and the Cerebras Inference SDK.",
  authorName: "Njdeh Satourian",
  tags: ['SUMMARIZATION', 'AGENTS', 'RETRIEVAL'],
  href: "/cookbook/agents/gist-memory"
}, {
  id: "search-agent",
  date: "July 15, 2025",
  title: "Automating Search-Based Report Generation with a Multi-Agent AI Pipeline",
  description: "Build an AI agent pipeline that searches, summarizes, and synthesizes information from multiple sources to generate comprehensive reports.",
  authorName: "Njdeh Satourian",
  tags: ['MEMORY', 'AGENTS', 'RETRIEVAL'],
  href: "/cookbook/agents/search-agent"
}];

export const AllCookbooks = () => {
  return <div className="overflow-x-auto -mx-8 px-8">
      <table className="w-full border-collapse cookbook-table" style={{
    minWidth: '900px'
  }}>
        <thead>
          <tr>
            <th className="text-zinc-900 dark:text-zinc-200" style={{
    width: '40%',
    fontWeight: 600
  }}>Title</th>
            <th className="text-zinc-900 dark:text-zinc-200" style={{
    width: '25%',
    fontWeight: 600
  }}>Categories</th>
            <th className="text-zinc-900 dark:text-zinc-200" style={{
    width: '20%',
    fontWeight: 600
  }}>Author</th>
            <th className="text-zinc-900 dark:text-zinc-200" style={{
    width: '15%',
    fontWeight: 600
  }}>Date</th>
          </tr>
        </thead>
        <tbody>
          {cookbooks.map(cookbook => <tr key={cookbook.id}>
              <td>
                <a href={cookbook.href} style={{
    display: 'block',
    textDecoration: 'none'
  }}>
                  <div className="text-zinc-900 dark:text-zinc-100" style={{
    fontWeight: 600,
    marginBottom: '4px'
  }}>
                    {cookbook.title}
                  </div>
                  <div className="text-zinc-700 dark:text-zinc-400" style={{
    fontSize: '0.875rem'
  }}>
                    {cookbook.description}
                  </div>
                </a>
              </td>
              <td>
                <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '6px'
  }}>
                  {cookbook.tags.map(tag => <span key={tag} style={{
    padding: '4px 8px',
    fontSize: '0.75rem',
    fontWeight: 600,
    borderRadius: '4px',
    backgroundColor: 'rgba(241, 89, 42, 0.15)',
    color: '#C2410C',
    border: '1px solid rgba(241, 89, 42, 0.4)'
  }} className="dark:!text-orange-400 dark:!bg-orange-500/20 dark:!border-orange-500/40">
                      {tag}
                    </span>)}
                </div>
              </td>
              <td>
                <div style={{
    display: 'flex',
    alignItems: 'center',
    gap: '8px'
  }}>
                  <div className="bg-zinc-200 dark:bg-zinc-700" style={{
    width: '24px',
    height: '24px',
    borderRadius: '50%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center'
  }}>
                    <span className="text-zinc-700 dark:text-zinc-300" style={{
    fontSize: '0.75rem',
    fontWeight: 600
  }}>
                      {cookbook.authorName.charAt(0)}
                    </span>
                  </div>
                  <span className="text-zinc-700 dark:text-zinc-400" style={{
    fontSize: '0.875rem'
  }}>
                    {cookbook.authorName}
                  </span>
                </div>
              </td>
              <td>
                <span className="text-zinc-700 dark:text-zinc-400" style={{
    fontSize: '0.875rem'
  }}>
                  {new Date(cookbook.date).toLocaleDateString('en-US', {
    month: 'short',
    year: 'numeric'
  })}
                </span>
              </td>
            </tr>)}
        </tbody>
      </table>
    </div>;
};

export const BlogCard = ({date, title, description, authorName, tags = [], href = "#"}) => {
  const truncatedDescription = description && description.length > 160 ? description.substring(0, 160).trim() + '...' : description;
  return <div className="group relative h-full">
      <a href={href} className="flex flex-col h-full p-5 bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-lg hover:border-orange-500 dark:hover:border-orange-400 transition-all duration-200 hover:shadow-md not-prose" style={{
    minHeight: '140px'
  }}>
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-zinc-100 group-hover:text-orange-500 dark:group-hover:text-orange-400 transition-colors mb-2 line-clamp-2">
          {title}
        </h3>

        {truncatedDescription && <p className="text-sm text-zinc-600 dark:text-zinc-400 flex-grow leading-relaxed">
            {truncatedDescription}
          </p>}
      </a>
    </div>;
};

<div className="cookbook-home-page">
  <div className="relative">
    <div className="relative h-[240px] flex items-center justify-center overflow-hidden mb-10">
      {/* Background Image */}

      <div
        className="absolute inset-0 bg-cover bg-center bg-no-repeat"
        style={{
      backgroundImage: 'url("https://mintcdn.com/cerebras-inference/NyVPc5cBOXqJGmUS/images/bg2.webp?fit=max&auto=format&n=NyVPc5cBOXqJGmUS&q=85&s=fd1cbf134b436e0dc258abc08ab52110")'
    }}
      />

      {/* Dark overlay for text readability */}

      <div
        className="absolute inset-0"
        style={{
      background: 'linear-gradient(to bottom, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.2) 100%)'
    }}
      />

      {/* Hero Content */}

      <div className="relative z-10 text-center px-8 max-w-[900px]">
        <h1 className="hero-heading text-3xl md:text-4xl text-white mb-3">
          Inference Cookbook
        </h1>

        <p className="hero-subheading text-lg md:text-xl text-white/95 font-light">
          Practical guides and examples to help you build with Cerebras
        </p>
      </div>
    </div>

    <div className="text-black dark:text-white max-w-[1250px] mx-auto px-8 pb-16">
      {/* Featured Cookbooks Section - 6 Latest */}

      <h2 className="section-heading text-3xl mb-6 -mx-8 px-8">
        Latest Cookbooks
      </h2>

      <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 not-prose mb-12 -mx-8 px-8">
        {[...cookbooks]
                        .sort((a, b) => new Date(b.date) - new Date(a.date))
                        .slice(0, 6)
                        .map((cookbook) => (
                          <BlogCard key={cookbook.id} {...cookbook} />
                        ))}
      </div>

      {/* All Cookbooks Section */}

      <h2 className="section-heading text-3xl mb-6 -mx-8 px-8">
        All Cookbooks
      </h2>

      <AllCookbooks />
    </div>
  </div>
</div>
