Logo Lanfrica

achraf-gasmi/waraka

Domaine:

natural language processing

Type de record:

software
Créateur:
ach
Hôte:
AI-assisted STR drafting for Tunisian AML compliance -- banking & insurance sectors. Prototype (v0.1.0-rc.1), not production-ready. # Waraka -- STR Drafting Agent AI-powered Suspicious Transaction Report drafting assistant for Tunisian bank compliance officers. Takes plain French descriptions of suspicious transactions and produces goAML-compatible STR XML drafts, ready for human review and submission to CTAF. **Owner:** Achraf Gasmi | **Status:** Prototype -- release candidate `v0.1.0-rc.1` | **Date:** 2026-08-04 > **Prototype release candidate -- not production-ready.** > The goAML XML output has **not** been validated against the official CTAF/UNODC XSD schema. > Do not use this to file real STRs without full human review and independent schema validation. ## Live demo A public demo runs on Hugging Face Spaces. It runs on **Google Gemini**, not Anthropic Claude, and is a public demo environment -- do not enter real customer or case data. --- ## What it does 1. Analyst describes a suspicious transaction in plain French 2. Waraka extracts entities and transaction details via Claude 3. Screens all entities against OpenSanctions 4. Applies rule-based risk scoring (6 FATF-aligned rules) 5. Generates a formal French compliance narrative 6. Produces a valid goAML STR-T XML file 7. Analyst reviews, corrects if needed, and approves --- ## Stack | Component | Technology | |---|---| | Agent framework | LangGraph 1.0 | | LLM | Claude Sonnet 4.6 (temperature=0.0) | | API | FastAPI | | UI | Streamlit (French only) | | Database | PostgreSQL 16 | | Sanctions | OpenSanctions API | --- ## Project structure ``` waraka/ ├── agents/ │ ├── str_agent.py # Banking prompts (module-level constants) + LLM helper │ └── insurance_prompts.py # Insurance prompts + InsuranceCase parsing ├── tools/ │ ├── goaml_tool.py # goAML XML builder (xml.etree.ElementTree only) │ ├── sanctions_tool.py # OpenSanctions API wrapper │ └── ner_tool.py # Entity extraction / JSON parsing helper ├── graph/ │ ├── str_graph.py # LangGraph StateGraph -- 5 nodes, linear │ └── …