Data healthWorkspace safeguards and source freshness
Loading…Checking backup…Checking verification…
NotificationsNothing needs attention
Data
Daily operations
Today
What changed since last check
Recommended next moves
Decisions to make
Today’s work queue
Work the highest-cost deadlines first
Tasks resolve automatically when the source data clears.
ETA Port delay watch
ETA passed or was revised later before port arrival
Next 7 days
Arrivals that are not operationally ready
Automation & data blockers
Work the system cannot safely finish
Company news
News
One shared intelligence hub, ranked for each Dura-Pak role.
Not loaded yet
Daily logistics intelligencePorts, vessels, customs, Canadian rail and disruptions that can change container timing or freight cost.
Personalized rankingRole-aware briefing
Import Logistics priorities
The developments most likely to need a decision in this role
Coverage mix
Topics represented in the import logistics briefing
Short operational takeaways · every article links to its publisher
Source coverage
Loading product master…Reading the protected Zoho catalogue and ERP enrichment.
Loading Customers & Sales…Connecting customer priorities, pipeline, confirmed orders and service work.
Inbound inventory decisions
Inventory & customer impact
Protect customer commitments, identify low stock and see when incoming goods become available.
×
Inventory impact access is restricted
Your role does not include access to this protected operational data.
Risk mix
SKUs with open customer commitments
Customers needing protection
Ranked by affected order lines—not mixed product units
Inbound rescue timeline
Tracked arrivals carrying stock for exposed SKUs
Zoho item
Stock position
Inbound on tracked containers
Customer exposure
Decision
Stock risk mix
Count of SKUs by operational status
Demand increases
Material recent growth, ranked by inventory exposure
Shortest runway
Fastest-selling items with the fewest days left
Warehouse-ready calendar
Select a month to filter the worklist below
Stock worklist
Click any row for its forecast, planning basis and inbound purchase orders.
AI decision briefWaiting for model
Connect your selected AI model to generate a concise operational summary.
View full AI analysisNot generated
The AI layer compares the calculated sequence, stockout exposure, customer impact, yard cost and ERS trade-offs. The transparent score below remains the source of truth.
Advisory onlyAI cannot book ERS, order a pre-pull, update a container or write to Zoho Books.
Remaining priority queue
Ranked after the next best move
RankContainerRecommended actionRisk & costAction
ERS watchlist
Port arrivals that need continued stock and timing review
Edit the operational register directly. Every change saves automatically.
All statuses⌄
StatusMatch any selected status
All suppliers⌄
SupplierMatch any selected supplier
All alerts⌄
AlertMatch any selected alert
Columns in this view
Shown — top to bottom is left to right
Available
No container matches these filters.
↺Zoho change historyEvery purchase-order date update made or attempted by this appLoading…
Newest first · times shown in your local timezone
Open this section to load history.
Supplier documents
Shipment intake
Collect, review and approve shipment packages from email or manual upload.
imports@dura-pak.comChecking the document inbox…
Checking
↑
Upload a shipment packageAdd documents received outside the imports mailbox.
No documents selected
Original documents stay unchanged on this Mac. A commercial invoice is required for analysis and approval; packing lists and bills of lading are optional supporting evidence. For a new supplier item,
AI proposes a Zoho match; use Approve SKU when it is correct or Resolve to choose another item. Unit prices are
compared with the last approved price for the same supplier, Zoho item, currency and purchase unit. Any change
must be confirmed before approval. Approval creates one draft purchase order in Zoho Books; it is never opened,
approved or sent automatically.
CaptureReceive an invoice from the billing mailbox or a manual upload.
2
Extract & matchVendor, taxes, totals, expense accounts and inventory SKUs are proposed.
3
ReviewA person confirms accounting choices, price changes and duplicate checks.
4
Create draftZoho receives a draft bill—never an approved payment.
Review queue
Invoices needing a decision appear first.
Vendor / invoiceAmountNext actionReceivedStatus
✓
No bill selected
Select an invoice from the review queue, or upload a new bill to begin.
Containers
Agenda
Review upcoming milestones, readiness gaps and next actions in date order.
Show
Marketing
Find evidence-backed opportunities, build complete campaign packages and review every asset before anything leaves the ERP.
Checking workspaceApplying your ERP permissions
Marketing workspace will load when this page opens.
Market & competitor intelligence
Competitive intelligence
Find competitor products, sellers, channels, customers and market moves across the broader public web—then keep every claim tied to reviewable evidence.
Public sources onlyHuman-reviewed evidenceNo Zoho connection
000
Governed ERP intelligence
AI Control Center
Monitor the agents, tools and evidence used across Dura-Pak. Every answer follows the signed-in user’s ERP permissions.
AI controls will load when this page opens.
Reports
Management overview for inbound planning, exposure and risk.
Sync & history
Keep operational data current and see exactly what changed.
✓
Data is available
Current operational data remains available while sources refresh.
Zoho last syncedChecking…System of record
Automatic carriersChecking…Connection status
Changes today0ETA, status and milestone updates
Open containers covered—Carrier tracking available
System of record
Purchase orders, stock and customer demand
Primary data
Zoho Books & Analytics
Last sync—
Coverage—
Connection details and safety
The background refresh is read-only. Shipment Intake creates the initial draft PO once. Later carrier ETA changes are approved in Containers: ETA Port updates its matching custom field, while ETA Montreal updates both Delivery date and Order date on the exact linked Draft/Open PO. The app cannot open, approve, send or delete a PO.
Carrier connections
Automatic evidence from shipping and rail sources
Hapag-Lloyd
Options and connection details
CN Rail
Connection details
CPKC Rail
OAuth and activation details
No CPKC request is sent while IP whitelisting is pending.
COSCO
Connection details
Latest activity
Recent ETA, status and milestone changes
Activity
Every carrier sync and manual milestone edit, with its previous value.
Carrier coverage
See which open containers can be verified automatically or opened on a carrier site.
How tracking works by carrier
Hapag-Lloyd, CN and every configured ocean connector can be verified automatically. New MSC, Maersk, CMA CGM, HMM, Yang Ming, PIL, ZIM, OOCL and ONE connections remain disabled until their official credentials and endpoint are entered server-side. A carrier can always fall back to its official tracking page; no undocumented website scraping is used.
Workspace controls
Settings
Configure how documents, costs and tracker data work across the app.
✓
Changes save automaticallyApplied as soon as you make them
AI & documents
Choose the document reader. Page summaries use it only when you request an interpretation.
↗
Workflow defaultUsed by Shipment Intake and on-demand page interpretations. The Assistant has a separate model choice inside its chat window.
▤
Document support
Uploaded files stay on this Mac until you click Analyze documents. Only that shipment package is sent to the provider selected here.
Supplier document inbox
Read attachments sent to imports@dura-pak.com into Shipment intake.
Checking
AccessGmail read-onlyMessages and labels are never changed.
Last mailbox checkNot connectedNo document emails imported yet.
Google OAuth credentials are configured on the server; the mailbox token never enters the browser.
Yard costs
Set the defaults used to calculate pickup and storage charges.
!
Rates apply to historical containers too. Changing a rate recalculates every container; old charges are not frozen.
Logistics decision rules
Enter local quotes and timing assumptions used by the Montreal and ERS recommendations.
≋
Warehouse availabilityGoods become available 48 hours after ETA Montreal, matching Stock outlook.
✓
Decision support onlyNo carrier request, terminal release or Zoho write is made from these recommendations.
Leave a fee blank when the quote is unknown. The decision desk will show the missing assumption instead of treating the service as free.
Data & backups
Export, protect or restore the tracker data stored in this browser.
Containers on file
Original importCONTAINERS 2026 - Tracker v2_21.xlsx
↻
Automatic backupsDisk copies created by the local sync server
Reset to imported dataDiscard every edit and restore the original workbook data. Download a JSON backup first.
Dropdown lists
Manage the values available in Containers and report filters. Each list holds up to 20 values.
No dropdown list matches that search.
How to use
One row per import container, from the day it is booked in Asia to the day the
paperwork is finished. The app does two jobs: it records where every container is, and it tells you
what needs attention today.
BookedAsiaordered, not loaded
BoatOn the water~70 days
DischargedPort dischargecustoms starts
TrainCN / CP railfree time runs out here
YardTruckercosts money daily
ReceivedLachinedelivered
ClosedDonecleared and billed
Your 5-minute morning
Open Today. Check source freshness, then read the four action cards.
Work Today’s work queue top down, then clear the arrival-readiness and workflow blockers.
Demurrage risk or LFD ≤ 2 days are costing money today. Those first.
Click any number or issue to open Containers filtered to exactly those records.
Update what changed. Alerts and colours refresh as you type.
Finished container? Set Status = Closed. It leaves every open count.
Once a week, run a carrier sync and apply what looks right. Drift is real —
the first sync found eight containers marked "Boat" that had already landed, hiding a paperwork
backlog.
Add a container
+ New container puts an empty row at the top. Worth filling straight away:
Container – Line · Status · Supplier · Shipping Line · Vessel · ETD · ETA Port
A red container number means the check digit does not match — a typo or the wrong length. Everything
else can wait until you know it.
Shipment intake and price checks
If one supplier email contains documents for several shipments, Shipment intake proposes destinations before analysis. Existing shipment matches are clearly labelled and receive their follow-up documents; unmatched destinations create new shipment packages. Rename, merge or add new destinations, assign every attachment, and confirm. Known-container documents stay locked to their matched shipment, while other master documents can be shared. The original email bundle stays unchanged for audit.
Upload the supplier documents, analyze them, resolve every Zoho item match, then review the price state shown beside each line:
Matches last approved price — no action is needed.
First approved price — it becomes the baseline only after the review is approved.
Price increased or decreased — the previous price, date and percentage change are shown, and you must confirm that the change is expected.
Price history is never mixed across suppliers, currencies or purchase units. A price is remembered only from an approved shipment review, not when the PDF is first analyzed.
Today
Top to bottom, in the order the day is worked:
The summary and verification state — where everything is and whether carrier evidence is fresh.
Four action cards — Act now, Prepare this week, Costing now and Workflow blocked.
What changed — a compact handoff to the full sync history.
Today’s work queue — exact next actions. Mark an item contacted, snooze it, or open its source to resolve it. It closes automatically only when the underlying issue clears.
ETA Port delay watch — pre-port shipments whose ETA Port passed or was revised later, with the number of linked Zoho SKUs inside.
Next 7 days — arrival-readiness exceptions that should be prepared before they become urgent.
Automation & data blockers — customer stock exposure, intake reviews, Zoho draft gaps, missing ETA and missing LFD.
Today is a 30–60 second operational inbox. Forecasts, supplier exposure, pipeline analysis and historical performance live in Reports.
News
News is a shared company intelligence hub. Use Briefing for to rank the same trusted sources for Executive, Business Intelligence, Sales, Pricing/Sourcing, Purchasing, Import Logistics, Inventory, Warehouse, Fleet, Customer Service, Finance, Product/Quality/Compliance, Marketing or Administration/IT. The selection is remembered for each signed-in user; when no choice has been saved, the app uses the user’s ERP role where one is available.
High impact — strikes, shutdowns, tariffs, sanctions, severe disruption and other events that may require action now.
Watch — rate, capacity, schedule, weather and regulatory developments to compare with active shipments.
Briefing — relevant background that is useful but not yet an operational exception.
The local server reads logistics, business, customer-market, sourcing, finance, warehouse/fleet, compliance and technology feeds once per Toronto day and keeps a cached briefing. Refresh news forces an update; if the internet is unavailable, the last successful briefing remains visible and is marked stale. Publisher photos are shown when the feed provides one, with a topic-colour fallback otherwise. The page starts with 12 stories; use Show 12 more to continue without loading a wall of text. The role-specific “why it matters” note is a rule-based action lens, not an AI summary.
Containers — your own columns
Status, Supplier and Alert all accept multiple selections. The grid matches any selected value inside one filter—for example Discharged, Train or Yard—then combines different filters together to narrow the result. Each selected value also appears as a removable filter chip.
A red ETA Port cell means the date has passed while the tracker still shows the container before discharge. An amber cell means the current port ETA moved later than the earliest estimate retained in Activity. The highlight clears once the shipment progresses to Discharged or farther inland, so an old port date does not remain a false alarm.
The grid shows 18 of 26 columns. Press Columns… to change it:
Add pulls a column in, ✕ takes it out, ↑ ↓ move it left and right.
Name it — Warehouse, Customs, Yard — and Save view. It joins the
dropdown; switching is one click after that.
Default and All columns are built in. Reset to Default gets you back.
The row number and container number stay in every view — one opens the container's page, the other
is what the row is. Views travel with a Backup JSON.
Yard dates fill themselves in
The yard charge comes entirely from Yard In and Yard Out, so the dates follow the
status:
Status → Yard sets Yard In = today. The charge starts.
Status → Received or Closed sets Yard Out = today. The charge stops.
It only ever fills a blank. A date you typed is never overwritten, going backwards
never erases one, and a container that never saw a yard never gets a Yard Out. Picked up Friday,
updating Monday? Type over it. Every automatic fill is logged as auto and announced at the
time.
Container agenda & calendar
All containers, Agenda and Calendar are three views inside the Containers section.
They use the exact same records and dates, so they cannot drift apart.
Agenda is the operational view: every milestone shows the supplier, status, drayage,
paperwork readiness and current issues.
Calendar is the monthly planning view. Each chip is a container; click it to open the full record,
or click a date to open that day in Agenda.
The five cards at the top open the exact affected containers — upcoming arrivals, missing
drayage, paperwork gaps, LFD risk and missing Montreal ETAs.
Colour = kind of date: blue arriving Montreal,
purple arriving at port, red last free day,
slate sailing from Asia.
Search by container, supplier, status, carrier or forwarder. Milestone filters stay as you left them.
‹ › Today moves between months. A busy month day shows three chips and a +N more control.
A disabled layer marked none on file has no such date on an active container. The missing-ETA
worklist keeps unscheduled containers visible instead of letting them silently disappear.
Inventory & customer impact
This page joins Zoho’s stock, invoice history and open sales orders with the purchase-order items and ETA Montreal dates on active tracked containers.
Customer commitments shows who depends on the inbound stock and whether it arrives before the expected shipment date.
Critical — known stock will not cover a customer commitment due now, within seven days, already late, or missing a promised date.
High — a later customer commitment still lacks supply before its expected shipment date.
Watch — Zoho shows a committed shortage that cannot yet be allocated cleanly to the open order lines.
Covered by inbound — stock is short today, but outstanding quantities on tracked containers arrive before the commitment.
Use Review to see the exact sales orders, customers, inbound POs and containers. Each container page also shows the reverse view: the committed SKUs and customers that depend on that container.
Stock outlook is the replenishment worklist. Runway uses average invoiced demand from the latest 90 completed days when available; the 365-day average remains a fallback and long-term reference. Low stock means available stock is below the larger of the configured Zoho reorder level or expected demand during lead time.
Demand increases compares the latest 90 completed days with the prior 90 days and the equivalent 90-day period last year. The table keeps both averages visible. A 10% change becomes an alert only when it also passes minimum-volume and material-change checks; seasonal patterns, new demand and low-volume percentage swings are labelled separately. Customer attribution identifies new or re-engaged buyers, a broader customer base or the customers contributing most to growth when the source query is available.
Out of stock — available stock is zero or negative for an item with recent sales.
Stockout before arrival — stock is projected to run out before the tracked replenishment is warehouse-ready.
Low, no replenishment — runway is inside lead time and no active tracked container carries the SKU.
Covered by inbound — stock is below its planning threshold, but tracked supply becomes available before projected stockout.
Needs stock data — the active Zoho item has no inventory stock row, so it is not treated as zero stock.
Lead time uses the Zoho item value when configured and a visible 90-day planning default when missing. Warehouse-ready = ETA Montreal + 48 hours; because tracker ETAs are date-only, the page displays two calendar days after ETA Montreal.
For a PO split across several containers without line-level allocation, the page counts the PO quantity once and conservatively waits for the last tracked container ETA before treating the full quantity as available.
Decision desk AI briefing uses the ChatGPT or Claude model selected in Settings. It runs once for each changed decision snapshot, caches the result locally, and can be refreshed manually. The short summary highlights the immediate move; expand it for Montreal sequencing, ERS judgment and the facts to verify.
The AI receives only the compact decision context—not the full tracker or supplier purchase prices. It can explain trade-offs, but the transparent score remains the source of truth and no carrier or Zoho action is authorized.
Reports
Reports turns the container register and matched Zoho purchase orders into four decision views:
Management overview — 10-week inbound forecast, active PO exposure, shipment pipeline, aging, yard cost and data coverage.
Supply exposure — active PO value, currency exposure, top SKUs and supplier pipeline mix.
Performance — current ETA Port exceptions and affected SKUs, planned port-to-Montreal gaps, recorded receipt transitions and data completeness.
Costs & risk — known yard charges, current daily storage run rate, LFD risk and late aging.
Use ETA Montreal period, Supplier, Shipping line and Status together. Charts, KPI cards and matrix cells open the
exact affected records in Containers; Export filtered CSV downloads the current report set.
Currencies stay separate. Yard totals use the rates in Settings. Demurrage is shown as
exposure, not dollars, until a demurrage rate is actually configured. Historical receipts count only logged
Received or Closed status transitions; ETA Montreal is never used as an actual receipt date.
Carrier tracking
The only part that needs the sync server running:
node sync/server.mjs
Then use the app at localhost:8787. Credentials stay in
sync/.env on this Mac and never reach the browser.
Working Hapag-Lloyd
Sea leg, configured port discharge, rail to Montreal, truck gate-out. Carries no last free day.
Working CN rail
Montreal ramp arrival, customs holds, the pickup slot at the ramp, and — only here — the last free day. Boxes on CP or a trucker come back "not on CN", which is normal.
Waiting COSCO
Keys work; the app is not yet subscribed to their tracking product, so the button stays off.
Staged MSC, Maersk, CMA CGM, HMM, Yang Ming, PIL, ZIM, OOCL and ONE
Official API connectors are built and remain disabled until Dura-Pak receives the carrier-specific subscription, endpoint and credentials. DCSA carriers share the same review-first event mapping as Hapag-Lloyd.
Fallback Other lines
The app opens the carrier's official tracking page and copies the container number when the site cannot accept it in the URL.
Nothing is ever written without you. A sync gives you a review list — field by
field, what you have, what the carrier says, and why. Tick what you trust, press Apply
selected. And a carrier can never drag a row backwards: if it thinks a box is at sea and you have
it in the yard, yours wins.
What changed keeps every status, ETA, sailing date, vessel, last free day and yard date move
with its previous value — from syncs and from your own typing. That is what makes "what moved since
yesterday" answerable, and it exports to CSV for the broker.
Assistant chat — Claude or OpenAI
Open Ask Assistant at the bottom-right from any page. The chat stays over your current work, so you do not lose the container, report or intake screen underneath. Six presets cover the recurring jobs — morning briefing,
broker email for landed containers, forwarder chase for missing bills and pickup numbers, what is
late, what arrives next week, what is costing storage. The box takes anything else in plain
language.
It remembers the conversation. Say "now in English", "shorten that",
"what about the other two" — so you can work an email into shape.
Stop replaces Ask while an answer streams, and really cancels it.
New conversation starts clean. Choose Claude or ChatGPT and its model once under Settings; the same selection also reads Shipment intake documents.
Emails come out ready to send — French for the broker and trucker, English for suppliers and
carriers.
It answers only from your data and will name the missing field rather than invent a date.
Purchase prices are not sent unless you tick "include purchase costs."
Products go as SKU, name, quantity and unit — never rates. Each answer prints token usage and,
when pricing is configured, an estimated cost. Both API keys stay in
sync/.env and never reach this page.
A container's own page
Click any row number or container number. You get the whole story of that box: the journey leg
by leg with the gaps between, demurrage and yard charges in dollars, the paperwork,
every field editable in place, and the carrier's own event log at the bottom. Edits there are the
same data as the grid.
What is inside it comes from your purchase orders in Zoho Books, matched on the container
number written in the PO — every line with SKU, description and quantity.
Print unloading sheet gives the warehouse a one-page checklist: container,
SKUs, names, quantities, tick column. Deliberately no supplier, no PO reference, no prices —
the crew needs to know what to count, not what it cost.
Backups and healthy data
Everything you type is saved in this browser as you go. With the sync server running, every save is
also written to a file in sync/backups/ — one copy every two minutes at most,
never a duplicate of an unchanged tracker, the last 20 from today plus one a day for a month.
Lists & settings lists them with Restore this on each, so rolling back an hour is
two clicks.
Backup JSON in the header is for a copy somewhere else — OneDrive, a USB stick,
another machine. The automatic ones protect against the browser losing its storage; they do not
protect against this Mac.
Three habits that keep the numbers trustworthy:
Fill LFD from every arrival notice. Without it the app cannot warn you about demurrage —
the most expensive thing it could be doing for you. A CN sync fills it for boxes moving on CN.
Add dropdown values on the Lists tab, not free text in a row. Report filters and data-coverage measures depend on consistent values.
Update milestone statuses when they happen. Performance counts actual receipt history only when a Received or Closed transition is logged.
Lists & settings also holds the yard rates. Changing one recalculates every container,
past ones included.
Reference
Lookup tables — open one when you need it.
The Alert column — priority orderwhy a row shows one alert and not another
Each row shows only ONE alert: the highest-priority thing true about it. A container can be both
overdue and missing its bill — this order decides which you see.
DEMURRAGE RISK
Last free day has passed and the container is not received. You are paying per day. Act now.
LFD <=2 days
Last free day is today, tomorrow or the day after. Arrange pickup.
Customs pending
Received but customs is not marked cleared.
Bill and PU Pending
Neither the bill nor the pickup number is in hand.
Bill Pending
You have the pickup number but not the bill.
PU Pending
You have the bill but not the pickup number — chase the forwarder.
OVERDUE - chase
ETA Montreal has passed and the container is still not received.
Arriving <=7 days
ETA Montreal is within a week. Plan the drayage.
ETA missing
No ETA at all — neither ETA Port nor ETA Montreal.
OK
Nothing above applies. Also on Closed rows, and on Boat rows where paperwork is not due yet.
All 26 columnswhat each one means and which are calculated
Container CN/CP
Calculated. The 10-character rail format, built from Container – Line. Copy this into CN or CP tracking.
Container – Line
The full 11-character number, e.g. HAMU4114942 — what the shipping line site wants. Red when the ISO 6346 check digit fails.
Booking / BL
Booking or bill-of-lading number when it differs from the container number.
Status
Where the container is now. Drives most of the app.
Transport
Rail carrier or trucker inland: CN, CP or Racine.
Supplier
The Asian supplier. Each gets its own text colour.
PO / ERS
Your purchase order reference; ERS = early release applied for and paid.
ETD / ETA Port / ETA Montreal
Departure from origin, arrival at the port of discharge, and inland arrival in Montreal. ETA Montreal drives the arrival alerts and the weekly statistics.
Days to ETA
Calculated. Days until ETA Montreal; negative means passed. Blank once Received or Closed.
Alert
Calculated. One value per row.
Customs / Bill / PU#
Yes once cleared / received / in hand. Green when Yes, pink while missing — never pink on Boat or Closed rows.
LFD
Last free day at the terminal or ramp. The most valuable field here: it triggers the demurrage warnings. Empty means no warning is possible.
Days to LFD
Calculated. Negative means you are already paying demurrage.
Drayage / Forwarder / Shipping Line / Vessel
Who pulls it off the ramp, your forwarder, the ocean carrier, the vessel.
Yard In / Yard Out
Into the trucker's yard / left for Lachine. Fill Yard In and the cost counts; leave Yard Out blank while it sits.
Days in Yard · Yard Cost
Calculated. Yard In → Yard Out, or → today. Cost = pickup fee + (per-day rate × days).
Notes
Anything that fits nowhere else. Use it when you pick "Other" for a forwarder.
Status values in detailand why Train is red
Booked
Booked with the supplier, not yet loaded.
Boat
On the water. Nothing to do — which is why paperwork alerts stay silent on Boat rows.
Discharged
Landed at the port of discharge, waiting to go on rail.
Train
On rail to Montreal. Red on purpose: this is the leg where pickup numbers, telex release and last free days actually bite.
Yard
Off the ramp, in the trucker's yard. Costing money every day.
Received
Delivered to Lachine.
Closed
Received, cleared and billed. Leaves every open count. Untick "Hide Closed" to see them.
Currency is CAD throughout, except purchase orders, which
are in the PO's own currency (usually USD) and always labelled. Ported from
CONTAINERS 2026 - Tracker v2_21.xlsx — same columns, same alert priority, same colour
code.