Stock Count — Interactive Prototype

Tarweej × Mars · demo data only · walk through the flow on the phone, watch the rules fire on the right

v8 · for IT review
9:41Stock Count100%
Check in
Select your store to begin

Rules engine

Rules the merchandiser app runs, in the order they can fire during a count. Each one lights up the moment it applies.

Activity log

Nothing yet. Open Stock Count and start scanning.

Near-expiry items marked as sold (R11 sheet)

Nothing logged yet.

Open points for the meeting
  • Restricted checkout list — demo blocks large packs and bottles. Final list comes from Tarweej as an Excel file, keyed by barcode.
  • UOM per item — fixed in the item master, not chosen by the merchandiser. IT to confirm this field exists for all Mars SKUs.
  • Warehouse check — compares against dates captured in the same visit. If a location has no entry yet, no comparison runs.
  • Warning vs block — warehouse date warning lets the merchandiser confirm and continue. Checkout restriction blocks entirely.
  • PDF export — generated on the phone and shared from there. If it should also reach the manager by email automatically, that is a server-side job and needs to be scoped separately.
  • Full report, shaded by urgency (R12) — the PDF is no longer a month-limited export. Every line in the report goes in; the current month and the next four are each shaded a different colour so the manager can scan by urgency at a glance, and the open-ended 6-months-and-beyond bucket stays unshaded since it isn't one specific month.
  • Item master source — the live version reads the existing Mars item list in the app. Category and UOM per barcode, plus a new checkout-restricted flag from Tarweej.
  • Created Date (R6) — pulled here from the Mars item master's CREATED_ON column. GALAXY Jewels 550g is the one genuinely new SKU in this demo list (created about a month ago), which is why it is the item that triggers the warning.
  • Store + month key (R11, R14) — this demo has one store and one fixed "last month" report to show the logic. The live version needs every store's report keyed by store + month so this and the leader checklist can look back reliably.
  • R11 walkthrough default — CELEBRATIONS 600g is the running example for this rule: last month's report recorded it with an expiry of that month, and this month's count has no line for it at all. Press Finish countFully finished without scanning it and the audit screen shows: "CELEBRATIONS 600g was on last month's report with an expiry within the next 4 months, but has not been counted this month — are you sure it was sold and is no longer in the market?"
  • Quantity-increase confirmation (R7) — same CELEBRATIONS 600g example: last month's report recorded 12 cases for its expiry month. Scan it this month, enter a higher quantity at that same expiry, and the confirmation sheet fires before the line saves. Declining leaves the merchandiser on the count screen with nothing saved — they can adjust the quantity or leave via the back button at their own pace; only "Yes, confirmed" proceeds.
  • Full or partial finish (R10) — pressing Finish count always asks this first. Choosing "Continue next visit" skips the R11 audit and the R12 PDF export entirely for this visit; the count stays open and reappears exactly as left next time. Only "Fully finished" unlocks the rest.
  • Leader app (R13) — shown here as a toggle for convenience. In production it is a separate app on the leader's own device.
  • Merchandiser identity (R14) — this demo hard-codes this month's and last month's merchandiser to always differ, so the top-priority notification is easy to see. In production it comes from the login on each report.
  • Accuracy score (R13) — intentionally not built beyond the Area Manager's Merchandiser Accuracy page. Not tied to incentives for at least 6 months once it exists.
  • Area Manager dashboard — read-only, laid out like the team's existing Tableau reports (grid + filter rail), with a Stock Count Report tab and a Merchandiser Accuracy tab. Real columns come from this demo's data; region/account/site-number/Mars-code columns from the live Tableau report are not modelled here and would come from the same data source in production.
  • Merchandiser Accuracy page — now built, not just a placeholder. Two prior months are fixed demo history; the current month's row is computed live from the leader's matches/corrections this session. A merchandiser needs at least 10 recorded reviews before being ranked, so one bad week can't brand someone the worst performer.
  • R11 answers are not graded for "field verification" — the merchandiser app is GPS-gated and only runs while on-site at the store, so every "sold" or "confirmed not present" answer is already given in person. There is no separate unverified/verified tier — both are logged and trusted the same way.
  • Rule numbering (R1–R14) — numbered in the order they actually fire during the merchandiser's visit, not the order they were first specified. Export (R12) moved from its original "R8" to last, since it only unlocks after a full finish; the leader's two rules are R13/R14, since they only ever read what already happened here.
  • Language toggle (EN/AR) — top right. Switches the merchandiser app's screens, buttons and rule descriptions for IT to preview both. Leader and Area Manager screens are English-only in this pass.