Builder in Amman, shipping across MENA

I build softwarethat runswithout me.

Eleven years inside finance operations, now building the systems instead of running them. Reconciliation engines, portal bots, desktop tools and web products, in Python, Go and TypeScript.

Systems built with and for

CHALHOUB GROUPREAL FZENaiTelArab BankCoach Tamara

Four kinds of thing

Different problems, same job: take the manual step out.

NashamaWC World Cup tracker home screen.
Developer tooling
Deliveryy order desk inside a local water shop.talk2dee local transcript history.NaiRoute splice studio for FTTH network records.
Entropy terminal dashboard showing multi-currency balances.
Entropy
Python

Reconciliation and close engines

Bank, intercompany and marketplace reconciliation across 145+ legal entities and 30+ currencies. Validated against months already closed, to full parity with the VBA and spreadsheets they replaced.

Go / JavaScript / PowerShell

Portal bots and desktop tools

Bots log into HSBCnet, BNP Paribas Connexis, the Bahrain AMEX merchant portal, Tamara and Farfetch STORM. Files arrive named and filed.

TypeScript / Next.js / Go / Wails

Web and desktop products

Client platforms and self-owned products, Arabic and English where the audience needs it. Deployed on Vercel and on a box I administer.

TypeScript / Python

Developer tooling

A shared design system, a Claude skill builder, a Playwright control room and a personal operating system. The tools that make the other three faster.

Finance systems for the shared services behind

DIOR

RALPH LAUREN

98.9%

Marketplace orders matched automatically, to the cent.

Selected work

Products outside. Engines inside.

Public products, private operational engines and desktop tools.

talk2deeGo 1.26 / Wails 2.12 / React 18 / TypeScript

talk2dee

Press a hotkey, talk, the words are on your clipboard. Nothing uploaded.

A Windows tray app running Whisper on the machine itself. No account, no API key and nothing uploaded.

Hard partTranscription fast enough to type into any application, with no cloud round trip to hide the latency behind.

Open the live product
talk2dee recording screen running on Windows.
NaiRouteQGIS / Python / PostGIS

NaiRoute

FTTH outside-plant design, operations and record-keeping for NaiTel engineers in Aqaba.

One customer, one custom build, installed on their engineers' machines. No license server, no billing and no plugin-repo listing.

Hard partThe network of record lived in Google Earth KMZ files and a 17-column spreadsheet, with no port bookkeeping or splice records.

Open the live product
NaiRoute living map showing ducts, cables and homes.
The Big CoH ToolPython / SQL / Reconciliation

The Big CoH Tool

Every retail store, every day, every payment method, from point of sale to bank deposit.

A reconciliation engine across nine data sources: POS sales, cash pickups, card settlements, BNPL payouts, bank statements, wire transfers and GL entries. Built for the GCC finance shared services behind Dior, Ralph Lauren and the rest of the luxury portfolio.

deliveryyTypeScript / Next.js / Arabic and English

deliveryy

A QR repeat-order system for local delivery shops in Amman.

A household scans its sticker and orders refills from its usual shop. The shop runs customers, orders, sticker stock, history and SMS service from a signed-in counter desk.

Open the live product
A Deliveryy QR sticker being scanned beside a water bottle.

More systems

Open the index.

NashamaWC World Cup 2026 tracker home screen.

A FIFA World Cup 2026 tracker built for Jordan's first World Cup.

Open the live product

Where it runs

Not everything belongs on a PaaS.

Eight projects on Vercel. Five more behind nginx on a Hostinger box I administer: Next.js apps, Postgres, n8n, TLS on auto-renew and Tailscale for the private half.

Some of it is public. Some is only reachable from inside the tailnet, which is the point.

Vercel8 public projects
nginx5 routed services
Postgresproduct data
n8nunattended jobs
TLSautomatic renewal
Tailscaleprivate services

Amman, serving MENA

Send a problem.