Skip to content

Industry scope & the long-term architectural direction ​

The reference document for what QRSETU is intentionally built to serve. Authored 2026-08-07 as a Principal-Architect recommendation. Purpose: stay focused, refuse scope creep with a reason, and make every future architectural decision checkable against a written scope.

Companion: business-domain coverage (what is blocked and why) · ADR-0021 (the control plane) · user ecosystem (who the users are)

1. The recommendation: three layers, and the cost of the platform is O(primitives) ​

Recommended, unambiguously:

INDUSTRY  (open, unbounded set — costs nothing to add)
   ↓ declares
ARCHETYPE (what you sell — the primary entity)   ×   PRIMITIVES (how you run — which processes)
   ↓ resolved through
GRANTS    (8 scopes × 3 axes, sparse deviations only — ADR-0021)

The single sentence that justifies it: the engineering cost of this platform is O(primitives), not O(industries). Ten primitives can compose into hundreds of industries. The failure mode of every vertical SaaS is O(industries) code — a new segment means new screens, new tables, new conditionals — and that is what kills a solo-maintained platform at vertical number six.

So the discipline that makes this work is not a technology choice, it is a gate on the primitive set:

A new primitive requires a written justification that it serves at least three industries. Anything serving one is either genuinely bespoke (needs explicit sign-off) or, far more often, mis-modelled — it is a composition of primitives that already exist.

That gate is ADR-0009's own capability-mapping test, promoted from a discovery-document step to the governing rule of the architecture.

The seductive wrong answer, named so it can be refused later ​

"Make it fully configurable — a workflow engine, so any industry can model itself." This is the intuitive answer to "support any business type" and it is wrong for QRSETU on three independent grounds:

  1. Non-technical business owners will not build workflows. The primary audience is a Ganapati stall vendor and a dairy owner. A workflow builder is a tool for a systems integrator.
  2. A workflow engine is a product in itself — a bigger one than QRSETU — and it would consume the entire roadmap.
  3. It destroys the core product principle. A proactive assistant must understand the business to say "Sharma-ji's balance is ₹1,840, unpaid 12 days." It can only reason about primitives it designed. A platform that lets vendors invent arbitrary processes cannot be proactive about any of them — it degrades into exactly the passive, store-and-view app CLAUDE.md's first principle exists to prevent.

Also rejected: separate vertical apps (unmaintainable by one developer) and archetype-only mapping (the dairy/boutique case disproves it — ADR-0021).

⚠ A simplification this reveals, available only while Dev is greenfield ​

Two of the five archetypes are not archetypes — they are compositions.

Current archetypeWhat it actually is
inventory_listing✅ A true archetype. Primary entity: a stocked item.
booking_appointment✅ A true archetype. Primary entity: a slot of time.
lead_portfolio✅ A true archetype. Primary entity: an enquiry.
ecommerce_cart❌ = inventory_listing + Order + Payments + Fulfilment. A composition.
catalog_informational❌ = inventory_listing with every transactional primitive off. A composition.

Recommendation: collapse to three archetypes — Goods · Time · Expertise — and let every industry declare its own composition. Reasons: the two dissolved ones add an axis that the primitive layer already expresses, so keeping them creates two ways to say the same thing (the duplicate-source-of-truth class this repo has hit at QRS-249/284/287); and "is this business ecommerce_cart or inventory_listing?" is a question with no correct answer for a boutique that also sells over WhatsApp.

Free now, awkward later — archetype_keys already appears in setu_card_templates, and archetype is persisted per workspace. Reversible while Dev is being re-baselined; a migration afterwards.

2. The fit test — five questions, and a "no" on any one is a weak fit ​

Marketplace-dependence alone is too blunt a filter. These five, applied in order, explain every include/exclude decision in §4 and §5:

QuestionWhy it decides
F1Does this business need to be found or remembered by individuals?The Setu Card is the core. A B2B wholesaler with 12 fixed buyers has no use for a public card.
F2Does it own its customer relationship?If an aggregator owns it (Zomato, Swiggy, Urban Company), QRSETU is redundant to the growth loop.
F3Can the transaction complete without negotiation?A ₹200 haircut, a ₹1,500 idol, a ₹66/L standing order — yes. A ₹40 lakh flat — the card generates the lead, not the sale.
F4Is it small enough that no affordable software exists for it?A supermarket has a POS and an ERP. A dairy owner has a notebook.
F5Is the owner the operator?Proactive nudges must land on the person who can act on them. In a 200-person company they land on nobody.

A "no" on F1 or F2 is disqualifying. A "no" on F3, F4 or F5 makes it a weak fit, not an exclusion — worth serving if it arrives, never worth designing for.

3. The primitive catalogue — the closed set that carries all the cost ​

Eleven primitives. Everything in §4 is a composition of these. This list is the thing to protect.

PrimitiveOwnsStatus
CatalogueWhat the business offers✅ designed
PartyA workspace-scoped counterparty — customer, lead, student, patient. Identity-optional: most are not QRSETU users❌ QRS-379
Schedule"A thing happens at a time"❌ QRS-379
RecurrenceThe rule behind a repeating commitment✅ engine exists, 117 tests (QRS-380)
FulfilmentAn obligation discharged — delivered, served, completed❌ QRS-379
LedgerMoney and quantity movement, manual or online❌ QRS-379
BalanceRunning account per Party — the khata❌ QRS-379
LocationAn outlet, branch or collection point❌ QRS-385
ResourceA bookable thing — staff, chair, room, vehicle, route❌ QRS-386
AssetA thing belonging to a Party with a service history — the customer's vehicle, the installed AC, the managed flat. What an AMC is actually against❌ QRS-400
CampaignA targeted, scheduled, measurable content window — festive offers, stock clearance, early-bird admissions. The Enterprise differentiator❌ QRS-403

Plus platform core, never gated: Setu Card · QR tools · profile · settings · reminders · notifications · analytics · payments.

Balance deserves a note. The khata — a running credit account per customer — is arguably the single most universal unrecorded process in Indian SMB. The kirana store, the dairy, the tailor, the hardware shop and the tiffin service all run one, all in a paper notebook. Digitising it is the strongest product wedge in this entire scope, and it is one primitive.

4. The industries QRSETU is intentionally built for ​

~45 industries on 3 archetypes and 11 primitives. "Composition" lists primitives beyond Catalogue, which every industry has. "Industry features via grants" are the entitlement-controlled deviations of ADR-0021 — the things that differ within an archetype.

Archetype: GOODS — primary entity is a stocked item ​

IndustryCompositionIndustry features via grantsNote
Kirana / grocery storeParty · Ledger · Balance · Recurrence · Locationmonthly list reorder · khata statements · UoM (kg/L)Highest-volume segment in India. The khata is the wedge
DairyParty · Schedule · Recurrence · Fulfilment · Ledger · Balance · Resource · Locationstanding orders · delivery run · per-customer billing cycle · fractional UoMThe reference composition
Tiffin / home food serviceidentical to dairymeal plans · pause/skip · monthly billingStructurally the same business. Large, almost entirely undigitised
Water can supplieridentical to dairystanding orders · empty-can trackingSame again — one composition, three industries
Boutique / apparelParty · Ledger · Orderlookbook · size/variant · advance bookingNo Recurrence — the ADR-0021 contrast case
Sweet shop / bakeryParty · Schedule · Ledger · Orderorder-ahead · festival pre-booking · UoM (kg)Schedule = collection date, not appointment
Festival / Ganapati stallLedger · Orderseasonal template · advance booking · finite stockR1 launch vertical. Deliberately the thinnest composition
Meat / fish / poultryParty · Recurrence · Ledger · Balance · Fulfilmentweekly standing order · UoM"Sunday chicken" is a recurrence rule
General / hardware storeParty · Ledger · Balance · Locationkhata · contractor accounts · UoMB2B-ish tail needs tax (QRS-387)
Mobile / electronics shopParty · Ledger · Balancewarranty follow-up · EMI enquiry · serial trackingParty enables the warranty nudge
Plant nurseryParty · Ledger · Order · Scheduleseasonal catalogue · care remindersCare reminders reuse the reminders engine
Tailor / boutique stitchingParty · Schedule · Fulfilment · Balancemeasurement profile · delivery date · advanceMade-to-order goods, not a service
Stationery / gift shopParty · Ledger · Orderschool-list bundlesSeasonal
Cloud kitchenOrder · Fulfilment · Schedulemenu windows · delivery radius · direct orderingFit only if taking DIRECT orders (F2)
PharmacyParty · Ledger · Balance · Recurrencebatch/expiry (QRS-…L8) · refill reminders · verificationRegulated; refill recurrence is high-value
Home-based / craft businessParty · Ledger · Ordermade-to-order · Instagram-first cardVery large, entirely undigitised segment

Archetype: TIME — primary entity is a slot ​

IndustryCompositionIndustry features via grantsNote
Salon / beauty professionalParty · Schedule · Resource · Fulfilment · Recurrencebook-with-stylist · chair/room · monthly package · walk-in queueResource is what makes multi-staff work
Yoga / fitness trainerParty · Schedule · Recurrence · Balancemonthly membership · batch timings · attendanceRecurrence + Balance = the membership
Academic tutorParty · Schedule · Recurrence · Balancebatch · syllabus · term fee · attendance
Coaching institute+ Location · Resourcemulti-branch · batch/room · term fee · parent updatesLocation is mandatory here
Music / dance / art classParty · Schedule · Recurrence · Balance · Locationbatch · recital scheduling
Doctor / clinicParty · Schedule · Resource · Fulfilmentbook-with-doctor · token/queue · verificationRegulated. No clinical records (§5)
Dentist / physiotherapistParty · Schedule · Recurrence · Balancesession packages · treatment-plan progressPackage of 10 = a recurrence
Dietician / nutritionistParty · Schedule · Recurrence · Balancemonthly plan · check-in cadence
Pet groomer / vetParty · Schedule · Recurrencevaccination reminders · grooming cycleReminders engine again
Driving schoolParty · Schedule · Resource · Recurrence · Balancevehicle+instructor · course progressResource = vehicle
Astrologer / priest (purohit)Party · Schedule · Balancemuhurat scheduling · puja packages · seasonalFestival seasonality
Spa / massage / wellnessParty · Schedule · Resource · Recurrencetherapist · room · packages
Photography studio (sittings)Party · Schedule · Resource · Balancestudio slot · package · advanceDistinct from event photography below

Archetype: EXPERTISE — primary entity is an enquiry ​

IndustryCompositionIndustry features via grantsNote
Real estate agentParty · Schedule · 1:N transferslistings · viewing scheduler · co-broking split (QRS-388) · lead stagesF3: card generates the lead, never the sale
Electrician · plumber · carpenterParty · Schedule · Recurrence · Fulfilment · Balanceservice catalogue · job visit · AMC · quotationAMC = recurrence. Very large segment
AC / appliance / RO repairidentical to aboveAMC · service history · warrantyOne composition, many trades
Photographer (events)Party · Schedule · Balance · Fulfilmentpackages · shoot date · advance · deliverable handoverBalance = advance + milestones
Event planner / decoratorParty · Schedule · Balance · Resourcepackages · venue/date · milestone payments
CatererParty · Schedule · Balance · Fulfilmentper-plate menus · headcount · advance
Mehendi / makeup artistParty · Schedule · Balancedate booking · bridal packages · seasonalWedding-season seasonality
Interior designerParty · Schedule · Balanceportfolio · milestone billing · quotation
Consultant / freelancerParty · Schedule · Recurrence · Balanceretainer · time packages · invoicingRetainer = recurrence
Direct seller / Herbalife distributorParty · Recurrence · Balance · Fulfilmentreorder-cycle tracking · downline seats · monthly volume⚠ verify PA policy (§5)
Packers & moversParty · Schedule · Balancesurvey booking · quotation
Car / bike sales agentParty · Schedule · Location · Resourcevehicle listings (make/model/year/km/fuel/variant) · test-drive booking · finance enquiry · trade-in valuationThe flagship Enterprise case - see ADR-0022. Structurally identical to a real-estate agent
Car dealership (enterprise)as above + shared catalogue · shared Location · shared Resourceseat-based subscription · org-wide inventory with exclusivity across agents · agent permissions (catalog:view without catalog:edit) · service department as a second archetype in the same org⚠ Shared inventory needed ADR-0022; ADR-0020 alone could not express it
Home services (cleaning, pest)Party · Schedule · Recurrence · Fulfilmentrecurring visits · service history
CA · lawyer · insurance · loan agentParty · Schedule · Recurrence · Balanceverification · compliance disclaimers · ad-restricted · retainerRegulated; ad-restriction is a legal requirement
Gym / sports coaching (facility)Party · Schedule · Recurrence · Balance · Location · Resourcememberships · court/slot booking · multi-branchStraddles Time + Expertise; composition decides

Weak fit — serve if they arrive, do not design for ​

IndustryWhy weak
Dine-in restaurant / cafeF2 fails for growth (aggregator- and footfall-fed), but the digital menu is genuinely useful. Serve as Goods with every transactional primitive off. Do not build dine-in ops (KOT, tables) — that is a POS.
Large-format retail / supermarketF4/F5 fail — has a POS and an ERP, owner is not the operator.
Wholesale / B2B distributionF1 fails — no public discovery need. Also needs credit terms and GST invoicing at a depth we should not chase.
School / college (formal)F5 fails, and needs SIS/LMS/fee-management plus statutory compliance. A coaching institute is the fit; an accredited school is not.

5. Explicitly OUT of scope — refuse these with the reason ​

ExcludedReason
Lending · insurance underwriting · deposit-taking · chit fundsRBI-licensed activity. ⚠ The plan already names the RBI PA constraint as "the guardrail most easily broken by a future 'let's hold the money until delivery' idea." QRSETU must never hold customer funds.
Clinical records (EMR/EHR)A distinct regulatory regime. A clinic gets a card, a catalogue and appointments; it must never get patient records.
Manufacturing / job workNeeds BOMs, routing, WIP, multi-warehouse. Ledger is a business ledger, not a general ledger. A different product.
Logistics / fleet at scaleLive rider tracking and dispatch optimisation is a different systems problem.
Payment-aggregator prohibited categories⚠ This is an external hard constraint, not our choice. Crypto, gambling/betting, adult content, tobacco, alcohol, weapons, and several others are on the PA's prohibited-business list, so the payment rail excludes them regardless of architecture. Read the current list from the provider before onboarding any adjacent vertical.
Full ERP / accountingPayroll, double-entry, statutory filings. Adjacent, not ours.

⚠ One verification item, flagged rather than concluded ​

Direct selling / MLM (Herbalife distributors) is a named launch vertical, and multi-level-marketing appears on several payment aggregators' restricted lists. Legitimate direct selling is not a pyramid scheme, and the distinction matters commercially — but I have not verified Razorpay's current position, and asserting it either way would be a claim about a system boundary I have not checked. Verify against the provider's live prohibited/restricted list before payments are enabled for this vertical, because discovering it at settlement time affects real merchants' money.

6. Future extensions the architecture must accommodate naturally ​

Each of these must be additive to the model above. Listed so a future change can be checked against it:

ExtensionRides onFoundation impact
Marketplace / discoverycards.search_vector + Party's user_id link + consumer identityNone — the hooks exist. Consumer-side product only
Multi-outlet chainsLocationMust land in the baseline (QRS-385)
Franchise networksLocation + organizations + ownership_modelAdditive — a franchise is an org whose members are org_owned
Vendor→customer recurring billing at scaleRecurrence + Balance + e-mandate/UPI AutopayAdditive; needs its own provider integration
B2B / wholesale tailTax model (QRS-387) + Balance credit termsTax must land in the baseline
Loyalty / referralParty + LedgerAdditive. ADR-0005 already scopes it
Ads / sponsored placementspromo_slot (inert) + industries.compliance_profileAdditive; fails closed until compliance data exists
Consumer chat & bookingsParty + Schedule + realtimeAdditive
Regional-language cards@qrsetu/i18n + cards.localeAdditive
Offline-first captureLedger designed with client-generated ids + idempotency⚠ Cheapest if Ledger anticipates it — Indian SMB connectivity makes this likely, and retrofitting sync onto a server-id ledger is hard

That last row is a real recommendation: give Ledger client-generated UUIDs and an idempotency key from day one. It costs nothing now and is the difference between offline capture being a feature and being a rewrite.

7. The discipline that keeps this true ​

  1. A new industry is a row. One industries entry + archetype + composition + attribute schema. If it needs code, the primitive set is incomplete — fix the primitive, not the industry.
  2. A new primitive needs ≥3 industries in writing. Serving one means bespoke (sign-off) or mis-modelled.
  3. Never branch on archetype or industry in app code — lint-gated (ADR-0021 D4). Ask for a feature.
  4. A composition is a reviewed product decision, recorded in the vertical's discovery document — never typed into an admin form (ADR-0021's accepted cost).
  5. Refuse out-of-scope industries with the reason from §5, not with a maybe. A written boundary is what makes "no" cheap.