Operational requirements, turned into working systems.

Each case shows the business problem, the approach, what I was personally responsible for, the technology used and the verified outcome. I designed and built every one of these.

Operations platform

A creative agency that could not see its own workload

Regional creative and marketing agency · Iraq, Egypt and Dubai

Requests arrived by chat and email, schedules lived in spreadsheets, and overload only became visible when a deadline was missed. Off-the-shelf tools assumed a workflow the agency did not follow.

  • Mapped the real operating flow against international agency practice
  • Intake from any channel into one record; AI drafts the brief and proposes deliverables from the agency’s deliverables catalogue, with a person completing and approving
  • End-to-end automated workflow: approved items are forwarded automatically to the people who need them for their own tasks
  • Resource-first scheduling with capacity checked before commitment, SLAs, time tracking and an exceptions dashboard
  • Document control with automatic versioning, filing and archiving; role-based access and a full audit trail
  • Multi-tenant, English and Arabic, with automated database and end-to-end tests

My role: Digital transformation lead: process mapping, solution architecture, full development and deployment

Built with: React and TypeScript; Supabase (PostgreSQL with row-level security, Edge Functions, Realtime, Storage); database tests, unit and end-to-end tests with CI; Vercel. English and Arabic.

Read the case study
How a request moves through the platform Selected workflow with an illustrative request. Not the complete platform
6 weeksfrom mapping to a working pilot
RequestcapturedBriefAI drafts + proposes deliverablesCapacitychecked firstSchedulewarn, never blockApproveperson decides, auto-forwardedCapacity this weekChecked before the work is committedDesign72%Copy55%Video90%Account40%100%Warnings, overrides and approvalsNothing is blocked; everything is recordedDeadline falls on a weekend · warning shownDesign at 110% this week · warning shownProceed anyway · override loggedApproved by a personForwarded to the people who need it · versioned and filedAlert raised on exceptions dashboard
AutomatedAI-assistedHuman decisionException / friction
A request arrives by WhatsApp, email or form and becomes one record
Automated operations

Running tournaments without an army of coordinators

GGI esports platform · Iraq

Running tournaments is mostly coordination: formats, fixtures, Discord channels, results, promotion. Done by hand, that capped how many events could run and how reliable they were.

  • Lead developer and solution architect as CTO
  • Tournament engines that scale from small community events to 4,000+ competitors: formats, fixtures, brackets and advancement generated by the system
  • Two-way Discord integration: channels, fixtures and results synchronised between the platform and Discord
  • Automatic generation of social media plans to promote each tournament
  • Registration, teams, referees, results and rankings in one system, in English and Arabic

My role: CTO: solution architect and lead developer

Built with: SvelteKit and TypeScript; Supabase (PostgreSQL, row-level security, Edge Functions); Discord bot with a Redis-backed job queue; TrueSkill ratings; English and Arabic with right-to-left layout; Vercel.

Read the case study
How a GGI tournament runs itself Selected workflow, illustrative 8-team bracket. Not the complete platform: engines scale to 4,000+ competitors, with two-way Discord sync and automated promotion plans
5,000+users registered in the first three months
RegistrationOTP sign-in · registeringTeam 01Team 02Team 03Team 04Team 05Team 06Team 07Team 08Round 1Semi-finalsFinalformat generatedMatch 1 winnerMatch 2 winnerMatch 3 winnerMatch 4 winnerSemi 1 winnerSemi 2 winnerFinal: next round# m1# m2# m3# m4Results reported by referees and players · winners advanceLeaderboardratings auto-updated1Team 0118602Team 0317903Team 0217404Team 0517005Team 041655
Human decisionAutomated
Players and teams register
Engineering tooling

Keeping AI-assisted software projects from drifting

Keystone · own project, open to clients

AI coding assistants are fast, but on a real project they forget the decisions, rules and lessons that came before, and the codebase drifts. The context that keeps a project consistent lives in people’s heads and chat histories.

  • Designed a system that keeps requirements, decisions, tasks, rules and learnings in the repository itself
  • Built a command-line tool that compiles exactly the context an AI agent needs for each task, deterministically
  • A three-role review gate before any task can be closed
  • 248 automated tests; used to manage its own development

My role: Designed, built and tested the tool; used it to manage its own development

Built with: Node.js and TypeScript command-line tool; JSON Schema validation; YAML; architecture decision records; 248 automated tests.

Read the case study
How Keystone briefs an AI agent for each task As built; eight commands, 248 automated tests
248automated tests, byte-identical output
Repositorystructured, versionedrequirements.yaml✓decisions.yaml✓tasks.yaml✓rules.yaml✓learnings.yaml✓traps.yaml✓ValidateJSON SchemaCompiledeterministicAgentfrom the briefReview gate3 roles must passtask briefexactly the contextthis task needs✓role 1✓role 2✓role 3learnings and traps written back to the repositorysame inputs → identical output, every run
Deterministic controlAI-assistedHuman decision
Requirements, decisions, rules, learnings and traps live in the repository as structured files
AI with controlsWorking prototype

AI that matches invoices but cannot approve its own payments

Accounts payable workflow · working prototype

AI can read and match invoices quickly, but businesses rightly worry about it approving payments it should not.

  • AI reads the invoice and matches it against the purchase order
  • Approval limits are checked by fixed rules outside the AI, so it cannot be talked past them
  • Anything over the limit stops and waits for a named person to sign off
  • Every step is recorded in an audit trail

My role: Designed and built the prototype end to end

Built with: Node and TypeScript with no runtime dependencies, Ed25519-signed authority, SQLite audit ledger, Anthropic API with an offline deterministic fallback for testing

Read the case study
How an invoice is matched and approved Selected workflow with illustrative amounts; the control model is as built
0payments the AI can approve beyond its limit
AIreads and matchesDeterministic ruleoutside the modelNamed approversigns over the limitINV-2291SupplierAmountLine items$4,200PO-1042SupplierAmountLine itemsmatchedlimit $10,000limitWITHIN LIMIT · POSTEDno prompt can change thiswaitingsignedauthority verified by signaturenot needed within the limitAudit ledgerINV-2291 matched to PO-1042 · 3 of 3 fieldsINV-2291 $4,200 within limit · postedINV-2304 matched to PO-1057 · 3 of 3 fieldsINV-2304 $48,000 over limit · haltedINV-2304 approved · signature verified · posted
AI-assistedDeterministic controlHuman decisionException / friction
An invoice arrives

Also.

Creator marketplace

Lead solution and business-model architect for SideGig, a platform matching brands with creators: briefs, proposals and payments, with AI-assisted ingestion and matching and human review.

Technical review for a game studio

Reviewed the architecture and backend of a mobile game project for MBC Group, identified the risks the team had not flagged, and worked with their developers to resolve them.

Support chatbot platform

A chatbot that answers from a company’s own documents and websites, and hands over to a person when it should. Built with a document-ingestion pipeline and vector search.

Tournament site on existing tools

A registration, bracket and leaderboard site for an esports event in the UAE, built quickly and cheaply on Google Sheets and Apps Script because that was the right fit.

What clients say.

As CTO, Edward took GGI, our esports tournament platform for gamers in Iraq, from concept to a working MVP in about three months and full functionality within six. He automated the parts that used to take hours of manual coordination: tournament formats, fixtures, Discord channels and leaderboards. More than 5,000 players registered in the first three months. Edward combines hands-on development with a clear understanding of how operations actually run.

Jahan BybordiCOO, ESTAZ

We brought Edward in to assist with a game development project and act as an advisor to identify technical problems we couldn’t get to the bottom of. He reviewed the architecture and backend, identified the risks our team hadn’t flagged, and explained them in terms our leadership could act on. More importantly, he guided us through resolving the issues with our development team rather than just handing over a report. His mix of technical depth and operational experience gave us clarity and confidence at a point where we needed both.

Naji GhaziriMobile Gaming Product Leader, MBC Group

Edward led both the business model and the solution architecture for SideGig, our platform matching brands with creators. He translated our commercial model into clear workflows and a technical design, bringing in AI-assisted ingestion and matching while keeping people in control of the decisions that matter. He understood the business as well as the technology, which meant the platform was designed around how the business actually needs to work.

Ralph BejjaniCEO, SideGig

Let’s discuss your business challenges.

A free 20-minute conversation about where your business is losing time and money, and what it would take to fix it. If I can’t help, I’ll say so.

Working withAsia-Pacific, the Middle East and Europe, remote or on site
Based inIndonesia (UTC+7)