Everything you file today.
Kept exactly as it is.
Kestrel takes the goAML XML you already produce and routes it through a modern detection and case workflow. No pipeline rewrite. No retraining your CAMLCO on vocabulary. The screens still say IER and Catalogue Search and Match Definitions and Disseminations, because that's what BFIU calls them and that's what you know.
- Report variants
- 11 supported
- XML round-trip
- Import + export
- Vocabulary
- Preserved
- Pipeline rewrite
- None required
11 report variants. One endpoint family.
Every BFIU report shape lands on the same lifecycle and the same submit pipeline. The report_type column carries the variant; type-specific fields layer on top.
| Report variant | Surface | Notes |
|---|---|---|
| STR | /str-reports | First-class lifecycle: draft → submitted → under_review → flagged → confirmed / dismissed. Pipeline runs on every submit (resolve, cross-bank, alert). |
| SAR | /str-reports | report_type='sar' variant; same lifecycle as STR. |
| CTR | /str-reports + /cash-transaction-reports | Single-report variant for ad-hoc CTRs; high-volume bulk CTRs land in a dedicated table. |
| TBML | /str-reports | Trade-based-money-laundering specific fields: invoice value, declared value, LC reference, HS code, commodity, counterparty country. |
| Complaint Report | /str-reports | report_type='complaint' variant. |
| FIU Escalated Report | /str-reports | report_type='escalated' variant. |
| Information Exchange Request (IER) | /iers | Dedicated Egmont workflow: direction (inbound / outbound), counterparty FIU, Egmont reference, deadline, request and response narratives, respond + close actions. |
| Internal Report | /str-reports | BFIU-only; report_type='internal' variant. |
| Adverse Media-STR | /str-reports | Variant with media-provenance fields (media source, URL, published_at). |
| Adverse Media-SAR | /str-reports | Same shape, SAR variant. |
| Additional Information File | /str-reports/{id}/supplements | Supplementary workflow with a parent FK; subject identity auto-inherits from the parent. |
Import what you have. Export what BFIU needs.
Banks continue emitting goAML-format XML from their existing AML systems and post it to POST /str-reports/import-xml. The parser is defensive: extracts header + transactions + subjects, maps the goAML submission_code to Kestrel's report_type, ingests transactions tagged with the import batch's run_id, and resolves every subject into the shared entity pool.
The export path is the exact inverse: GET /str-reports/{id}/export.xml emits the primary subject, the variant-specific block (ier, tbml, media provenance, etc.), and every linked transaction in goAML format. BFIU can hand off a Kestrel-resolved STR to a peer FIU or a legacy system without conversion.
Catalogue Search, IER, Match Definitions, Disseminations.
Every goAML screen name a BFIU analyst learned over the past decade has a corresponding surface in Kestrel. The labels are kept; the underlying execution is modern.
| goAML name | Kestrel surface | What changed |
|---|---|---|
| Catalogue Search (12 lookups) | /investigate/catalogue | Twelve labelled tiles preserve the goAML rationale; one pg_trgm + ILIKE search powers all of them. |
| New Subjects (Account / Person / Entity) | /intelligence/entities/new | Three tabs with focused fields per type; resolver emits same-owner connections on submit. |
| Information Exchange Request (IER) | /iers | Inbound and outbound tabs, counterparty FIU + Egmont reference, respond and close actions. |
| Match Definitions and Executions | /admin/match-definitions | JSON-DSL custom rules; manager+ can author, toggle, run, or delete; deduped alert emission. |
| Disseminations | /intelligence/disseminations | Disseminate action on every Alert, Case, Entity, and STR; recipient typed; full audit ledger. |
| Reference Tables / Lookup Master | /admin/reference-tables | Banks, branches, countries, channels, categories, currencies, agencies; regulator-only writes. |
| Statistics | /reports/statistics | Recharts dashboards: reports by type by month, by org, CTR volume, dissemination recipients, case outcomes, time-to-review. |
| Scheduled Processes | /admin/schedules | Read-only status view over a Celery Beat schedule pinned to Asia/Dhaka. |