# dpm-synth > Generate synthetic EBA xBRL-CSV reports that satisfy a module's DPM-XL validation rules. dpm-synth reads a module template (the module's tables, cells and DPM-XL rules as `dpm-synth-template/1` JSON), fills every cell, repairs values until the rules pass, and writes an xBRL-CSV report package with dpm-xbrl. Python 3.11+, depends on dpm-xl and dpm-xbrl (`pip install dpm-synth`, import `dpmsynth`, command `dpm-synth`). Independent project, not affiliated with or endorsed by the EBA. Everything below in one file: https://luukhopman.github.io/dpm-synth/llms-full.txt ## Home - [dpm-synth](https://luukhopman.github.io/dpm-synth/index.md): What dpm-synth is, who it is for, a 30-second example, installation and where to go next. ## Getting started - [Getting started](https://luukhopman.github.io/dpm-synth/getting-started.md): A first synthetic report end to end - install, a template, generate from the command line and from Python, read the package back, and next steps. ## How-to guides - [How-to guides](https://luukhopman.github.io/dpm-synth/guides/index.md): Task-oriented recipes for dpm-synth - write a template, build one from a DPM release, load-test, reproduce reports and validate the output. - [Write a template by hand](https://luukhopman.github.io/dpm-synth/guides/write-a-template.md): Write a dpm-synth template by hand - a closed table, an open table with enumerated and typed keys, data types, items, rules and preconditions - and check it. - [Build a template from a DPM release](https://luukhopman.github.io/dpm-synth/guides/from-a-dpm-release.md): Build a dpm-synth template for a real module from a DPM release - what an exporter must fill in, a small exporter, choosing rules, generating and reading the results. - [Load-test with scaled packages](https://luukhopman.github.io/dpm-synth/guides/load-testing.md): Write report packages with millions of open-table rows for load and performance tests, from the command line or with write_scaled_package, and know which rules still hold. - [Reproduce a report with seeds](https://luukhopman.github.io/dpm-synth/guides/reproducible-seeds.md): Reproduce a synthetic report byte for byte with seeds - what the output depends on, how to vary it, and how to keep test fixtures stable across upgrades. - [Validate the output with dpm-xbrl and dpm-xl](https://luukhopman.github.io/dpm-synth/guides/validate-output.md): Check a generated package independently - read it with dpm-xbrl, check the EBA filing rules, bind its facts to a dpm-xl provider through the template, and evaluate the module's rules. ## Concepts - [Concepts](https://luukhopman.github.io/dpm-synth/concepts/index.md): How dpm-synth turns a template into a report that satisfies its rules, and where that approach stops. - [The evaluate-and-repair loop](https://luukhopman.github.io/dpm-synth/concepts/repair-loop.md): How dpm-synth satisfies DPM-XL rules - starting values by data type, sign bounds, defining equalities and rule order, linearized repairs, rounds, stopping and rounding. - [Limits of the loop](https://luukhopman.github.io/dpm-synth/concepts/limits.md): What the repair loop achieves on real EBA modules, which rules stay failing, which are not evaluated or do not apply, and why. ## Reference - [Reference](https://luukhopman.github.io/dpm-synth/reference/index.md): Exact behaviour of dpm-synth - the template format, the CLI, the exit statuses, the JSON output and the Python API. - [Template format](https://luukhopman.github.io/dpm-synth/reference/template-format.md): The dpm-synth-template/1 JSON format, field by field - the module, tables, open keys, cells, data types, items, rules and decimals - and how it is validated. - [CLI](https://luukhopman.github.io/dpm-synth/reference/cli.md): The dpm-synth command - generate, every option, the text output, and the exit statuses. - [Exit statuses](https://luukhopman.github.io/dpm-synth/reference/exit-statuses.md): The exit statuses of dpm-synth generate - 0 all evaluable rules pass, 1 some fail, 2 usage error, 3 unreadable or invalid input - and how to use them in scripts and CI. - [JSON output](https://luukhopman.github.io/dpm-synth/reference/json-output.md): The JSON layout printed by dpm-synth generate --json, field by field, with schema_version and its compatibility promise. - [Python API](https://luukhopman.github.io/dpm-synth/reference/api.md): API reference for the dpmsynth package - load_template, generate, GenerationResult, SyntheticData, build_report, write_scaled_package and the template classes. ## AI agents - [Using dpm-synth with AI agents](https://luukhopman.github.io/dpm-synth/agents.md): For AI agents and their users - the essential dpm-synth API on one page, its contracts, common pitfalls, and the llms.txt files. ## Related The other packages of the dpm toolkit: - [dpm-xl](https://luukhopman.github.io/dpm-xl/llms.txt): Parse and evaluate DPM-XL validation rules. - [dpm-xbrl](https://luukhopman.github.io/dpm-xbrl/llms.txt): Read, write and check xBRL-CSV and XBRL-XML reports. - [Toolkit tour](https://luukhopman.github.io/dpm-xl/guides/toolkit-tour.md): Generate a report with dpm-synth, read it with dpm-xbrl, then evaluate and explain its rules with dpm-xl. ## Optional - [Changelog](https://luukhopman.github.io/dpm-synth/project/changelog.md): What changed in each dpm-synth release. - [Stability and versioning](https://luukhopman.github.io/dpm-synth/project/stability.md): dpm-synth's semantic versioning policy - what the public API is, what may change in minor releases, reproducibility, and the supported Python versions. - [Security policy](https://luukhopman.github.io/dpm-synth/project/security.md): How to report a security vulnerability in dpm-synth, and what counts as one. - [Contributing](https://luukhopman.github.io/dpm-synth/project/contributing.md): How to set up a development environment for dpm-synth, run the tests, linters and docs build, and the conventions for changes. - [Licence](https://luukhopman.github.io/dpm-synth/project/licence.md): dpm-synth is released under the MIT licence.