What I build

Not case studies written for a portfolio. These are systems in production, with the teams still using them.

Some of this was built inside companies I work with. I describe method and outcome only, no internal figures, client data or names beyond what the owner has cleared for publication.

Warehouse operations In daily use

Cycle-count system (الجرد الدوري)

Design, build and rollout · 2026

A warehouse counting its stock once a year, on paper, discovers its errors once a year. This replaced that with a continuous cycle count: stock is imported from Odoo into an immutable snapshot, counters count blind from their phones with no expected quantity shown, a supervisor reviews, and only matched lines close. Discrepancies escalate through a fixed ladder: recount, third count, then a documented closure. So a shortage can never be quietly written off.

Outcome

  • 1,639 products across a 1,695-line import, counted by the floor team
  • Blind counting removed the anchoring that made old counts agree with the system instead of the shelf
  • A recommendation engine ranks what to count next, and explains why
  • Shortage closure gated behind a document: no silent write-offs

Built with

  • Node.js
  • SQLite
  • Odoo export
  • Docker
  • Traefik
Operations automation Live

Warehouse operations bots

Design and build · 2026

Three chat-based tools that take the paperwork out of daily warehouse work: shipping-document reading, container receiving, and shipping-cost calculation. The interesting part is what runs them: local models on our own server rather than a metered API, with local speech-to-text for voice notes. Recurring AI cost is zero, and no operational data leaves the machine.

Outcome

  • Three workflows moved from manual entry to chat, used by the ops team
  • Zero monthly AI spend: models run on owned hardware
  • Voice notes transcribed locally, so the floor can use it hands-busy
  • No operational data sent to a third-party API

Built with

  • Local LLMs (Ollama)
  • Whisper STT
  • Telegram
  • Python
Account management Live

Client intelligence briefing

Design and build · 2026

Account managers are expected to know what happened to their clients this week, and never have time to find out. This reads the news around each account, filters it to what actually matters commercially, writes the briefing in Arabic, and emails it on each manager's own schedule, with a strict recipient allowlist so a misconfiguration cannot leak a client's briefing to the wrong person.

Outcome

  • A daily Arabic briefing per account manager, delivered automatically
  • Recipient allowlist enforced on both To and Cc
  • Runs on a subscription plan rather than metered API billing

Built with

  • Python
  • RSS
  • LLM pipeline
  • cron
Assessment Live · public

Account-manager assessment simulator

Design and build · 2026

A scenario-based simulator for assessing account managers on judgement rather than trivia. Candidates work through realistic client situations and are scored on how they reason, not on what they can recall.

Outcome

  • Public, live tool used for structured assessment
  • Scenario scoring replaces recall-based testing

Built with

  • React
  • TypeScript
  • Vite
  • Serverless
View live ↗
AI infrastructure Running

Private multi-agent operations fleet

Design, build and operation · 2026

A private fleet of specialised agents running on my own server, handling tasks, finance, mail, health data and content operations, each isolated with its own memory and permissions. Built because I wanted to know what actually holds up when you run agents against real daily work for months, not what holds up in a demo.

Outcome

  • 12 specialised agents in continuous operation
  • Local models as the default, metered APIs only as fallback
  • Strict isolation: one agent's credentials are not another's

Built with

  • Docker
  • Local + hosted LLMs
  • Telegram
  • Linux
Hiring Live

Application copilot

Design and build · 2026

A human-in-the-loop pipeline that finds relevant senior roles, scores them for fit using a locally-run model, and sends a card for approval. Nothing is submitted automatically. The decision stays with a person, every time.

Outcome

  • Roles scored for fit before a human spends attention on them
  • Approval required for every outbound action
  • Runs on local inference, no per-application cost

Built with

  • Python
  • PocketBase
  • Local LLM
  • systemd