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