AML AcaciaFund System Architecture: A DataOps Perspective
Knowledge Data Engineering {'label': 'architecture', 'icon': 'πŸ”—', 'color': '#a855f7', 'bg_color': '#a855f7', 'description': 'system design, pipeline architecture, and dataops implementation details.', 'slug': 'architecture'}

AcaciaFund System Architecture: A DataOps Perspective

Key Insights

  • AcaciaFund as a DataOps pipeline β€” architecture, principles, and metrics.
Difficulty: Advanced Type: Knowledge

AcaciaFund as a DataOps Pipeline

AcaciaFund is not just a static site β€” it is a data product produced by an automated DataOps pipeline. Every component from source ingestion to final HTML rendering follows DataOps principles: version control, quality gates, observability, and reproducible builds.

flowchart LR INGEST[1 Ingestion
HackerNews / arXiv / PubMed] --> VALIDATE[2 Validation
schemas.py Pydantic] VALIDATE --> TRANSFORM[3 Transformation
Entity Extraction / SQI / Bloom] TRANSFORM --> STORE[4 Catalog
registry.json] STORE --> VIZ[5 Visualization
core/visuals.py SVGs] VIZ --> RENDER[6 Rendering
build.py + J2 Templates] RENDER --> SERVE[7 Serving
Cloudflare Pages CDN] SERVE --> OBSERVE[8 Observability
Build Metrics / Quality Flags]

Pipeline Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ INGESTION LAYER β”‚
β”‚ HackerNews API ──┐ β”‚
β”‚ arXiv API β”œβ”€β”€β†’ trending stories + analysis β”‚
β”‚ PubMed β”˜ (manual + scheduled) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ TRANSFORMATION LAYER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ NLP Pipeline β”‚ β”‚ Bloom β”‚ β”‚ SQI β”‚ β”‚
β”‚ β”‚ (entity ext, β”‚β†’β”‚ Taxonomy β”‚β†’β”‚ Computation β”‚ β”‚
β”‚ β”‚ summarizationβ”‚) β”‚ Classifier β”‚ β”‚ (0.0 – 1.0) β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ STORAGE / CATALOG LAYER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ registry.json (Data Catalog) β”‚ β”‚
β”‚ β”‚ β€’ Content metadata β€’ Quality metrics β”‚ β”‚
β”‚ β”‚ β€’ Source lineage β€’ Pipeline state β”‚ β”‚
β”‚ β”‚ β€’ Signal scores β€’ Taxonomy classification β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ SERVING LAYER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ generator │───→│ Static │───→ Cloudflare β”‚
β”‚ β”‚ .py (Jinja2)β”‚ β”‚ HTML Files β”‚ Pages (CDN) β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ Serves: research/ Β· learn/ Β· knowledge/ Β· pillars/ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ OBSERVABILITY & QUALITY β”‚
β”‚ β€’ SQI per article (0–1) β€’ Source diversity score β”‚
β”‚ β€’ Quality flags β€’ Cross-pillar connections β”‚
β”‚ β€’ Source breakdown (HN/arXiv/PubMed) β”‚
β”‚ β€’ Build output: 59 pages, validated β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

DataOps Principles Applied

1. Version Control Everything

registry.json β€” the content catalog β€” is under Git version control alongside pipeline code (build.py, schemas.py). Every content change is a Git commit with a full audit trail. Rolling back is a git revert away.

2. Data Quality as Code

Each content entry carries structured quality metrics (source score, diversity, recency) and quality flags. The Signal Quality Index (SQI) is a composable metric computed from source authority, freshness, consensus, and relevance β€” evaluated programmatically, not manually.

3. CI/CD for Data

On push to main, Cloudflare Pages runs python3.13 build.py β€” an automated build that transforms raw registry data into static HTML. Failed builds (e.g., schema validation errors) prevent deployment, acting as a quality gate.

4. Declarative Pipeline

The pipeline is deterministic: same registry.json β†’ identical output. No side effects, no external state at build time. This makes builds reproducible and debuggable.

5. Observability

Every article exposes structured signal data: source breakdown (HN vs arXiv vs PubMed counts), domain diversity, top entities, and SQI score. These serve as pipeline metrics for monitoring content quality over time.

6. Separation of Concerns

LayerToolDataOps Equivalent
IngestionHackerNews API / arXiv APISource connectors
Transformationseed_articles.py + manualdbt models / transformation DAG
Storageregistry.json (Git)Data catalog (OpenMetadata-style)
QualitySQI + quality_metricsGreat Expectations suites
Servingbuild.py β†’ static HTMLData mart / analytics layer
CI/CDGit β†’ Cloudflare Pagesdbt Cloud / Airflow CI

Pipeline Metrics

  • Content volume: 51 entries across research (33), learn (8), knowledge (10)
  • Pillar coverage: AML (11), Markets (11), Data Engineering (5)
  • Build time: ~2 seconds (Python-native, no external deps at build)
  • Output size: ~2MB uncompressed (HTML + SVG thumbnails + OG images)
  • SQI range: 0.35 – 0.88 across all research articles
  • Source diversity: HN, arXiv, PubMed β€” avg 5-7 domains per article

Future: Service Layer

A separate FastAPI service (deployed on Railway) adds real-time capabilities:

  • Progress tracking across articles (POST/GET progress)
  • Trending signals per pillar
  • Reader engagement metrics

This follows the lambda architecture pattern: batch (static site) + speed (API) layers.

Last updated: 2026-06-08

Article Metadata

Further Reading

Feynman Concept Cards

Master each concept: read the ELI5, explore analogies, work examples, and teach it back.

DataOps is a concept in best practices. In simple terms, DataOps covers best practices in Data Engineering. This data engineering concept addresses key topics in the best practices in data engineering domain. Also known as: DataOps practices, data operation

Analogy
Think of DataOps like a maintenance checklist for a power plant β€” it helps you handle best practices tasks more effectively.
Example
Consider a scenario where DataOps applies: DataOps covers best practices in Data Engineering. This data engineering concept addresses key topics in the best practices in data engineering domain. Also known as: DataOps practices, data operation...
Find Gaps
What are the key components or steps involved in DataOps?
Can you explain DataOps without using jargon?
What happens if DataOps is not applied correctly?
How does DataOps relate to other concepts in best practices?
Teach Back

Explain DataOps as if teaching a colleague who is new to best practices. Cover: what it is, how it works, and why it matters.

Create

Create a checklist that demonstrates DataOps in a real-world best practices scenario. Walk through your design decisions.

Show solution
A checklist for DataOps should include: 1. The core components of dataops 2. How they interact 3. Expected outcomes or outputs
Difficulty: Advanced — 4/5

Data Observability is a concept in best practices. In simple terms, Data Observability covers best practices in Data Engineering. This data engineering concept addresses key topics in the best practices in data engineering domain. Also known as: data monitoring, data

Analogy
Think of Data Observability like a maintenance checklist for a power plant β€” it helps you handle best practices tasks more effectively.
Example
Consider a scenario where Data Observability applies: Data Observability covers best practices in Data Engineering. This data engineering concept addresses key topics in the best practices in data engineering domain. Also known as: data monitoring, data ...
Find Gaps
What are the key components or steps involved in Data Observability?
Can you explain Data Observability without using jargon?
What happens if Data Observability is not applied correctly?
How does Data Observability relate to other concepts in best practices?
Teach Back

Explain Data Observability as if teaching a colleague who is new to best practices. Cover: what it is, how it works, and why it matters.

Create

Create a checklist that demonstrates Data Observability in a real-world best practices scenario. Walk through your design decisions.

Show solution
A checklist for Data Observability should include: 1. The core components of data observability 2. How they interact 3. Expected outcomes or outputs
Difficulty: Beginner-friendly — 2/5

Lakehouse Architecture is a concept in architecture. In simple terms, The Lakehouse architecture, formalized by Armbrust et al. (2021), combines the flexibility of data lakes (cheap object storage, diverse data types) with the reliability of data warehouses (ACID transa

Analogy
Think of Lakehouse Architecture like a blueprint for a complex machine β€” it helps you handle architecture tasks more effectively.
Example
Consider a scenario where Lakehouse Architecture applies: The Lakehouse architecture, formalized by Armbrust et al. (2021), combines the flexibility of data lakes (cheap object storage, diverse data types) with the reliability of data warehouses (ACID transa...
Find Gaps
What are the key components or steps involved in Lakehouse Architecture?
Can you explain Lakehouse Architecture without using jargon?
What happens if Lakehouse Architecture is not applied correctly?
How does Lakehouse Architecture relate to other concepts in architecture?
Teach Back

Explain Lakehouse Architecture as if teaching a colleague who is new to architecture. Cover: what it is, how it works, and why it matters.

Create

Create a diagram that demonstrates Lakehouse Architecture in a real-world architecture scenario. Walk through your design decisions.

Show solution
A diagram for Lakehouse Architecture should include: 1. The core components of lakehouse architecture 2. How they interact 3. Expected outcomes or outputs
Difficulty: Advanced — 5/5

Related Research

Related Lessons

Stay Updated

Get the latest research summaries delivered to your inbox.