All projects

BankIslami, delivered with Aawaz AI · Banking / Compliance

An internal web and mobile platform that reads the news every morning and turns it into a risk report for the bank’s compliance team.

Private deployment, client project

Category

Mobile

Year

2025

Capabilities

Mobile, Full-Stack, AI, Cloud & Automation

Industry

Banking / Compliance

BankIslami PEP Screening on a phone
BankIslami PEP Screening on a phone

The problem

Regulators expect banks to keep screening politically exposed persons for as long as the relationship lasts. The compliance team did this by hand: a morning spent across news sites, court lists and gazettes, searching for over a thousand names, then pasting findings into a spreadsheet. Stories were missed, the report landed late, and nobody could show an auditor how a name had been checked.

Our approach

We started with the sources, not the interface: a scheduled crawler that fetches every relevant Pakistani and international outlet at 06:00, normalises the articles and stores them in MongoDB. A matching engine scores each article against the bank’s PEP list using name variants, roles and locations, and only credible matches reach an analyst. The review queue, risk profiles and the generated report were then built once as a component library and shipped to the browser and to iOS and Android.

Inside the product

More than one screen.

3 more screens from BankIslami PEP Screening, captured at device size.

BankIslami PEP Screening: Review queue on a phone

Review queue

Client record and article side by side, so a name match is confirmed or dismissed in seconds.

BankIslami PEP Screening: Daily risk report on a phone

Daily risk report

The morning’s findings as a signed PDF, with score movement and delivery to Compliance and Risk.

BankIslami PEP Screening: Sources on a phone

Sources

Every news feed, regulator and court list the crawler reads, with last-run health.

How it is built

Architecture

A MERN stack: React with Vite and Tailwind for the analyst dashboard, React Native for the mobile app, and one Express API over MongoDB serving both. A BullMQ worker on Redis runs the crawl at 06:00, fetching sources with Puppeteer where pages are rendered client-side and Cheerio where they are not. Matching is a scoring pipeline over name variants, transliterations, role and city, with a confidence threshold that routes matches to the review queue. Confirmed findings roll into a PDF report generated server-side and delivered by email and push notification.

Key features

Scheduled daily crawl of news, regulator and court sources
Name matching with transliteration and alias handling
Risk score per person with adverse media, litigation and sanctions signals
Review queue with client record and article side by side
Escalation to the MLRO with a full audit trail
Generated daily risk report as a signed PDF
Mobile app with push alerts for high-risk matches
Role-based access for analysts, reviewers and management

Challenges & solutions

Challenge

Names in Urdu and English transliterate many ways, so a strict match missed real stories and a loose one buried analysts in false positives.

Solution

A scoring pipeline weighs name variants against role, city and known associates, and every match above the threshold shows the analyst exactly which fields agreed.

Challenge

News sites change their markup without notice, and one silent failure meant a source was missing from the morning report.

Solution

Each source has a health check and an article-count baseline; a crawl that returns far fewer than usual retries and flags the feed as delayed on the dashboard instead of passing quietly.

Challenge

The bank needed the same screening on phones for officers who are rarely at a desk, without maintaining two products.

Solution

Screens were designed once as a shared component set and served by one API, so the web dashboard and the React Native app always show the same data and the same decisions.

Results

What shipping it changed.

The compliance team now starts the day with a finished report instead of a morning of searching. Every relevant outlet is read before anyone arrives, only credible matches reach an analyst, and every decision on a name is recorded well enough to show an auditor.

“They understood that compliance is about being able to show your reasoning, and built the product that way from the first sprint. Clear updates, honest estimates, and nothing shipped that they could not explain to an auditor.”
Head of compliance · BankIslami
01

38

sources screened before the team arrives

Roughly 200 articles a day are crawled, normalised and matched against the PEP list from 06:00.

02

30 min

of morning triage, down from four hours

Analysts confirm or dismiss scored matches with the client record and article side by side, instead of searching by hand.

03

07:30

daily risk report delivered

Where it used to land mid-afternoon, now with a full audit trail per name and delivery to Compliance and Risk.

04

1,240

accounts monitored continuously

PEP and related-party accounts screened every day across web and mobile.

Stack

  • Web app

    • React
    • Vite
    • TypeScript
  • Mobile app

    • React Native
    • Expo
  • Styling

    • TailwindCSS
  • Backend

    • Node.js
    • Express
    • MongoDB
  • Crawling

    • Puppeteer
    • Cheerio
  • Jobs

    • BullMQ
    • Redis
  • Auth & reports

    • JWT
    • PDFKit

Let's talk

We can usually tell within one call whether the approach above transfers to your problem, and what would need to change.

Start a project