Skip to content
Mohammed Hakmi

I love building software. These days, most of it has AI in it.

I'm Mohammed, a senior engineer in Ontario. For 14 years I've built web and mobile apps that help people get their work done. My recent work is AI agents inside real products. I build the streaming interface, the tool calls, the approval steps, and the tests that tell you when a prompt change broke something.

Open to a few contracts. Canada, the US, and the Gulf. English and Arabic.

Email meGitHubLinkedIn

tetherwaiting for you
you

Refund Acme's last invoice and let them know.

agent

Looking up the invoice.

billing.get_invoicedone
{ "customer": "acme-ltd", "latest": true }
result{ "id": "INV-1042", "amount": "CA$1,200.00", "issued": "2026-10-03", "status": "paid" }
agent

INV-1042, CA$1,200.00, paid on 3 October. A refund moves money, so I need you to confirm it before I run it.

billing.refundneeds approval
{ "invoice": "INV-1042", "amount": "CA$1,200.00" }
scripted replay, no network

Tab closed.

The run keeps going on the server. Reopen the tab and everything you missed is there.

0.0s

A scripted replay of a Tether run, the agent chat I'm building. The agent stops before money moves and waits for a person. Approve or reject it yourself. No model runs on this page.

Selected work

Five open-source projects, all in progress. Each gets a public repo and a write-up when it is ready.

Daftar

in progress

A self-hosted scanner for documents and receipts.

An Android app scans the page. An LLM reads the fields, using your own API key. A dashboard lets you manage the documents and export them as CSV, Excel, or PDF.

Daftar is Arabic for a notebook or ledger.

React Native, React, TypeScript, Python, FastAPI, PostgreSQL

Tether

in progress

An agent chat where the run keeps going after you close the tab.

Reload and the answer is there, along with every tool call you missed. Queue a follow-up while it works, or steer it mid-run.

React, TypeScript, Python, Starlette, Pydantic AI, PostgreSQL

Mizan

in progress

A command-line tool that fails CI when a prompt gets worse.

It runs a dataset against a prompt and scores the output with assertions and a judge model. The build fails when quality drops or the prompt goes over its token budget.

Mizan is Arabic for a weighing scale.

Python

Keyset

in progress

A starter for data-heavy admin screens.

Server-side filtering and sorting, keyset pagination, filters kept in the URL, a command palette, and full keyboard support.

React, TanStack, FastAPI, SQLAlchemy

Yameen

in progress

A component kit built to work right-to-left from the start.

Tokens, layouts, and components that flip correctly, with Arabic typography that was chosen and not defaulted.

Yameen is Arabic for right.

React, Tailwind, shadcn/ui

What I do

Four kinds of contract work. Each row points to a related project or past job.

No.ServiceWhat you getSee
01AI features in an existing productYou have a SaaS product and want an assistant or an agent in it. I build the whole path, from the chat interface through tool calls and human approval to the Python API behind it.
02Evals and reliability for LLM featuresYour AI feature works in the demo and misbehaves in production. I set up eval sets, regression checks in CI, and cost and prompt-size budgets, so a change that breaks things fails before release.
03Design systemsI led design systems at two companies. I build or migrate component libraries in React, TypeScript, and Tailwind, with tokens that match Figma.
04Arabic and RTL product workInterfaces that work in both directions, and AI assistants that handle Arabic properly.

Experience

Web and mobile since 2011. Design systems at two companies. AI agent interfaces and eval tooling now.

YearsCompanyRoleWork
2026 to nowCareforceSenior Software EngineerAI agent interfaces, evaluation tooling, typed Python APIs
2022 to 2026EpochSenior Software EngineerLed the design system. Cut UI build time by 40%
2019 to 2022Euna Procurementformerly BonfireFull-Stack DeveloperCo-led a design system that doubled UI delivery speed
2011 to 2019Digital FutureBeirutWeb and Mobile DeveloperIonic and Angular apps, PHP APIs

About

Mohammed Hakmi, in a white shirt and glasses

I grew up between Homs in Syria and Beirut in Lebanon, and moved to Canada in 2019. I studied networking, then IT, and I've been writing software for a living since 2011.

I like the unglamorous parts of AI products, the recovery paths and the edge cases, because that is where they break.

Away from the computer I'm a dad of two, and most of my free time goes to my family.

Tell me what you're building.

One email with what the product does and what you want built is enough to start. I reply in English or Arabic.

[email protected]
  • GitHubgithub.com/mhakmi
  • LinkedInlinkedin.com/in/mjhakmi
  • English and Arabic