CoolFace
Datasetpublic

VynFi/vynfi-sar-narratives

VynFi SAR Narratives — AML Labels with Transaction Evidence 156 787 banking transactions paired with 156 714 AML labels and case-level SAR (Suspicious Activity Report) narrative text. Designed as a starting point for SAR NLP research and for end-to-end pipelines that go from raw banking activity → AML labels → human-readable narrative. Generated with DataSynth (banking + narrative modules) · GitHub · Companion paper (SSRN). Provenance note. This dataset was last refreshed… See the full description on the dataset page: https://huggingface.co/datasets/VynFi/vynfi-sar-narratives.

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes29downloads
Dataset Card

VynFi SAR Narratives — AML Labels with Transaction Evidence

156 787 banking transactions paired with 156 714 AML labels and case-level SAR (Suspicious Activity Report) narrative text. Designed as a starting point for SAR NLP research and for end-to-end pipelines that go from raw banking activity → AML labels → human-readable narrative.

Generated with DataSynth (banking + narrative modules) · GitHub · Companion paper (SSRN).

Provenance note. This dataset was last refreshed under DataSynth v5.0. The v5.6 → v5.9 release line ships fixes centred on the journal-entry / accounting-network generators; the banking + narrative modules producing this dataset were untouched, so the data here is unaffected by those changes and a regeneration is not in scope for the v5.9.0 fleet refresh.

What's included

ConfigRowsColumnsWhat it is
transactions (default)156,78759One row per banking transaction (same schema as `VynFi/vynfi-aml-100k`).
labels156,71417Per-transaction AML labels with case_id, typology, is_suspicious, severity.
narratives113Per-suspicious-case SAR narrative text (subject, activity summary, indicators, recommendation).

Quick start

python
from datasets import load_dataset

txns       = load_dataset("VynFi/vynfi-sar-narratives", "transactions", split="train")
labels     = load_dataset("VynFi/vynfi-sar-narratives", "labels",       split="train")
narratives = load_dataset("VynFi/vynfi-sar-narratives", "narratives",   split="train")

# Join chain: narrative → labels → transactions
import pandas as pd
n = narratives.to_pandas()
l = labels.to_pandas()
t = txns.to_pandas()
joined = n.merge(l, on="case_id").merge(t, on="transaction_id")

Generation

DataSynth releasev5.0 (banking + narrative modules — unchanged in v5.6–v5.9)
IndustryFinancial services
Period6 monthly periods
Suspicious rate≈ 0.05 % (production-realistic)
ReproducibilityDetermined by the embedded ChaCha8 seed; regenerable from a future v5.9-aware banking config (not yet pinned in configs/examples/hf/).

Limitations

  • Narrative text is template-generated, not LLM-written. It follows a fixed structure (subject, activity summary, indicators, recommendation) — useful for evaluating narrative-style models against a known schema, but not a substitute for production-quality case write-ups.
  • The evidence chain join (narrative → labels → transactions) requires matching on case_id. Not every transaction has a case assignment.
  • The narrative count is low because narratives are produced per suspicious case, and the default suspicious rate is ~0.05 %. For more narratives, regenerate with a higher fraud_rate or suspicious_rate in the banking config.
  • This dataset is a starting point for SAR NLP research, not a finished benchmark.

License

Apache-2.0.

Citation

bibtex
@misc{ivertowski2026datasynth,
  author       = {Ivertowski, Michael},
  title        = {{DataSynth}: Reference Knowledge Graphs for Enterprise
                  Audit Analytics through Synthetic Data Generation
                  with Provable Statistical Properties},
  year         = {2026},
  month        = {April},
  howpublished = {SSRN Working Paper},
  url          = {https://ssrn.com/abstract=6538639}
}