Caddie
Case study · Karolina Bittman
In active development

B2B AI · Agentic RAG

An hour of pre-call research, in under a minute.

Caddie is a B2B sales-research agent. Give it a company name, and an autonomous agent researches the web, recent news, and filings — then hands back a one-page, fully cited briefing.

Like a caddie who reads the course and hands you the right club, Caddie reads the account and gives the rep exactly what they need before the call.

Role
AI Product Engineer · Designer-Developer (solo)
Approach
Agentic RAG + MCP
Stack
TypeScript · Vercel AI SDK · Claude · Supabase
Context
Capstone after IBM RAG & Agentic AI

See it work

Watch Caddie research an account.

A short walkthrough: from a single company name to a cited, structured briefing — and the agent loop working underneath.

Caddie input screen — enter a company name to start the research brief
01 · Input
Caddie agent loop working — Notion research, checking SEC EDGAR, scanning news, evidence found
02 · Agent loop
Caddie finished brief — Notion overview, financials, key people, all cited
03 · Cited brief

01  The problem

Good sales calls start with homework nobody has time to do.

Before a call, a rep should know the account cold — what the company does, recent news, financial signals, a hook. In reality that's 30–60 minutes of manual research per account. It doesn't scale, the quality is inconsistent, and most reps skip it.

The obvious counter is "just use ChatGPT." But a general chatbot gives shallow, generic results, a different format every time, and no reliable grounding in the right sources. For a workflow run twenty times a day, you need something specialized, consistent, and cited.

02  The concept

One input. One briefing.

Type in a company name. An autonomous agent researches it across the web, recent news, and company filings, then returns a one-page, fully cited briefing — overview, recent developments, financial signals, and talking points.

No prompting, no babysitting a chat. The rep gets a deliverable, the same shape every time.

Caddie briefing output — Notion overview, financials, recent signals, key people

03  How it works — agentic RAG

The agent drives its own research.

Caddie isn't a one-shot prompt. Its spine is a planner → retriever → synthesizer loop that decides what to fetch, checks if it has enough, and loops before writing.

1

Plan

The planner reasons about what this company needs — overview, news, financials — and sets the research targets.

2

Retrieve

It calls tools to go get it: web_search, fetch_page, get_filings, corpus_query — exposed through an MCP server.

3

Embed & rank

Retrieved content is embedded into a vector store and reranked, so the most relevant material rises to the top.

4

Self-check & loop

The agent asks itself: enough to write a complete brief? If not, it loops back and searches more. This is what makes it agentic, not retrieve-once.

5

Synthesize

Claude writes the one-page brief from the ranked context — with citations, so every claim is grounded and nothing is invented.

04  Architecture

The stack.

Runtime
  • TypeScript
  • Node 20 (ESM)
Agent
  • Vercel AI SDK
  • planner · retriever · synthesizer
Tool layer
  • MCP TypeScript SDK
  • web_search · fetch_page
  • get_filings · corpus_query
AI
  • Anthropic Claude
  • Voyage embeddings
  • Cohere reranking
Retrieval / data
  • Supabase pgvector
  • Tavily search
  • SEC EDGAR · Zod
App
  • Next.js (App Router)
Why MCP matters here

The research tools sit behind a standard interface the agent calls, instead of bespoke wiring. The same pattern scales to connecting an agent to a client's own systems and data — exactly the kind of B2B AI integration real companies need.

05  Why not just a chatbot

The case for a purpose-built agent.

Right sources, wired in

Filings and structured data, not generic web results.

Consistent output

The same briefing format every time, with zero prompting from the user.

Grounded & cited

Every claim is sourced; reranking and grounded synthesis cut hallucination.

A tool, not a chat

One input, one deliverable — embeddable in a workflow or CRM.

Caddie interface design — agent working view with evidence panel

06  Design

Its own identity — and fully themeable.

The interface is a deliberate aesthetic direction: fresh, characterful, built to feel like a product rather than a demo.

It's also fully token-driven, so re-theming it to a client's brand — colours, type, tone — is the work of an hour, not a rebuild. The same product reskins cleanly for client after client; this look simply gives Caddie its own identity.

07  How it's built

Disciplined human–AI collaboration.

Caddie is built with Claude as an architecture partner and Claude Code as the implementation engine, guided by a CLAUDE.md project bible. Not vibe-coding — I hold the product and architecture decisions and review every step; the AI executes at senior-engineer quality. It's how I take an idea to a working product in days, not weeks.

08  Status & roadmap

A live build — and where it's going.

The agentic loop, the MCP tool layer, and the retrieval pipeline are the core I'm building out now. Beyond the research brief, the same engine extends into a reusable, multi-tenant B2B platform:

Proposal generation

The same agentic RAG, pointed at your own offering — products, case studies and value props as chunks, with exact pricing as structured data — drafts a tailored proposal from the researched prospect context. Hybrid retrieval: semantic where meaning matters, deterministic where numbers must be exact.

Self-service data upload

Clients upload their own documents through the interface; an ingestion pipeline parses, chunks, embeds and indexes them automatically. No manual onboarding — the product configures itself.

Multi-tenant by design

Each client's data is isolated by row-level security — private, never mixed, GDPR-aligned. With brand-level theming on top, a new client means: re-skin, upload, done. Build the engine once; everyone onboards themselves.