One stock truth across Amazon, Flipkart and Shopify — a ledger-based inventory system
How Yukti AI replaced Excel with a real inventory and dispatch system for Backdrop India, a manufacturer selling 2,200+ product variants across three marketplaces — automated order-file ingestion, a mapping layer for messy marketplace SKUs, a stock model where every change is an auditable ledger entry, and one Ready to Dispatch queue.
Backdrop India manufactures photography backdrops and sells them on Amazon, Flipkart and Shopify with over 2,200 variants. Stock lived in Excel, each marketplace used different, often misspelled SKUs, and orders were reconciled by hand. Yukti AI built a system with one internal variant catalogue, a channel-SKU-map that translates each marketplace's messy identifiers, n8n workflows that parse the order files each channel exports, a combined dispatch queue, and a ledger-based stock model — stock is never edited directly; it is derived from every dispatch, return and adjustment.
Quick facts
| Client | Backdrop India |
|---|---|
| Industry | Manufacturing + e-commerce — photography backdrops |
| Scale | 2,200+ product variants (774 products), sold on Amazon, Flipkart and Shopify |
| Core challenge | Stock in Excel; three marketplaces with inconsistent, misspelled SKUs; orders reconciled by hand; no audit trail on stock |
| Solution | Custom ledger-based inventory & dispatch system with automated marketplace order ingestion |
| Key components | Internal variant catalogue, channel-SKU-map, per-marketplace n8n parsers, Ready to Dispatch queue, stock ledger, returns handling, hold / priority states, analytics |
| Stock model | Stock is never edited directly — every dispatch, return and adjustment is a ledger row; the count is derived |
| SKU handling | No assumed matches — every marketplace line resolved via the channel-SKU-map; unmatched lines go to a manual queue, never dropped |
| Stack | Static HTML / CSS / JS frontend, ApexCharts, Supabase (PostgreSQL, triggers), n8n |
| Result | One stock truth across three channels; orders ingested automatically; a fully auditable inventory; a single dispatch queue |
Selling the same product in three places, none of which agree
Backdrop India makes photography backdrops — fabric-printed, in many sizes and designs — 774 products and over 2,200 sellable variants. The same physical piece is listed on Amazon, on Flipkart and on the company's own Shopify store. Each of those platforms has its own idea of what that piece is called.
Amazon's SKU for a design might be spelled one way; Flipkart's another; Shopify might not carry a SKU at all, just a title. So when an order comes in from each channel, someone has to work out which of the 2,200+ internal variants it actually refers to, deduct that from a stock figure in a spreadsheet, and hope nothing was missed. Multiply that by three channels and hundreds of orders, and the spreadsheet is always slightly wrong — which means overselling, cancelled orders and marketplace penalties.
A multi-marketplace inventory system's whole job is to be one stock truth that every channel draws from — and to translate each channel's messy language into that one truth without a human doing the lookup every time.
What Excel could not do
- "Every marketplace calls the product something different." Misspellings, different formats per channel, and Shopify sometimes with no SKU at all.
- "Orders are matched to stock by hand." A person deciding which internal variant each marketplace line means, hundreds of times a day.
- "When the stock number is wrong, there's no way to know why." A spreadsheet cell has no history.
- "Held orders get lost." Orders with a payment or address problem sat in limbo with nothing to bring them back.
- "There's no combined view." "What do we need to pack today" meant checking three places.
How dispatch day changed
Before
- Stock figures maintained in Excel
- Marketplace SKUs matched to variants by a person
- Orders checked across three platforms separately
- Stock edited directly — no history when it went wrong
- Held orders had no path back into the flow
After
- One internal variant catalogue; one derived stock count
- Channel-SKU-map resolves every marketplace line automatically
- One Ready to Dispatch queue across all channels
- Every stock change is a ledger row — full audit trail
- Released held orders flagged priority, surface to the top
Why a custom build, not an off-the-shelf inventory app
There are multi-channel inventory tools. They tend to assume tidy, matching SKUs, charge per order or per channel, and give you their dashboard and their stock model. Backdrop's reality — hundreds of variants, three channels that each name products differently, Shopify orders with no SKU at all — is exactly where a generic tool needs constant manual correction. A custom build made the messy-SKU handling and the auditable ledger the core of the system, not a workaround.
| What a multi-marketplace manufacturer needs | Off-the-shelf inventory app | The system we built |
|---|---|---|
| Handle misspelled / missing marketplace SKUs | Assumes clean matches; mismatches error out | channel-SKU-map + manual queue, nothing dropped |
| Auditable history of every stock change | Usually a single editable number | Ledger-based — count is derived, never edited |
| Parse each marketplace's own order file | Generic import, breaks on format quirks | A dedicated n8n parser per channel |
| One dispatch queue across channels | Often per-channel views | One combined Ready to Dispatch list |
| Held-order recovery | Manual | Hold state + priority flag on release |
| Cost | Per order / per channel, monthly | One-time build, then a small annual charge |
Want a system like this for your business?Tell us how your business runs today and we’ll show you what one system would replace. Free workflow audit, reply the same day.
Get a free workflow auditFrom a marketplace file to an updated stock count
The components
The internal variant catalogue
One record per real sellable variant, with a consistent internal SKU format ([PREFIX]-[PRODUCT]-[SIZE], e.g. BI-RHA-5x6). This is the single catalogue every channel maps back to. Benefit: there is exactly one answer to "what is this product", regardless of which marketplace an order came from.
The channel-SKU-map
A mapping table from each marketplace's SKU or title to the internal variant. The system never assumes a direct match — every marketplace order line is resolved through this map. Anything that doesn't match goes to a manual-mapping queue, where a person maps it once and every future order for that SKU flows automatically. Benefit: no order is ever silently dropped because a marketplace spelled something wrong.
Per-marketplace order ingestion (n8n)
An n8n workflow per channel reads the order file that channel exports — Amazon and Flipkart as spreadsheets, Shopify as CSV — maps each line through the channel-SKU-map, and inserts the orders and order items into the database. Benefit: orders arrive in the system without anyone typing them in.
The Ready to Dispatch queue
One combined list of everything ready to pack, across all three channels. Orders with a payment or address problem sit in a hold state; when a held order is released, it is flagged priority so it surfaces to the top of the queue and triggers a notification. Benefit: the packing team works one list, and nothing that was held is forgotten.
The stock ledger
The heart of the system: stock is never changed directly. Every movement — a dispatch, a return, a manual adjustment, a production addition — is a row in the stock ledger, and the current inventory count is derived from that ledger. All stock-affecting writes go through a database function, never ad-hoc updates from the frontend or from n8n. Benefit: when a number looks wrong, the exact history of what changed it is right there — and it usually isn't wrong.
Dispatch & returns
Clicking dispatch on an order fires a database trigger that writes a dispatch entry to the ledger, updating the derived count. A received return writes a return entry the same way. Benefit: stock moves as a consequence of a real action, not a separate bookkeeping step.
Analytics
Reporting on stock levels, dispatch volume and channel performance, with ApexCharts. Benefit: the picture across all three marketplaces on one screen.
Where AI extends a multi-marketplace inventory system
Backdrop's build is automation-first — the marketplace ingestion and the trigger-driven ledger already remove most of the manual work. An AI layer, added on top, works from the same clean data:
- SKU-match suggestions — for the manual-mapping queue, the AI proposes the most likely internal variant for an unmatched marketplace SKU or title, so a person confirms rather than searches.
- Reorder / production alerts — which variants will run out based on the sales rate across all channels, before they do.
- Anomaly detection — a sudden spike in returns on one design, a channel whose order pattern changed, a variant selling far above its norm.
- Plain-language questions — "which designs are overstocked", "what's our dispatch backlog by channel", "which variants had the most returns last month".
What runs without anyone pressing a button
Marketplace order file → orders in the system
Dispatch click → auditable stock change
Held order released → jumps the queue
Unknown marketplace SKU → nothing lost
How it was built
Model the catalogue & the ledger
One internal variant catalogue with a consistent SKU format, and a stock-ledger schema with the rule that no stock value is ever written directly.
Wire the frontend to real data
The approved static frontend connected to Supabase — edited in place, not rebuilt — with all stock writes routed through a database function.
Build the SKU-map & ingestion
The channel-SKU-map, then an n8n parser per marketplace that reads the order file, maps each line, and inserts orders — with unmatched lines to a manual queue.
Dispatch, holds & triggers
The Ready to Dispatch queue, hold and priority states, and the database triggers that turn a dispatch or a return into a ledger entry.
Iterate
Three-plus rounds of refinement against real order files and real edge cases — the messy-SKU reality only fully shows itself in production data.
Want a system like this for your business?Tell us how your business runs today and we’ll show you what one system would replace. Free workflow audit, reply the same day.
Get a free workflow auditWhat changed
Factual — no invented numbers.
Technology & data architecture
- Static HTML / CSS / JavaScript frontend — lightweight, no build step, edited in place against the approved design.
- Supabase (PostgreSQL) — the database, with stock logic enforced by database functions and triggers so the frontend and n8n can never write stock directly.
- n8n — self-hosted, one order-file parser workflow per marketplace.
- ApexCharts — reporting; Lucide icons.
Data integrity rules
- Stock never changes directly — every change is a
stock_ledgerentry, and that ledger is the audit trail - All stock-affecting writes go through a database function, never ad-hoc updates
- Marketplace SKUs are never assumed to match — always resolved via the channel-SKU-map
- Unmatched order lines go to a manual queue, never silently dropped
- Backdrop owns all data; Supabase keys are environment variables, never committed
If you sell the same stock in several places, this is buildable for you
A ledger-based stock model, a marketplace-SKU mapping layer and automated order-file ingestion fit any manufacturer or brand selling across multiple channels:
- D2C brands on Amazon, Flipkart, Meesho, Myntra and their own store
- Manufacturers who wholesale and sell direct
- Businesses with many size / colour / design variants of the same product
- Any operation where "how much do we actually have" is currently a spreadsheet
Start with a free workflow audit. See Replace Excel & Tally, Custom ERP Software or AI Business Management System.
What Shopify catalogue storefront did Yukti AI build for Backdrop India?
Alongside the inventory system, Yukti AI built Backdrop India an app-style catalogue storefront that runs inside its existing Shopify store, live at backdropindia.in/pages/store-catalogue. On a phone it behaves like a mobile app; on a desktop it switches to a separate layout with a collections sidebar. It reads the product catalogue from a Google Sheet and runs its own Razorpay payment and Shiprocket shipping pipeline.
Backdrop India sells fabric-printed photography backdrops for studios, salons, boutiques, maternity and newborn shoots, weddings and festive decor, organised around Indian festivals and shoot types. Designs come in many printed sizes, such as 5W x 5H, 8W x 8H, 10W x 10H and 8W x 12H, plus 3-side and 5-side panel sets. The catalogue is built for that way of buying: pick a design, set a quantity for each size, check out in one pass. Yukti AI built this catalogue page, not the store: the main Shopify theme is another agency's work and was left untouched.
A catalogue website inside one Shopify page, with the theme left alone
The catalogue lives on its own Shopify page and draws its own app-style interface, so the theme, product pages and menu did not have to change. The final build's page template opts out of the store layout ({% layout none %}) and renders a full-screen app from one file with two layouts. On phones it is a stack of screens — collections, products, product detail, cart, invoice and checkout — with back buttons and a bottom tab bar for browsing, search and the cart. On desktop it becomes three panes: a collections sidebar, a product list with search and a size filter, and a right pane for the product, cart, invoice and delivery form.

Why a Google Sheet runs the catalogue
Backdrop India's master catalogue already lived in a Google Sheet, so the storefront uses that sheet as its CMS instead of moving thousands of rows into a new system. Google Apps Script serves it as a JSON feed, and the team keeps editing a spreadsheet it already knows. Each row is one design in one size, with its price, up to 8 image URLs and its tags. After an edit, the team can clear the script's cache from the Apps Script editor so the change shows straight away; otherwise the cached feed refreshes within 6 hours.
| Live catalogue feed, September 2026 | Scale |
|---|---|
| Variant rows (one per design and size) | 2,746 |
| Unique designs | About 957 |
| Size labels | 36, including panel sets and 110 / 250 GSM options |
| Product tags | 357 |
| Columns per row | 22 — category, product, size, price, 8 image slots, tags and channel identifiers |
| Images per product | Up to 8 |
Tag-based collections, search and a size filter
The sheet's own categories did not match the store's main menu, so instead of restructuring the client's sheet, the final build regroups products by their tags into the menu's 5 collections — Festival Themes, Studios, Boutique / Salon, 3D Theme and Wedding Backdrop — and 27 sub-collections, from Independence Day, Ganesh Chaturthi and Holi to New Born, Maternity, Mehandi and Haldi. Counts are worked out per collection with duplicates removed, and the Independence Day, Janmashtami, Ganesh Chaturthi and New Born sub-collections open with a banner. Search covers every product's name and description, and the size filter is built from every distinct size in the sheet, so a new size appears without a code change.
The storefront is Backdrop India's sales front end; the ledger-based inventory and dispatch system above is its operations back end. The catalogue sheet already carries internal, Amazon, Flipkart and Shopify identifiers for every variant — the same three channels the inventory system reconciles.
Want a system like this for your business?Tell us how your business runs today and we’ll show you what one system would replace. Free workflow audit, reply the same day.
Get a free workflow auditHow does a buyer go from one design in three sizes to a paid, shipped order?
On one screen, the buyer sets a quantity for each size of a design, and the cart applies quantity discounts and festival bulk bundles automatically. The buyer reviews a GST invoice, fills a delivery form that completes itself from the pincode, and pays through Razorpay. Google Apps Script then books a Shiprocket shipment, logs the order in a Google Sheet and hands back the AWB tracking number.
Several sizes of one design, and discounts nobody has to calculate
Each product has an image slider of up to 8 photos and a row for every size with its own −/+ quantity stepper, so a studio that needs one design in three sizes adds all three at once. A tiered quantity discount applies automatically, with a promo card showing how many more pieces unlock the next tier. On Festival Themes designs, bulk bundles apply per size, and pieces that do not fill a bundle fall back into the normal quantity discount. The cart is kept in the browser, so it survives a reload, and the order summary shows the MRP total, the saving, the base price and the 5% GST included in the price.
Invoice first, then an India-ready delivery form
Before paying, the buyer sees an invoice with the company's GSTIN, an invoice number and a line for each item — a proforma-style step that suits business buyers. A 6-digit pincode fills City/Area, District and State from the India Post pincode service, the phone field checks for a valid 10-digit Indian mobile number, and an optional GST number field lets studios, salons and decorators order under their own GSTIN.
Razorpay and Shiprocket through Google Apps Script
The catalogue does not use Shopify's checkout. An Apps Script web app creates the Razorpay order on the server, and Razorpay Checkout opens with the buyer's details already filled. Once payment succeeds, the same script books a prepaid Shiprocket shipment, collects the AWB number and appends the order to an auto-created 18-column Orders sheet. The success screen shows the payment ID, the AWB and a button that downloads an A4 invoice PDF.
Engineered for speed on a spreadsheet backend
Early versions read the sheet on every request, and Apps Script can be slow to wake. The final build works around both: a warm-up ping wakes the script first; the server caches the catalogue for 6 hours in 90 KB chunks, under Apps Script's 100 KB-per-key limit; each browser keeps a 20-minute copy, shows it instantly and refreshes silently. Skeleton loaders fill the gaps, thumbnails come from Shopify's CDN at 200 × 200, and the payment and PDF libraries load only when needed.
How long did the catalogue storefront take?
About 7 days of build work, delivered as dated versions between June and July 2026, each adding a layer: the desktop invoice view, the speed pass, deals and GST, festival bundles and banners. Work like this is quoted as a fixed price after a free workflow audit, and it is a one-time build. Yukti AI builds it from its Surat office — see Shopify store development in Surat and app and web app development. For other catalogue builds, read the La Yellow Berry case study, another catalogue app built inside a Shopify store, or the Shinelabb case study, a shareable client-catalogue system for a diamond wholesaler.
Questions marketplace sellers ask
Explore more
Replace Excel & Tally
Move the operation off spreadsheets to one system that stays correct.
Custom ERP Software
Inventory, orders, production and dispatch built around how your business actually runs.
Workflow Automation
n8n workflows that move data between marketplaces, your systems and your team.
Case study: Splenzo Polyfab
An AI-powered ERP for a woven-bag plant — stage-wise production, quality and inventory.
Textile & Apparel
Inventory, catalogue and marketplace operations for Surat's textile and apparel businesses.
Shopify Store Development
Shopify stores and catalogue apps with Razorpay, Shiprocket and WhatsApp, built from Surat.
Case study: La Yellow Berry
A bakery catalogue and WhatsApp ordering app built inside a Shopify store.
All case studies
Every Yukti AI build — jewellery, manufacturing, trading and services.
Summary
Yukti AI replaced Excel with a custom ledger-based inventory and dispatch system for Backdrop India, a photography-backdrop manufacturer selling over 2,200 product variants on Amazon, Flipkart and Shopify. The system centres on one internal variant catalogue with a consistent SKU format, a channel-SKU-map that resolves each marketplace's inconsistent and sometimes missing SKUs to internal variants (unmatched lines go to a manual queue, never dropped), and n8n workflows with a parser per marketplace that ingest the order files each channel exports. Orders flow into one combined Ready to Dispatch queue with hold and priority states; clicking dispatch fires a database trigger that writes to a stock ledger, from which the current inventory count is derived — stock is never edited directly, giving a full audit trail. Built on a static HTML/CSS/JS frontend, Supabase with database triggers, ApexCharts and n8n. Yukti AI builds comparable multi-marketplace inventory systems for D2C brands and manufacturers across India.
Yukti AI also built Backdrop India an app-style catalogue storefront inside its existing Shopify store, live at /pages/store-catalogue: a mobile screen stack with a bottom tab bar and a three-pane desktop layout, a Google Sheets catalogue of 2,746 variant rows served through Google Apps Script with server and browser caching, tag-based collections, search and a size filter, multi-size ordering with automatic quantity and festival bundle discounts, a GST invoice preview and PDF, pincode autofill, and Razorpay payments with Shiprocket shipments booked through Apps Script, in about 7 days of build work. Yukti AI did not build the store's main theme.
Diamond ERP case studies
For lot-wise diamond inventory, see the P. Hitesh & Co. diamond assorting ERP and the Arham Exports diamond trading ERP. Both pages list the features, benefits and AI options for diamond inventory management, with what is built and what can be added.