every-shop
Every shop, one system — the merchant coverage model
How Zero brings every shop and establishment in an Indian market online without writing a class
per shop. This is the reuse-first mandate applied to merchants: the *engines* are fixed and shared;
a *shop* is DATA. Read commerce/DOMAIN.md, practice/DOMAIN.md and optician/DOMAIN.md first — this
doc ties them into one story and shows the whole India map. The machine-readable catalog of kinds is
[docs/shop-kinds.jsonl](shop-kinds.jsonl).
1. The claim this doc proves
Nothing you pass in a market — kirana, chemist, dentist, tailor, optician, salon, coaching class,
electrician, sweet shop, garage, CA, florist, mobile-repair, gym — is outside Zero's purview, and
covering them does not mean a class each. Three shipped structures cover the entire spectrum:
Structure
Role
It is
Already shipped as
commerce
the goods engine — storefront, catalog, cart, order ledger, fulfilment, delivery
parent = thing
grocery, pharmacy, eatery, shop (bright store), eyewear
practice
the services engine — service catalog, intake, engagement ledger, AI drafts, a licensed human certifies
parent = company
ca, cs, legal, vcfo, optometry
company (umbrella)
composes a commerce unit + a practice unit for a hybrid business
parent = thing
optician (eyewear store + eye-exam clinic)
Plus the doctrine that stops the market fragmenting: thing.market — one provider per business kind
(the monopoly map). A demand routes to a single incumbent per kind, never a duplicate.
2. The golden rule — reuse the ENGINE, describe the SHOP as DATA
A shop is its identity + a catalog (goods) or a service list (services) + a knowledge
base. All three are data. The engine — the cart, the order lifecycle, the AI assistant, the
engagement/sign-off flow, the delivery hand-off — never changes. A "medical store", a "hardware store"
and a "sweet shop" are the *same* commerce engine with different catalog.jsonl + persona + identity.
If you find yourself copying an engine action to make a new shop, stop — you are duplicating. The shop
is the data on top; the engine is reused verbatim.
3. Three ways to bring a shop online — cheapest first
Pick the lightest that fits. Most shops never need a class.
1. Instance — no class, no folder (the default). For *one* shop: create an object whose
object.data sets class = commerce (or class = practice) plus the identity overrides, and drop
its own catalog.jsonl / services.jsonl into the object's data dir. commerce/_cat_src and the
practice loaders read the object's own file first (see the REUSE note in commerce/defaults.data:11
and practice/defaults.data:12). Zero new code, zero new folders. This is how the long tail of shops
comes online.
2. Data subclass — one folder (only for a reusable KIND). When a *kind* recurs — you will stamp many
groceries, many pharmacies, many opticians — and a curated shared catalog + kb genuinely helps, make
a folder: parent = <engine> + catalog.jsonl/services.jsonl + kb.md + identity. That is exactly
what grocery / pharmacy / eyewear / optometry are. No engine code, ever.
3. Umbrella composition — one company (only for a hybrid). When a business sells goods and
delivers services under one roof, make a company folder whose found seeds a commerce unit + a
practice unit, born unclaimed and org-linked. The mold is optician (optician/DOMAIN.md); copy it.
4. The decision rule
graph TD
A[A shop / establishment] --> B{Sells physical products?}
B -- yes, only --> C{One shop or a whole kind?}
C -- one shop --> C1[Instance: class = commerce + its catalog]
C -- a kind --> C2[Data subclass: parent = commerce]
B -- no, it delivers a booked / certified service --> D{One firm or a whole kind?}
D -- one firm --> D1[Instance: class = practice + its services]
D -- a kind --> D2[Data subclass: parent = practice]
B -- both goods AND services --> E[Umbrella company: found seeds a commerce unit + a practice unit -- optician pattern]
• Goods, no appointment/certification → commerce.
• A booked / scheduled / regulated service, where a licensed human signs off (a prescription, a
treatment record, a filing, an inspection) → practice.
• Both under one roof → company umbrella (the optician mold).
• One shop → instance. A kind you will repeat → data subclass.
5. Legal form is metadata, never a class
Proprietorship, partnership, firm, LLP, Pvt Ltd, OPC, HUF, co-operative, trust/society — all
the *same* class. They differ only in the per-object fields legal_form / gstin / reg_no (the
company engine already carries the entity model; see optician/defaults.data). Never fork a class
per legal form — an LLP optician and a proprietorship optician are both optician, one field apart.
6. Claim-first onboarding — how a real shopkeeper gets on
The go-to-market funnel needs no per-shop code:
1. A real shop is pre-seeded as an unclaimed draft (thing/_seed_actor → unclaimed = 1).
2. The owner downloads zero, finds their shop, and taps Claim (thing.claim) — the twin binds to the
real entity; the landing flips ✎ Unclaimed draft → 🔗 real.
3. They manage everything from the cockpit they inherit for free (chief-of-staff, orders/engagements,
catalog, care, money).
The verified-ownership ceremony (the real entity cryptographically proving itself on the mesh/identity
rails before the link is trusted) is the deliberate next step; thing.claim records the link the owner
asserts and is the seam those rails plug into.
7. One provider per kind — no duplication in the market
thing.market is the monopoly map: each business kind has exactly ONE provider in the system, so a
buyer's demand routes to a single incumbent and matchmaking (thing.match / discover) never fans a
request to duplicates. The shop-kinds registry below IS the set of kinds a provider can claim.
8. The India coverage map
Every sector of an Indian high street, mandi, market complex or service economy, mapped to an engine.
Rows marked with a class use the shipped curated class; all others are an instance of the named
engine (no folder needed). The exhaustive, machine-readable list — with starter categories/services per
kind — is [docs/shop-kinds.jsonl](shop-kinds.jsonl).
Goods retail → commerce
Kirana/general store (grocery) · supermarket · department store · wholesale / cash-&-carry · dairy &
milk booth · paan shop · bakery & confectionery · sweet shop (mithai) · namkeen & snacks · dry fruits ·
spice shop · butcher / meat · fish & seafood · fruit & vegetables (sabzi) · organic store · clothing &
apparel · saree shop · footwear · bags & luggage · jewellery · imitation jewellery · watches · cosmetics
& beauty · perfume · mobile phone shop · electronics · computers & laptops · home appliances · electrical
goods · hardware & sanitary · paint shop · building materials · furniture · home furnishings & décor ·
kitchenware & utensils · glass & aluminium · books · stationery · gift shop · toys · sports goods ·
musical instruments · auto parts & spares · tyre shop · vehicle accessories · seeds / fertiliser / agri
inputs · nursery & plants · florist · pet shop & supplies · optical (eyewear) · chemist / pharmacy
(pharmacy) · surgical & medical supplies · ayurvedic / herbal store · nutrition & supplements · LPG /
gas agency · pooja & religious items · handicrafts · fabric & textiles.
Food service → commerce (eatery) / restaurant
Restaurant (restaurant/eatery) · dhaba · café · cloud kitchen · tiffin / mess service · juice bar ·
food truck · sweet-&-snacks counter · bakery-café · ice-cream parlour.
Health services → practice
Dental clinic · doctor / GP clinic · eye clinic (optometry) · diagnostic lab & pathology ·
physiotherapy · ENT / specialist clinic · dermatology / skin clinic · veterinary clinic · dietician /
nutrition counselling · mental-health / counselling · dental lab · vaccination / immunisation clinic.
Personal care (by appointment) → practice
Salon & beauty parlour · barber / men's grooming · spa & wellness · makeup artist · tattoo & piercing ·
mehndi artist · nail studio.
Professional firms → practice
Chartered accountant (ca) · company secretary (cs) · law firm (legal) · virtual CFO (vcfo) · tax
& GST consultant · architect · interior designer · structural / chartered engineer · insurance advisor ·
real-estate agent · financial advisor / wealth · notary · patent & trademark agent · surveyor / valuer ·
recruitment / manpower agency.
Trades & repair services → practice
Electrician · plumber · carpenter · painter · AC & refrigeration · appliance repair · mobile repair ·
computer repair · watch repair · cobbler · tailoring & alteration · RO / water-purifier service · pest
control · packers & movers · car service / garage · two-wheeler service · welding & fabrication ·
CCTV & security installation · borewell / motor repair.
Education & coaching → practice
Tuition / coaching centre · music school · dance school · driving school · computer training · language
classes · art & craft classes · yoga studio · gym & fitness (often hybrid — see below) · preschool &
daycare · abacus / vedic-maths · sports academy.
Events & hospitality services → practice
Photographer & videographer · event management · caterer · decorator · DJ & sound · wedding planner ·
travel agent · tour operator · priest / pandit services · tent & furniture rental.
Everyday services → practice
Laundry & dry cleaning · courier / parcel agent · printing / photocopy / DTP · cyber café & CSC (online
government services) · photo studio · key maker & locksmith · astrologer · scrap & recycling dealer.
Hybrid — goods and services → company umbrella (optician mold)
Optician (optician) · dental clinic + dental supplies · salon + retail products · gym + supplements ·
vet clinic + pet shop · mobile shop + repair · computer shop + repair · watch shop + repair · cycle shop
• service · auto shop + garage · tailoring shop + fabric retail · ayurvedic clinic + herbal store ·
physiotherapy + orthopaedic supplies · photo studio + camera retail · music shop + classes.
Larger establishments → company / conglomerate
Supermarket chain · hospital (departments as units) · hotel · school / institute · petrol pump ·
bank / NBFC branch · clinic chain · franchise HQ · mall / market association. Each is a company (or
conglomerate) that composes the shop engines above as units — the quickcommerce.found pattern.
9. What we deliberately did NOT do
We did not create ~150 classes. The registry is data; any kind is instantiated on demand as an
instance of commerce / practice, or via the optician-style umbrella for a hybrid. New curated
classes are added only when a kind recurs often enough that a shared catalog/kb earns its keep — the
reuse-first mandate, applied to the whole market.