# Cite

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.

- Status: live
- 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
- Links: [Live](https://cite.picoral.me) · [Repo](https://github.com/feRpicoral/cite)
- Canonical: https://picoral.me/projects/cite

## 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.

_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.

_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](https://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.
