DataQRL
ActiveFinancial crime detection and compliance for banks, insurers and regulated institutions: eight modules covering ingestion, transaction reconciliation, identity resolution, monitoring and alerting, case management and a dedicated privacy plane.
- TypeScript
- Python
- Go
- NestJS
- FastAPI
- Splink
- Celery
- Redis
- Postgres
- Neo4j
- Qdrant
- LangGraph
- Snowflake
- BigQuery
- Docker
- K8s
Eight modules. 2,335 commits since March 2025. Leads a three-person team and owns ReconFlow, CaseHub and the Cortex backend.
What was broken.
Regulated institutions screen single records and miss the networks. Parties are fragmented across source systems, compliance evidence is assembled by hand, and the platforms that claim to fix it are heavyweight, opaque and consultant-shaped.
How it is wired.
Event-driven core. Ingestion streams change-data-capture into a validation engine. ReconFlow runs Splink-based probabilistic matching with hierarchical fidelity scoring, so parties link across fragmented sources and the networks single-record screening misses become visible. Anomaly-detection models and a rule engine run over Celery and Redis. Cortex orchestrates LangGraph agents over a Neo4j knowledge graph with Qdrant semantic recall; the high-compute engine is in Go; CaseHub gives investigators a cockpit and a dedicated privacy plane maps controls to GDPR, HIPAA and SOX. All eight modules share a typed contract layer.
What I shipped.
- Real-time integrity monitoring over CDC streams
- Distributed entity resolution and data lineage (Splink + custom fidelity scoring)
- Anomaly detection with adaptive thresholds, plus a rule engine on Celery and Redis
- Connectors for PostgreSQL, MySQL, MongoDB, Snowflake and BigQuery
- Cortex multi-agent orchestration on a Neo4j knowledge graph with Qdrant semantic recall
- CaseHub investigative cockpit and a remediation workstation
- A privacy plane mapping controls to GDPR, HIPAA and SOX
- The high-compute engine in Go
What changed.
- 8
- Modules shipped
- 2,335
- Commits since Mar 2025
- 0→1
- Built and led from scratch
Why these choices.
Chose Splink over Zingg for explainability — a compliance reviewer has to be able to read why two records matched. Picked Neo4j for lineage graphs over JSON in Postgres once depth went past 4. Kept the agent layer behind a strict tool interface so swapping a hosted model for a local one is one config change.