CoolFace
Datasetpublic

epiq-ai-labs/corporatebench

CorporateBench Dataset release for CorporateBench: Large-Scale Q&A Benchmarking with Temporal Knowledge Bases. CorporateBench evaluates information extraction, retrieval, and question answering over four synthetic corporate corpora ranging from 353 to 232,692 released documents. The corpora are generated from temporally evolving knowledge bases, providing deterministic ground truth across related documents. Dataset Viewer https://corporatebench.epiqai.com/… See the full description on the dataset page: https://huggingface.co/datasets/epiq-ai-labs/corporatebench.

sourceHugging Faceapache-2.0updated 14d agoView on Hugging Face
0likes247downloads
Dataset Card

CorporateBench

Dataset release for CorporateBench: Large-Scale Q&A Benchmarking with Temporal Knowledge Bases.

CorporateBench evaluates information extraction, retrieval, and question answering over four synthetic corporate corpora ranging from 353 to 232,692 released documents. The corpora are generated from temporally evolving knowledge bases, providing deterministic ground truth across related documents.

Dataset Viewer

<https://corporatebench.epiqai.com/>

Quickstart

Setup:

bash
uv sync --extra openai --extra anthropic

Run QA:

python
import asyncio

from corporatebench import CorporateBench, OpenAIBackend


async def main():
    async with CorporateBench(company="zenith") as bench:
        result = await bench.run(
            OpenAIBackend("gpt-5-nano"),
            method="rag",
            limit=10,
        )
        print(result.score)


if __name__ == "__main__":
    asyncio.run(main())

Run knowledge base evaluation:

python
import asyncio

from corporatebench import CorporateBench, OpenAIBackend


async def main():
    async with CorporateBench(company="zenith") as bench:
        result = await bench.run_kb_evaluation(
            OpenAIBackend("gpt-5-nano"),
            max_requests=bench.kb_evaluation_requests,
        )
        print(result.entities.macro_f1)


if __name__ == "__main__":
    asyncio.run(main())

Run topic classification for Biocure or Pound:

The overrides below run 31 requests instead of the 15,000 requests used by the full defaults.

python
import asyncio

from corporatebench import CorporateBench, OpenAIBackend


async def main():
    model = OpenAIBackend("gpt-5-nano", max_output_tokens=500)
    async with CorporateBench(company="biocure") as bench:
        result = await bench.run_topic_classification(
            model,
            shots=(0,),
            repetitions=1,
            test_size=31,
            max_requests=31,
        )
        print(result.scores_by_shots)


if __name__ == "__main__":
    asyncio.run(main())

What is this?

LLMs are increasingly able to answer complex questions about enterprise-scale document collections. But evaluation is hard: companies don't want to share internal communications, and synthetic datasets have been overly simple. We present CorporateBench (CB), a human-validated multi-task Q&A benchmark whose scale approaches the conditions LLMs encounter in corporate communication networks, with evaluation corpora surpassing 230,000 documents. CB evaluates LLMs across two dimensions (information extraction and knowledge base querying) through four synthetically generated firms ranging from 12 to 10,000 employees. Each corpus is sampled from a temporally evolving knowledge base describing a consistent world, guaranteeing cross-document logical consistency even across hundreds of thousands of documents. CB provides LLM developers a metric for corporate communication reasoning, filling a crucial gap in the benchmarking ecosystem.

Dataset structure

text
data/
├── kb/                 # One .kb archive per company
├── kb_qa/              # Knowledge-base QA questions
├── topic_qa/           # Document-topic QA questions
├── integrated_qa/      # Questions combining graph and topic evidence
└── additional_qa/      # Supplemental topic-hierarchy configurations

Each .kb file is a ZIP-compatible archive containing:

PathContents
graph.nqGround-truth entities, properties, and temporal relationships in N-Quads
ontologies/*.ttlThe RDF ontologies used to validate the graph
documents/*.txtSynthetic email, agenda, meeting-minute, and calendar documents
manifest.jsonArchive format, version, component, and document-count metadata

Company configurations

ConfigurationScaleIndustryEmployeesDocuments in `.kb`
zenithSmallTechnology12353
streamvibeMediumMedia1223,925
biocureLargePharmacare1,11026,492
poundExtra largeFinance10,210232,692

Tasks and evaluation

TaskConfigurationsReleased protocolMetric
KB EvaluationAll four companiesExtract entities and relationships from every document, then map them to ground truthPer-type and macro entity F1; structural and temporal relationship F1
Topic Classificationbiocure, pound31 and 17 labels respectively; 0, 10, or 50 shots; 1,000 test documents; five repetitionsMacro F1 across topics
KB QAAll four companies250 questions per company about entities, relationships, and timeExact match for scalar answers; set F1 for lists
Topic QAAll four companies250 questions per company about document topicsExact match for scalar answers; set F1 for lists
Integrated QAAll four companies250 questions per company combining graph and document evidenceExact match for scalar answers; set F1 for lists

The three QA tasks contain 3,000 core questions. The paper evaluates them with either document retrieval (RAG, k=10) or SQL access to the ground-truth KB, with at most five tool calls per question. Scalar comparison is case-insensitive; list answers receive partial credit through set F1.

QA schema

Every core QA file is a JSON object with metadata and questions fields.

FieldTypeDescription
metadata.dataset_typestringkb_qa, topic_qa, or integrated_qa
metadata.kbstringAssociated .kb filename
metadata.topic_levelinteger, optionalTopic-hierarchy level used to generate topic-aware questions
questions[].idintegerQuestion identifier within the file
questions[].questionstringNatural-language evaluation question
questions[].answerboolean, integer, string, or list of stringsDeterministic ground-truth answer
questions[].answer_typestringbool, int, date, str, or List[str]
questions[].templatestringInstantiated question template
questions[].variablesobjectTemplate values used to construct the question
questions[].constraintsinteger, optionalNumber of constraints required to answer the question

The supplemental files under additional_qa/ use the same schema and provide alternate topic-hierarchy levels. Topic-classification examples and labels are read from the documents and topic graph inside the biocure and pound KB archives.

Construction and validation

  1. 1.Define an RDF ontology for companies, departments, teams, employees, projects, tasks, meetings, and temporal relationships.
  2. 2.Generate a valid organizational hierarchy, then simulate tasks, meetings, and hierarchy changes over a 90-day quarter.
  3. 3.Annotate entities and serialize the world as an ontology-validated N-Quads graph.
  4. 4.Generate corporate documents around graph-derived evidence strings. Email structure is modeled on the Enron corpus; topics, employee personalities, and formality levels provide variation.
  5. 5.Derive QA answers through manually verified SPARQL queries rather than model generation.

Responsible use

CorporateBench is intended for research and evaluation of retrieval, extraction, and reasoning systems. It contains synthetic organizations and communications, not real corporate records. Generated names may nevertheless coincide with real people by chance.

Cite us

bibtex
@inproceedings{hamilton2026corporatebench,
  title = {{CorporateBench}: Large-Scale {Q\&A} Benchmarking with Temporal Knowledge Bases},
  author = {Hamilton, Sil and Sun, Albert Yu and Romero, Oscar J. and Henneking, Carl-Leander and Mimno, David and Yang, Bishan and Labutov, Igor},
  booktitle = {Findings of the Association for Computational Linguistics: EMNLP 2026},
  publisher = {Association for Computational Linguistics},
  address = {Budapest, Hungary},
  month = {October},
  year = {2026}
}