FYNX FORGE
عربي Back to Work
[ Case Study · 02 / SaaS · Compliance ]

Know your Nitaqat band before the ministry tells you.

SaudizationMeter is a SaaS product for HR teams at Saudi private-sector companies. It calculates the company's Nitaqat band from its real roster, shows what a hire or a resignation would change, and keeps a compliance history for audits. We designed and built all of it, from the calculation engine to the marketing site.

Client

SaudizationMeter

Industry

HR compliance SaaS

Region

Saudi Arabia

Year

2026

2,807
Activity codes, each with its official threshold formula
2×
Checks against Qiwa every month
67 → 87
Mobile Lighthouse after our speed work
Saudization Meter Dashboard
/ The Client

One wrong spreadsheet cell can cost a company its visas.

Nitaqat decides whether a Saudi company can hire from abroad, renew work permits and bid for government work. Most HR teams still track it in Excel, so they find out about a band drop after it has happened.

/ 01 · The formula

The target moves with headcount

The required percentage isn't one number. It comes from a logarithmic formula with different coefficients for each economic activity, and the ministry revised it again in April 2026.

/ 02 · The credits

Not every Saudi counts as one

A Saudi paid SAR 4,000 or more counts once, between 3,000 and 3,999 counts half, and below that not at all. Employees with disabilities count four times, up to a cap. Part-time, hourly and dual-employment staff each have their own rule.

/ 03 · Planning

HR can't see ahead

The question HR actually gets is "how many Saudis do we need to reach Platinum, and what will it cost?" A spreadsheet can't answer it safely.

/ 04 · Trust

The numbers have to match Qiwa

If the tool says Mid Green and Qiwa says Low Green, the tool is useless. The thresholds had to match the official calculator exactly and stay matched.

/ What We Built

A calculator HR can plan with.

Four things the product does, from the first free calculation to the monthly report.

/ Dashboard

The band, live

Every hire, termination or salary change recalculates the rate and band on a gauge, with the gap to the next band and an alert when the band drops. Employees are added by hand or imported from CSV.

/ Scenarios

What-if, and Auto-Solve

HR models hires, departures and salary changes without touching live data. Auto-Solve works backwards: pick the band you need and it proposes the cheapest mix of hires to reach it.

/ Records

History for audits

Dated snapshots of the roster and band, exported as PDF, Excel or CSV reports in Arabic or English, and a monthly compliance email to owners on paid plans.

/ Teams & billing

Built to be sold

Several companies per account, owner, admin, editor and viewer roles, team invites, and Free, Starter, Pro and Enterprise plans billed through Paddle. A free public calculator on the site brings in new users.

/ How We Built It

The rules live in one tested engine.

Everything that decides a band is plain TypeScript with no database or network calls, so every rule can be tested on its own.

/ Engine & data

Where the numbers come from

  • Official coefficients for 2,807 activity codes in 41 groups, 22,256 formula rows, collected by sweeping Qiwa's own calculator
  • Band thresholds from y = m × ln(headcount) + c, with flat thresholds where an activity has none
  • A canary on the 1st and 15th of every month re-checks 30 random activities against the live Qiwa API and alerts us on any drift
  • Profession-level targets (marketing, sales, procurement and engineering) shown alongside the main band
/ Application

What it runs on

  • Next.js 16 · React 19 · TypeScript · Tailwind · shadcn/ui
  • Supabase: PostgreSQL with row-level security per company, Google sign-in
  • Band-drop emails sent from the app through a Supabase Edge Function and Resend
  • next-intl for Arabic and English, Paddle for billing, Sentry for errors, on Vercel
/ Why This Way

Why it was built this way.

Pure functions for the rules

Credit rules are where compliance tools go wrong. Keeping the calculator free of I/O means each rule, including the edge cases like the disability cap and micro-entity exemption, has its own tests.

Checked against the source, on a schedule

The ministry changes thresholds without notice. Instead of trusting a one-off import, the data is compared with Qiwa twice a month, so a change shows up as an alert to us, not a wrong band for a customer.

Each company sees only its own roster

Salaries and nationalities are sensitive. Row-level security in the database, not just checks in the app, keeps every company's data separate.

/ Identity

Premium, authoritative, and culturally resonant.

The color palette anchors on a "Brand Green" scale, symbolizing growth, compliance, and the Saudi national identity, paired with premium gold accents.

Deepest Dark#0F3D23
CTA Green#3AA566
Gold 500#C9A84C
Plus Jakarta Sans Bricolage Grotesque Cairo JetBrains Mono RTL-Native Sentry Observability
/ The Interface

Clarity at scale.

/ The Result

HR plans hiring instead of reacting to it.

/ Accuracy

Matches the official calculator

Thresholds come from Qiwa's own data and are re-checked against it every two weeks.

/ Foresight

A warning before the drop

Owners and admins get an email when a new snapshot shows the company has dropped a band.

/ Audits

Proof on file

Dated snapshots and exportable reports show the band on any past date.

/ Speed

Faster on phones

Mobile Largest Contentful Paint went from 5.7 s to 3.3 s, and the mobile Lighthouse score from 67 to 87.

Next.js 16 Supabase React 19 TypeScript Tailwind CSS shadcn/ui PostgreSQL · RLS Edge Functions next-intl Paddle Resend jsPDF ExcelJS Vitest Sentry Vercel

Building a complex SaaS platform?

If you need robust engineering for regulatory or data-heavy applications — let's talk.