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

# Vobiz Blog

> Guides, deep-dives, and product updates from the Vobiz team - voice AI engineering, telephony best practices, and platform announcements.

## Latest posts

export const POSTS = [{
  href: "/blogs/what-is-voice-transcription-asr",
  header: "What Is Voice Transcription (ASR)?",
  title: "What is Voice Transcription (ASR)? How Telephony Affects Accuracy",
  category: "Transcription",
  date: "July 3, 2026",
  read: 18,
  gradient: "linear-gradient(to bottom right, #14b8a6, #0891b2, #1d4ed8)",
  excerpt: `How ASR works, streaming vs batch, Word Error Rate, and why telephony audio (bandwidth, codecs, packet loss) decides accuracy before the model runs.`
}, {
  href: "/blogs/what-is-caller-id-cnam",
  header: "Caller ID & CNAM",
  title: "What is Caller ID and CNAM? How Caller Name Display Works",
  category: "Phone Numbers",
  date: "July 1, 2026",
  read: 13,
  gradient: "linear-gradient(to bottom right, #f43f5e, #db2777, #a21caf)",
  excerpt: `The CNAM dip against LIDB, the 15-character limit, STIR/SHAKEN, branded calling, and why caller display decides answer rates.`
}, {
  href: "/blogs/what-is-call-routing",
  header: "What Is Call Routing?",
  title: "What is Call Routing? Types, How It Works & Examples",
  category: "Voice API",
  date: "June 29, 2026",
  read: 12,
  gradient: "linear-gradient(to bottom right, #6366f1, #2563eb, #0e7490)",
  excerpt: `How the routing engine and ACD decide where calls go, 11 routing types (round-robin, skills-based, LCR), and dynamic routing via API.`
}, {
  href: "/blogs/what-is-webrtc",
  header: "What Is WebRTC?",
  title: "What is WebRTC? How It Works, APIs, Codecs & Voice AI",
  category: "WebRTC",
  date: "June 26, 2026",
  read: 13,
  gradient: "linear-gradient(to bottom right, #8b5cf6, #9333ea, #a21caf)",
  excerpt: `The full handshake (getUserMedia, SDP, ICE/STUN/TURN, SRTP), the core APIs, codecs, WebRTC vs SIP, and why voice AI still needs a PSTN bridge.`
}, {
  href: "/blogs/what-is-answering-machine-detection",
  header: "What Is AMD?",
  title: "What is Answering Machine Detection (AMD)? How It Works",
  category: "Outbound",
  date: "June 25, 2026",
  read: 16,
  gradient: "linear-gradient(to bottom right, #f59e0b, #ea580c, #be123c)",
  excerpt: `How AMD tells a human from voicemail, sync vs async detection, the accuracy-vs-latency trade-off, and gating the stream for voice AI.`
}, {
  href: "/blogs/what-is-multi-level-ivr",
  header: "What Is a Multi-Level IVR?",
  title: "What is a Multi-Level IVR? Nested Menus, Routing & How to Build One",
  category: "IVR",
  date: "June 24, 2026",
  read: 13,
  gradient: "linear-gradient(to bottom right, #d946ef, #7c3aed, #4338ca)",
  excerpt: `How nested IVR menus work (DTMF + speech), menu-tree design and depth limits, and a real VobizXML build that callers don't abandon.`
}, {
  href: "/blogs/what-is-e164-phone-number-formatting",
  header: "What Is E.164 Formatting?",
  title: "What is E.164 Phone Number Formatting? The Complete Guide",
  category: "Phone Numbers",
  date: "June 22, 2026",
  read: 13,
  gradient: "linear-gradient(to bottom right, #0ea5e9, #2563eb, #4338ca)",
  excerpt: `+country code, up to 15 digits, no leading zeros, how E.164 works, examples by country, and how to validate it with libphonenumber.`
}, {
  href: "/blogs/toll-free-vs-local-vs-mobile-numbers",
  header: "Toll-Free vs Local vs Mobile",
  title: "Toll-Free vs Local vs Mobile Numbers: The 2026 Guide",
  category: "Phone Numbers",
  date: "June 19, 2026",
  read: 13,
  gradient: "linear-gradient(to bottom right, #10b981, #0d9488, #0e7490)",
  excerpt: `US prefixes, area codes, A2P/10DLC, SMS deliverability, cost, caller perception, and when to use each number type.`
}, {
  href: "/blogs/what-is-a-virtual-phone-number",
  header: "What Is a Virtual Phone Number?",
  title: "What Is a Virtual Phone Number? How It Works, Types & Uses",
  category: "Phone Numbers",
  date: "June 17, 2026",
  read: 14,
  gradient: "linear-gradient(to bottom right, #06b6d4, #2563eb, #4338ca)",
  excerpt: `A real number with no SIM or copper line, how cloud routing works, the types, virtual vs DID vs landline, and the voice-AI angle.`
}, {
  href: "/blogs/what-is-a-call-leg",
  header: "What Is a Call Leg?",
  title: "What Is a Call Leg? A-Leg vs B-Leg in Programmable Voice",
  category: "Telecom Basics",
  date: "June 16, 2026",
  read: 8,
  gradient: "linear-gradient(to bottom right, #0891b2, #0284c7, #1d4ed8)",
  excerpt: `What a call leg is, the difference between A-leg and B-leg, how calls get bridged, and why legs matter for transfers, billing, and recording.`
}, {
  href: "/blogs/automated-calling-answering-machine-detection",
  header: "Automated Calling & AMD",
  title: "Scaling Outbound: Mastering Automated Calling & Answering Machine Detection in 2026",
  category: "Outbound",
  date: "June 16, 2026",
  read: 15,
  gradient: "linear-gradient(to bottom right, #4f46e5, #2563eb, #0369a1)",
  excerpt: `Dialer pacing, CPS vs concurrency, how AMD works, and gating the media stream for voice AI.`
}, {
  href: "/blogs/context-aware-call-transfers",
  header: "Context-Aware Call Transfers",
  title: "Mastering Call Transfers in 2026: The Switch to Context-Aware Programmable Voice",
  category: "Programmable Voice",
  date: "June 16, 2026",
  read: 14,
  gradient: "linear-gradient(to bottom right, #9333ea, #7c3aed, #4338ca)",
  excerpt: `Blind vs warm vs supervised, the SIP REFER/Replaces/UUI protocol layer, per-leg transfer, and AI-to-human handoff with context.`
}, {
  href: "/blogs/call-recording-apis-compliant-pipelines",
  header: "Call Recording APIs",
  title: "Building Compliant Pipelines: The State of Call Recording APIs in 2026",
  category: "Compliance",
  date: "June 16, 2026",
  read: 14,
  gradient: "linear-gradient(to bottom right, #059669, #0d9488, #0e7490)",
  excerpt: `Dual vs mono channels, transcription pipelines, encryption & retention, and consent/PCI/GDPR-compliant recording design.`
}, {
  href: "/blogs/intelligent-call-escalations",
  header: "Intelligent Call Escalations",
  title: "Designing Intelligent Call Escalations: Going Beyond Blind Transfers in 2026",
  category: "Contact Center",
  date: "June 16, 2026",
  read: 15,
  gradient: "linear-gradient(to bottom right, #e11d48, #dc2626, #c2410c)",
  excerpt: `Escalation triggers, skills-based routing, AI-to-human handoff with context, and conference-based monitor/whisper/barge.`
}, {
  href: "/blogs/what-is-a-did-number",
  header: "What Is a DID Number?",
  title: "What is a DID Number? Direct Inward Dialing Explained",
  category: "Phone Numbers",
  date: "June 15, 2026",
  read: 14,
  gradient: "linear-gradient(to bottom right, #3b82f6, #4f46e5, #6d28d9)",
  excerpt: `How direct inward dialing routes a call to a specific endpoint, DID types, number porting, and DID vs virtual numbers.`
}, {
  href: "/blogs/what-is-number-masking",
  header: "What is Number Masking?",
  title: "What is Number Masking? How Two-Way Call Masking Works",
  category: "Privacy",
  date: "June 12, 2026",
  read: 14,
  img: "/images/blog/what-is-number-masking.png",
  excerpt: `How one-way and two-way call masking work, why two-way needs two numbers, a full call flow, use cases, and how to build it.`
}, {
  href: "/blogs/what-is-voip",
  header: "What is VoIP?",
  title: "What is VoIP?",
  category: "VoIP",
  date: "June 10, 2026",
  read: 11,
  img: "/images/blog/what-is-voip.png",
  excerpt: `How VoIP works (codecs, SIP, RTP), the types of VoIP, equipment, bandwidth, call quality, costs, and setup.`
}, {
  href: "/blogs/what-is-sip",
  header: "What is SIP?",
  title: "What is SIP (Session Initiation Protocol)?",
  category: "SIP",
  date: "June 10, 2026",
  read: 11,
  img: "/images/blog/what-is-sip.png",
  excerpt: `What SIP is, how it works (methods, message flow, registration), components, trunking channels, and security.`
}, {
  href: "/blogs/sip-vs-voip",
  header: "SIP vs VoIP",
  title: "SIP vs VoIP: What's the Difference?",
  category: "SIP",
  date: "June 10, 2026",
  read: 10,
  img: "/images/blog/sip-vs-voip.png",
  excerpt: `VoIP is the category, SIP is the protocol. The differences, SIP vs VoIP phones, hosted vs self-managed, and which to choose.`
}, {
  href: "/blogs/what-is-an-ivr",
  header: "What is an IVR?",
  title: "What is an IVR (Interactive Voice Response)?",
  category: "IVR",
  date: "June 10, 2026",
  read: 10,
  img: "/images/blog/what-is-an-ivr.png",
  excerpt: `How IVR works (DTMF, speech, conversational AI), the three levels, use cases, benefits, and how to build one.`
}, {
  href: "/blogs/what-is-sip-trunking",
  header: "What is SIP Trunking?",
  title: "What is SIP Trunking?",
  category: "SIP",
  date: "June 10, 2026",
  read: 9,
  img: "/images/blog/what-is-sip-trunking.png",
  excerpt: `What SIP trunking is, how it works (signaling vs media), how it replaces PRI, and how to choose a provider.`
}, {
  href: "/blogs/call-center-optimization-with-ai",
  header: "Call Center Optimization with AI",
  title: "Call Center Optimization with AI: The Complete Guide",
  category: "Contact Center",
  date: "June 9, 2026",
  read: 10,
  img: "/images/blog/call-center-optimization-with-ai.png",
  excerpt: `Strategies, metrics, and the AI building blocks, IVR, AI voice agents, OTP verification, plus how the telephony underneath works.`
}, {
  href: "/blogs/what-is-a-voice-api",
  header: "What is a Voice API?",
  title: "What is a Voice API?",
  category: "Voice API",
  date: "June 9, 2026",
  read: 8,
  img: "/images/blog/what-is-a-voice-api.png",
  excerpt: `What a voice API is, how it streamlines business communication, and Vobiz's flat ₹0.65/min INR pricing.`
}, {
  href: "/blogs/what-is-a-landline-number",
  header: "What is a Landline Number?",
  title: "What is a Landline Number?",
  category: "Phone Numbers",
  date: "June 9, 2026",
  read: 6,
  img: "/images/blog/what-is-a-landline-number.png",
  excerpt: `Understand what a landline number is, its role, types, and benefits, and how modern VoIP alternatives compare.`
}];

export const PAGE_SIZE = 9;

export const BlogIndex = () => {
  const [page, setPage] = useState(1);
  const totalPages = Math.ceil(POSTS.length / PAGE_SIZE);
  const current = Math.min(page, totalPages);
  const start = (current - 1) * PAGE_SIZE;
  const visible = POSTS.slice(start, start + PAGE_SIZE);
  const go = n => setPage(Math.min(totalPages, Math.max(1, n)));
  const btn = "px-3 py-1.5 rounded-lg border border-gray-200 dark:border-zinc-800 text-gray-600 dark:text-gray-300 hover:border-primary/40 disabled:opacity-40 disabled:cursor-not-allowed transition";
  return <div>
      <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 not-prose my-6">
        {visible.map(p => <a key={p.href} href={p.href} className="group block rounded-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden bg-white dark:bg-zinc-900 hover:shadow-md hover:border-primary/40 transition no-underline">
            {p.gradient ? <div className="relative h-40 p-4 flex flex-col justify-between" style={{
    backgroundImage: p.gradient
  }}>
                <span className="text-sm font-bold tracking-tight" style={{
    color: "rgba(255,255,255,0.9)"
  }}>Vobiz</span>
                <span className="text-lg font-semibold leading-snug" style={{
    color: "#ffffff"
  }}>{p.header}</span>
              </div> : <img src={p.img} alt={p.header} className="h-40 w-full object-cover" />}
            <div className="p-5">
              <span className="inline-block text-xs font-medium px-2.5 py-1 rounded-full bg-gray-100 dark:bg-zinc-800 text-gray-600 dark:text-gray-300 mb-3">{p.category}</span>
              <div className="text-base font-semibold text-gray-900 dark:text-gray-100 leading-snug">{p.title}</div>
              <p className="text-sm text-gray-500 dark:text-gray-400 mt-2 leading-snug">{p.excerpt}</p>
              <div className="text-xs text-gray-400 dark:text-gray-500 mt-4">{p.date} · {p.read} min read</div>
            </div>
          </a>)}
      </div>

      {totalPages > 1 && <div className="flex items-center justify-center gap-2 mt-10 not-prose text-sm font-medium">
          <button onClick={() => go(current - 1)} disabled={current === 1} className={btn}>← Prev</button>
          {Array.from({
    length: totalPages
  }, (_, i) => i + 1).map(n => <button key={n} onClick={() => go(n)} className={n === current ? "h-9 w-9 rounded-lg border border-primary bg-primary text-white transition" : "h-9 w-9 rounded-lg border border-gray-200 dark:border-zinc-800 text-gray-600 dark:text-gray-300 hover:border-primary/40 transition"}>
              {n}
            </button>)}
          <button onClick={() => go(current + 1)} disabled={current === totalPages} className={btn}>Next →</button>
        </div>}
    </div>;
};

<BlogIndex />
