Karim Arafa · Portfolio

A survey of shipped work · 25.2°N 55.3°E

Karim Arafa

AI engineer in Dubai. Currently building AI agents at DataFlow. I built and run Invenro, the inventory platform a UAE retailer runs on every day, and Tarif, which prices any drive in the Emirates to the dirham. A First Class Honours degree sits under all of it.

Dubai · United Arab Emirates

Scroll to traverse

01 Invenro · Founder & sole engineer · Live — paying client

One inventory. Five channels.
A single truth.

Invenro is a multi-tenant AI inventory platform, live at invenro.co. A UAE electronics retailer runs on it every day under a paid annual contract: six hundred SKUs across five sales channels, unified into one golden record.

The problem

A retailer selling on Amazon, Noon, Noon Minutes, Sharaf DG, and Carrefour sees the same product five different ways: five SKU formats, five spreadsheets, five versions of the truth. Stock decisions get made on numbers that disagree with each other, and reconciling them by hand is a full-time job that still gets it wrong.

The system

Every incoming listing runs a four-step identification waterfall (internal SKU, platform listing memory, barcode, lazy create) while a parallel pgvector merge engine measures cosine similarity across channels and flags likely duplicates above an 85% threshold for one-click human review. Matching SKUs stops being someone's full-time job.

On top of the golden record sits Sentinel, a two-tier async insight engine: SQL anomaly detection catches dead stock and restock-adjusted velocity swings, then an LLM tier enriches each finding. Everything is deduplicated, debounced, and idempotent. A streaming conversational agent answers questions over live inventory with seven tools and a RAG knowledge base that ingests the retailer's own documents.

MERGE SUGGESTION REVIEW
NOON Apple iPhone 15 Pro Max 256GB Natural Titanium N53432547A
AMAZON iPhone 15 ProMax (256 GB) - Natural Ti, ME version B0CHX2F5QT
Fig. 1: a merge suggestion. Two listings on two channels, one product. Similarity is cosine distance over 256-dimension embeddings; 85 to 94 asks for review, 95 and up is flagged a match, and nothing merges until a person approves it. Demo data.
AGENT 7 TOOLS

YOU Which products on Noon are about to run out?

query_inventory({ platform: "noon", lowStock: true })→ 3 rows

INVENRO

Three products on Noon are under their low-stock threshold:

iPad Air 11" M3 256GB 4 units
AirPods Pro 2 USB-C 6 units
Galaxy S24 Ultra 512GB 2 units

The Galaxy is selling fastest. At its current velocity it is out in about two days.

Fig. 2: the agent over live inventory. Seven tools, streaming. Platform filters and each employee's access scope are enforced in the tool layer, never in the prompt. Demo data.
The Invenro command center: total inventory value, 30-day gross revenue, stock-age and sales-velocity KPIs over a restock-adjusted velocity chart, beside the live Sentinel Intelligence feed flagging stockouts, low stock, and duplicate-product merge suggestions.
The command center: stock value, velocity, and Sentinel's insight feed over the golden record. Demo data, as shown at invenro.co.

The proof

A real retailer has run on Invenro every day since March 2026, so every bug is a production incident. When a revenue figure looked wrong, I traced it to a single bad cell in one uploaded file and corrected it the same day. When the client asked to see stock as it stood on a past date, the reconciliation view shipped within a day of the message. Schema changes go out expand-then-contract, so nothing goes down while they work.

When the numbers had to be trusted, I audited the whole read path and ran a data-correctness campaign until dashboards, ledgers, and the agent agreed to the unit. Ninety-five permanent regression tests hold it there. Since then the product has become portable: timezone, currency, and channels are per tenant, so the same code can serve a retailer outside the UAE.

600+
active SKUs under management
5
sales channels, one golden record
95+
permanent regression tests

02 Tarif · Solo build · v1 feature-complete, unreleased — waitlist open

The price of a drive,
before you drive it.

A UAE cost app that prices any route to the dirham: tolls, fuel, and what the trip does to the month's budget. Navigation stays with the maps people already use.

The problem

In the Emirates, the cost of driving is set by systems that never talk to each other. Dubai tolls through Salik; Abu Dhabi tolls through Darb, on its own timetable of peak windows and exemptions. Fuel is repriced every month by committee. No navigation app, Google's own included, can put a price on the route it just recommended.

So drivers budget backwards: the month's cost arrives as a statement, after the money is already spent. Tarif answers one question. What will this trip cost, before I take it?

The approach

Tarif treats a route as something to be priced. The engine decodes each candidate route's geometry and walks it gate by gate. Crossings are detected geometrically (rising-edge, so a U-turn never double-counts) and priced against each system's real tariff: Salik's peak tiers, Darb's timetable, Ramadan calendars, and the month's official fuel price applied to the car's actual consumption.

Every search returns each route's full fare, and every fare lands against a monthly budget: a derived ledger that forecasts the month's spend at its current pace. The cost engine is deterministic, and hundreds of tests pinned it down before a single endpoint existed.

DUBAI ABU DHABI AL SAFA SALIK · AED 4 JEBEL ALI SALIK · AED 4 GHANTOOT DARB · AED 4 134 KM · ≈ 11.4 L FUEL · AED 32.50 AED 44.50 ONE-WAY · OFF-PEAK
Fig. 1: a fare, assembled from geometry. Gate crossings priced per system, fuel from the month's official price. Illustrative figures; gate positions schematic.

The state of it

Version one of the app is feature-complete and not yet released: every screen and the full backend, including the budget layer, built test-first from the first commit. What remains is deployment, not features. The marketing site is live at tarif.ae with the waitlist open, and the app prices Dubai–Abu Dhabi to the dirham in a single search.

The site publishes the fare sheet openly. Pick a route and a departure window; the quote itemises every gate crossing, the fuel at this month's official price, and the cheaper departure it found.

A Tarif fare quote for Dubai to Abu Dhabi (Corniche) at peak: Salik gates Al Barsha and Jebel Ali at 6.30 each, Darb gates Ghantoot and Sas Al Nakhl at 4.00 each, 11.2 litres of fuel at 42.90 — total AED 63.50, with a note that departing after 20:00 saves AED 8.20, stamped rates checked 11 Jun 2026.
The artifact: a fare quote as published at tarif.ae. Every gate, the fuel, and the cheaper departure it found.
15
toll gates modelled, both systems
1,000+
automated tests, app and backend
100 ×4
Lighthouse, every category — tarif.ae

03 Vieu · ML & software engineering intern · Seattle, remote · Summer 2025

Half the tokens.
Same answers.

A summer inside a production ML pipeline, where the interesting work was deciding what not to send to the model.

The work

Vieu classifies university degree programs at scale, and every classification was a GPT-4.1 call. I rebuilt the pipeline as a hybrid: rules first, the model only where rules run out. Token usage fell 51%, roughly half the API bill, with no loss in classification quality.

I also built a student-capability engine: vector embeddings with k-means clustering that map semantic similarity between degree programs, used for student–alumni matching. Both went into the core product as production code, with documentation.


04 The record

The rest,
on the record.

Where I work now, then the credentials and competitions, kept to what was actually won.

Now

DataFlow — Software Engineering Intern

Building AI agents that automate verification workflows at a primary source verification provider. Dubai, September 2026 to March 2027.

2025

Alibaba Cloud Hackathon — 2nd place

An AI voice financial advisor built in 24 hours, exclusively on the Qwen stack as the rules demanded. I owned onboarding and the document-ingestion pipeline, so the agent could read uploaded financial statements live in conversation.

2026

University of Birmingham — B.Sc. AI & Computer Science

First Class Honours, 4.0/4.0 GPA (Dubai campus). Final-year dissertation: Invenro, the system above with the paying client.

Toolbox

AI/ML — OpenAI API, RAG pipelines, vector embeddings, pgvector, k-means, LLM tool-calling, Qwen. Languages — Python, TypeScript, SQL, C++, Java. Systems — Node.js, PostgreSQL, Drizzle, Next.js, React 19, Expo, Docker, Vercel.


05 Contact · Open to AI engineering roles

Start the
conversation.

Dubai or remote. There's no contact form, just an address I actually answer.