Product truth first
Master product identity is created before shop listing, customer demand, or inventory claims.
Export and import shape for the polymer-to-button seed journey. This is evidence-safe demo data, not live finance, inventory, invoice, ledger, wallet, or settlement truth.
Current chain position
Seed groups
9
source, factory, trade, shop, demand, logistics, payment evidence
Import steps
15
ordered to protect dependencies
Hard locks
10
no runtime finance or stock mutation
Idempotency
100%
every group has stable seed keys
Check scope, schema, dependencies, idempotency, permissions, and mutation locks.
Human review of clean, warning, rejected, and blocked dry-run packets.
Approval for importer design discovery, not runtime build or writes.
Demo personas, permissions, dashboards, workbenches, and functional-lite scopes.
Why this exists
Founder, QA, and demo teams need one repeatable seed pack that proves the whole FAEDA chain. This page defines the order, records, relationships, API targets, and blocks before a real importer is coded.
Import rule
The importer must validate tenant scope, idempotency, permissions, dependency order, and mutation locks before writing any seed records.
Master product identity is created before shop listing, customer demand, or inventory claims.
Supplier material offer connects to manufacturer need through RFQ and quote evidence.
Manufacturer capacity feeds wholesaler offer, then retailer listing, then customer demand.
Upaisa/SBP partner evidence is represented, but payout, wallet, and ledger mutation stay blocked.
Creates
masterProduct:button-20l-pearl-white
Depends on
none
Blocked
shop stock, customer order, payment
Creates
supplierProfile:karachi-polymer-source
Depends on
tenant demo scope
Blocked
supplier payout, payable, PO
Creates
materialOffer:pp-resin-pearl-pigment
Depends on
supplier profile
Blocked
inventory stock, dispatch commitment
Creates
manufacturerProfile:faisalabad-button-works
Depends on
tenant demo scope
Blocked
BOM runtime, HR payroll, machine telemetry
Creates
materialNeed:button-resin-pigment-need
Depends on
manufacturer profile and master product
Blocked
purchase order, payment, inventory
Creates
rfq:resin-pigment-rfq-demo
Depends on
material need
Blocked
supplier commitment, PO issue
Creates
quote:karachi-polymer-quote-demo
Depends on
RFQ and material offer
Blocked
payable, GRN, settlement
Creates
manufacturerProduct:20l-button-capacity
Depends on
manufacturer profile and master product
Blocked
finished-goods stock posting
Creates
wholesalerProfile:lahore-accessories-wholesale
Depends on
tenant demo scope
Blocked
wholesale stock register
Creates
bulkOffer:button-carton-allocation
Depends on
manufacturer product capacity
Blocked
retailer inventory posting
Creates
shopProfile:chiniot-stitching-supplies
Depends on
tenant demo scope
Blocked
hidden supplier cost exposure
Creates
shopListing:20l-button-pack
Depends on
master product, wholesale offer, shop profile
Blocked
final order, payment, settlement
Creates
demandDraft:school-uniform-button-need
Depends on
shop listing draft
Blocked
payment intent, order confirmation
Creates
carrierOffer:chiniot-shop-to-home-demo
Depends on
customer demand draft
Blocked
delivery completion, COD settlement
Creates
paymentEvidenceDraft:upaisa-demo-callback-slot
Depends on
demand draft and admin demo scope
Blocked
automatic payout, fake wallet balance, ledger posting
Universal Product Data Bank
seed:product:button-20l-pearl-white
Records
{
"masterProductId": "mp_button_20l_pearl_white",
"category": "Garment accessories / Buttons",
"productName": "20L pearl white four-hole button",
"attributes": [
"20L",
"four-hole",
"pearl white",
"gloss finish"
]
}Locked
Supplier
seed:supplier:karachi-polymer-source
Records
{
"supplierProfileId": "sup_karachi_polymer_source",
"materialOfferId": "mat_pp_resin_pearl_pigment",
"evidence": [
"COA",
"origin invoice copy",
"packing photo",
"quote terms"
],
"quoteStatus": "draft_response"
}Locked
Manufacturer
seed:manufacturer:faisalabad-button-works
Records
{
"manufacturerProfileId": "mfg_faisalabad_button_works",
"neededMaterials": [
"PP/polyester resin",
"pearl pigment",
"packing bags"
],
"declaredCapacity": "200000 pcs/month",
"upgradeReadiness": "Business Pro ERP later"
}Locked
Wholesaler
seed:wholesaler:lahore-accessories
Records
{
"wholesalerProfileId": "wh_lahore_accessories",
"offerId": "bulk_button_carton_demo",
"allocationCandidate": "30 cartons to Chiniot Stitching Supplies",
"stockConfidence": "candidate_only"
}Locked
Retailer
seed:retailer:chiniot-stitching-supplies
Records
{
"shopProfileId": "shop_chiniot_stitching_supplies",
"listingId": "listing_20l_button_pack",
"customerPriceMode": "visible_local_price",
"sourceLink": "bulk_button_carton_demo"
}Locked
Customer
seed:customer:school-uniform-family-basket
Records
{
"demandDraftId": "dd_school_uniform_buttons",
"requestedQuantity": "2 packs / 24 pcs",
"budgetCap": "PKR 350",
"substitutionRule": "same size, similar white shade only"
}Locked
Rider / Logistics
seed:rider:chiniot-delivery-proof
Records
{
"carrierOfferId": "carrier_chiniot_shop_to_home",
"pickupWindow": "same-day evening",
"proofMode": "OTP/photo placeholder",
"movementStatus": "offer_only"
}Locked
Payment Ops
seed:payment-evidence:upaisa-demo-slot
Records
{
"paymentDraftId": "paydraft_upaisa_demo_button",
"partner": "Upaisa / licensed SBP partner rail",
"callbackStatus": "placeholder_only",
"reconciliationStatus": "not_executed"
}Locked
Founder / Admin Ops
seed:governance:button-demo-qa
Records
{
"auditPacketId": "audit_seed_button_demo",
"gateMatrix": "phase-153-compatible",
"qaPurpose": "demo, smoke test, route check",
"founderLock": "no unapproved runtime mutation"
}Locked
defines product identity for
masterProduct -> manufacturerProduct
can satisfy
supplierMaterialOffer -> manufacturerMaterialNeed
creates procurement inquiry for
manufacturerMaterialNeed -> rawMaterialRfq
answers
supplierQuote -> rawMaterialRfq
feeds output candidate into
manufacturerProduct -> wholesaleBulkOffer
source-links local listing
wholesaleBulkOffer -> shopListingDraft
receives demand from
shopListingDraft -> customerDemandDraft
can request movement through
customerDemandDraft -> carrierOffer
may later create licensed partner evidence through
customerDemandDraft -> paymentEvidenceDraft
Export envelope
{
"schemaVersion": "faeda.demoSeedPack.v1",
"packId": "FAEDA-SEED-PACK-001",
"generatedFor": "demo-dry-run",
"tenantScope": "demo_only",
"scenario": "polymer_source_to_button_demand",
"entities": {
"masterProduct": "mp_button_20l_pearl_white",
"supplierProfile": "sup_karachi_polymer_source",
"manufacturerProfile": "mfg_faisalabad_button_works",
"wholesalerProfile": "wh_lahore_accessories",
"retailerShop": "shop_chiniot_stitching_supplies",
"customerDemandDraft": "dd_school_uniform_buttons",
"carrierOffer": "carrier_chiniot_shop_to_home",
"partnerPaymentEvidenceDraft": "paydraft_upaisa_demo_button"
},
"relationships": [
{
"from": "masterProduct",
"to": "manufacturerProduct",
"relation": "defines product identity for"
},
{
"from": "supplierMaterialOffer",
"to": "manufacturerMaterialNeed",
"relation": "can satisfy"
},
{
"from": "manufacturerMaterialNeed",
"to": "rawMaterialRfq",
"relation": "creates procurement inquiry for"
},
{
"from": "supplierQuote",
"to": "rawMaterialRfq",
"relation": "answers"
},
{
"from": "manufacturerProduct",
"to": "wholesaleBulkOffer",
"relation": "feeds output candidate into"
},
{
"from": "wholesaleBulkOffer",
"to": "shopListingDraft",
"relation": "source-links local listing"
},
{
"from": "shopListingDraft",
"to": "customerDemandDraft",
"relation": "receives demand from"
},
{
"from": "customerDemandDraft",
"to": "carrierOffer",
"relation": "can request movement through"
},
{
"from": "customerDemandDraft",
"to": "paymentEvidenceDraft",
"relation": "may later create licensed partner evidence through"
}
],
"importPolicy": {
"mode": "dry_run_or_demo_seed_only",
"idempotencyRequired": true,
"backendPermissionRequired": true,
"crossTenantImportAllowed": false,
"createsFinancialTruth": false,
"createsInventoryTruth": false
},
"blockedMutations": [
"purchaseOrder.issue",
"goodsReceipt.approve",
"inventoryMovement.post",
"supplierInvoice.accept",
"threeWayMatch.autoApprove",
"payable.approve",
"partnerPayment.execute",
"ledger.post",
"wallet.balanceMutate",
"customerOrder.confirm"
]
}required
Import must run inside a clearly marked demo tenant/scope. Cross-tenant import is rejected.
required
Every group uses stable seed keys so repeated imports update dry-run evidence instead of duplicating records.
required
Product identity and actor profiles must exist before quotes, listings, demand, logistics, or payment evidence placeholders.
required
Import cannot bypass role permissions. Backend remains final authority even for demo seed data.
required
PO, GRN, inventory, invoice, ledger, settlement, payout, and wallet mutations are blocked by design.
Blocked mutations
Product identity
/universal-products/data-bank/overview
read-readySupplier profile and offering
/supplier-network/profiles
guarded write where availableManufacturer need and RFQ
/procurement-rfq/rfqs
guarded write where availableSupplier quote
/procurement-rfq/quotes
guarded write where availableHybrid trust supply profile
/hybrid-trust-map/supply-profiles
guarded write where availableDemand draft
/hybrid-trust-map/demand-drafts
guarded write where availableCarrier offer
/logistics-booking/carrier-offers
guarded write where availablePartner payment evidence
/admin/payments/upaisa-sandbox
sandbox/evidence onlyNext build gate
This pack is the foundation. The current strongest demo route is: data pack, dry-run, readiness report, approval gate, technical design, then role functional readiness for Supplier, Manufacturer, Wholesaler, Retailer, Customer, Rider, and Founder/Admin.