Appearance
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:
- 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.
- A workflow engine is a product in itself — a bigger one than QRSETU — and it would consume the entire roadmap.
- 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 archetype | What 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:
| Question | Why it decides | |
|---|---|---|
| F1 | Does 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. |
| F2 | Does it own its customer relationship? | If an aggregator owns it (Zomato, Swiggy, Urban Company), QRSETU is redundant to the growth loop. |
| F3 | Can 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. |
| F4 | Is it small enough that no affordable software exists for it? | A supermarket has a POS and an ERP. A dairy owner has a notebook. |
| F5 | Is 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.
| Primitive | Owns | Status |
|---|---|---|
| Catalogue | What the business offers | ✅ designed |
| Party | A 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 |
| Recurrence | The rule behind a repeating commitment | ✅ engine exists, 117 tests (QRS-380) |
| Fulfilment | An obligation discharged — delivered, served, completed | ❌ QRS-379 |
| Ledger | Money and quantity movement, manual or online | ❌ QRS-379 |
| Balance | Running account per Party — the khata | ❌ QRS-379 |
| Location | An outlet, branch or collection point | ❌ QRS-385 |
| Resource | A bookable thing — staff, chair, room, vehicle, route | ❌ QRS-386 |
| Asset | A 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 |
| Campaign | A 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
| Industry | Composition | Industry features via grants | Note |
|---|---|---|---|
| Kirana / grocery store | Party · Ledger · Balance · Recurrence · Location | monthly list reorder · khata statements · UoM (kg/L) | Highest-volume segment in India. The khata is the wedge |
| Dairy | Party · Schedule · Recurrence · Fulfilment · Ledger · Balance · Resource · Location | standing orders · delivery run · per-customer billing cycle · fractional UoM | The reference composition |
| Tiffin / home food service | identical to dairy | meal plans · pause/skip · monthly billing | Structurally the same business. Large, almost entirely undigitised |
| Water can supplier | identical to dairy | standing orders · empty-can tracking | Same again — one composition, three industries |
| Boutique / apparel | Party · Ledger · Order | lookbook · size/variant · advance booking | No Recurrence — the ADR-0021 contrast case |
| Sweet shop / bakery | Party · Schedule · Ledger · Order | order-ahead · festival pre-booking · UoM (kg) | Schedule = collection date, not appointment |
| Festival / Ganapati stall | Ledger · Order | seasonal template · advance booking · finite stock | R1 launch vertical. Deliberately the thinnest composition |
| Meat / fish / poultry | Party · Recurrence · Ledger · Balance · Fulfilment | weekly standing order · UoM | "Sunday chicken" is a recurrence rule |
| General / hardware store | Party · Ledger · Balance · Location | khata · contractor accounts · UoM | B2B-ish tail needs tax (QRS-387) |
| Mobile / electronics shop | Party · Ledger · Balance | warranty follow-up · EMI enquiry · serial tracking | Party enables the warranty nudge |
| Plant nursery | Party · Ledger · Order · Schedule | seasonal catalogue · care reminders | Care reminders reuse the reminders engine |
| Tailor / boutique stitching | Party · Schedule · Fulfilment · Balance | measurement profile · delivery date · advance | Made-to-order goods, not a service |
| Stationery / gift shop | Party · Ledger · Order | school-list bundles | Seasonal |
| Cloud kitchen | Order · Fulfilment · Schedule | menu windows · delivery radius · direct ordering | Fit only if taking DIRECT orders (F2) |
| Pharmacy | Party · Ledger · Balance · Recurrence | batch/expiry (QRS-…L8) · refill reminders · verification | Regulated; refill recurrence is high-value |
| Home-based / craft business | Party · Ledger · Order | made-to-order · Instagram-first card | Very large, entirely undigitised segment |
Archetype: TIME — primary entity is a slot
| Industry | Composition | Industry features via grants | Note |
|---|---|---|---|
| Salon / beauty professional | Party · Schedule · Resource · Fulfilment · Recurrence | book-with-stylist · chair/room · monthly package · walk-in queue | Resource is what makes multi-staff work |
| Yoga / fitness trainer | Party · Schedule · Recurrence · Balance | monthly membership · batch timings · attendance | Recurrence + Balance = the membership |
| Academic tutor | Party · Schedule · Recurrence · Balance | batch · syllabus · term fee · attendance | |
| Coaching institute | + Location · Resource | multi-branch · batch/room · term fee · parent updates | Location is mandatory here |
| Music / dance / art class | Party · Schedule · Recurrence · Balance · Location | batch · recital scheduling | |
| Doctor / clinic | Party · Schedule · Resource · Fulfilment | book-with-doctor · token/queue · verification | Regulated. No clinical records (§5) |
| Dentist / physiotherapist | Party · Schedule · Recurrence · Balance | session packages · treatment-plan progress | Package of 10 = a recurrence |
| Dietician / nutritionist | Party · Schedule · Recurrence · Balance | monthly plan · check-in cadence | |
| Pet groomer / vet | Party · Schedule · Recurrence | vaccination reminders · grooming cycle | Reminders engine again |
| Driving school | Party · Schedule · Resource · Recurrence · Balance | vehicle+instructor · course progress | Resource = vehicle |
| Astrologer / priest (purohit) | Party · Schedule · Balance | muhurat scheduling · puja packages · seasonal | Festival seasonality |
| Spa / massage / wellness | Party · Schedule · Resource · Recurrence | therapist · room · packages | |
| Photography studio (sittings) | Party · Schedule · Resource · Balance | studio slot · package · advance | Distinct from event photography below |
Archetype: EXPERTISE — primary entity is an enquiry
| Industry | Composition | Industry features via grants | Note |
|---|---|---|---|
| Real estate agent | Party · Schedule · 1:N transfers | listings · viewing scheduler · co-broking split (QRS-388) · lead stages | F3: card generates the lead, never the sale |
| Electrician · plumber · carpenter | Party · Schedule · Recurrence · Fulfilment · Balance | service catalogue · job visit · AMC · quotation | AMC = recurrence. Very large segment |
| AC / appliance / RO repair | identical to above | AMC · service history · warranty | One composition, many trades |
| Photographer (events) | Party · Schedule · Balance · Fulfilment | packages · shoot date · advance · deliverable handover | Balance = advance + milestones |
| Event planner / decorator | Party · Schedule · Balance · Resource | packages · venue/date · milestone payments | |
| Caterer | Party · Schedule · Balance · Fulfilment | per-plate menus · headcount · advance | |
| Mehendi / makeup artist | Party · Schedule · Balance | date booking · bridal packages · seasonal | Wedding-season seasonality |
| Interior designer | Party · Schedule · Balance | portfolio · milestone billing · quotation | |
| Consultant / freelancer | Party · Schedule · Recurrence · Balance | retainer · time packages · invoicing | Retainer = recurrence |
| Direct seller / Herbalife distributor | Party · Recurrence · Balance · Fulfilment | reorder-cycle tracking · downline seats · monthly volume | ⚠ verify PA policy (§5) |
| Packers & movers | Party · Schedule · Balance | survey booking · quotation | |
| Car / bike sales agent | Party · Schedule · Location · Resource | vehicle listings (make/model/year/km/fuel/variant) · test-drive booking · finance enquiry · trade-in valuation | The flagship Enterprise case - see ADR-0022. Structurally identical to a real-estate agent |
| Car dealership (enterprise) | as above + shared catalogue · shared Location · shared Resource | seat-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 · Fulfilment | recurring visits · service history | |
| CA · lawyer · insurance · loan agent | Party · Schedule · Recurrence · Balance | verification · compliance disclaimers · ad-restricted · retainer | Regulated; ad-restriction is a legal requirement |
| Gym / sports coaching (facility) | Party · Schedule · Recurrence · Balance · Location · Resource | memberships · court/slot booking · multi-branch | Straddles Time + Expertise; composition decides |
Weak fit — serve if they arrive, do not design for
| Industry | Why weak |
|---|---|
| Dine-in restaurant / cafe | F2 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 / supermarket | F4/F5 fail — has a POS and an ERP, owner is not the operator. |
| Wholesale / B2B distribution | F1 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
Hard exclusions — structural or legal, not preference
| Excluded | Reason |
|---|---|
| Lending · insurance underwriting · deposit-taking · chit funds | RBI-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 work | Needs BOMs, routing, WIP, multi-warehouse. Ledger is a business ledger, not a general ledger. A different product. |
| Logistics / fleet at scale | Live 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 / accounting | Payroll, 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:
| Extension | Rides on | Foundation impact |
|---|---|---|
| Marketplace / discovery | cards.search_vector + Party's user_id link + consumer identity | None — the hooks exist. Consumer-side product only |
| Multi-outlet chains | Location | Must land in the baseline (QRS-385) |
| Franchise networks | Location + organizations + ownership_model | Additive — a franchise is an org whose members are org_owned |
| Vendor→customer recurring billing at scale | Recurrence + Balance + e-mandate/UPI Autopay | Additive; needs its own provider integration |
| B2B / wholesale tail | Tax model (QRS-387) + Balance credit terms | Tax must land in the baseline |
| Loyalty / referral | Party + Ledger | Additive. ADR-0005 already scopes it |
| Ads / sponsored placements | promo_slot (inert) + industries.compliance_profile | Additive; fails closed until compliance data exists |
| Consumer chat & bookings | Party + Schedule + realtime | Additive |
| Regional-language cards | @qrsetu/i18n + cards.locale | Additive |
| Offline-first capture | Ledger 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
- A new industry is a row. One
industriesentry + archetype + composition + attribute schema. If it needs code, the primitive set is incomplete — fix the primitive, not the industry. - A new primitive needs ≥3 industries in writing. Serving one means bespoke (sign-off) or mis-modelled.
- Never branch on archetype or industry in app code — lint-gated (ADR-0021 D4). Ask for a feature.
- 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).
- Refuse out-of-scope industries with the reason from §5, not with a maybe. A written boundary is what makes "no" cheap.