✦ Open Source · In Development

LLMs Propose. Humans Verify.

GiraffeGraph is an open-source knowledge graph engine that keeps a human in the loop — built to keep LLM extraction grounded in the source and the schema fixed to what you designed. That is the design goal, not a result yet. The project measures how well each check works.

First case study: hadith isnad chainsPaper in preparation
GiraffeGraphconcept preview — isnad-chains/graph
Schema Studiov1 locked

Node Types

Narrator
Hadith
Collection
Source Span

Relations

→ NARRATED_FROM

Narrator → Narrator

→ TRANSMITS

Narrator → Hadith

→ RECORDED_IN

Hadith → Collection

The Challenge

LLMs are fluent. That doesn't make them faithful.

  • ✕Hallucination: plausible narrators and links that no source contains
  • ✕Schema drift: ad-hoc types like HEARD_FROM, TOLD and narratedBy pile up across runs
  • ✕Name variants silently merged — or the same person split in two
  • ✕No trace of which sentence a fact came from, or who approved it

The Solution

Designed so every fact is grounded and approved.

  • ✓Each extracted triple is tied to the source span it came from
  • ✓The schema is locked — a type outside it is never written; it becomes a proposal for review
  • ✓Entity merges are suggested by the model and decided by a human
  • ✓Every change is versioned, so the graph stays auditable
SufyānYaḥyāal-TaymīʿAlqamaʿUmar

How It Works

From raw input to living knowledge — in 6 steps

The model proposes. A human decides. The graph records how each fact was accepted.

Schema Design

Define your node types, relation types and properties. AI schema suggestions from your first documents are planned.

Ingest Sources

Load source texts — hadith collections, documents, transcripts. Each source is split into citable units.

AI Extraction

The LLM proposes entities and relations — constrained to your schema and linked to the exact source span.

Review & Validate

Every fact enters the graph either through a human decision or through an explicitly recorded policy — and the record says which. You accept, reject, edit or merge.

Graph Grows

Each approved batch lands as a versioned delta on top of the existing graph — never an overwrite.

Explore & Query

Walk chains visually, query relationships, and trace any fact back to its source.

What We're Building

Every layer of intelligence, fully in your hands

The core components of the first open-source release — from schema definition to graph exploration, every step reviewable and versioned.

Schema Studio

Drift Guard

Define node types, relations, properties and validation rules once. The schema is locked during extraction: when the model wants a type that doesn't exist, it is never written to the graph. It appears in the review queue as a proposal, and the schema changes only when you edit it. The panel below is a concept preview.

Node Typesv1 — Locked
Narrator
Hadith
TeacherProposed type
Collection

AI Extraction Engine

Schema-constrained extraction where every triple carries the source span it was read from.

bukhari_001.extraction.json
{
  "type": "Narrator",
  "name": "Sufyān b. ʿUyayna",
  "span": "ḥaddathanā Sufyān…",
  "confidence": 0.94,
  "relations": [
    {"NARRATED_FROM": "Yaḥyā b. Saʿīd"}
  ]
}

Human-in-the-Loop Review

The model proposes, you decide. Name variants are resolved by a human. A claim whose quote is missing from the source text goes to review with the reason shown. The queue below is an illustration.

✓al-Ḥumaydī NARRATED_FROM Sufyān
✕ʿUmar NARRATED_FROM Abū Hurayra — no source span
?"Ibn ʿUyayna" = "Sufyān b. ʿUyayna"?

Iterative Graph Growth

Every new source adds a delta. The graph grows — never overwrites, always expands.

Full Versioning

Schema versions, extraction runs, graph deltas — every change is tracked and auditable.

v4 — currentactive
v3 — 2d agostable
v2 — 1w ago

Any Domain

Isnad chains are the first case study. The schema-driven design is meant for any domain.

HadithHistoryLegalResearchMedicalStory

Case Study

Hadith Isnad Chains

An isnad is the chain of narrators through which a hadith was transmitted — a graph by nature, and a demanding test for LLM extraction.

Ṣaḥīḥ al-Bukhārī #1 — “Actions are judged by intentions”NARRATED_FROM ↓
  1. al-Bukhārīcollector
  2. al-ḤumaydīʿAbd Allāh b. al-Zubayr
  3. Sufyān b. ʿUyaynaalso written “Ibn ʿUyayna”
  4. Yaḥyā b. Saʿīd al-Anṣārīpivot of the chain
  5. Muḥammad b. Ibrāhīm al-Taymī
  6. ʿAlqama b. Waqqāṣ al-Laythī
  7. ʿUmar b. al-Khaṭṭābcompanion
  8. The Prophet ﷺ

Ground truth exists

Classical rijāl literature documents who narrated from whom, so extracted chains can be checked against scholarship.

Zero tolerance for errors

One invented or misplaced narrator changes how a hadith is graded. Hallucination is not a cosmetic problem here.

Names vary everywhere

The same narrator appears by kunya, nisba or laqab. Entity resolution needs a human expert in the loop.

Research

Built Alongside a Paper

In preparation

A Human-in-the-Loop Knowledge Graph Generation Engine for Preventing Hallucination and Schema Drift in LLMs: An Application on Hadith Isnad Chains

Questions the paper will answer

  • →How much does source-span grounding plus human review reduce hallucinated triples?
  • →Does a locked schema with a proposal gate keep the graph consistent across extraction runs?
  • →How much expert effort does the review loop cost per verified chain?

The preprint and the code will be linked here once they are published.

Frequently Asked Questions

GiraffeGraph

Built in the open.
Follow along.

The first release and the paper are on the way. Watch the repositories to hear first.

Open sourceResearch projectNo sign-up