Project Info
Inspiration
AI can already teach almost anything, but it can also hallucinate—and beginners often don’t know when an answer is wrong. We noticed that people trust learning on platforms like YouTube, blogs, or forums not because they are perfect, but because knowledge there is challenged, corrected, and discussed. AI chats today are isolated. There’s no visible debate, no peer review, and no sourcing. We built Sourcerer to add that missing trust layer to AI learning—combining critique, sourcing, and transparency into one system.
What it does
Sourcerer is an AI learning platform that transforms tutoring conversations into sourced, reviewable study posts. Users learn through an AI tutor chat. The conversation is turned into a structured study post. AI reviewer agents critique the content: Skeptic AI challenges weak reasoning Fact-Checker AI flags hallucinations Beginner AI asks clarifying questions Explainer AI improves clarity Consensus AI summarizes trust and uncertainty Skeptic AI challenges weak reasoning Fact-Checker AI flags hallucinations Beginner AI asks clarifying questions Explainer AI improves clarity Consensus AI summarizes trust and uncertainty A browser-grounded verifier checks important claims and attaches sources. A trust score shows which parts are reliable or uncertain. Users can view everything in: Thread View (Reddit-style comments) Visual Review View (AI reviewers attached to exact paragraphs) Thread View (Reddit-style comments) Visual Review View (AI reviewers attached to exact paragraphs) Instead of trusting one answer, learners can see knowledge being challenged, sourced, and improved in real time.
How we built it
We built Sourcerer as a multi-agent AI system with browser-grounded verification and an interactive frontend. Backend (Python + FastAPI) FastAPI + Uvicorn for a clean REST API (/ask, /chat, /convert, /reply) A central run_pipeline() function orchestrates all agents: Generator (initial answer) Critic agents (multi-perspective review using Claude Haiku) Verifier agent (browser grounding with Stagehand + Browserbase) Teacher (final synthesis using Claude Sonnet) Consensus (trust summary and scoring) A central run_pipeline() function orchestrates all agents: Generator (initial answer) Critic agents (multi-perspective review using Claude Haiku) Verifier agent (browser grounding with Stagehand + Browserbase) Teacher (final synthesis using Claude Sonnet) Consensus (trust summary and scoring) Anthropic SDK (Claude) powers all reasoning: Haiku for lightweight critique and evaluation Sonnet for generation, verification reasoning, and final teaching output Anthropic SDK (Claude) powers all reasoning: Haiku for lightweight critique and evaluation Sonnet for generation, verification reasoning, and final teaching output Stagehand + Browserbase enable live web browsing so the verifier can fetch and attach real evidence to claims. Stagehand + Browserbase enable live web browsing so the verifier can fetch and attach real evidence to claims. Arize Phoenix + OpenTelemetry provide traceability across the pipeline, letting us see where claims were introduced, challenged, or corrected. Arize Phoenix + OpenTelemetry provide traceability across the pipeline, letting us see where claims were introduced, challenged, or corrected. Pydantic + dotenv manage data models and environment configuration. Pydantic + dotenv manage data models and environment configuration. Frontend (React + TypeScript) React + Vite + TypeScript for fast, modular UI development Tailwind CSS for clean, responsive styling Lucide React for icons Built two key interfaces: Thread View (Reddit-style discussion) Visual Review View (AI reviewers attached to paragraphs) Thread View (Reddit-style discussion) Visual Review View (AI reviewers attached to paragraphs) Integrations Anthropic (Claude) for all core intelligence Browserbase + Stagehand for browser-grounded verification Arize Phoenix for observability and evaluation Fetch.ai (uAgents / ASI:One) to optionally expose Sourcerer as a discoverable AI tutor agent We focused on a polished vertical slice that clearly demonstrates the product experience rather than building a full production system. Deployment Frontend: Deployed on Vercel for fast, globally distributed hosting of our React application. Backend: Deployed on Render, running our FastAPI-based multi-agent pipeline. This combination allowed us to move quickly during the hackathon while maintaining a responsive UI and a reliable backend service for AI orchestration.
Challenges we ran into
Designing useful AI critique: Multiple agents can easily overwhelm users. We had to carefully define roles so each comment added distinct value. Linking comments to exact content: Attaching feedback to specific paragraphs required structuring outputs beyond typical LLM responses. Balancing grounding vs speed: Browser-based verification is powerful but slow, so we limited it to key claims for the demo. Keeping the demo polished: We had to balance backend complexity with a UI that judges could immediately understand. Time constraints: Building a multi-agent system, frontend experience, and integrations in 24 hours required aggressive prioritization and fallback strategies.
Accomplishments we're proud of
Built a system where AI answers are challenged, sourced, and defended, not just generated Created a visual review experience where AI agents interact with exact parts of content Integrated browser-grounded verification into the learning flow Designed a flexible architecture that supports multiple AI providers Delivered a compelling demo showing how a hallucination or overstatement is flagged and improved Made AI learning feel interactive, transparent, and collaborative
What we learned
AI is incredibly helpful for learning, but trust and transparency are just as important as accuracy Multi-agent systems are only effective when outputs are structured and interpretable Grounding answers with external sources significantly increases user confidence UI/UX matters deeply—how you show uncertainty can be as important as detecting it The best demos are not just technically complex—they are intuitive and tell a clear story
What's next
We see Sourcerer evolving into a trust layer for AI-powered education. Next steps include: Persistent study posts and a public knowledge-sharing system Real human community comments and moderation More robust and scalable browser-grounded verification Improved confidence scoring and claim-level validation Full support for multiple AI providers and user-defined reviewers Classroom and collaborative learning features A growing library of sourced, reviewed study content Long-term, we want Sourcerer to help anyone—from beginners to advanced learners—learn with AI without trusting it blindly.
Sourcerer
An AI tutor that finds its own sources, debates itself, and makes the debate visible.
The problem
People use AI to learn, but beginners can't tell when AI is wrong. Unlike YouTube comments, Reddit threads, or classrooms, AI answers have no correction layer — no debate, no peer review, no trust signals. A single model call is confidently wrong in ways that compound as the learner builds on bad foundations.
Our solution
Turn the AI answer into a structured blog post with agent comments.
The learner asks a question. Behind the scenes, a multi-agent pipeline drafts an answer, red-teams it with differentiated critic roles, and fetches live web evidence to verify each claim. Then — instead of hiding all of that deliberation — we surface it:
- The Teacher's final answer is the blog post
- Each agent contribution (Generator draft, Critic flags, Verifier citations) appears as a comment card with a role badge
- The learner can reply to any agent comment to ask a follow-up question — that reply re-enters the pipeline with the commenting agent's reasoning as context
This turns the multi-agent debate into the product. Learners see which claims survived scrutiny, which didn't, and why — and they can interrogate any step of the reasoning directly.
Architecture
Question
→ Generator drafts a first answer (Sonnet)
→ Critics decompose into atomic claims, red-team in parallel (Haiku × N)
→ Verifier fetches web evidence per flagged claim via Browserbase + Stagehand (Sonnet)
→ Confidence multi-samples contested claims; semantic disagreement → low confidence
→ Teacher synthesizes, drops/hedges unsupported claims, adapts to learning mode (Sonnet)
→ Deliver PipelineResult: answer + confidence + agent comment thread
The data model
@dataclass
class AgentComment:
agent: Literal["generator", "critic", "verifier"]
role: str # "Skeptical Fact-Checker", "Domain Expert", "Verifier", …
content: str
claim: str | None # the specific claim this comment addresses
verdict: Literal["supports", "refutes", "unclear"] | None
url: str | None # verifier citation
@dataclass
class PipelineResult:
answer: str # the "post"
comments: list[AgentComment] # the "comments"
confidence: float
confidence_level: Literal["high", "medium", "low"]
A second entry point reply_to_comment(comment, followup) re-enters the pipeline with the original question plus the commenting agent's context injected, so follow-up answers are grounded in that specific agent's perspective.
Trust signals shown to the learner
- Verified claims (green) — Verifier found supporting evidence
- Disputed claims (amber) — critics flagged, verifier returned "unclear"
- Refuted claims (red) — verifier evidence contradicts the draft
- Confidence badge (high / medium / low) on the overall answer
- Citations on each Verifier comment
The accuracy proof
We ran a 30-question factual eval against topics where LLMs commonly hallucinate. Answers were scored by a Haiku judge on correctness against known answers.
| Pipeline | Factuality score |
|---|---|
| Single Sonnet call (baseline) | — |
| Full pipeline (critics + verifier + confidence) | — |
(Numbers populated at eval milestone — see the Phoenix experiment linked below.)
Prize integrations
Anthropic — built entirely with Claude Code and Claude models. Haiku for the high-volume critic swarm and eval judges; Sonnet for generation, verification reasoning, and synthesis. Prompt caching on all shared system prompts. Batch API for eval generation runs.
Browserbase + Stagehand — the Verifier agent uses Stagehand on Browserbase cloud browsers to fetch live evidence per flagged claim, extracted via a narrow Pydantic schema so only relevant content enters the model context.
Arize Phoenix — every pipeline run is a single span tree (Generator → Critics → Verifier → Teacher as child spans). Eval answers generated once, stored as a Phoenix dataset, judges re-run over stored answers as needed. A Phoenix trace surfaced the verifier grabbing off-topic pages; tightening the extraction schema moved the factuality score — before/after captured.
Fetch.ai — run_pipeline wrapped as a Chat Protocol uAgent (Mailbox agent, full deps). Registered on Agentverse, discoverable on ASI:One. Any agent or user on the network can ask Sourcerer a question and get a fact-checked, cited answer. Claude stays the brain; ASI:One is the caller.
Running locally
cp .env.example .env # add ANTHROPIC_API_KEY (+ BROWSERBASE keys for Phase 2+)
pip install -r requirements.txt
phoenix serve # terminal 1 — observability at http://localhost:6006
streamlit run ui/streamlit_app.py # terminal 2 — UI
# or: uvicorn app.api:app --reload --port 8000
Repo layout
app/
agents/ generator, critics, verifier, teacher
models.py AgentComment + PipelineResult dataclasses
pipeline.py run_pipeline() + reply_to_comment()
confidence.py multi-sample scoring
grounding/ Browserbase + Stagehand client
telemetry.py Phoenix auto-instrumentation
api.py FastAPI (POST /ask, POST /reply)
agent.py Fetch.ai uAgent wrapper (Phase 6)
eval/
datasets/ qa_30.jsonl + qa_smoke.jsonl (5 questions)
generate.py batch eval generation
experiment.py baseline vs pipeline comparison
ui/
streamlit_app.py blog-post + comment thread UI with reply boxes
Analysis
View
Metric
- 20
- 12
- 3
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- HTMLIn code
- PythonIn code
- ReactIn code
- StreamlitIn code
- Tailwind CSSIn code
- TypeScriptIn code
9 of 9 appear in the indexed code.
AI coding agents
- Claude CodeConfig · Commits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
150 KB
Source files
34
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
binoygeorge97/edu_blog
52 files · 18.2 MB · @ 3848d7c
Structure
Interface
18 files · 35%Screens, components and styles rendered to the user.
Application logic
9 files · 17%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python37%
- Markdown36%
- TypeScript21%
- CSS5%
- HTML0%
- YAML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
web/package.json
npm · 12- lucide-react
- react
- react-dom
- react-markdown
- remark-gfm
- +7 more
requirements.txt
pypi · 11- anthropic
- arize-phoenix[otel]
- browserbase
- fastapi
- opentelemetry-exporter-otlp
- opentelemetry-sdk
- playwright
- python-dotenv
- streamlit
- uagents
- uvicorn[standard]
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.