Skip to content
Happen Softwarewww.happen.software · sales@happen.software
All case studies

Case study · Retail & eCommerce · Platforms & portals

Product data from brands, checked before it's published

A retail data company prepares product content for e-commerce on behalf of its customers, using data that comes in from brands. We've built its platform since 2021, and it now manages more than 152,000 products. Products move through jobs, capture, and two QA stages, fields are configurable, and each customer receives its data through an API in the shape it asked for.

  • Since 2021 · 5 years
  • 152,000+

    Products managed on the platform for the client's customers

  • No code

    Needed to add a new kind of product data: fields are set up in the portal, not built by developers

  • 2 QA stages

    On every batch, after capture and after creative, before it goes to review

At a glance

Client
Retail data and insights company
Scale
152,000+ products managed on the platform
Engagement
Build and evolve, since 2021
Users
The client's capture, creative, QA, and admin teams
Data in
Product loadsheets, brand owner imports over an API, and product images by barcode
Data out
A client API shaped per customer by export templates, plus queued exports
Data model
19 field types, plus aggregate, inherited, and transform fields

01The situation

Our client prepares product data for e-commerce: names, descriptions, classifications, pack sizes, nutritional details, images, and whatever else each of its customers needs. Much of it starts with the brands that make the products, and it has to be right before it reaches a customer.

We built the platform its teams use to do that work. A customer's products arrive as a job, are checked against what's already known, captured, enriched, and passed through QA, then published through an API that returns each customer's own fields in its own shape. It is a large system, with most of its data model configurable rather than fixed in code.

  1. 01

    Each customer's data is different

    Each customer wants its own fields, classifications, and formats, so the data model can't be fixed in code.

  2. 02

    Brands' data has to be right

    Product data arrives from brands and customers, and mismatched codes, duplicates, or inconsistent names must be caught before the data is used.

  3. 03

    Many products, many hands

    Products pass through capture, creative, and checking teams, and bulk changes touch many products at once, so the work needs structure.

02What changes

  • New fieldsWithout it: A new field for a customer means a code change.With the platform: Fields set up in the portal from 19 types, with dictionaries, units of measure, and classifications.
  • Incoming dataWithout it: Problems in a loadsheet found partway through the work.With the platform: Duplicate GTINs and missing required cells caught when the loadsheet is loaded.
  • MatchingWithout it: Products checked against existing records by eye.With the platform: Each product matched to its baseline, with code mismatches and duplicates flagged as errors.
  • Work in progressWithout it: Progress tracked outside the system.With the platform: Batches move through capture, capture QA, creative, creative QA, and review.
  • Bulk changesWithout it: Large updates applied by hand.With the platform: Six kinds of bulk import queued, processed in the background, and recorded.
  • DeliveryWithout it: One data shape for every customer.With the platform: Each customer's systems read their products through an API shaped by their own export template.

03How it works

A product, from loadsheet to API

  1. 1

    Load

    A customer's products arrive on a loadsheet and become a job. Duplicate GTINs and missing required cells are flagged as it's loaded.

  2. 2

    Match

    Each product is matched to its baseline record. SKU mismatches and duplicates are errors to resolve, and brand or sub-brand names that differ from the standard are warnings.

  3. 3

    Capture

    Products are split into batches for capture. AI suggests descriptions, categories, features and benefits, and keywords, and reads text and nutritional tables from product images.

  4. 4

    Check

    Each batch passes capture QA, then creative and creative QA, before it goes to review.

  5. 5

    Create

    Reviewed batches wait for their products to be created, then the batch is completed and the job's progress moves on.

  6. 6

    Publish

    The customer's systems read the products through the client API, with each API key returning the fields and layout of that customer's export template.

04What we built

  • Jobs, batches & QA

    Loadsheets become jobs, jobs are split into batches, and batches move through capture, capture QA, creative, creative QA, and review, so everyone can see where each product stands.

  • Custom-field data model

    Fields are configured, not coded: 19 types from text, numbers, and dates to GTINs, SKUs, and taxonomy levels, owned by the customer, the brand owner, or the client.

  • Derived fields

    Aggregate fields combine several fields into one. Transform fields change case, trim or replace with patterns, or apply standard brand names. Inherited fields take their value from an ordered list of sources, chosen by filter rules.

  • Accuracy checks

    Loadsheet checks, baseline matching, code mismatch and duplicate errors, brand name warnings, and a daily check for possible duplicate products.

  • Template-driven client API

    Export templates define the fields and layout each customer receives. API keys can be tied to a template, and each key sees only the values it's allowed to.

  • Brand owner imports

    Brand owners send product data over their own API. It's validated, then queued for import against their products.

  • AI-assisted content

    AI drafts descriptions, categories, features and benefits, and keywords during capture, and reads text and nutritional tables from product images.

  • Queued bulk work

    Imports, exports, product updates, and image fetches run in background queues. Six import types, from linking GTINs to pack configuration set-up, are processed and recorded.

05What each team gets

  • Capture & creative teams

    • Batches of products ready to work on
    • AI-drafted descriptions and keywords to review
    • Text and nutritional tables read from images
  • QA & review

    • A QA stage after capture and after creative
    • Errors and warnings listed against each product
    • Value history and audits on product changes
  • Admin team

    • Fields, dictionaries, and templates set up in the portal
    • Bulk imports queued instead of done by hand
    • Sign-in with their company accounts
  • Customers & brand owners

    • Product data through an API in their own shape
    • API keys limited to their own data
    • An API for brand owners to send product data in

06How we delivered

  1. 2021

    Foundation

    Jobs, loadsheets, capture and QA stages from the first months, and the client API by July.

  2. 2022–2023

    Templates & brands

    Export templates to shape each customer's data, an API for brand owners, and AI-assisted content from 2023.

  3. 2024–2025

    Completeness

    Completion metrics per customer and an internal API that publishes the import schema brand owners build against.

  4. 2026

    Modernised

    An AI data assistant added for the client's teams.

07Built to last

  • Business rules written as plain functions over loaded data, so the API's rules on who sees what are tested without a database.
  • The client API returns a value only when the rules say a caller may see it, so anything unexpected stays hidden rather than shown.
  • Pattern-based transforms are guarded against invalid patterns and time limits, so one bad rule can't hold up the rest.
  • One definition of required fields drives both the import checks and the schema brand owners build against, so the two can't drift apart.
  • Bulk work runs in queues with a status per item and a recorded snapshot of what changed, and image fetches retry before giving up.
  • About 430 automated tests, and the roughly 300 that need no database run before every deployment to the development environment, stopping it if any fail.
  • Kept current with regular technology, library, and framework updates, along with ongoing performance and security improvements.
  • .NET
  • ASP.NET Core
  • SQL Server
  • Angular
  • Active Directory
  • GitHub Actions

Managing product data from many brands for many customers?

We'll talk through how configurable fields, checks, and QA stages could keep your data accurate, and how each customer could get it in the shape they need. Book a free 30-minute call with one of our engineers.

sales@happen.software · www.happen.software/contact

Keep reading

Related case studies

All case studies