Claude Haiku · Voyage AI · Cheerio
A full stack swap — replaced OpenAI with Anthropic Claude Haiku for chat, Voyage AI voyage-3.5 for embeddings (200M free tokens), and Cheerio for serverless-safe web scraping. Zero ESM conflicts on Vercel, no headless browser required.
- NewClaude Haiku (claude-haiku-4-5) — sub-second TTFT streaming via native Anthropic SDK SSE
- NewVoyage AI voyage-3.5 embeddings — separate document and query embedders for asymmetric retrieval
- NewCheerio web scraping — fully CommonJS, no Puppeteer or Browserless required
- NewIP-based demo rate limiting — 5 messages + 3 ingestions per 24h, per visitor
- NewDemo status API — /api/demo-status returns usage counters and resetAt for live UI meters
- NewFirst SSE event carries sources + usage payload before any answer text begins
- ImprovedPDF ingestion increased to 20MB per file via Formidable multipart upload
- ImprovedPinecone namespace isolation — namespace flows uniformly through ingest → store → retrieval
- Improved0.3 cosine similarity threshold filters irrelevant chunks before Claude is called
- FixRemoved BROWSERLESS_TOKEN and OPENAI_API_KEY — replaced with ANTHROPIC_API_KEY + VOYAGEAI_API_KEY
- FixResolved ERR_REQUIRE_ESM on Vercel caused by node-html-parser — replaced with Cheerio