SISHIYAD ISMAIL
← ALL SYSTEMS
SYS/FSASaudi ArabiaSoftware Architect · Project Lead

Fursa (FSA)

AI Recruitment SaaS

Bilingual (Arabic/English, RTL) AI job platform with semantic candidate–job matching and LLM-assisted job descriptions reviewed by humans before publish.

The problem

Match thousands of candidates to jobs across two languages with explainable scores, while keeping every LLM output behind a human review gate and every tenant's data isolated.

System topology

Hover or tap any component. Amber packets carry control and approvals; cyan packets carry data.

LIVE TOPOLOGY · HOVER OR TAP A NODEOPERATIONAL
HTTPS / ALBgen requestsSQLenqueue jobsconsumeembeddingsfetch CVsdraft JDapprove → publishNext.js WebAmplify · RTL/i18nCore APINext.js · ECS FargateAI ServicePython · FastAPISQS Queuesparse · embed · matchAI WorkersECS FargateNeon PostgreSQLpgvectorPrivate S3CV storageHuman Reviewpublish gate
CLIENTSERVICEWORKERDATAAIINFRA data control / approval

Component inspector

Select any component in the topology to see the technology behind it, why it was chosen, and the trade-off accepted with it.

Decision log

The choices that shaped the system, and what each one cost.

LLM provider abstraction with guardrails

All model calls pass through one internal interface enforcing structured outputs, schema validation and content guardrails. Vendor choice became configuration; guardrails became testable code instead of scattered prompt hacks.

Human-in-the-loop as an architectural gate, not a UI feature

Generated job descriptions flow through a review state machine (draft → reviewed → published) persisted in the core domain. Nothing generated reaches candidates without an accountable approval.

pgvector on the primary database

Semantic matching joins vector similarity with hard filters (location, visa status, salary band) in one SQL query — impossible to do cleanly with a separate vector store without dual-write complexity.

Everything as code: AWS CDK + GitLab CI/CD

The full topology — Fargate services, queues, ALB, secrets — is reproducible from the repository. Environments are cattle.

Full stack

TypeScriptNext.jsPython/FastAPIpgvectorPostgreSQLAWS ECS FargateSQSS3ALBCloudWatchAWS CDKGitLab CI/CD