Cite

Live

Personal project exploring agentic RAG. Every answer is grounded by inline citations; clicking one opens the source document at the exact region that produced it, and an automated judge scores whether the source actually supports the claim.

Role
Solo — design, engineering
Period
Mar 2026 – Present
Stack
  • Next.js 16
  • TypeScript
  • Tailwind v4
  • shadcn/ui (Radix Nova)
  • Anthropic SDK (Sonnet 4.6 + Haiku 4.5)
  • Voyage 3 Large embeddings + Voyage Rerank 2.5
  • LlamaParse
  • Supabase (Auth + Postgres + pgvector)
  • Prisma
  • Inngest
  • Yarn 4

What it does

Teams upload their documents — PDFs, Word, HTML, Markdown — and chat with them in natural language. Every answer is grounded by inline citations. Clicking a citation opens the source document at the exact region that produced the answer, with the relevant span highlighted, and an automated judge scores whether that source actually supports the claim.

Cite answer view: a question and Cite's response with numbered citation chips, next to a source panel showing the exact highlighted passage marked Supported with a 0.92 confidence score.
Every claim carries a citation; the source panel shows the exact passage, scored Supported · 0.92 by the judge.

Why I built it

Not a product — a personal project. RAG chatbots without citation are unfalsifiable. Citation grounding makes the model’s output checkable, which is the whole point of using a retrieval system. I also wanted to design a UI where the citation is the primary interaction, not a footnote — the document viewer is co-equal with the chat — and to close the loop with a judge that grades whether the cited source genuinely supports the claim.

How it works

Agentic retrieval

The model plans and iterates retrievals before answering: hybrid vector + keyword search over pgvector, sub-query decomposition for multi-part questions, and Voyage Rerank 2.5 on the candidate set. It runs a sufficiency check before it answers — or says it can’t.

The citation viewer

Clicking a citation opens the source in a side viewer, scrolled to the precise span — a bounding box on a PDF page (via LlamaParse layout parsing) or a text range in HTML — highlighted in the evidence stream. A resizable split snaps back when you’re done.

Cite document viewer showing page 12 of an MSA PDF with the cited clause highlighted and anchored to citation marker 1.
Click a citation, and the viewer jumps to the exact page and span it came from.

Citation auditing

An automated judge grades each citation Supported, Partial, or Unsupported, with a confidence score and short reasoning. Admins get a dashboard to triage the weak ones — filter to unsupported claims in context, with per-citation reasoning rather than a single opaque number.

Collaboration and tenancy

Live presence, real-time message sync, and threaded comments on messages and document regions keep a team working over one source of truth. Documents stay inside an organization’s workspace, visible only to members by role. The interface ships in English and Brazilian Portuguese.

Status

Live at cite.picoral.me. The agentic retrieval pipeline, citation viewer, and judge are working end to end; collaboration polish is the current focus.

Questions

What is Cite?

Cite is an agentic retrieval-augmented chat application. Teams upload their documents and ask questions in natural language. Every answer is grounded by inline citations — clicking one opens the source document at the exact region that produced the answer, with the relevant span highlighted.

How is Cite different from a typical RAG chatbot?

Two things. First, retrieval is agentic — the model plans and iterates hybrid vector + keyword retrievals with reranking before answering, rather than a single top-k similarity lookup. Second, the citation is the user interface, not a footnote. Citations are clickable handles that synchronously scroll the document viewer to the cited span, so verification is one click instead of a search.

How are citations verified?

An automated judge compares each cited claim against its source passage and labels it Supported, Partial, or Unsupported, with a confidence score and short reasoning. It turns "trust the model" into "check the evidence."

What file formats can Cite ingest?

PDF, DOCX, HTML, and Markdown, up to 100 MB each. LlamaParse handles layout-aware PDF parsing; Cite chunks, embeds with Voyage 3 Large, and indexes them, showing per-document ingestion status.

Published May 25, 2026, 9:59 AM GMT-3 · Updated Jul 5, 2026, 12:36 AM GMT-3

← All projects