Team Ai
Datasetpublic

thelets/opendoor-knowledge-graph

Opendoor Financial Event Knowledge Graph — pipeline data The gitignored data/ tree of the Prototyping-Financial-Knowlege-Graph repository, published so a second machine can regenerate the graph without re-fetching EDGAR. This dataset is the data half only. The code, configuration, ontology and recorded provider answers live in the repository. Read Reproducing the graph before use — at the commit this snapshot was taken from, the repository alone cannot project this run, and the… See the full description on the dataset page: https://huggingface.co/datasets/thelets/opendoor-knowledge-graph.

sourceHugging Faceotherupdated 2mo agoView on Hugging Face
0likes255downloads
Dataset Card

Opendoor Financial Event Knowledge Graph — pipeline data

The gitignored data/ tree of the Prototyping-Financial-Knowlege-Graph repository, published so a second machine can regenerate the graph without re-fetching EDGAR.

This dataset is the data half only. The code, configuration, ontology and recorded provider answers live in the repository. Read Reproducing the graph before use — at the commit this snapshot was taken from, the repository alone cannot project this run, and the reason is recorded below rather than left to be discovered.

Anchor company: Opendoor Technologies Inc. (CIK 0001801169, Nasdaq: OPEN). Source: SEC EDGAR.

What is here

994.5 MiB across 2,755 files (1,042,852,388 bytes). Every path keeps its repository-relative name, so downloading into the repository root puts each file where the pipeline expects it.

PathSizeContentsRole
data/raw/sec/746 MB2,128 files — SEC source bytes, original filenames, per-filing _filing.jsonInput to normalization
data/normalized/sec/105 MB588 files — per-document JSON + passages JSONLInput to extraction
data/normalization_catalog/41 MBpassages.jsonl, documents.jsonl, selection.jsonl, issues.jsonlInput to the graph
data/extraction_runs/extract-v1-lexical-7f72d6172630/33 MB7 catalogs + manifest.json + lane_outputs.jsonl + report.md + run.completeInput to the graph
data/graph_runs/graph-v1-eeba753149e9/74 MBnodes.jsonl, edges.jsonl, manifest.jsonGraph output — for Neo4j load and byte-comparison
data/catalog/1.9 MBfilings.jsonl, artifacts.jsonlDerived acquisition index
data/normalization_reports/, data/normalization_runs/, data/reports/, data/runs/1.4 MBPer-run reports and issue filesDiagnostics
provenance/ontology_definitions/88 KBAll 12 ontology YAML files as they were when the run was producedSee Reproducing the graph
provenance/CODE_STATE.txt4 KBCommit, branch, and the uncommitted-file list at snapshot timeProvenance
MANIFEST.sha256250 KBsha256 size path for all 2,755 files, sorted by pathTransfer verification

data/ is only two files away from being the graph's whole input: graph.core.inputs.load_run opens the extraction run directory and normalization_catalog/{passages,documents}.jsonl, and nothing else. Everything above those two rows exists so earlier stages can be replayed.

Deliberately excluded

ExcludedSizeWhy
data/superseded_runs/extract-v1-lexical-2422c4252c07/33 MBSuperseded extraction run
data/graph_runs/graph-v1-886059d862ce/74 MBProjected from that superseded run (projection 1.1.0)
.env—Local Neo4j password. .env.example is in the repository

data/ was scanned for credential patterns before upload; the only provider record in any manifest is a local model filename (Qwen3.5-9B-Q4_K_M.gguf) with provider_calls_permitted: 0.

Corpus and run facts

All values below are read from the shipped manifests, not restated from repository docs.

LayerMeasured
Acquisition109 filings, 2,019 artifacts
Normalization294 documents, 12,442 passages (1,935 table); corpus_id 294d-12442p-9992c4eb1888
Extractionrun extract-v1-lexical-7f72d6172630, created 2026-08-03T13:33:47Z
— candidates11,848 (153 yielded a claim, 11,695 did not)
— claims / observations2,714 / 2,704
— events / relationships6 / 4
— issues / rejected claims17,130 / 49
Graphrun graph-v1-eeba753149e9, projection 1.2.0, created 2026-08-03T13:34:46Z
— nodes28,836 — Issue 17,127, Passage 8,776, Observation 2,704, Document 185, Metric 26, Entity 9, Event 6
— edges35,600 — FOUNDIN 17,130, PARTOF 8,776, EVIDENCEDBY 2,710, HASOBSERVATION 2,704, OBSERVATIONOFSUBJECT 2,704, CONCERNSMETRIC 1,523, DISTINCTFROM 36, PARTICIPATES_IN 10, others 7

Ontology: real_estate_marketplace_v1, definition_hash 337e0e59534da0d2eb3235152af3d48f0510cdb391feed27956a4e80b0858af2. Extraction code commit: c59818e4a775103c94f3438306c051b66ef54387.

The extraction run replays 15 recorded provider answers rather than calling a model (mode: replay_only). The answers are committed in the repository at benchmarks/extraction/v1/answers/, so extraction is reproducible offline — no API key, no model download.

Getting the data

The repository is private, so a read token is required (https://huggingface.co/settings/tokens).

bash
pip install huggingface_hub
hf auth login                     # paste a read token

cd /path/to/Prototyping-Financial-Knowlege-Graph
hf download thelets/opendoor-knowledge-graph --repo-type=dataset --local-dir .

--local-dir . writes data/... directly into the repository root, which is where config/*.yaml expects it. provenance/, README.md and MANIFEST.sha256 land beside it and are not read by any pipeline stage.

Verify the transfer

bash
sha256sum -c MANIFEST.sha256

2,755 lines, all OK. The manifest is independent of the per-run manifests, which carry their own catalog_digests — checking both proves the run is internally consistent and that it arrived whole.

Reproducing the graph

The graph projection will refuse to run against a clean clone of commit `c59818e`. This is a measured fact, not a caution:

graph/core/manifest.py:171 compares the loaded ontology's definition_hash against the one the extraction run recorded and raises GraphInputError — "the vocabulary changed under a finalized run" — when they differ. They differ:

Ontology source`definition_hash`
The tree that produced this run337e0e59… (what manifest.json records)
Commit c59818e as committede8d4af70…

The run was produced from a working tree carrying uncommitted changes to ontology/versions/real_estate_marketplace_v1/definitions/{claims,constraints,events}.yaml (+80 lines) and to graph/core/models.py, where GRAPH_PROJECTION_VERSION is 1.2.0 uncommitted against 1.1.0 at c59818e. Since the graph run id derives from (projection_version, extraction_run_id, ontology_definition_hash) (graph/core/manifest.py:137), a clean clone would compute a different run id even if the hash gate were passed.

Two ways forward:

  1. 1.Preferred — publish the code. Commit and push branch impl/f0-factual-spine-contracts, then check it out on the second machine. The ontology YAML and the projection-version bump travel with it, both discrepancies disappear, and graph-v1-eeba753149e9 reprojects byte-for-byte.
  2. 2.Interim. provenance/ontology_definitions/ holds all 12 definition YAML files as they were when the run was produced — the hash covers the whole directory, so the full set ships rather than only the three that changed. Copying them over ontology/versions/real_estate_marketplace_v1/definitions/ restores definition_hash 337e0e59… and satisfies the gate. This does not restore the GRAPH_PROJECTION_VERSION bump, so the projection succeeds but mints a run id that is not graph-v1-eeba753149e9. Use it to read the shipped graph, not to claim reproduction.

Loading the shipped nodes.jsonl / edges.jsonl into Neo4j needs neither workaround — that output is already projected.

Provenance and licensing

Source documents are SEC EDGAR filings by Opendoor Technologies Inc., retrieved 2026-07-31. US government edicts and EDGAR submissions are not subject to copyright in the United States; the filings themselves are public disclosure. Raw bytes and original filenames are preserved exactly, and every artifact carries a hash, a source URL and a fetch timestamp.

The derived layers — normalized passages, extraction catalogs, the ontology, and the projected graph — are the work of this project. license: other is declared because the archive mixes public-source documents with project-authored derivations rather than because any part is restricted.

Extraction is imperfect by construction: this run holds 17,130 issues and 49 rejected claims, and rejected_claims.jsonl carries pre-validation model output that was refused. Nothing in rejected_claims.jsonl should be read as fact. None of this is investment advice.