Next-generation electronic archiving system with a tamper-evident audit trail, replacing the bank's legacy platform.
- Client
- BOAD, regional development bank
- Key result
- 100% of the bank's archives migrated
Context
The bank's archives lived in MaarchRM, a legacy system that had to be replaced without losing a single document and while preserving legal proof of integrity.
What I built
A domain model redesigned from scratch around the archive lifecycle (deposit, control, retention rules, communicability, final disposal), and a migration of the full legacy corpus. Every operation is written to an append-only, hash-chained lifecycle journal that is sealed automatically every hour, so any alteration breaks the chain and can be proven. OCR makes scanned documents searchable, and ArchivIA, a retrieval-augmented assistant, answers questions about an archive by citing its passages, restricted to what the user is cleared to read. Sign-in goes through Azure AD.
Result
The new system holds 100% of the bank's archives, with integrity that can be proven, not just assumed.
Architecture
An append-only journal enforced by the database
Database triggers reject updates and deletes and compute the hash chain themselves, so the proof does not depend on trusting the application.
Hourly sealing
Each seal bounds the window in which tampering could go unnoticed, and it can be attested by an external RFC 3161 timestamp authority.
Permissions applied before ranking
ArchivIA filters passages by the user's clearance inside the query, before the result limit, so a restricted document cannot even reveal that it exists.
AI that stays on premise
Embeddings (bge-m3) and answers run in a local Ollama, with a pgvector index in PostgreSQL, so no archive ever leaves the bank's servers.
Delivered as containers
GitLab CI builds a Docker image on every commit, pushes it to the registry and redeploys production over SSH, with the compose file versioned alongside the code.
Stack
- NestJS
- Angular
- PostgreSQL
- pgvector
- Ollama
- RAG
- Tesseract OCR
- Azure AD
- Docker
- GitLab CI




