Logistics

Stock counts for a small warehouse

Staff scan barcodes on a phone to count stock by location, and the system shows the difference against the expected quantity. Counts are done in sections without stopping the warehouse, and discrepancies over a threshold need a supervisor to approve.

Automatically generated draft

Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.

Section 01 · What has to work

Staff can scan barcodes on mobile phones to count warehouse stock by location and flag supervisor-review discrepancies without halting operations.

Section 03 · Screens

Every screen, and what it is for.

  • ›Location Selection — picker opens it, chooses zone and aisle to count, instant list load.
  • ›Scanner View — staff open it, scan item barcodes and enter counts, sub-second scan feedback.
  • ›Discrepancy Review — supervisors open it, inspect flagged count differences and approve or reject, instant list sorting.
  • ›Audit Log — manager opens it, reviews completed counts and discrepancy history, instant filter.

Anything not on this list is not in version one. That is what keeps a fixed price fixed.

Section 04 · The data model

What it stores, and who can read a row.

location

id uuid, warehouse_zone text, aisle text, shelf text, created_at timestamptz

Access · Any authenticated staff member can read all locations.

expected_stock

id uuid, location_id uuid, sku text, expected_qty int, updated_at timestamptz

Access · Any authenticated staff member can read expected stock for assigned locations.

count_session

id uuid, location_id uuid, staff_id uuid, status enum(in_progress,submitted,approved,rejected), started_at timestamptz, completed_at timestamptz

Access · Staff read own sessions; supervisors read all sessions in their warehouse zone.

count_item

id uuid, session_id uuid, sku text, counted_qty int, variance int, requires_approval boolean, created_at timestamptz

Access · Staff read own items; supervisors read items requiring approval in their zone.

Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.

Section 05 · States

in_progress → submitted → approved | rejected

Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.

Section 06 · Where this breaks

What bites products like this one.

Poor cellular connectivity in deep warehouse racking drops count submissions mid-session.

Store all scan events and counts locally in IndexedDB/SQLite and queue background sync with idempotency keys.

Concurrent inventory adjustments during active counts cause false discrepancy spikes.

Capture expected_qty snapshot ID when the count session starts and evaluate variance against that exact snapshot.

Section 08 · Deliberately left out

What version one does not do.

  • ×Automated re-ordering triggers on failed counts — warehouse logic is complex, keep v1 strictly focused on accurate counting and approvals.
  • ×Offline camera-based barcode fallback when laser scanners fail — native device camera APIs add overhead, rely on standard mobile web barcode scanning first.

This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.

Still open

What we would ask before quoting.

  • What is the exact mathematical threshold formula that triggers a supervisor approval requirement?
  • How are expected quantities currently ingested into the system—via API webhook, CSV upload, or manual entry?

Half of this already exists

Fieldline

The field half of this is a solved problem: routes assigned, work captured with no signal and synced later, and an alert when nobody shows up.

It is one of our pre-built products: the code is handed over to you, adapted to your own wording and rules, and the rest of the specification above is built on top of it rather than from scratch.

Your product, not this one

Get this written for what you are actually building.

Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.

Next step

Find out if your idea fits in 10 working days.

Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.

NDA available on request