oia-adp / README.md

AI-Powered Anomaly & Fraud Detection System

Invoices Anomaly & Fraud Detection System for OIA

Last updated: 4/16/2026GitHubOIA-ADP

AI-Powered Anomaly & Fraud Detection System

Overview

Problem Statement

Oman Investment Authority (OIA) currently faces challenges in ensuring the accuracy, efficiency and security of its Account Payable process. Manual and rule-based approaches to identify anomalies and fraudulent activities are time-consuming, error-prone and reactive in nature. These limitations increase the risk financial leakage, non compliance with internal policies and Delegation of Authority, and potential reputational damage due to undetected fraud or irregularities.

Supporting Documents

  1. Design (Figma)
  2. BRD (Word)

Getting Started

Prerequisites

Project setup

Clone the repository

git clone https://github.com/rihal-om/oia-adp.git
cd oia-adp

Running the app locally

  1. Run docker-compose to start the application
docker compose up
# or 
make run
  1. Populate the database with sample data (for development/testing)
make populate

This will seed the database with dummy data including:

  • Admin users (3) - admin1@rihal.om, admin2@rihal.om, admin3@rihal.om
  • Requester/User accounts (3) - user1@rihal.om, user2@rihal.om, user3@rihal.om
  • Viewer accounts (2) - viewer1@rihal.om, viewer2@rihal.om
  • Sample invoices (15) with varied amounts and statuses
  • Rules for anomaly detection (10) covering various business scenarios
  • Requests with various statuses (15): Analyzing, Releasing, Pending, Approved, Rejected
  • Anomalies (8) for testing anomaly detection workflows
  • Approval workflows (10) with different approval levels and statuses

Test User Credentials: The seeded users can be used for testing different workflows:

  • Admin users have full system access
  • Requester/User accounts can create requests and approve invoices
  • Viewer accounts have read-only access

Note: You can run make populate anytime to reset and repopulate the database with fresh test data. This is especially useful after running docker compose down -v which removes all database volumes.

  1. Once the application is running, open your browser and navigate to:
# Frontend
http://localhost:3000
# Backend
http://localhost:1323

Tech Stack

CategoryToolDescription
FrontendReact, React RouterFrontend library and routing system
BackendGolang, EchoBackend language and web framework
AuthenticationKeycloakIdentity and access management system
DatabasePostgreSQLRelational database system
ContainerizationDockerContainerization and image management
OrchestrationTemporal.ioWorkflow orchestration and state management
CI/CDGitHub ActionsContinuous integration and deployment tool

Project Team

NameRoleGitHub
Vineeth KumarProject Manager-
Iman Al-WahaibiUX/UI Designer-
Haitham Al-KhamiasiLead Frontend Developer@HaithamLeo
Mohammed Bait OthmanFrontend Developer@moham1233
Yahya Al-SaidiLead Backend Developer@yahyaAlsaidi
Al-Qassim Al-ZakwaniBackend Developer@qzakwani
Hilal Al-ManjiBackend Developer@s3rversix
Abdulmalik Al-GhaziMachine Learning Engineer@abdulmalik29