Metadata-Version: 2.4
Name: syntheticcfo
Version: 0.1.0
Summary: Python client for synthetic cfo: forensic-grade synthetic ERP data (SAP ECC, SAP S/4HANA, Oracle Cloud) with a labelled fraud answer key.
Author: synthetic cfo
License: Proprietary
Project-URL: Homepage, https://app.syntheticcfo.com
Project-URL: Documentation, https://app.syntheticcfo.com/evaluate
Keywords: synthetic data,erp,sap,oracle,fraud detection,audit,benchmark
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business :: Financial :: Accounting
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# syntheticcfo - Python client

Generate forensic-grade synthetic ERP data (SAP ECC, SAP S/4HANA, Oracle Cloud)
from a script or notebook. Every dataset ships with a complete labelled fraud
answer key, articulated financial statements and a reproducibility certificate:
the same seed and configuration reproduce the package byte for byte. No
language model ever generates the numbers.

The client is one file with no dependencies beyond the standard library. Use it
directly:

```bash
curl -O https://app.syntheticcfo.com/sdk/syntheticcfo.py
```

or install it as a package from this directory:

```bash
pip install .
```

## Quickstart

Create an API key at https://app.syntheticcfo.com under Account, API access.
The key carries your plan and monthly allowance. It cannot manage your account,
read your chats or create more keys.

```python
from syntheticcfo import Client

c = Client(api_key="scfo_...")            # or set the SCFO_API_KEY env var
print(c.me()["plan"])                     # your plan and remaining generations

job = c.generate(
    platform="ORACLE",                    # SAP_ECC | SAP_S4HANA | ORACLE
    industry="RETAIL",                    # TMT PHARMA MANUFACTURING FINANCIAL_SERVICES RETAIL
    fraud="high",                         # none | low | medium | high
    rows=600,
    modules=["P2P", "O2C"],               # subset of P2P O2C CE R2R HR MM FA
    jurisdiction="ZA",
    seed=42,
    wait=True,                            # poll until the package is built
)

package = job.download("out/")            # the four-layer audit package (zip)
lab = job.lab_export("out/")              # JSONL tables + answer_key.jsonl + dataset card
print(job.insights())                     # what was planted, by control
```

For model evaluation, add `evaluation_mode=True`: the shipped database then
withholds the ground-truth marker columns so nothing in the data betrays the
answer key, while the labels still ship separately in `01_Audit_Evidence`.

## Notes

- Plan limits apply exactly as in the app: over-plan requests are refused with
  an honest message, and row counts above your plan are clamped with a note in
  the package, never silently.
- A failed or interrupted generation refunds the metered credit automatically.
- Free-plan datasets and the public sample may not be redistributed, resold, or
  used to train or evaluate a competing product (see the Terms in the app).
