SPEC rev.2026.10 · 42.70°N 23.32°E · Sofia · EET/EEST · UTC+2/+3

// Machine view — the DOM of this page as a parser reads it


Person dossier aggregator from official sources

A system that keeps a dossier per person and, on request, queries official public and private sources over their APIs, then assembles what they return into one reviewed record.

§01 The case in detail

Task
Collect information about a person from official registries and sources in one place: the dossier is stored, refreshed on request, and every access is controlled and logged.
Approach
  • Celery and Redis, 9 queues; one source failing does not block the others, the reason for the skip is logged
  • Sources: official public and private registries and sources, queried over their APIs
  • A single person/company card with manual enrichment
  • An audit log in its own database schema
  • AES-256-GCM for stored reports, bcrypt, TOTP; secrets in a self-hosted vault; 7 roles
Stack
FastAPI · server-rendered admin + Telegram bot · PostgreSQL 16 behind two poolers · Celery + Redis, 9 queues · MinIO · Caddy
Engineering ■ confirmed
Commits2,701
Days123
First commit12.05.2026
Python incl. tests~222,000 lines
Tables78
Testsabout 6,185
Reviewsred/blue team reports
Architecture
Architecture as text: who passes what to whom

Dossier request

  • Operator ↔ Caddy: queries
  • Caddy ↔ FastAPI: proxy
  • FastAPI → Celery + Redis: enqueue
  • Celery + Redis → Workers: dispatch
  • Workers → Adapters: run lookups
  • Adapters ↔ Official sources: query / records
  • Workers → PostgreSQL: results
  • PostgreSQL → FastAPI: dossier

Operator bot

  • Telegram user → Telegram API: commands
  • Telegram API → Operator bot: webhook
  • Operator bot ↔ FastAPI: internal calls
  • Operator bot → Telegram API: results
  • Telegram API → Telegram user: messages

Report

  • Workers ↔ LLM provider: text / summary
  • Workers → MinIO: report, encrypted

Alerts + backup

  • Workers → Telegram API: alerts
  • Workers → Mail relay: invites, codes
  • PostgreSQL → pgBackRest: WAL, base
  • pgBackRest → Offsite copy: encrypted copy

§02 Public records aggregation: person dossier from official registries

Problem
Collect information about a person from official registries and sources in one place, with the dossier stored, refreshed on request, and every access controlled and logged.
Approach
On request the system queries official public and private sources over their APIs through per-source adapters on Celery and Redis (9 queues). A failing source does not block the others, and the reason for the skip is logged. Results are assembled into one person card with manual enrichment.
Outcome
One reviewed dossier per person, built from what the official sources return, with 7 roles, TOTP sign-in, encrypted stored reports and an audit log in its own database schema.

Short answers

What is a person dossier aggregator?
A system that keeps a dossier per person and, on request, queries official sources and assembles what they return into one reviewed record.
Where does the data come from?
From official public and private registries and sources, queried over their APIs on request.
What happens when one source is unavailable?
It does not block the others. The source is skipped and the reason is logged.
How is access to a dossier controlled?
By 7 roles and TOTP sign-in, and every access is recorded in an audit log kept in its own database schema.
How are stored reports protected?
Reports are stored with AES-256-GCM, passwords are hashed with bcrypt, and secrets live in a self-hosted vault.
Can a dossier be corrected or extended by hand?
Yes. Each person has a single card with manual enrichment, and the dossier is reviewed.

See also: Process and quality audit Approval system for financial requests.

§03 Related

Have a task like this? Write to me.

Send me a message

It goes straight to my Telegram. I reply to the address you leave.

Your details are used only to reply to you.