PHP

WACS Record Management System (WACS)

A full-stack enterprise web application built to digitize and manage the complete lifecycle of medical fellowship and membership examination records across West Africa. The system handles everything from candidate registration and application processing to examination scheduling, result management, document archiving, and AI-powered document analysis — replacing a previously manual, paper-based workflow for one of West Africa's most prestigious medical institutions.

The platform serves administrators, lecturers, and candidates with role-appropriate access while maintaining a complete audit trail of all operations across multiple countries, faculties, and surgical specialties.


WACS Record Management System (WACS) screenshot

Key Features

10 features built into this project

Candidate registration with personal and academic details
Multi-type application processing (Primary / Membership / Fellowship)
Examination scheduling and result recording
AI-powered document text extraction (PDF / OCR / DOC)
Natural language database queries via GPT / Claude / Gemini
Semantic document search using vector embeddings
Role-Based Access Control (RBAC) with granular permissions
Audit logging of all user actions
Bulk ZIP document imports and batch operations
Printable candidate reports and statistical dashboards

Challenges & Solutions

Technical problems encountered during development and how each was resolved.

1

Entity-as-config pattern: Rather than writing separate form and table views for each of the 32+ entity models, a single generic renderer reads metadata from entity classes (field types, labels, FK references, validation rules) and generates the UI automatically. Adding a new module became a configuration task rather than a development task.

2

Layered document extraction: Uploaded documents go through a waterfall extractor — pdftotext first, then Tesseract OCR for scanned PDFs, then Antiword for .doc files — ensuring maximum text coverage regardless of file format.

3

Multi-AI provider abstraction: The AI_Assistant library wraps OpenAI, Claude, and Gemini behind a single interface. The active provider is swapped via config, and costs are optimised by routing simple queries to cheaper models and complex ones to GPT-4o-mini.