Skip to content

Retail

Retail software, and AI agents that never see a card number.

When orders still get re-keyed and nobody on your roadmap is free to fix it, our senior engineers join your team, wire the store, the warehouse and the ERP together, and build agents on that data with PCI scope and shopper consent designed in through to production.

  • Funko
  • AmTab
  • Databricks partner
  • Microsoft Solutions Partner

The problems

What we're brought in for

  • Orders re-keyed by hand

    An online order gets typed into the ERP by hand before the warehouse can even see it.

  • Stock counts that disagree

    The website, the replenishment report and the pick list each show a different count for the same shelf.

  • Demand outrunning the process

    Orders climb faster than a process on paper and spreadsheets can follow, which is where AmTab was when it called us.

  • A checkout nobody has audited

    Scripts pile up on the payment page over the years, and PCI DSS v4 now asks who authorised each one.

What we build

What we build in retail

Software and commerce4

  • Built for AmTab

    Store wired into the ERP

    AmTab's online store and CRM now feed Business Central, so an order placed online reaches the ERP that invoices it untouched.

    • No re-keying between store and ERP
    • Shorter order turnaround
    nopCommercePower AutomateDynamics 365
  • Built for A California wine retailer

    Commerce engine and ERP, end to end

    For a California wine retailer we built the commerce engine and the ERP behind it as one piece of work.

    • One team for the store and the ERP
  • How we'd build it

    B2B pricing and quote-to-order

    Customer-specific prices and entitlements, with quotes that become orders, on Shopify where it fits and custom where it strains.

    • Each buyer sees its own prices
    • Quotes become orders without a re-key
    ShopifyHeadless commerceBusiness Central
  • How we'd build it

    Payment page script inventory

    We'd list every script on the checkout, move card fields into the provider's hosted form and alert when the page changes.

    • Evidence for PCI DSS 6.4.3 and 11.6.1
    • Less of the site in card-data scope
    Hosted payment fieldsChange monitoring

ERP and Dynamics3

  • Built for Funko

    Warehouse system on Business Central

    Our engineers sat with Funko's warehouse and operations teams on site and extended the Business Central module they already had.

    • 2× operational efficiency
    • Built on the existing module
    Business CentralInsight WorksAzure Data Factory
  • Built for AmTab

    Paper order steps automated

    We worked through AmTab's manual order steps with its own people first, then automated them in Dynamics 365 and Power Automate.

    • Orders off paper and spreadsheets
    • Each step understood before it was automated
    Dynamics 365Power AutomateAzure SQL
  • How we'd build it

    Business Central reporting

    Built-in reports, Power BI or a lakehouse, chosen by where the data each question needs actually lives.

    • Reports that match the ERP
    • No lakehouse until a question needs one
    Business CentralPower BI

Data and AI on Databricks5

  • How we'd build it

    One stock number per location

    We'd land store, marketplace and ERP orders under Unity Catalog with one definition of available stock.

    • Website promise and pick list agree
    • Replenishment reads the same number
    DatabricksUnity CatalogLakeflow
  • How we'd build it

    Order promise dates you can defend

    One promise date per order line across channels, with every change logged with who moved it and why.

    • Records for the FTC order rule
    • Late lines found before the customer calls
    LakeflowDelta tables
  • How we'd build it

    Consent that reaches every export

    Consent stored on the customer record with its time and source, read by every pipeline that feeds marketing.

    • A GPC opt-out stops the next export
    • Ad pixels and loyalty exports included
    Unity CatalogDelta tables
  • How we'd build it

    Demand forecasts on order history

    Once order history is governed, we'd build forecasts on it with no second copy of the data to drift.

    • Forecasts read the governed tables
    • Model runs tracked in MLflow
    DatabricksMLflow
  • How we'd build it

    A where's-my-order assistant

    An assistant for the service team that answers order status from the same tables, within each person's access.

    • Answers from live order data
    • Respects who is asking
    Databricks AppsUnity Catalog

Reference architecture

How the data fits together in retail

Store, marketplace, ERP and warehouse data land once, consent travels with the customer, and every app and report reads the same stock.

1 · Store platform
and marketplaces

2 · Databricks lakehouse, Unity Catalog
one definition of stock and of a sale

1 · Business Central
and the warehouse system

1 · Marketing tools
and loyalty

3 · Customer record
with consent, time and source

4 · Order promises
and replenishment dashboards

4 · Demand forecasts

4 · Service assistant
and marketing exports

Every sales channel and the ERP land once under Unity Catalog, so the website's promise, the pick list and the forecast read the same stock.
  1. Step 1: Land each channel once

    The store platform, marketplaces, Business Central, the warehouse system and the marketing tools arrive as governed tables.

  2. Step 2: One definition of stock and of a sale

    Available stock per location and a sale per channel are defined once, so the website and the warehouse agree.

  3. Step 3: Consent on the customer record

    Each customer row carries when and where consent was given, and every export to marketing reads it.

  4. Step 4: Apps, AI and reports on top

    Order promises, replenishment dashboards, forecasts and the service assistant read the same tables.

Proof

Work we've shipped in retail

Compliance and governance

The rules we build around

  • PCI DSS v4 payment-page scripts

    Requirements 6.4.3 and 11.6.1 took effect on 31 March 2025, so each script on a payment page is authorised and watched for change.

    Source: PCI Security Standards Council

  • SAQ A merchants

    Merchants who qualify for SAQ A can rely on their payment provider's confirmation for those two requirements instead.

    Source: PCI Security Standards Council

  • CCPA and the Global Privacy Control

    Shoppers can opt out of the sale or sharing of their data, and California treats a GPC browser signal as a valid request.

    Source: California Attorney General

  • FTC Mail, Internet or Telephone Order Rule

    Ship within the time you state, or 30 days if you state none, and offer a delay or a refund when you can't.

    Source: 16 CFR 435.2

The longer version is under In depth.

How we engage

Ways to start

  • Two weeks, fixed fee

    AI Readiness Assessment

    Names the use case worth building first, the data and permissions it needs, and what it would cost to run for a month.

  • Two weeks, fixed fee

    Databricks Health Check

    Reads cost, job reliability and Unity Catalog coverage on the platform you already run, and ends in a ranked scorecard.

  • Six weeks, after discovery

    Lakehouse Launchpad

    A governed lakehouse from a standing start, with Unity Catalog in place before the first pipeline and dashboards for the people who asked for them.

  • For the length of the engagement

    Forward-deployed engineers

    Senior engineers in your workspace and your repository, as a team with a lead or as individuals under yours.

In depth

Retail in depth, with sources

Retail software is judged on throughput. An order arrives, and everything between it and a doorstep either runs itself or costs somebody an afternoon. Funko's warehouse system was built to cut operating expense, and AmTab came to us when pandemic demand outgrew an order process run on paper and spreadsheets.

AmTab's online orders now reach Business Central without anyone re-keying them. On your order path, the engineer who traces it with your warehouse lead is the one who'd write the fix.

Databricks for retail data

A retailer's stock, orders and customers usually live in three systems that each think they're the record: the store platform, the ERP and the marketing tools.

On Databricks we'd land all three under Unity Catalog and keep one definition of available stock per location, so the promise date on the website, the replenishment report and the warehouse's pick list read the same number.

A consent field on the customer record, saying when and where consent was given, belongs in the same model, so every export to marketing reads it. And once the order history is governed, a demand forecast or an assistant that answers "where's my order" for the service team can be built on it without a second copy of the data.

PCI DSS v4 and the payment page

PCI DSS v4 brought 64 new requirements, and 51 of them were future-dated until 31 March 2025, when they took effect. Two of those, 6.4.3 and 11.6.1, are aimed at e-commerce and at making sure the scripts running on a payment page are properly authorised.

The PCI Security Standards Council added them because card data was being stolen during online checkout. A checkout page tends to collect a tag manager and an analytics script over the years, each added by someone with a good reason.

We'd start with an inventory of every script that loads on the payment page and who asked for it, move the card fields into the payment provider's hosted form where the provider supports it, and alert when anything on the page changes.

Sources: PCI SSC on the requirements effective after 31 March 2025

Order promises across stores and marketplaces

Orders from the website, the stores and the marketplaces all draw on the same stock. The FTC's Mail, Internet, or Telephone Order Merchandise Rule expects a seller to ship within the time it states, or within 30 days if it states none, and to offer the buyer a choice between a delay and a refund when it can't.

A seller without records showing its systems ship on time is presumed to have had no reasonable basis for the promise. We'd hold one promise date per order line, computed from stock across every channel, and log each change to it with who moved it and why.

Sources: 16 CFR 435.2, the FTC order rule

State privacy laws and shopper data

California's CCPA lets a shopper opt out of the sale or sharing of their personal information, and the state Attorney General says a browser signal such as the Global Privacy Control must be honored by covered businesses as a valid request to stop.

Other states have since passed privacy laws of their own, each with its own thresholds. For a retailer the opt-out has to reach every system that shares customer data, the ad pixels and the loyalty export as much as the email list.

We'd model consent as a field on the customer record with a timestamp and a source, read it in every pipeline that feeds marketing, and test that a GPC signal on the website stops the next export.

Sources: California Attorney General on the CCPA

FAQ

Retail: questions we get asked

How would you govern an AI agent that works on orders and customers?

We'd design the rules in before the agent is built. An assistant that answers "where's my order" or proposes a refund works under its own identity and Unity Catalog permissions, never sees a card number, reads the consent field before anything goes to marketing, and has every action it proposes checked against policy and recorded, in testing as in production.

How a refund check works is in the Field Guide's chapter on governed actions, and it's the pattern our AI agent services build on.

Does this connect to our ERP?

Yes, and often we are the ones implementing it. The warehouse work at /case-studies/funko was built on Dynamics 365 Business Central with Azure Data Factory moving data around it, and the AmTab modernisation at /case-studies/amtab sat on Dynamics 365 and Power Automate.

Where the ERP already exists, integration with the system of record is the first design constraint rather than a later phase.

Do retailers need Databricks, or is the ERP enough?

If every question is answered by the ERP and the store platform, reports on those are enough. Once stock, orders and customers have to be joined across channels, or a forecast needs years of history, we'd put them on Databricks under one definition each.

Funko's warehouse system and AmTab's store-to-ERP integration both run on Business Central, so we know the records that would feed it.

Our growth is breaking the systems we have. Where do you start?

With what is actually running rather than what the documentation claims: which processes are manual, where throughput is lost, and which integrations are load bearing. AmTab came to us when pandemic demand outgrew an order process run on paper and spreadsheets, and the sequencing mattered more than the rewrite.

Does PCI DSS still apply to a retail site if the payment provider takes the card?

Yes, though the scope shrinks. A hosted payment form keeps the card number off your servers, and for merchants who qualify for SAQ A, the PCI Security Standards Council took requirements 6.4.3 and 11.6.1 on payment-page scripts out of scope; those merchants can rely on their payment provider's confirmation that the scripts are protected instead.

The rest of the standard still applies to a retail site, and the page that loads the form is still yours. We'd list the scripts that load next to the payment form and who added each, and ask marketing what each is for before removing any, since some of them carry order tracking.

Shopify, or custom commerce?

Shopify where the catalogue and the pricing fit it, because paying to rebuild what it already does well is money spent twice.

B2B is where it strains, once each customer has its own prices and entitlements and a quote has to turn into an order. We'd tell you which side of that line you're on before you commit, and the longer answer is at /software/ecommerce.

What does the FTC order rule mean for an online store's systems?

Ship within the time you state, or within 30 days if you state none, and when you can't, offer the buyer a choice between the delay and a refund.

A seller without records showing its systems ship on time is presumed to have had no reasonable basis for the promise. We'd hold one promise date per order line, computed from stock across every channel, and log each change to it, so the records exist before anyone asks for them.

Can you build demand forecasting for a retailer?

Yes, once the order history is governed. We'd land orders from every channel under one definition of a sale, build the forecast on those tables with the model and its runs tracked in MLflow, and feed it into the replenishment report the buyers already read, so the forecast and the ERP never argue about what was sold.

Talk to someone who has built this.

A technical conversation with a senior engineer who has shipped in retail, about what you're trying to build.