Duende Builder feature guide

B2C Channel Model

How the scheduler prepares Amazon FBA and FBM planning demand without mixing queues or guessing product identity

Status: merged and published; Mike product-owner acceptance pending

Date: 2026-07-14

Baseline: RH Scheduler v9.346 local workbook import

Document owner: Kalen Howell Sr.

Audience: Colin, Mike, product reviewers, scheduler users, developers, and maintainers

One-Minute Explanation

Colin prepares consumer-channel demand for the scheduler from a local Excel workbook. Before F5, the generic importer treated an Amazon source SKU as an order identifier, relied on fuzzy product-name matching, and could send FBM rows down a non-B2C path. It also offered a broad B2C replacement action.

F5 adds a dedicated review for Amazon FBA and FBM planning demand. Before the queue changes, it checks the workbook contract, resolves the manufacturing product from Product_id, cross-checks the repeated product name and package size, verifies case arithmetic, and shows additions, exact duplicates, matching-identity replacements, and preserved work.

Authority boundary: F5 prepares local planning demand. It does not connect to Amazon, QuickBooks, or a marketplace; record accounting actuals; approve demand; select or release a plan; change optimizer priority policy; or accept Walmart and Website work.

Business Problem And Value

Before

The scheduler could accept a source row that looked plausible while changing its manufacturing meaning. In particular, an AMZ-HH66TF-* product code means Toluene Free HH-66, but the reviewed workbook repeated the standard-HH-66 name in another field. The old generic path trusted the name rather than the code. An FBM value also fell through the generic non-B2C channel handling.

After

  • Amazon FBA and FBM remain distinct B2C channels.
  • order_date is the requested demand week used for planning, not a shipment confirmation or accounting date.
  • Quantities are planning demand, not marketplace actuals or approved work.
  • AEF-031 maps Product_id to the canonical manufacturing product. A conflicting redundant adhesive field is correction-required.
  • channel + Product_id + order_date is used only for the reviewed weekly matrix. An ambiguous duplicate fails closed rather than being treated as a new order or a silent correction.
  • Existing B2B work and unmatched B2C work remain unchanged.

Headless-browser B2C Import Review showing two additions, two visible correction-required rows, and a preserved B2B record

What the screenshot proves: a real headless Chrome session used the visible file-input control with a fictional two-sheet workbook. The review showed two valid rows, the observed product-name mismatch, a held Walmart row, and the exact queue impact before confirmation. The subsequent proof confirmed the two valid records, preserved a B2B sentinel, and retained both B2C source identities after reload.

Who Uses It And What Changes

Actor Trigger Action Result
Colin, B2C queue owner A prepared B2C weekly-demand workbook is ready Upload, review corrections and impact, acknowledge, confirm Valid FBA/FBM planning demand enters the B2C queue only
Scheduler/planner B2C work is ready to plan Run the existing optimizer B2C work remains channel-aware and participates with B2B demand
Mike, product reviewer Engineering proof is ready Review the fictional workflow and record APPROVE, REVISE, or DEFER Product acceptance remains a separate fact from engineering merge

Feature Behavior And Exceptions

Activity view of the B2C demand review boundary

How to read this diagram: F5 validates and explains demand before it writes the local queue. Amazon FBA and FBM can continue to review. Walmart and Website stop at the held-channel boundary. A correction-required row remains visible but cannot become scheduled demand.

Source Contract

The reviewed Phase 1 workbook contains two named worksheets:

  1. Adhesive Reference, with canonical product names and valid package sizes.
  2. B2C Orders, with Product_id, customer, order_date, channel, adhesive, size_oz, Cases, Quanity Per Case, and quantity.

Each nonblank B2C row receives one outcome. F5 requires a recognized source SKU, a complete valid planning date, a supported channel, positive whole numbers, quantity = Cases × Quanity Per Case, size agreement, reference-sheet agreement, and exact product-name agreement with the SKU mapping.

Source condition Review result Queue result
Valid Amazon/FBA or FBM row Addition, exact duplicate, or matching-identity replacement Addition/replacement may occur only after confirmation; duplicate is a no-op
AMZ-HH66TF-* paired with standard HH-66 text Needs correction Excluded until source text agrees with canonical Toluene Free product
Invalid date, size, case arithmetic, or unknown SKU Needs correction Excluded
Walmart or Website Held channel Excluded from F5
Same channel + Product_id + order_date twice in source or current queue Ambiguous identity Excluded until resolved
Existing B2C row not named by a valid incoming identity Preserved Unchanged
Existing B2B row Protected Unchanged

Runtime And Technical Implementation

Sequence view of review, local persistence, and recovery

How to read this diagram: the adapter and review are read-only. The user must acknowledge corrections and confirm the displayed impact. Only then does the application write a prebuilt queue. It reads the local value back exactly; on a failed write it attempts to restore the previous local value and reports a recovery-integrity failure if that restoration cannot be verified.

The active implementation remains one browser HTML application. The F5 seams are deliberately narrow:

  • normalizeB2CImportChannel accepts only normalized Amazon/FBA and FBM channel values; it labels Walmart and Website as held.
  • tryParseB2CWorkbook detects the two named worksheets, validates every row, applies AEF-031, and returns a read-only review result.
  • prepareB2CImportReview compares valid incoming source identities to the existing local B2C queue and calculates add, duplicate, replacement, and preservation impact without mutation.
  • renderB2CImportReviewHtml escapes workbook-derived values before rendering them as review text.
  • commitB2CImportReview prebuilds the next queue, writes it, reads it back, attempts rollback on failure, and changes in-memory state only after a verified local write.

The queue record retains normalized channel, sourceIdentity, and sourceProductId for a local explanation after reload. It does not persist the source filename, raw rejected rows, or the full workbook.

Verification Evidence

  • Six focused F5 Node tests cover valid FBA/FBM rows, AEF-031 product-name disagreement, arithmetic and held-channel failures, malformed B2C contracts, duplicate/replacement/preservation semantics, B2B preservation, rollback, and hostile-text rendering.
  • The established F4 B2B exception-review suite still passes, showing the B2C-specific route did not alter the QuickBooks review contract.
  • The scheduler script was extracted and parsed with Node syntax validation.
  • Headless Google Chrome used an actual .xlsx file input on a local HTTP origin. It proved review-before-confirmation, correction visibility, B2B preservation, confirmed FBA/FBM import, and reload-safe source identity.
  • The fictional fixture contains no RH customers, employees, accounts, or marketplace records.

The compact engineering receipt records final commands, branch/merge evidence, and the exact browser result after implementation closeout.

Deliberate Non-Goals And Limits

  • No Walmart or Website intake policy.
  • No Amazon, QuickBooks, marketplace, or website API.
  • No cloud storage, authentication, multi-user audit trail, accounting transaction, actuals record, or forecast authority beyond local planning input.
  • No optimizer-priority rewrite, plan selection, approval, release, or production-execution authority.
  • No automatic correction of source-product disagreements.
  • No whole-B2C-horizon deletion. A future source template needs a durable order, shipment, batch, or revision identifier before broader reconciliation becomes safe.

Glossary And Source Trail

  • B2C: consumer-channel planning work in the local scheduler.
  • FBA: Amazon fulfillment by Amazon; normalized to amazon in this prototype and retains Amazon polybag behavior.
  • FBM: fulfillment by merchant; normalized to fbm and remains B2C work.
  • Planning demand: quantity and week used to prepare the optimizer. It is not an accounting actual or released production plan.
  • Source identity: channel + Product_id + order_date for the demonstrated weekly matrix only.
  • AEF-031: the accepted source-code-to-product mapping decision.

Primary sources are the F5 feature brief, F5 ExecPlan, AEF-031, the reviewed Amazon workbook assessment, the accepted v9.346 prototype, the F5 focused test, the fictional workbook fixture, and the F5 engineering receipt.