HackWithBay 3.0 · Thoughtful Agents for Productivity

Turn research papers into executable evidence

Most tools stop at summaries or code stubs. Verigraph closes the full loop: extract claims from papers, run methods in a sandbox, and write VALIDATES or REFUTES verdicts back into a live Neo4j knowledge graph.

Paper → Claim → Method → Code → Sandbox Run → Result → Graph Update

verigraph / evidence graph
Paper · 2014
Adam
Kingma & Ba
Paper · 2017
The Marginal Value of Adaptive Methods
Wilson et al.
Paper · 2017
Decoupled Weight Decay
Loshchilov & Hutter
Adam converges faster
Adam generalizes worse
AdamW improves generalization
Executable method
◆ Linearly separable counterexample
numpy · synthetic data
Sandbox run · validates
⚡ GD 0.000 vs Adam 0.425
Daytona · reproducible evidence

A focused view of three real papers: claims conflict, a sandbox run executes, and measured evidence writes VALIDATES / REFUTES back to the graph.

2-minute walkthrough

How the live demo works

The shared graph contains six papers, 19 claims, and a growing archive of reproducible runs. The guided path follows the Adam, Wilson, and AdamW disagreement.

Open the graph

vis-network shows papers, claims, methods, citations, and CONTRADICTS edges. Evidence tab: all claims say "no runs yet".

Select a method

Click the violet ◆ method node. Console tab loads the runnable spec with optional parameter overrides.

▶ RUN

The production app executes the selected method in a fresh Daytona sandbox, applies your parameter changes, and persists the measured result.

Watch evidence flip

A ⚡ Run node appears. Claims update to VALIDATES or REFUTES with run ids and exact metrics in the evidence cards.

Ask the agent

RocketRide queries Neo4j via NL→Cypher. With Cognee enabled, semantic recall over paper text and run logs augments answers — e.g. Wilson's GD 0.000 vs Adam 0.425.

Product features

Everything the system does

Not a mockup: each feature maps to a real module in app/ with verified smoke tests.

📄
extract.py · arxiv.py

Paper ingestion

Upload via arXiv URL (HTML or PDF with retry/fallback), PDF drop, or raw text. LLM extracts claims, methods, datasets, citations, and cross-paper relations into structured JSON.

◆
graph.py

Knowledge graph

Idempotent MERGE into Neo4j Aura. Papers, claims, methods, runs, and artifacts as first-class nodes. CONTRADICTS edges surface real disagreements between papers.

⚙
codegen.py

Method → code

Any method node becomes a runnable single-file experiment. Curated implementations for demo papers; live LLM codegen for newly uploaded papers via Grok.

⚡
runner.py

Sandbox execution

Daytona isolated sandboxes when DAYTONA_API_KEY is set. Local subprocess fallback keeps the demo unkillable. Captures stdout, stderr, duration, exit code.

✓
curator.py

Evidence curation

Writes Run + Artifact nodes back to Neo4j with IMPLEMENTS, VALIDATES, and REFUTES edges. Failed runs are evidence too; the graph remembers what broke.

📊
queries.py · insights.py

Evidence + insights

Live claim table with validated / refuted / untested filters, plus an Insights tab that adjudicates CONTRADICTS pairs from sandbox verdicts and tracks coverage.

🕸
static/index.html

Interactive graph UI

vis-network visualization with search, deep links, keyboard shortcuts, export, zoom controls, and tabbed side panel (Evidence · Insights · Console · Ask).

◈
verigraph.pipe · cognee_memory.py

Ask the research agent

Every Ask now recalls relevant Cognee Brain context before the graph-grounded answer. Visitor sessions remain isolated by anonymous id—no email or IP is sent to Cognee.

↺
demo_reset.py

Reset demo

One-click pristine state: clears Run/Artifact nodes, reloads papers, wipes local run dirs. Evidence returns to "no runs yet" for a clean stage demo.

☁
butterbase.py

Run history mirror

Papers and measured runs persist in Butterbase outside Neo4j, preserving an auditable evidence archive alongside fresh cloud execution.

⇄
insights.py

Conflict adjudication

CONTRADICTS edges between claims from different papers. Insights ranks each conflict as untested, leading, resolved, or both-supported once runs exist.

↓
/api/export · /api/evidence-brief

Workspace export

Download JSON snapshots or a shareable markdown evidence brief (print to PDF). Compare two runs side-by-side and batch-run never-executed methods.

⏱
/api/timeline

Claim timeline

Track how claim verdicts flip as new runs land. Citation layout mode highlights CITES edges across papers.

☁
Daytona · workspaces

Live cloud runs + saves

When DAYTONA_API_KEY is set on Butterbase, RUN executes live sandboxes. Named workspace snapshots persist per demo email beyond the access gate.

HackWithBay sponsor · Cognee

Structured graph + semantic memory

Neo4j holds the evidence graph — claims, conflicts, runs, verdicts. Cognee adds active semantic memory over 25 indexed documents, so every Ask can reason across paper prose and experiment history before returning graph-grounded evidence.

🧠
25 documents in BrainSix complete paper documents and all 19 persisted Butterbase runs are indexed with claims, metrics, stdout excerpts, and verdicts tagged by paper and run id.
🔍
Recall on every AskPOST /api/ask calls Cognee recall for every question. Ask "what did Wilson show about Adam generalization?" and retrieve GD 0.000 vs Adam 0.425 before the graph answer.
⚡
Private visitor continuityAsk, Run, Investigate, Brief, and Conduct actions write to a visitor-specific Cognee session using only the anonymous Verigraph id. Emails and IP addresses stay in Butterbase.
📎
Butterbase-aware backfillscripts/sync_cognee.py merges local documents with the complete Butterbase run archive, then writes the corpus to managed Cognee Brain.
How it helped us at HackWithBay: Judges could ask natural-language questions across three disagreeing optimizer papers. Cognee surfaced Wilson's counterexample metrics and AdamW generalization notes while Neo4j still owned the authoritative VALIDATES / REFUTES edges. Two memories, one product — graph for proof, Cognee for context.

Dual-memory architecture

Neo4j answers "which claim does run X validate?" Cognee answers "what did the paper say about test error?" Together they make the Ask tab feel like talking to a lab notebook, not a database console.

Corpus sync → 6 papers + 19 runs → Cognee Brain
Every Ask → recall(query) → semantic context + graph answer
Every action → anonymous visitor session → Cognee Sessions
Source of truth → Neo4j edges + Butterbase run history
Neo4j AuraStructured evidence: Paper, Claim, Method, Run, VALIDATES, REFUTES, CONTRADICTS
CogneeActive cloud memory: 25 indexed documents, every-Ask recall, visitor-isolated sessions
Enable (local)COGNEE_ENABLED=true + ROCKETRIDE_GATEWAY_*
Enable (cloud)COGNEE_CLOUD=true + COGNEE_SERVICE_URL + COGNEE_API_KEY → Sessions on platform.cognee.ai

Why not Paper2Code?

Paper2Code stops at generation

  • Produces code stubs, no execution
  • No verdict on whether claims hold
  • Failures disappear; no graph memory
  • Contradictions between papers invisible
  • Evidence is "the model said so"

Verigraph ends in evidence

  • Code runs in Daytona or local sandbox
  • VALIDATES / REFUTES attached to claims
  • Failed runs recorded as graph citizens
  • CONTRADICTS edges + run adjudication
  • Metrics, logs, and run ids, reproducible
Architecture

The closed-loop pipeline

Eight Python modules, one RocketRide agent pipeline, five sponsor integrations, and active Cognee semantic memory—each step verified independently.

01 · extract.py

Extract

Paper text → claims, methods, datasets, citations, claim_relations as JSON. Schema-validated; fallback method if LLM returns none.

02 · graph.py

Load

Idempotent MERGE into Neo4j Aura. Label-scoped deletes on shared instance. CONTRADICTS, CITES, FROM, DESCRIBED_IN edges.

03 · codegen.py

Generate

Method node → single-file experiment. Output contract: last stdout line is JSON with metrics and claim_checks verdicts.

04 · runner.py

Run

Execute in Daytona sandbox (auto | daytona | local). Persist run record to runs/ with full capture.

05 · curator.py

Curate

Write Run + Artifact nodes. IMPLEMENTS → Method, VALIDATES/REFUTES → Claim, PRODUCED → Artifact (stdout capped 4k).

06 · queries.py

Evidence

Canned Cypher: claims, conflicts, methods, evidence. Powers the evidence table and CLI inspection.

07 · db_neo4j + cognee

Ask

Every question recalls semantic context from Cognee Brain, then combines it with authoritative graph evidence.

08 · butterbase.py

Mirror

Sync papers and runs to Butterbase paper2result app. Archive outside the graph; gateway also powers all LLM calls.

Technical specification

Stack, schema & APIs

Full implementation details for HackWithBay judges and developers who want to reproduce or extend the system.

Sponsor integrations

RocketRideLocal engine on :5565. Pipeline verigraph.pipe: agent_rocketride (6 waves, internal memory) + db_neo4j (NL→Cypher) + tool_python. LLM routed through one gateway node.
Neo4j AuraCloud graph database (neo4j+s://). Product is the graph, 8 node labels, 10+ relationship types. Label-scoped ops on shared Aura instance.
ButterbaseAI gateway (OpenAI-compatible) for all LLM calls: extraction, codegen, agent. Dedicated paper2result app for papers + run history persistence.
DaytonaIsolated sandbox execution via daytona-sdk. --backend auto selects Daytona when API key present; local subprocess fallback otherwise.
CogneeManaged semantic memory — 25 documents in Brain, recall() on every Ask, and anonymous visitor-specific Sessions. Neo4j remains authoritative for verdict edges.

LLM & models

GatewayButterbase AI gateway: ROCKETRIDE_GATEWAY_BASE_URL + ROCKETRIDE_GATEWAY_KEY
Modelx-ai/grok-4.3 (Grok) via ROCKETRIDE_GATEWAY_MODEL. Single route for extract, codegen, and agent pipeline.
Temperature0.0 for extraction/codegen (deterministic JSON). Agent uses pipeline instructions with accuracy rule for metric quoting.
Direct keyXAI_API_KEY available for direct xAI access if needed; production path uses Butterbase gateway.

Graph schema (Neo4j)

Nodes: Paper · Author · Claim · Method · Dataset · Task · Run · Artifact

Relationships:
  (Author)-[:WROTE]->(Paper)
  (Paper)-[:CITES]->(Paper)
  (Claim)-[:FROM]->(Paper)
  (Method)-[:DESCRIBED_IN]->(Paper)
  (Paper)-[:EVALUATED_ON]->(Dataset)
  (Paper)-[:ADDRESSES]->(Task)
  (Claim)-[:SUPPORTS|CONTRADICTS]->(Claim)
  (Run)-[:IMPLEMENTS]->(Method)
  (Run)-[:VALIDATES|REFUTES]->(Claim)
  (Run)-[:PRODUCED]->(Artifact)

REST API (FastAPI · port 8787)

GET /Landing page (marketing)
GET /demoLive demo UI (vis-network graph + side panel)
GET /api/graphFull node/edge payload for graph visualization
GET /api/evidenceEvidence table rows (claim → verdict or "no runs yet")
POST /api/run/{method_id}Closed loop: codegen → execute → curate. Body: {"params":{}}. Query: backend=auto|local|daytona
POST /api/askQuestion → Cognee recall (when enabled) + RocketRide agent pipeline → graph-grounded answer
POST /api/memory/recallDirect semantic memory search over indexed papers and run logs
POST /api/upload-arxivFetch arXiv (HTML/PDF) → extract → load graph
POST /api/upload-filePDF or text file → extract → load graph
POST /api/resetClear runs, reload papers, pristine evidence state

Python dependencies

neo4j ≥ 5.20 · fastapi ≥ 0.110 · uvicorn ≥ 0.29
rocketride ≥ 1.3 · daytona-sdk ≥ 0.10
cognee · fastembed (optional semantic memory)
openai ≥ 1.30 · anthropic ≥ 0.30 · numpy ≥ 1.26
pypdf ≥ 4.0 · python-multipart · certifi · python-dotenv

Environment variables

NEO4J_URI · NEO4J_USERNAME · NEO4J_PASSWORD
ROCKETRIDE_URI · ROCKETRIDE_APIKEY · PIPELINE_URL
ROCKETRIDE_GATEWAY_BASE_URL · _KEY · _MODEL
ROCKETRIDE_NEO4J_URI · _USER · _PASSWORD
BUTTERBASE_API_KEY · BUTTERBASE_APP_ID · _SERVICE_KEY
P2R_BUTTERBASE_APP_ID · DAYTONA_API_KEY · XAI_API_KEY
COGNEE_ENABLED (true|false) · COGNEE_DATASET_NAME

Run commands

Setuppython3 -m venv .venv && pip install -r requirements.txt && cp .env.example .env
Load graph.venv/bin/python app/graph.py --reset
Smoke testsscripts/check_neo4j.py · scripts/check_pipeline.py
Start UI.venv/bin/uvicorn app.server:app --port 8787 → http://localhost:8787
CLI loop.venv/bin/python scripts/demo_loop.py wilson2017-m1
Reset demo.venv/bin/python scripts/reset_demo.py or UI reset button
Sync CogneeCOGNEE_ENABLED=true .venv/bin/python scripts/sync_cognee.py — backfill papers + runs

Verified status

Archive (6 papers · 19 claims · 25 runs)
Neo4j graph (conflicts + evidence)
Codegen (Wilson counterexample)
Runner: local + Daytona (4.9s)
Closed loop (evidence flip)
RocketRide agent (graph Q&A)
Demo UI (graph + tabs + ask)
Butterbase gateway + mirror
Cognee Brain + visitor Sessions (active)
Deployed public URL

See it validate a real paper.

Click the violet method node, watch the code run in a sandbox, and see the evidence table flip live: GD 0.000 vs Adam 0.425, digit-for-digit.

Open the demo ▶