The product

Eight surfaces.
One copilot.

One signup, one audit chain, one bilingual corpus. Every surface composes the same retrieval, the same RLS-isolated tenant boundary, and the same provider-failover LLM gateway. You can use one of them or all of them — the product gets better the more you wire in.

Surface 01

Legal Chat

Server-Sent Events streaming with provider failover (Claude → Gemini → OpenAI → deterministic stub). Every factual claim carries a numbered citation back to the corpus. Disclaimer post-processor enforced on every reply. AR / EN / UR / TL / BN / HI accepted on the request body; reply language and disclaimer flip automatically.

  • Hybrid retrieval (Meilisearch BM25 + Qdrant vectors + reciprocal-rank fusion)
  • Citation post-processor: every [n] must reference a retrieved chunk
  • Refusal protocol when sources don't cover the question
  • Per-message provider override for power users
  • Thumbs-up / thumbs-down feedback persists per message

Hybrid search across Saudi statutes, Royal Decrees, fatwas, and Board of Grievances decisions. Filter by source, doc type, year, jurisdiction. Open the document with the citation highlighted. Same retrieval that powers Legal Chat — exposed for direct exploration by lawyers and compliance officers.

  • BM25 + dense vector + RRF fusion
  • AR-tokenisation aware ranking (authoritative AR is preferred)
  • Source / doc-type / year / jurisdiction facets
  • Section-aware chunker for statutes; topic-guided for fatwas
  • Stub embeddings (BGE-M3 placeholder) → flip to real on demand
Surface 02

Library

Surface 03

Document Studio

Schema-driven wizard renders five canonical templates to PDF (WeasyPrint, bilingual fonts, DRAFT watermark) and DOCX (python-docx, RTL paragraph alignment for AR). Contract review on pasted text runs hybrid retrieval + LLM critique to produce a redline + risk verdicts grounded in cited Saudi law.

  • 5 templates: NDA, employment, lease, PoA, labour-court complaint
  • AR ligatures + Hijri-aware date rendering
  • DRAFT watermark on every export until you publish
  • Document review on pasted text — redline + risk verdicts
  • Versioned per-document timeline with diff

Five domains, 25 active rules: Sharia, Regulatory, Labour, PDPL, Nitaqat. Cascade-prediction engine reads tenant_integrations.payload and projects ZATCA → Baladiya → Qiwa → bank-freeze 60 days ahead. Audit pack export bundles health, runs, and cascade events into a single PDF + JSON for your auditor.

  • Evaluators: regex / keyword / llm_rubric / integration-aware
  • PDPL Readiness Scanner — focused PDPL run on pasted policy text
  • Cascade engine: 60-day projection across the 4 integrations
  • Audit pack export: PDF + JSON + bundled health + cascade
  • Health card per domain with score, color, issue count
Surface 04

Compliance Lifeline

Surface 05

Track My Case · Najiz

Bilingual mock + live Najiz integration. Pulls case status, hearings, and judgments. Diffs against the previous snapshot, emits AR/EN status_change notifications with severity. Mock mode is deterministic (SHA-256 seeded on case_no + national_id), so demos always work offline.

  • MockNajizClient · LiveNajizClient drop-in via NAJIZ_MODE
  • Bilingual notifications (AR + EN), severity-coloured
  • Per-case sync diff: status_change · hearing_added · hearing_changed
  • National-ID is SHA-256 hashed, never stored raw
  • Audit-logged track and sync events

Outcome predictor with calibrated confidence. Closed-set verdict (plaintiff_wins / defendant_wins / partial / dismissed / settle), bilingual reasoning, recommendations, citations from the same corpus that powers chat. Falls back to a deterministic local synthesiser when no LLM keys are configured.

  • Conservative confidence calibration
  • JSON-schema enforcement at the boundary (closed-set outcome)
  • Top-5 cited precedents per prediction
  • 3 bilingual recommendations per prediction
  • Stub fallback flagged in audit when LLM unavailable
Surface 06

JudgeGPT

Surface 07

Find a Lawyer

Case-specific scoring: 0.40·practice_area + 0.20·jurisdiction + 0.15·language + 0.15·rating·confidence + 0.10·confidence + 0.10·verified_bonus. Foreign workers (UR / TL / BN / HI) get matched to lawyers fluent in their language. RFQ engagements are audit-logged.

  • Case-specific scoring with score breakdown surfaced to the user
  • Verified flag = MoJ licence + bar membership confirmed
  • Tagalog / Bengali / Urdu / Hindi-speaking lawyers in the seed
  • Engagement RFQ: case summary + preferred_language + message
  • No paid placement — ranking is pure

Send templated case-update alerts and receive replies via WhatsApp Cloud API. Mock mode by default; live mode posts to graph.facebook.com/v19.0 once a Meta phone-number ID and bearer token are configured. Six languages of templates ship in the box.

  • Mock · live drop-in via WHATSAPP_MODE
  • Inbound webhook receiver records every reply
  • E.164 normalisation enforced
  • AR / EN / UR / TL / BN / HI templated bodies
  • HMAC signature verify roadmapped
Surface 08

WhatsApp Channel

The architecture, in one line
Next.js + FastAPI + Postgres + Qdrant + Meilisearch + Keycloak + Redis — every layer covered by tenant RLS and an HMAC-chained audit log.

Want the full architecture walk-through? We'll cover it on the demo call — including provider failover, the integration adapters for ZATCA / Qiwa / Najiz / Baladiya, and how the audit chain survives a tenant migration.