Inventory HQ — The Complete Manual

West Coast Select · Sundance Seafood  ·  https://wcs-inventory.pages.dev  ·  current to v7.6, September 2026
The one rule that makes everything work: if it moved, it's in the system.
Every case received, shipped, counted, made, or thrown away gets logged — under your own name. That's not bureaucracy; it's our food-safety traceability record, and it's what lets the next person trust the numbers.
1 · Getting in 2 · Finding your way around 3 · The Dashboard 4 · Products, Packaging & Fish 5 · Receiving stock 6 · Counting stock 7 · Orders 8 · Shipping & write-offs 9 · Production runs 10 · Purchasing 11 · Customers & leads 12 · Schedule & the Day sheet 13 · Trace & recall 14 · Activity & fixing mistakes 15 · Reports 16 · Import (bulk loading) 17 · Admin & Settings 18 · Backups & recovery 19 · When something goes wrong 20 · House rules

Buttons marked ADMIN are only visible to admins (Ryder). Everything else is for everyone STAFF.

1 · Getting in

  1. Open https://wcs-inventory.pages.dev on any computer or phone.
  2. First time? Tap Create an account under the sign-in button. Enter your name, your work email, and a password you choose (8+ characters). Confirm the email it sends you.
  3. You'll see a "waiting for approval" screen — that's normal. Ryder approves each account by hand (Admin → Team & access). The moment he does, the app opens by itself; nothing to refresh.
  4. Install it as a real app: on iPhone, Share → Add to Home Screen; on a computer, click the install icon in the address bar. It gets its own icon and window, and the app itself opens even with no signal.
  5. Forgot your password? Use the Forgot password? link on the sign-in screen — it emails you a reset link. No need to ask anyone.
No shared logins, ever. Everything you do is recorded under your name — that's how the traceability record stays honest.

2 · Finding your way around

The left sidebar (bottom bar on phones) is the whole map: Dashboard · Products · Packaging · Fish · Orders · Purchasing · Contacts · Schedule · Count · Trace · Activity · Reports · Import · Admin.

Search everything: ⌘K

Press ⌘K (or tap Search at the top of the sidebar) and type anything — a SKU, barcode, item name, lot number, customer, phone number, email, order number, invoice number, or supplier. Enter opens the top result right where it lives. It's the fastest way to move around the entire system.

Scanning barcodes

The 📷 Scan button (Products, Count, Trace) uses your phone camera. It reads product UPCs and our own printed labels (lot barcodes and shelf labels). A USB scanner at a desk works too — it just types into whatever search box is focused.

3 · The Dashboard

The morning glance, top to bottom:

4 · Products, Packaging & Fish (the catalog)

Three sections, one idea: every item we handle, each with SKU, UPC, size, case pack, category, and an ABC class (A = the items that drive our volume).

Reading the table

  1. Filter by category, location, or status (Low & out · Expiring soon · On hold · Not counted), or just type in the search box — it also matches lot numbers.
  2. Click any row to open its lots: quantity, location, pack date, best-by, and per-lot buttons:
    • 🏷 — reprint the case label (item, lot barcode, dates) if one got damaged or a case was repacked.
    • Hold — quarantine the lot. Held stock cannot ship. Ask Ryder before releasing.
    • Move — transfer some or all of it to another location.
    • Ship / remove — take stock out (see §8).
    • Correct ADMIN — fix lot details (never quantities — quantities change only by count or movement).

Adding an item ADMIN

  1. + Item → name, SKU (the suggest one link proposes the next free number), UPC if it has one, category, size, case pack.
  2. Shelf life in days — set it once and receiving fills in best-by dates automatically from the pack date.
  3. Allergens — tick what it contains. This powers the allergen matrix and the production-run warnings.
  4. Entering a whole shelf? Save & add another keeps the form open, keeping section and category.
  5. 📋 Recipe defines what one unit consumes (for smoked/processed items) — production runs then pre-fill themselves.

5 · Receiving stock

When a delivery arrives, book it the same day. + Receive on any product page:

  1. Pick the location it's going into and enter who it came from — the supplier name is the one-step-back traceability record. Set the pack date if it isn't today.
  2. One line per item: start typing a SKU or name and pick from the matches. Enter the lot number (from the case), the quantity, and the best-by (fills itself when the item has a shelf life set).
  3. Press Enter to jump to the next line — it works like a spreadsheet.
  4. Something on the truck that isn't in the system? + New item adds it without losing the sheet.
  5. Or let the scanner do the typing: 📷 Scan cases keeps the camera running — every case you scan adds 1 to that item's line (the line appears on the first scan). Scan the whole truck, close the camera, fill in lots and dates, done.
  6. Any raw fish on the sheet makes the harvest fields appear: species, harvest area, vessel, landing date. Fill them — finished product inherits them, so a case of lox traces back to the boat.
  7. 🏷 Labels prints a case label per line — tape one to each case.
  8. Receive all books everything. Lines that share a lot merge automatically, and a best-by earlier than the pack date is caught before it saves.
Ordered it first? Go to Purchasing → Receive against this PO instead — the sheet pre-fills with what's outstanding and checks the order off as it arrives.
Lot numbers are not optional. No lot, no entry. If the case truly has no lot, the date-based one the system suggests is fine — what matters is that the number on the record matches the number on the case.

6 · Counting stock

The screen that keeps the system true. It opens on Due for count — A items every 30 days, B every 60, C every 120 (Ryder can tune this in Settings). The scope menu also has Never counted — that's the walk list for a first stocktake — and per-class views.

On a phone (the freezer walk)

  1. Pick the location you're standing in.
  2. Tap 📷 Scan, point at the case barcode — the item card appears.
  3. Type what you actually count. Check the lot number (pre-filled) matches the case. Add the best-by if it's on the case.
  4. Save count → the next item appears. Skip → passes without saving.
  5. Wifi died in the freezer? Keep counting. Entries save on the device and upload themselves the moment you're back in range.

At a desk

Switch to 🖥 Desk mode: a fast table — type the count, Enter, next row. Or print Count sheets from Reports, walk with a clipboard, and enter afterwards.

Found something on the shelf that isn't in the system? + New item at the top of Count adds it and drops you straight into counting it. Item has no UPC? Print Shelf & bin labels from Reports — its SKU becomes a scannable barcode.

Every count is logged — even ones that match the system exactly. Those "boring" matches are what prove our accuracy on the Count variance report.

7 · Orders (the desk you run)

Every order in one list — wholesale orders you enter, plus Shopify web orders automatically. Search by order #, customer, invoice # or SKU.

Taking an order

  1. + Order → customer (type-ahead), ship-by date, then lines.
  2. Beside each line you see what's really available: on hand minus what's already promised to other open orders — the same case can't be promised twice. Anything you can't cover flags red before you commit.

Shipping it

  1. Open the order → Ship this order. The ship sheet pre-fills with what's still owed.
  2. Print the pick list — it names the exact lots to pull (oldest best-by first, grouped by location so you walk the building once).
  3. Pull the stock, add carrier & tracking, Ship all. Print the packing slip for the box.
  4. Partial shipments are fine — the order tracks shipped-vs-ordered per line until it's complete.

Getting paid

Once shipped: Mark invoiced (enter the Sage invoice #) → Mark paid. Dollar amounts stay in Sage; this tracks the paperwork state. The Invoice aging panel shows every unpaid invoice by days outstanding, worst first — and 30-day-old ones hit the alerts.

A Confirmation printout is available from any order to send the customer, and ↻ Reorder — same as last time on a customer's page starts a repeat order in one click.

8 · Shipping without an order, and write-offs

→ Ship order on a product page is the same sheet, just not linked to a promised order: destination, items, quantities. Stock deducts oldest best-by first; held stock is never touched. The destination becomes a customer record automatically — leads and past customers are even promoted to Current when they buy.

Choosing "Waste, damage or loss" instead asks what happened: damaged · expired · destroyed after hold · recall · sample/donation · production loss · missing · correction. Pick honestly — that's what makes the shrink report worth reading.

9 · Production runs (⚗ on Products)

  1. Pick the finished item and how much you made. If it has a recipe, the input lines pre-fill with the oldest usable lots and the required quantities; the yield % shows live.
  2. Adjust to what you actually consumed (real lots, real weights).
  3. If the inputs carry an allergen the finished item doesn't declare, you get a red warning before the run records — that's how undeclared-allergen recalls start, so fix the declaration or the recipe.
  4. Give the output a new lot number (pre-filled RUN-YYMMDD), print its label, save. The output lot inherits the harvest details of the fish that went in.

10 · Purchasing

  1. + Purchase order ADMIN → supplier (remembered for next time), expected date, lines.
  2. Or let the math start it: ✨ Suggest order drafts a PO from the reorder-point engine — every item below its order-up-to level, quantities rounded to whole cases, biggest need first. Trim to what one supplier carries, then save.
  3. 🖨 Print PO on any order produces the document to email or hand the supplier — PO number, ship-to, expected date, lines with sizes and case counts. Quantities only, never prices.
  4. Open POs show received-vs-ordered per line and flag themselves Overdue past the expected date.
  5. When the truck arrives: Receive against this PO — pre-filled, checked off automatically.

11 · Customers & leads (Contacts)

One book, four views — the dropdown switches between Current customers · Potential new leads · Past customers · Suppliers; the segment filter narrows any of them. Big lists page with Show 60 more, and search matches names, addresses, people, and emails.

Moving people between stages

Every row has one-click buttons: a lead becomes a customer with ✓ Customer, a quiet customer moves → Past, a past customer worth re-working goes back to → Lead. Ship to anyone or enter their order and they're promoted to Current automatically.

Follow-ups — how nobody falls through

  1. Give anyone a next follow-up date and a note on what to do (Edit → Next follow-up).
  2. Due and overdue ones surface at the top of Contacts, on the Dashboard, in the Schedule, and in Ryder's Monday brief.
  3. Done logs it and clears it. +1wk pushes it a week.

The touch log

On any customer's page, log every call, email, visit, quote or catalog send in two taps — dated, under your name. That history is what lets anyone pick up a conversation where the last person left off. Files (price agreements, signed forms, CFIA docs) attach right to the customer.

The customer page

Click any name for the full picture: contact details (tap-to-call / tap-to-email), what they order, order history with invoice states, upcoming events, ↻ Reorder, and 🖨 Shipment history — every line ever sent to them with lot numbers, the exact document you want open when a customer calls about a product.

Admin tools ADMIN

⚑ Tag shown sets segment and/or zone on everyone matching the current view + search in one pass. Export CSV downloads whatever view you're looking at. The duplicate-finder with one-click merge lives under Admin.

Addresses matter — a current customer without one is flagged, because the address is what a CFIA recall record requires.

12 · Schedule & the Day sheet

Deliveries in (from POs), deliveries out (from order ship-dates) and customer follow-ups appear automatically; add production days, meetings and reminders with + Event. Grouped Overdue / Today / Next 7 days / Later.

🖨 Day sheet prints the warehouse morning on one page: overdue first, today's schedule, the cycle counts due (with blank columns to write on), and everything low or out. Print it with the coffee.

13 · Trace & recall

Type a lot number, SKU, product name, harvest area, vessel, species or supplier — or scan a label. For every matching lot you get:

Hold all N quarantines every matching lot at once — that's the button for an area closure or a supplier problem. Print recall sheet produces the CFIA one-step-back / one-step-forward record for a single lot.

If a lot says ON HOLD, it does not ship. No exceptions. Ask Ryder.

14 · Activity & fixing mistakes

The complete audit log — every movement, filterable by type and person, searchable, exportable to CSV. Full history is kept (up to the most recent 30,000 movements in view).

Entered something wrong? ADMIN

Every entry has an undo button. It records a compensating movement and puts the lot back where it was — nothing is ever deleted, so the audit trail stays honest. If the system can't safely match the entry to a live lot, it will tell you to fix the quantity with a count instead.

What went wrongThe fix
Wrong quantity received / shipped / countedActivity → find the entry → , then redo it right. Or just count the item — a count always sets the truth.
Wrong lot number or date on a lotProducts → open the lot → Correct ADMIN (details only, never quantities).
Stock in the wrong locationOpen the lot → Move.
Shipped to the wrong name the shipment, ship again to the right customer.

15 · Reports (print-ready documents)

ReportUse it when…
Stock summaryyou want everything on hand, by section, on paper.
Lot traceabilityan auditor wants the full lot history, including retired items.
Count sheetswalking the floor with a clipboard instead of a phone.
Count varianceafter a stocktake — counted vs what the system believed, accuracy %, item by item.
Shelf & bin labelsitems need scannable barcodes (SKU becomes Code 128).
Reorder points & safety stockdeciding what to buy — the math behind ✨ Suggest order, with confidence notes.
Allergen matrixreviewing declarations; flags recipe carry-over conflicts.
Cold chain logan inspector asks for temperature records.
Turns, cover & ageingfinding dead stock and lots nearing best-by.
Waste & shrinkseeing what we're losing and why, by reason code.
ABC & cycle count planunderstanding which items drive volume and the count rhythm.
Pipeline & CRM activitythe sales side — leads, conversions, follow-ups, team touches.
Full backupdownloading a complete JSON snapshot (see §18).
Sage exporthanding the accountant clean quantities, with cases and lots.

16 · Import (bulk loading) ADMIN

  1. Paste a CSV into Import (header row + data). Sage export column names are recognized automatically — see HOW-TO-load-your-Sage-data in this Drive folder, and the WCS-Opening-Stock-Template.csv.
  2. Check shows exactly what will happen — how many rows update existing items, create new ones, and carry opening quantities — before anything is written.
  3. A row with a quantity books the stock in as a real lot with a count movement. Location names match loosely; lot defaults to a dated COUNT- number.

17 · Admin & Settings ADMIN

18 · Backups & recovery

19 · When something goes wrong

SymptomWhat to do
"Waiting for approval" after signing upNormal — Ryder approves accounts by hand. The screen opens by itself when he does.
Forgot passwordForgot password? on the sign-in screen → email link → new password.
"Session expired — sign in again"Just sign back in. Nothing was lost.
No wifi in the freezerKeep counting — entries upload themselves when you're back in range. Receiving and shipping need a connection; do those at the desk.
Camera won't scanMake sure you allowed camera access; type the UPC or SKU into search instead — same result.
Entered something wrongSee §14 — the undo, or a fresh count.
Numbers look wrong everywhereAdmin → run the Self-test. All green = the math is fine, so an entry is wrong — check Activity for the odd movement, or count the item.
A lot shows ON HOLDIt doesn't ship. Ask Ryder — releasing a hold is a decision, not a click.
Something looks brokenTell Ryder what you were doing and what you saw. The app also logs errors on its own, so it's usually already on the list.

20 · House rules — the habits that keep it perfect

  1. Receive the day it arrives.
  2. Ship through the system, never around it.
  3. Count what's due each week — minutes, not days.
  4. Lot numbers, always.
  5. Holds don't ship.
  6. Log temperatures daily.
  7. Log every customer touch — two taps now saves a lost conversation later.
  8. Back up weekly — the app reminds you.

Inventory HQ is built and maintained in-house for West Coast Select / Sundance Seafood. Questions, ideas, or something you wish it did? Tell Ryder — it changes fast.
The one-page How Our Day Works is the crew-room version of this manual. Companion guide: Items, UPCs, Scanning & Stock — Step by Step. Also in the office Drive folder: Team-Welcome-Note (the 2-minute version), WCS-Cheat-Sheet, HOW-TO-load-your-Sage-data, RESTORE-RUNBOOK, DEVELOPER-HANDOFF.