Build vs buy
Four vendors, one decision
For the trademark-monitoring platform I wrote the requirements, ran a four-vendor evaluation against them and made the build-vs-buy call. Then I led the in-house build with the team. It is in production.
Remote (UTC+2) · Open to KSA/UAE relocation · 30-day notice
Full-Stack Engineer. Vue/Nuxt + Django.
I build Arabic-first, bilingual RTL products. At SIPRC I built an IP-management platform end to end that now runs 52 IP services, and I still write code while running IT delivery there.

Before any code: requirements a vendor can be judged against, options scored with evidence, and a clear call on whether to build, buy, or stop.
Three moments where the decision mattered more than the code.
Build vs buy
For the trademark-monitoring platform I wrote the requirements, ran a four-vendor evaluation against them and made the build-vs-buy call. Then I led the in-house build with the team. It is in production.
Knowing when to stop
After the business rejected a completed Power BI build, I re-scoped reporting as a custom module inside the platform instead of patching the wrong thing.
AI with accountability
Model output that drives a legal recommendation is validated against historical outcomes before anyone relies on it. That is a condition of rollout, not a benchmark number.
Example: replacing an ageing build server
A tiny version of decision-matrix. Move the weights and watch the ranking. A thin margin means your weights are deciding, not your options.
Must-have: data stays in our own region
A must-have is a yes/no gate, not a weight. Switch it on and an option that fails it cannot win, however well it scores.
Robust: the winner holdsmargin 0.80
Winner: Buy a hosted service, margin 0.80, robust
Scores are illustrative. The full tool adds evidence per score, pairwise weighting and a decision record.
Open decision-matrix →Open source · decide
Build-vs-buy decisions you can defend.
A guided, in-browser decision matrix. Must-haves stay apart from weights, every score needs evidence, sensitivity analysis flags fragile decisions, and it writes a decision record you can commit.

From the IP-management platform an operations team runs its day on, to a Three.js showroom and AR try-on.
CI that catches the project phases teams skip.
Freelance engagements, a side project and earlier client work.

Teaching
Workshop on the front-end project lifecycle · December 2025
A workshop and slide deck for students, graduates and freelancers on taking a front-end project from requirements to clean code.
Interlude
Put a date or a phone number inside an Arabic sentence and the browser silently reorders it. The data is right; only the pixels are wrong, so users stop trusting the data. Flip the switch.
آخر تحديث للمستند 12-05-2024 بواسطة الفريق
Document last updated 12-05-2024 by the team
للتواصل اتصل على 010 2345 6789 في أي وقت
To reach us, call 010 2345 6789 any time
تم شحن الطلب #4821-B اليوم
Order #4821-B shipped today
مدة التوصيل 3-5 أيام
Delivery takes 3-5 days
Verified in Chromium: without isolation these four render as 2024-05-12, 6789 2345 010, B-4821# and 5-3.

Direction state that survives server-side rendering, logical-property utilities, and a BidiText component that isolates only the runs that would move, so dates and IDs stop reversing inside Arabic.
106 testsGitHub →

One app in INSTALLED_APPS: logical-property styling for the parts of the admin that stay mirrored wrong, isolated mixed-script values, Arabic-Indic digits and a language switcher.
192 testsGitHub →
Much of my work ships in Arabic and English. These two open-source kits hold the fixes I kept needing.
Every failure should make the next one harder. I write that down as tests, guards and tools, and some of those tools are open source.
Formats you assume are formats you get wrong. More than once, a field I "knew" the shape of turned out to have two shapes, and the difference mattered.
Scripted probes report success on broken paths. If it is a user interface, it is not done until it has been driven in a browser.
A bug that reached production comes back as a regression test, a database constraint or a type, so the same mistake fails loudly next time.
Status reports name what failed, why, and what changed. A clear bad-news report beats a vague good one.
Open source · learn
Blameless incident reviews that stop repeat failures.
A Django app where blame-shaped wording is flagged, every action item must name the guard that stops the failure returning, and a review cannot close until someone has checked that guard works.

Six MIT-licensed tools, each with its tests running in CI.
Also: vue-intent — A Vue 3 adapter for intent-first, state-driven UIs with permission guards and navigation protection. All repositories →
Building software since 2022, from freelance client work to running an IT portfolio.
2019 – 2023
Assiut University, Egypt
Graduated in 2023.
2022 – 2023
Freelance
Client projects from requirements to deployment, including a climate-risk tool for PhD research.
2023 – 2024
IDAAM
Front-end modules for Keme, a US clinic-management platform.
2024 – 2025
Digitee (Nexxora Holding)
Sole frontend engineer for six production apps.
May 2025 – Jul 2025
Cepro (SIPRC group)
Built the brand-protection dashboard from zero.
Jul 2025 – Mar 2026
SIPRC
Built the IP-management platform end to end, siprc.sa and its AI assistant, and the cepro.ai rebuild.
Mar 2026 – present
SIPRCNow
Running the IT portfolio: five production systems.
Contact
If your team needs someone who can decide, ship and learn, I would like to hear about it.