Bitkaya Compliance Management System (BCMS)

Technical Implementation Memorandum

Date: 2026-07-28 From: Operations Classification: Internal Audience: Technical Staff, Operations, Compliance


Purpose

This memorandum describes the technical architecture and implementation of Bitkaya’s Compliance Management System (“BCMS”). It is intended for staff who need to understand how the system is built, how data flows through it, and how artifacts are produced — without going into code-level detail.


System Overview

The BCMS is a file-based compliance management system built on structured markdown notes. Each compliance object — a policy, procedure, control, requirement, issue, or change request — is a standalone markdown file with standardized YAML frontmatter (machine-readable metadata) and a human-readable body. The files are organized in a numbered folder structure and version-controlled through Git, providing full history, branching, and traceability.

The system does not rely on a database, a web server, or a proprietary application. It can be read and edited in any text editor or note-taking application, while the structured frontmatter enables automation, validation, and artifact generation.


Architecture

Data Model

Every BCMS object follows the same pattern:

┌─────────────────────────────────────────┐
│  YAML Frontmatter (machine-readable)    │
│  - id: POL-AML-001                      │
│  - type: policy                         │
│  - status: implemented                  │
│  - relationships: procedures, controls  │
│  - approval: who, when, next review     │
├─────────────────────────────────────────┤
│  Markdown Body (human-readable)         │
│  - Purpose, scope, policy statement     │
│  - Full content from approved manual    │
│  - Implementing procedures and controls │
│  - Relationships, assurance, history     │
└─────────────────────────────────────────┘

The frontmatter is the backbone of the system. It contains:

  • Identity fields: id, type, title, status, classification, criticality
  • Ownership fields: business_owner, technical_owner, approver, reviewed_by, approved_by
  • Relationship arrays: sources, requirements, policies, processes, procedures, controls, systems, issues, publications, decisions
  • Lifecycle fields: created, approved, effective, last_reviewed, next_review, retired, implementation_state
  • Patterns: descriptive tags for categorization and search

The body contains the actual content — policy text, step-by-step procedures, control testing methods, impact assessments — formatted as readable markdown with headings, bullet lists, tables, and wikilinks ([[Note Name]]) that connect related objects.

Folder Structure

00 Governance         Constitutions, standards, ADRs, specifications
01 Sources            Regulatory sources (laws, guidelines, standards)
02 Requirements       Regulatory requirements decomposed from sources
03 Processes          High-level business process descriptions
04 Policies           Approved compliance manuals (21 domains)
05 Procedures         Step-by-step operational procedures (131 notes)
06 Controls           Control descriptions and testing methods (158 notes)
07 Systems            Systems and tools inventory
08.1 Change Requests  Formal change proposals with approval workflow
08.2 Issues           Open issues, gaps, and conflicts
09 Publications       Generated artifacts and approved PDFs
10 Review Packs       Periodic review packages
11 Dashboards         Monitoring and overview views
12 Glossary           Terms and definitions
90 Templates          Object templates for new notes
91 Scripts            Automation and generation scripts
99 Archive           Retired and superseded objects

Object Types and ID Convention

Each object type uses a prefix-based ID scheme:

TypeID PatternCountExample
SourceSRC-XXX-0017SRC-VASP-001
RequirementREQ-XXX-00168REQ-FATF-004
ProcessPRC-XXX-0016PRC-FCI-001
PolicyPOL-XXX-00121POL-AML-001
ProcedurePROC-XXX-001131PROC-AML-002
ControlCTRL-XXX-001158CTRL-AML-002
SystemSYS-XXX-0017SYS-ECM-001
Change RequestCHG-XXX-001—CHG-AML-001
IssueISS-XXX-00114ISS-AML-001
PublicationPUB-XXX-00115PUB-ECM-001

The middle segment (XXX) identifies the compliance domain (e.g., AML, ABC, ECM, OUT, KYC), enabling quick visual grouping and automated domain-based queries.


Version Control and Change Management

Git-Based Workflow

The entire vault is a Git repository hosted on GitHub (private). This provides:

  • Full history: every change is a commit with author, date, and message
  • Branching: changes are developed on feature branches before merging
  • Pull requests: human review before changes reach the authoritative branch
  • Diffing: any two versions of a document can be compared line by line
  • Audit trail: the commit log serves as an immutable record of who changed what and when

Change Request Workflow

Content changes to the vault follow a controlled workflow:

Change Request (CHG-XXX-001)
    │
    ├─ status: open          → Request created
    ├─ branch: chg/XXX-001   → Developer creates a branch
    ├─ status: review        → Changes implemented, awaiting review
    ├─ status: approved      → Human reviewer approves
    ├─ status: merged        → Branch merged to main
    ├─ implementation_status: staged    → In vault, not yet published
    ├─ implementation_status: published  → PDF artifact generated
    └─ status: closed        → Fully resolved

Key design principle: merging to main and publishing a new artifact are separate steps. A change can sit staged in the vault while multiple changes accumulate. The vault owner manually triggers artifact generation when ready, ensuring that published versions are deliberate, not accidental.

Relationship to Issues

Issues (08.2 Issues/) identify problems or gaps. When an issue’s resolution requires modifying policies, procedures, or controls, a change request is created and linked:

  • The issue’s frontmatter includes a change_requests: [] array listing the CHG objects that resolve it
  • The change request’s frontmatter includes a source_issue: field pointing back to the originating issue
  • This bidirectional link enables full traceability from problem identification through resolution

Artifact Generation

Pipeline

Approved PDF manuals are generated from the structured markdown content through an automated pipeline:

Markdown notes (vault)
    │
    ├─ Policy note (04 Policies/POL-XXX-001.md)     → full manual content
    ├─ Procedure notes (05 Procedures/PROC-XXX-*.md) → steps tables
    ├─ Control notes (06 Controls/CTRL-XXX-*.md)    → objectives, testing
    │
    ▼
Assembly (script reads all related notes)
    │
    ├─ Cover page (from POLICY_REGISTRY metadata)
    ├─ Table of contents (auto-generated from headings)
    ├─ Body content (from policy note)
    ├─ Procedures table (from procedure notes)
    ├─ Controls table (from control notes)
    ├─ Cross-references (from frontmatter relationship arrays)
    └─ Appendices (change history, cross-reference register)
    │
    ▼
Markdown assembly → HTML conversion (pandoc)
    │
    ▼
HTML + Brand CSS → PDF rendering (weasyprint)
    │
    ▼
Branded PDF artifact (09 Publications/Generated/)

Branding

Generated PDFs apply a consistent visual identity:

  • Cover page: Split-panel design with logo, title in light weight, metadata grid on a dark panel
  • Typography: Poppins font family in multiple weights (ExtraLight for titles, SemiBold for headings, Regular for body)
  • Color system: Brand colors applied as accents — cyan for section markers, coral for heading underlines, charcoal for footers and table headers
  • Page headers/footers: Three-column footer with document ID + version, page number, and company name
  • Tables: Minimal styling with subtle horizontal lines, alternating row tints, and no heavy borders
  • Callout boxes: Cyan-tinted blocks with a left accent bar for important statements

Reproducibility

Each generated PDF includes a source reference (Git commit hash) on the cover page, meaning any artifact can be traced back to the exact state of the vault when it was generated. Regenerating from the same commit produces a byte-identical artifact.


Cross-Referencing and Traceability

Objects are connected through Obsidian-style wikilinks ([[Note Name]]). These links enable:

  • Navigation between related objects (e.g., from a policy to its implementing procedures)
  • Visual graph views of the compliance framework
  • Automated detection of broken or orphaned references

Frontmatter Relationship Arrays

In addition to wikilinks in the body text, each object’s frontmatter contains structured relationship arrays:

sources:
  - SRC-VASP-001
requirements:
  - REQ-FATF-004
policies:
  - POL-AML-001
procedures:
  - PROC-AML-002
controls:
  - CTRL-AML-002

These arrays enable automated validation:

  • Verify that every ID referenced in a frontmatter array corresponds to an existing file
  • Detect orphaned objects (procedures not referenced by any policy)
  • Generate cross-reference registers for artifacts
  • Map the full compliance graph from regulation to control

Validation

A validation script checks the integrity of the vault:

  • Frontmatter completeness and consistency across object types
  • Wikilink integrity (no broken references)
  • Cross-reference consistency (bidirectional links match)
  • Content coverage (policy word count vs. source PDF word count)
  • Orphan detection (objects not referenced by any parent)
  • Encoding issues (no corruption artifacts)

Automation

Script Inventory

The system includes several automation scripts:

ScriptPurpose
generate_premium_pdf.pyGenerate branded PDF artifacts from vault content
validate_bcms.pyValidate frontmatter, wikilinks, and cross-references
extract_all_pdfs.pyExtract text from existing PDF artifacts for comparison
compare_policies.pyCompare policy word counts against PDF artifacts
compare_proc_ctrl.pyCompare procedure/control coverage against PDFs

The PDF generator is parameterized — it can generate a single manual by policy ID, all 21 manuals in one run, or list available policies.

PDF Generation

# List available manuals
python generate_premium_pdf.py --list
 
# Generate a single manual
python generate_premium_pdf.py POL-AML-001
 
# Generate all 21 manuals
python generate_premium_pdf.py --all

Output is saved to 09 Publications/Generated/ with preview images of the first 6 pages.


Security and Access

Repository Access

The vault is stored in a private GitHub repository. Access is controlled through:

  • Deploy keys: SSH key-based access for the cloud instance
  • Branch protection: Changes require review before merging to main
  • Change request workflow: No content changes reach main without approval

Data Classification

Every BCMS object carries a classification field:

ClassificationMeaning
publicMay be shared externally
internalInternal use only
confidentialRestricted to authorized personnel

Generated artifacts inherit the classification of their source policy.


Scalability

The system is designed to scale with Bitkaya’s growth:

  • New domains: Adding a new compliance domain (e.g., insurance, lending) requires creating a policy, procedures, and controls following the existing template patterns
  • New object types: The template-based architecture allows adding new object types without restructuring the system
  • Team growth: Multiple contributors can work on different branches simultaneously, with changes merged through the review workflow
  • Regulatory changes: The change request system handles regulatory updates with the same governance as internal improvements
  • Artifact volume: The PDF generator can produce all 21 manuals in a single run, and the parameterized design supports future additions

Maintenance

Routine Tasks

TaskFrequencyOwner
Vault validation (wikilinks, frontmatter, cross-refs)MonthlyOperations
Policy review cycleAnnual per policyCompliance
Control testingPer risk tierCompliance
Issue review and closureMonthlyCompliance
Artifact regenerationOn demand, after approved changesOperations
Backup verificationMonthlyOperations

Disaster Recovery

The vault is replicated across:

  • GitHub (primary remote) — full history, all branches
  • Cloud instance (working copy) — live copy for generation and automation
  • Local machines (developer copies) — via git pull

Any copy can restore the full vault including complete history.


Summary

The BCMS is a lightweight but rigorous compliance management system built on structured text files, version control, and automated artifact generation. It provides full traceability from regulatory sources through to approved PDF manuals, with a controlled change workflow that ensures every modification is deliberate and auditable. The system is designed to be maintained by compliance and operations staff without specialized software — only standard text editing and a Git client are required.


For technical questions about the BCMS implementation, contact Operations. For questions about compliance content, policies, or controls, contact Compliance.


Bitkaya B.V. · Julianaplein 36, Willemstad, Curaçao · Dutch Caribbean · www.bitkaya.io