datasynth-generators 0.8.0

Data generators for journal entries, chart of accounts, and ACDOCA event logs
Documentation

datasynth-generators

Data generators for journal entries, master data, document flows, and anomalies.

Overview

datasynth-generators contains all data generation logic for SyntheticData:

  • Core Generators: Journal entries, chart of accounts, users
  • Master Data: Vendors, customers, materials, assets, employees
  • Document Flows: P2P (Procure-to-Pay), O2C (Order-to-Cash)
  • Financial: Intercompany, balance tracking, subledgers, FX, period close
  • Quality: Anomaly injection, data quality variations

Generator Modules

Core Generators

Generator Description
je_generator Journal entry generation with statistical distributions
coa_generator Chart of accounts with industry-specific structures
company_selector Weighted company selection for transactions
user_generator User/persona generation with roles
control_generator Internal controls and SoD rules

Master Data (master_data/)

Generator Description
vendor_generator Vendors with payment terms, bank accounts, behaviors
customer_generator Customers with credit ratings, payment patterns
material_generator Materials/products with BOM, valuations
asset_generator Fixed assets with depreciation schedules
employee_generator Employees with manager hierarchy

Document Flow (document_flow/)

Generator Description
p2p_generator PO → GR → Invoice → Payment flow
o2c_generator SO → Delivery → Invoice → Receipt flow
document_chain_manager Reference chain management
three_way_match PO/GR/Invoice matching validation

Financial (intercompany/, balance/, subledger/, fx/, period_close/)

Generator Description
ic_generator Matched intercompany entry pairs
balance_tracker Running balance validation
ar_generator / ap_generator Subledger records
fx_rate_service Ornstein-Uhlenbeck FX rates
close_engine Period close orchestration

Sourcing (sourcing/) (v0.6.0)

Generator Description
sourcing_project_generator End-to-end sourcing project lifecycle
rfx_generator RFI/RFP/RFQ event generation
supplier_bid_generator Supplier bid responses with scoring
procurement_contract_generator Contract creation from awarded bids
catalog_generator Procurement catalog items and pricing
4 additional generators Supplier qualification, spend analysis, savings tracking, compliance

HR (hr/) (v0.6.0)

Generator Description
payroll_generator Payroll runs with deductions and tax withholdings
time_generator Time entry tracking with approval workflows
expense_generator Expense reports with receipt matching and policy checks

Manufacturing (manufacturing/) (v0.6.0)

Generator Description
production_order_generator Production orders with operations and material consumption
quality_inspection_generator Quality inspection lots and defect recording
cycle_count_generator Inventory cycle count programs and variance analysis

Standards (standards/) (v0.6.0)

Generator Description
revenue_recognition_generator ASC 606 / IFRS 15 revenue recognition schedules
impairment_generator ASC 360 / IAS 36 impairment test generation

Additional Generators (v0.6.0)

Generator Description
bank_reconciliation_generator Bank statement reconciliation with auto-matching
financial_statement_generator Income statement, balance sheet, cash flow generation (in period_close/)
sales_quote_generator Sales quotation generation with quote-to-order conversion
kpi_generator Management KPI and scorecard metric generation
budget_generator Budget planning with line items and variance analysis

Quality (anomaly/, data_quality/)

Generator Description
injector Anomaly injection engine
missing_values MCAR, MAR, MNAR patterns
typos Keyboard-aware typo generation
duplicates Exact, near, fuzzy duplicates

Usage

use datasynth_generators::je_generator::JournalEntryGenerator;
use datasynth_generators::master_data::VendorGenerator;

let mut je_gen = JournalEntryGenerator::new(config, seed);
let entries = je_gen.generate_batch(1000)?;

let mut vendor_gen = VendorGenerator::new(seed);
let vendors = vendor_gen.generate(100);

License

Apache-2.0 - See LICENSE for details.