№28

8 октября 2026

Разбор

Orgforge: правдоподобные данные несуществующей компании

Если коротко

Что даёт
готовый генератор правдоподобной корпоративной переписки для несуществующей компании - Slack, Jira, Confluence, email, Zoom-транскрипты, Salesforce, Zendesk, Datadog-метрики, счета. Всё выдумано, но факты согласованы между системами: если в Jira-тикете написано, что инцидент закрыл конкретный человек, та же причина и тот же человек будут и в Slack-треде, и в постмортеме на Confluence, и в эскалации Zendesk.
Зачем
для демо AI-агента (RAG, «второй мозг», ассистент поддержки) нужен реалистичный корпоративный корпус, а не три абзаца текста для примера. На реальных данных клиента такое демо делать нельзя, а обычная синтетика от одной LLM на объёме начинает сама себе противоречить.
Как сделать
самый простой путь - скачать готовый прогон с Hugging Face, без установки и ключей. Более сложный - сгенерировать свою компанию через открытый репозиторий (Docker плюс ключ любой LLM или мощная видеокарта).
Профит
готовый датасет (22 530 документов, 60 дней симуляции) бесплатный, под MIT, скачивается тремя строчками кода.
Где подвох
готовый датасет - это ровно одна легенда (спортивный стартап Apex Athletics, английский язык, ~41 сотрудник), под свою отрасль не подстроить. Своя компания - это уже не бесплатная кнопка: либо видеокарта на 48 ГБ видеопамяти, либо платный API-ключ без внятной оценки итогового чека в документации.

Что это

OrgForge - открытый симулятор (автор - Jeffrey Flynt, статья на arXiv), который прогоняет виртуальную компанию через N дней жизни и на выходе отдаёт пятнадцать видов артефактов: страницы Confluence, тикеты Jira, Slack-треды, пул-реквесты на Git, транскрипты созвонов в Zoom, записи в Salesforce, тикеты Zendesk, письма, метрики Datadog, счета, NPS-опросы и полный лог симуляции. Автор прямо пишет, зачем: единственный массовый корпоративный датасет для обучения и проверки AI-агентов - это слитая переписка Enron двадцатилетней давности, с юридическими ограничениями и перекосом по одной компании в кризисе.

Ключевая идея: факты (кто дежурил, какой тикет открыт, когда уволился инженер, какой клиент задет инцидентом) генерирует детерминированный Python-движок, а не языковая модель - LLM только пишет текст поверх уже решённых фактов. Когда инженер увольняется посреди спринта, движок сам переназначает его тикеты и аккаунты в Salesforce, пересчитывает, кто теперь «мост» в графе команды, и фиксирует пробел в знаниях - а дальше этот пробел честно всплывает в постмортемах следующих инцидентов, потому что про него знает движок, а не импровизация модели.

На Hugging Face лежит готовый прогон на 60 дней для вымышленной компании Apex Athletics (спортивные носимые устройства, ~41 сотрудник) - 22 530 документов и 10 941 событие движка, бесплатно, под MIT.

Как повторить

Вариант 1 - взять готовый датасет (бесплатно, без установки)

  1. pip install datasets
  2. ```python

from datasets import load_dataset

ds = load_dataset("aeriesec/orgforge")

corpus = ds["train"]

jira = corpus.filter(lambda x: x["doc_type"] == "jira")

incidents = corpus.filter(lambda x: x["is_incident"])

3. В каждой строке - `doc_type` (jira / slack / confluence / email / zoom_transcript / invoice и так далее), `title`, `body`, `day`, `actors`, `tags` и `artifact_ids` - JSON со ссылками на связанные документы того же инцидента (тикет → Slack-тред → постмортем → эскалация в Zendesk). Это и есть готовый контекст для демо: кладёте нужные строки агенту вместо реальных писем клиента.
4. В `supplemental/` на той же странице лежат `simulation_snapshot.json` (полное состояние компании на конец симуляции) и `domain_registry.json` (кто чем владел и когда) - пригодятся, если собираете вопросы для проверки агента с заведомо известным правильным ответом.

### Вариант 2 - сгенерировать свою компанию

Нужно, если легенда Apex Athletics не подходит - другая отрасль, язык, размер команды.

1. `git clone https://github.com/tenurehq/orgforge && cd orgforge`
2. Отредактировать `config/config.yaml` - название и описание компании, отрасль, оргструктура, персоны сотрудников, число дней симуляции (по умолчанию 22).
3. Выбрать, на чём считать (поле `quality_preset` в том же конфиге):
   - **Бесплатно, но тяжело:** Ollama локально - по документации лучший пресет (`local_gpu`, Llama 3.3 70B) требует ~48 ГБ видеопамяти (A100 или две A10G), обычный ноутбук не потянет.
   - **Платно:** OpenAI, Anthropic, AWS Bedrock или Gemini - ключ в `.env`, пресет `openai` / `anthropic` / `cloud` в конфиге. Цена - по токенам выбранного провайдера, готовой оценки суммы в документации нет.
   - Единственная конкретная цифра по деньгам в README - для аренды GPU в облаке: `g5.2xlarge` на споте AWS (≈0,50 доллара в час) тянет 70B-модель, полный 22-дневный прогон обходится примерно в 3-5 долларов.
4. Поднять: `docker compose up` (всё в контейнерах) или `docker compose up mongodb orgforge` (если LLM - локальный Ollama или облачный API, по инструкции выше).
5. После завершения прогона - `python post_sim_artifacts.py`, результат появится в `./export/`.

## Где подвох - разверну

Готовый бесплатный датасет - это ровно одна конкретная легенда: спортивный стартап Apex Athletics, английский язык, 60 дней, ~41 человек. Нужна своя отрасль, язык или условия клиента (банк, медицина, маленькая команда) - под это придётся генерировать свой прогон, а это уже не бесплатная кнопка: либо видеокарта на 48 ГБ видеопамяти, которой ни у кого нет под рукой, либо платный ключ OpenAI/Anthropic/Gemini без внятной оценки итогового чека - единственная названная в документации сумма (3-5 долларов) относится не к оплате по токенам, а к отдельному сценарию с арендой GPU-инстанса на AWS.

Плюс это всё равно синтетика - в карточке датасета авторы сами пишут, что это controlled benchmark environment, а не замена реальных корпоративных данных: живая текстура настоящей переписки, политика и неоднозначность присутствуют лишь в той мере, в какой их туда заложила LLM поверх персонажей.

## Где это пригодится

Ровно то, под что находку изначально сохранили: готовый стенд для демо AI-агента («второй мозг», RAG, ассистент поддержки) клиенту без единого байта его реальных данных - свой инцидент, свои тикеты, свои письма, которые нигде потом не всплывут как утечка. Плюс годится для проверки RAG-пайплайна на вопросах, где правильный ответ зависит от даты (инженер был на месте 1 числа и уволился к 12-му), и на вопросах, которые требуют пройти цепочку причин через несколько систем сразу, а не найти один подходящий документ.

## Ссылки и ресурсы

- **Готовый датасет (Hugging Face), `aeriesec/orgforge` «OrgForge EpistemicBench»:** https://huggingface.co/datasets/aeriesec/orgforge - бесплатно, MIT. 22 530 документов, 60-дневная симуляция компании Apex Athletics. Работает (проверено curl, HTTP 200).
- **Репозиторий симулятора:** https://github.com/tenurehq/orgforge - бесплатно, MIT, Python, 20 звёзд. Старый адрес `github.com/aeriesec/orgforge` редиректит сюда же (организацию переименовали).
- **Статья на arXiv:** https://arxiv.org/abs/2603.14997 - «OrgForge: A Multi-Agent Simulation Framework for Verifiable Synthetic Corporate Corpora», Jeffrey Flynt, март 2026, бесплатно, CC BY 4.0. Описывает методику - для чтения, не для запуска.
- **Архивный релиз на Zenodo:** https://zenodo.org/records/19036018 - бесплатно, DOI для цитирования конкретной версии.

## Оговорки

- Генерацию своей компании (вариант 2) руками от начала до конца не прогонял - шаги и команды собраны по README репозитория построчно, а не по собственному запуску. На практике в конкретной среде может потребоваться донастройка (версия Docker, права на хост-сеть для Ollama и так далее).
- Готовый датасет - это текст, написанный LLM поверх детерминированных фактов, а не копия настоящей переписки. Для демо агента этого достаточно, для серьёзного ресёрча по человеческому поведению внутри компаний - нет, авторы сами это оговаривают.
- Цена своей симуляции через платный API заранее неизвестна - в документации нет ни одной цифры именно для сценария «облачная LLM по токенам», только оценка для отдельного сценария с арендой GPU.

Больше подобного

Разбираю по находке в день и складываю сюда. Свежее и то, что до сайта не доехало, выходит в канале «Евдокимов как обычно».