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.
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.