The Problem: Manual Screening and Reporting in a UAE Insurer
You run a 1,200-person insurer in Dubai. Your underwriting team spends 11 hours per week manually screening CVs against competency frameworks. Your compliance officer compiles a monthly CBUAE regulatory digest by hand, cross-referencing 40+ PDFs. Your IT department has already deployed a chatbot for internal FAQs, but it hallucinates policy clauses and has no audit trail. You need a retrieval-augmented assistant that pulls from your actual documents, integrates with Slack and Microsoft Teams, and meets ISO 27001 controls. The problem is not model selection—it is scoping the pilot, measuring a baseline, and scaling across three departments in six months without replacing your existing ATS, DMS, or helpdesk.
Prerequisites Before You Start
- Baseline metrics logged: For each target workflow (candidate screening, monthly compliance digest, policy clause lookup), record cycle time in hours, error rate as a percentage, and the number of manual steps. Use your ATS export and DMS access logs for the last 90 days.
- Document inventory: A list of every document the assistant will ingest—job descriptions, competency matrices, CBUAE circulars, policy templates, past interview rubrics—with file paths and update frequency.
- ISO 27001 gap assessment: Confirm your current A.8.24 (Logging) and A.8.32 (AI governance) controls. If you lack an AI-specific risk register, build one before step 1.
- Slack/Teams bot permissions: An app registered in your workspace with
chat:write,im:read, andchannels:joinscopes. For Teams, a bot registered in Azure AD withChannelMessage.ReadandChannelMessage.Send. - pgvector-capable PostgreSQL instance: Version 15+ with the
pgvectorextension installed. A 16 vCPU, 64 GB RAM instance in AWS Middle East (Bahrain) or Azure UAE North handles 500k chunks with a HNSW index. - Dedicated AI team confirmed: 3–5 engineers plus a product owner, embedded in your org, reporting to your CTO or Head of Digital.
Step 1: Audit the Current Workflow and Log a Baseline
Run a 2-week audit of the candidate-screening workflow in your underwriting department. Export the last 90 days of applications from your ATS (Workday, SAP SuccessFactors, or Lever). For each application, log: time from receipt to first-screen decision, number of reviewers, and whether the shortlisted candidate passed the first interview. Calculate baseline cycle time (target: under 5 days) and error rate (target: under 15%). Document the exact competency criteria in a structured JSON file—e.g., {"role": "senior_underwriter", "required": ["10y_experience", "IFRS17_certification"], "preferred": ["reinsurance_experience"]}. This file becomes the retrieval index’s metadata schema. Without this baseline, you cannot prove the assistant reduced cycle time or error rate in the pilot evaluation.
Step 2: Build the pgvector Retrieval Layer
Ingest the underwriting department’s job descriptions, competency matrices, and past interview rubrics into PostgreSQL. Chunk each document into 512-token segments with 64-token overlap. Embed each chunk using text-embedding-3-small (1,536 dimensions) and store in a document_chunks table with columns: id, content, embedding vector(1536), source_doc_id, department, effective_date. Create a HNSW index: CREATE INDEX idx_chunks_embedding ON document_chunks USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 200);. For 50k chunks, this index builds in under 90 seconds on a 16 vCPU instance. Verify retrieval quality by running 20 test queries (e.g., “What IFRS 17 certification is required for a senior underwriter in the UAE?”) and confirming the top-5 chunks contain the correct answer. If precision@5 is below 80%, adjust chunk size or add metadata filters before proceeding.
Step 3: Wire the LLM Inference Layer
Deploy the LLM inference endpoint. For candidate screening, use OpenAI’s gpt-4o or Anthropic’s claude-3-5-sonnet via API for the drafting step—the model receives the top-5 retrieved chunks plus the user’s query and outputs a structured screening summary. If candidate data cannot leave your data center (common for health-data-adjacent roles), self-host Llama 3 70B on two A100 80GB GPUs. The inference endpoint exposes a /generate route that accepts {"query": "...", "context_chunks": [...], "role": "senior_underwriter"} and returns {"summary": "...", "matched_competencies": [...], "gaps": [...], "recommended_questions": [...]}. The prompt template enforces JSON output and includes the ISO 27001 constraint: “Do not include candidate names or contact details in the summary. Reference only competency matches and gaps.” Log every request with a hashed candidate ID, not the raw name, to satisfy PDPL data-minimization.
Step 4: Integrate with Slack and Microsoft Teams
Register a bot in Slack and Microsoft Teams. In Slack, create an app with chat:write, im:read, and channels:join scopes. In Teams, register a bot in Azure AD with ChannelMessage.Read and ChannelMessage.Send. The bot listens for a /screen command in a dedicated #underwriting-screening channel. When a recruiter types /screen candidate_id=UW-2024-0847, the bot calls your /generate endpoint, receives the structured summary, and posts it to the channel with a “Approve” / “Edit” / “Reject” button. The recruiter must click “Approve” before the summary is pushed to the hiring manager via your ATS API. Log the approval action with the recruiter’s user ID, timestamp, and the source document IDs referenced. This human-in-the-loop gate is mandatory under UAE PDPL Article 13 and ISO 27001 A.8.32. If the recruiter edits the summary, capture the diff and feed it back as a negative example into the retrieval index.
Step 5: Run the Pilot and Measure Before/After
Run the pilot in the underwriting department for 6 weeks. Track: cycle time from application to first-screen decision (baseline: 4.2 days), error rate (baseline: 12% of shortlisted candidates fail first interview), and recruiter override rate (percentage of assistant summaries edited or rejected). At week 6, compare against baseline. Target: cycle time under 2.5 days, error rate under 8%, override rate under 20%. If targets are met, document the results in a one-page report with before/after numbers. If not, iterate: adjust chunk size, add metadata filters, or refine the prompt template. Only after the pilot report is signed off by your CTO and compliance officer do you replicate the architecture to the claims and compliance departments. The compliance department’s monthly digest workflow follows the same pattern: ingest CBUAE circulars, embed, retrieve, draft, approve, archive with a SHA-256 hash for audit.
Leave a Reply