Skip to main content

Comply — Financial Compliance Documentation Linter

The first open-source linting package for financial compliance documentation. Built on Vale.

The Problem

Credit unions and community banks maintain 200-500 compliance documents with 0-1 dedicated compliance staff. When regulators examine these documents, vague language, missing sections, inconsistent terminology, and outdated references are findings that lead to enforcement actions. No tool currently checks compliance documents for these issues before the examiner does.

What Comply Does

Comply is a Vale style package (FinCompliance) that catches compliance documentation issues deterministically:

  • Missing required elements — Does your BSA/AML policy address all five pillars?
  • Weak commitment language — "We will endeavor to comply" is not compliance
  • Vague regulatory references — "Per applicable regulations" fails examiner scrutiny
  • Prohibited phrases — "TBD", "under development", "budget permitting" in a compliance doc is a finding
  • Informal terminology — "customer info" instead of "customer information"
  • Inconsistent date formats — MM/DD/YY when your standard is YYYY-MM-DD
  • Abbreviation consistency — Expand on first use, abbreviate thereafter

Quick Start

# Install Vale
brew install vale  # macOS
# or: https://vale.sh/docs/vale-cli/installation/

# Clone this repo
git clone https://github.com/BipinRimal314/comply.git
cd comply

# Lint your compliance document
vale --config=.vale.ini path/to/your/bsa-policy.md

Supported Regulations

Regulation Rules Status
Common (cross-regulation) 11 rules Available
BSA/AML (Bank Secrecy Act / Anti-Money Laundering) 2 rules + CLI checks Available
SOX (Sarbanes-Oxley) 2 rules Available
PCI-DSS (Payment Card Industry) 2 rules Available
GLBA (Gramm-Leach-Bliley) 1 rule Available
NCUA (Credit Union specific) 1 rule Available

Example Output

tests/fail/weak-bsa-policy.md

 3:64   error    Risky language in BSA/AML document: 'when resources
                 permit'. Examiners interpret this as non-compliance.
 5:20   error    Risky language in BSA/AML document: 'under development'.
 5:42   error    Risky language in BSA/AML document: 'we plan to implement'.
 9:22   warning  Vague regulatory reference: 'per applicable regulations'.
                 Include specific section/part numbers.
 19:11  warning  Date format appears inconsistent. Use YYYY-MM-DD or
                 Month DD, YYYY consistently.

✖ 9 errors, 15 warnings and 2 suggestions in 1 file.

Architecture

Phase 1 (current): Pure Vale rules. Deterministic. No AI. No API keys. Runs offline.

Phase 2: CLI wrapper with document format conversion (PDF/Word → Markdown via MarkItDown).

Phase 3: AI augmentation via Claude API for substantive adequacy checks, cross-document consistency, and regulatory change impact analysis.

Phase 4: Regulatory change tracking. When a regulation updates, automatically identify which internal documents need revision.

Regulatory Requirements Library

regulatory-requirements/ contains machine-readable YAML definitions of regulatory requirements. This is the first open-source equivalent of NIST OSCAL for financial regulations. Currently covers BSA/AML (31 CFR Chapter X).

Contributing

We need help with:

  • Additional regulation rule packages (SOX, PCI-DSS, GLBA)
  • Testing against real compliance documents
  • Regulatory requirements YAML for additional frameworks
  • False positive reduction

License

MIT

Metadata

Release files for fincompliance 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fincompliance 1.0.0
File Size Uploaded
fincompliance-1.0.0.tar.gz 507.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fincompliance 1.0.0
File Interpreter ABI Platform
fincompliance-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 601.2 kB

Release files / fincompliance-1.0.0.tar.gz

Download URL fincompliance-1.0.0.tar.gz
Size 507.7 kB
Tags Source
SHA-256 checksum
How to use checksums
42018a4028a04490b00fbbaac824411149c3e5bdb5547b851b69d077b15609f7
BLAKE2b-256 checksum
How to use checksums
bfaa002d473e79d9cf9618371f6903237c831e65a64fd75df03e66b22797fad4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / fincompliance-1.0.0-py3-none-any.whl

Download URL fincompliance-1.0.0-py3-none-any.whl
Size 93.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ae657862e7705b6b7ff6620d1d3ed88b5b89d93e86b13b6a1ee0daf2d1911f3
BLAKE2b-256 checksum
How to use checksums
14613050b5f463a93a44b503be9f970c571d1559e94c61f4168308d7c15b59b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page