Five systems that disagree. One number you can defend. PerformHub reconciles your till, your shift reports, your online store, your ad platforms and what your stores type in — then its AI analyses every row of it overnight and decides the actions worth taking today, ranked, explained and measured after the fact.
Built for chains with stores, an online shop and more than one market — every currency kept apart, never mixed.
Not a chatbot bolted onto a dashboard. The analyst sits on the entire reconciled warehouse — 142 tables, 2.15 million rows, every store, style, size, hour and campaign — and answers in Arabic or English with the evidence attached. Ask why a branch slipped and it tells you whether it was traffic, conversion or basket, which day it started, and what to do about it.
Maadi lost 212K EGP against the same week. It was traffic — not the floor team.
Footfall fell from Tuesday onward — the same day budget moved out of the Maadi radius. Conversion actually improved across the week, so the shop converted what walked in. There was simply less of it.
Denim 512 straight — 41 units lost in sizes 30 and 32.
Both sizes were out of stock in Maadi all week while New Cairo held 23 between them. I have drafted the transfer in the inventory module; it is waiting on your approval.
Written. Eighteen stores, the sales bridge, a verdict on every branch.
Built from the closed month, not the live feed — so the numbers will not move after you send it.
Ask in Arabic, in English, or switch halfway. It answers in the language you asked in, with Latin numerals so every figure matches the POS and the printed reports.
On stock, hourly sales, online money and Riyadh it may not write its own query — it must take a validated path. Every one of those rules exists because an answer was once wrong.
Every answer names the sources behind it and the figure it moves, so any claim can be followed back to the receipt it came from.
Ask for the month and it writes the board pack — executive brief, sales bridge, per-store verdicts — then hands you the PDF, the Excel or the CSV in the chat. Nobody rebuilds a deck by hand again.
Transfers, markdown depths and target reforecasts are drafted straight into the module that owns them — waiting on your approval, never applied behind your back.
An AI is only as good as the number underneath it. Most of the work here is not charting — it is making systems that disagree agree, and being explicit when they can't. PerformHub fixes the order of authority once, applies it everywhere, and only then lets anything analyse or decide on top of it.
Point of sale, live within minutes. The only place a receipt timestamp exists — so every sales-by-hour figure comes from here and nowhere else.
One row per store per day, filed at close. The official end of day — but it lags one to two days, duplicates rows, and sometimes never sends a day at all.
Money comes from the platform's own analytics, never from our copy of the orders — rebuilding it from raw orders was 28% wrong on cash-on-delivery voids.
Three networks in one table — a row per date, campaign, ad set, ad and creative. Platform-attributed revenue is the ROAS basis; matched web revenue reconciles it.
Foot flow by hour, camera reports, supply pipeline, branch costs. An approved camera count overrides what the store typed — and the original is kept.
Nothing here waits for someone to open a chart. Every night the entire business is re-read, scored and turned into a ranked list of actions — each one explained, owned, and checked afterwards against real sales to see whether it worked.
Twenty-two scheduled jobs pull five source systems into 142 tables — the fastest every five minutes, the slowest once a night.
The authority order settles every disagreement before a model sees anything at all. By the time the AI reads a figure, that figure has already been proven.
2.15 million rows re-scored every night — every style, size, branch, hour and customer segment, against target, against last week, and against its own history.
Fourteen engines produce actions, not observations — markdown depth, stock transfer, consolidation, reorder date, target recovery — each scored on impact, urgency, confidence and ease, then deduplicated into one ranked list.
Every action carries the evidence behind it and the figure it should move, in Arabic or English. Ask a follow-up and the analyst answers along a validated path — on stock, hourly sales, online money and Riyadh it is forbidden to write its own query.
Store sales are compared before and after each action is marked done. The engine is judged on what changed in the business, not on how much it produced.
Live sales straight from receipts, refreshed every five minutes and measured against the same day last week up to the same hour — with the gap already explained by traffic, conversion and basket rather than left for you to work out. Below: an example dashboard — the figures are illustrative.
Some days were never filed by the shift system. The repair job found them and recovered 4.6M EGP the business had simply not counted.
This is the whole platform, not a highlight reel. Thirty-one permission modules and eighteen roles decide who sees which of these and what they may do inside it — view, create, edit, delete, export, AI, manage — down to the individual branch. A freelancer can file a content brief and never read anyone else's. Filter it below.
The Action Center is where all fourteen engines land. It scores every recommendation on impact, urgency, confidence and ease, deduplicates them into a single ranked queue, tracks each one from open to done — and then measures whether it worked by comparing store sales before and after. What it will not do is invent analysis.
Eligibility and protection scoring per style, depth curves capped at break-even, branch and size control, dry-run pricing with full revert.
Finds genuine last pieces — and, more usefully, the false ones that should be consolidated across stores rather than discounted.
A day-by-day integer simulation per store: opening balance, pipeline arrivals, forecast demand. Committed and indicative variants.
Ask in Arabic or English. For stock, hourly sales, online money and Riyadh it may not write its own query — it must use a validated path. Each rule exists because it was once answered wrong.
At 06:10 every morning, before anyone opens the app, it has already read every competitor catalogue, found what changed overnight, scored it, checked it against your own stock and written what it means. Only public information, and only what it can prove.
No AI at this stage. Every product is compared with last night and only real differences are recorded. A price that jumps eightfold is held back as a reading error, not published as news.
Significance and confidence, nought to a hundred, with the parts behind each number shown on the card. The price index refuses to give a figure until it has three competitors and five products.
A competitor discounting wide leg matters if you are holding twelve weeks of it, and barely at all if you are nearly sold out. “No action required” is a real answer here.
It receives verified facts only, and must write three things kept apart: what happened, what it probably means, and what to do. It cannot introduce a number it was not given.
One click sends an opportunity to the Action Center, where it becomes a tracked task with an owner, a deadline and a status — beside every other engine's.
Twenty-two scheduled jobs, each in a stated timezone, and the analysis re-runs behind them. If a sync misses its minute it catches up, retries, and keeps re-checking until yesterday actually appears — because the reports database routinely does not have yesterday at 02:00. The AI is never handed a half-written day.
Full online sync — products, orders, refunds, sessions
Nightly item sync — sales, stock, customers, staff
KPI gap self-heal — rebuilds any store-day the shift system never sent
Last-piece detection — AI pass over every style
Expected-stock baseline run
Morning digest — the ranked actions, in every inbox
No year-on-year yet. Daily history starts February 2026. Every seasonality claim is labelled unavailable until the data exists — not estimated.
Attribute tagging is sparse. In a typical catalogue only one item in eight carries a gender and one in ten a season. Untagged items show as “unknown” and are never guessed.
Cost is on 100% of items. Which is why margin is solid even where attributes are not.
A negative hour is real. It means returns exceeded sales that hour. It is shown, not hidden.
One field is quarantined. The stores' manual running total is demonstrably wrong — cash-only figures, shift resets, negative hours — so it can never be used as a sales number anywhere.
Historical stock is estimated. Only the current snapshot is stored, and that is stated wherever it appears.
Saudi Arabia is not a fourteenth branch. It is its own territory, with its own tables, its own currency, its own permissions and its own analysis — never converted, never added into an Egyptian total, and no Egyptian label ever appears on a Saudi page. The AI reasons inside one market at a time.
A walkthrough takes thirty minutes and runs the AI against your own systems, not a demo dataset. You leave with a ranked list of actions for your real business.