Inspiration
After the UAE's removal from the FATF Grey List in 2024, regulatory pressure intensified. Compliance analysts spend 3–5 hours per corporate KYC case, manually searching registries, cross-referencing sanctions lists, and writing reports. We built Donna.ai to compress that into 30 seconds, with AI doing the heavy lifting and humans making the final call.
What it does
An analyst submits a company name, trade license, and jurisdiction. The system runs 5 parallel web searches across corporate registries, sanctions lists (OFAC, UN, EU), adverse media, financial health, and corporate relationships — then produces:
- AI Risk Score (0–100) with evidence-backed rationale — LOW (0–20), MODERATE (21–40), HIGH (41–70), CRITICAL (71–100)
- Interactive Knowledge Graph — maps directors, shareholders, subsidiaries, and risk signals as a force-directed network, exposing hidden ownership structures
- Analyst Review Queue — every case requires human sign-off with options to approve, reject, escalate, or override
- Self-Learning Loop — analyst overrides feed back into future scoring prompts, calibrating the AI over time
How we built it
The core is a LangGraph DAG orchestrating parallel execution:
START → [5 Parallel Searches via Tavily MCP] → Fan-In → [Risk Scoring + Graph Extraction via Claude] → END
Stack: Next.js + React + Tailwind CSS (frontend), Express.js + TypeScript (backend), LangGraph.js + LangChain (agent orchestration), Claude API (reasoning), Tavily MCP (web intelligence), HTML5 Canvas (knowledge graph). We chose LangGraph over simple chains for true parallel fan-out/fan-in, and Tavily MCP for jurisdiction-aware queries instead of brittle scrapers.
Challenges we ran into
Fuzzy Arabic name matching — "Mohammad Al-Fahim" could match "Mohammed Al Faheem" on sanctions lists. We use Claude's contextual reasoning to compare DOB, nationality, and associates to distinguish true matches from false positives.
Parallel state management — five concurrent LangGraph searches needed careful schema design to fan-in without race conditions, especially when individual searches timeout.
Inconsistent risk scoring — early versions gave wildly different scores for the same company. Fixed by embedding an explicit rubric, requiring evidence citations per component, and anchoring with analyst correction history as few-shot examples.
Accomplishments that we're proud of
- Extremely reduced run-time — full due diligence that previously took half a day now runs in under a minute
- Genuinely self-improving — not just a static AI wrapper; analyst corrections structurally improve future assessments
- Human-in-the-loop by design — the AI recommends, the analyst decides. Every architectural choice reinforces this
- Knowledge graph extraction — going beyond a risk number to visually map how entities connect, revealing patterns no spreadsheet can show
What we learned
- Agentic AI is about orchestration — parallel execution, state merging, and cross-source reasoning — not just prompting
- Self-improving systems need structured feedback (original score + correction + reasoning), not binary thumbs up/down
- Parallel search is transformative: 5 sequential searches = 30s; parallel = 5–8s
- The UAE compliance space is massive, largely manual, and ready for AI-native tooling
What's next for Donna.ai
- UAE government API integration — Emirates ID verification via TDRA, CBUAE Open Finance feeds, Federal digital KYC platform
- Multi-domain expansion — transaction monitoring, regulatory filings, and policy update tracking beyond KYC
- Expanding into new legal domains — Donna.ai currently focuses on compliance & KYC, but the architecture is domain-agnostic. Next on the roadmap: labor law (Emiratisation quotas, WPS compliance), real estate (RERA/DLD transaction screening), and corporate governance (Commercial Companies Law, ESG reporting) — evolving Donna from a compliance tool into a full-spectrum AI legal assistant for the UAE market
Built With
- anthropic-claude-api
- express.js
- html5
- json
- langchain
- langgraph.js
- mcp
- next.js
- node.js
- react
- tailwind-css
- tavily-mcp
- typescript
Log in or sign up for Devpost to join the conversation.