For franchise brands

Outlets open on the date you promised. Royalty nobody argues with.

Those are the two things you are judged on, and both currently live in a spreadsheet, an inbox and somebody’s memory. This page walks the whole chain — the enquiry through to the royalty that outlet pays in year four — and names what the product does at every step, including where it stops.

Openings
On the date you promised
Royalty
Billed to the rupee, with its working attached
Standards
Held across people you do not employ
Surprises
The system finds them before the inspector does

The week you actually have

Three questions that should take seconds and take days

Where is the Indore outlet, did Nagpur pay March royalty, and who owns the Nashik territory. Every answer exists. It exists in a sheet, an inbox and somebody’s memory, and assembling it is most of what your week is.

What breaks, in the words franchisors use

  • The expansion pipeline is a spreadsheet one person maintains, so when they are on leave nobody can say where a lead stands.
  • Royalty is rebuilt by hand each month, and every dispute turns into an argument about the basis rather than the number.
  • A franchisee under-reports for two quarters and it surfaces as a hunch, not as a flagged row.
  • Renewal dates and notice windows are known only when somebody remembers to look, or when the franchisee mentions it first.
  • An outlet slips six weeks because the licence that takes forty days was applied for after the fit-out, not before.
  • Field audits happen, findings get photographed, and nothing closes the loop — so the same finding is written again next quarter.
  • Territory is promised in a meeting and discovered to overlap after the agreement is signed.
  • The marketing fund collects every month and there is no accounting of it you would be comfortable circulating.
  • A new area manager needs access, so somebody makes them an admin, which also hands them the rate card.

None of that is a discipline problem. It is what happens when the network is real and the system of record is nine tools that do not know about each other.

What follows is the chain, end to end, with the record each step produces. Nothing on this page describes something we intend to build. Where a thing exists in the API but not yet on a screen, the row says so.

The line to leave in the room The answers already exist in your business. What is missing is one place that holds them.

One chain of events

From an enquiry at an expo to the royalty that outlet pays in year four

The same record moves through every station. Nothing is retyped at a handover, because there is nowhere to retype it into.

  1. An enquiry arrives From a public form with its own link and QR, a business card photographed at a stall, or somebody typing it in — and an aggregator CSV through the import endpoint, which validates 500 rows at a time but has no console screen yet. The lead exists before anyone gets back to the office, and a consent receipt is written before the data is stored, not after.
  2. It gets worked Your own stages, your own fields, follow-up dates with an overdue view, and every call, meeting, WhatsApp and stage change on one timeline — including the changes nobody would have thought to write down.
  3. It gets qualified and matched An investment profile of twelve structured fields is scored against your franchise models on capital, format, geography, sector and royalty, and the score shows the weight behind each verdict. A profile too thin to match on cannot be advanced.
  4. It gets signed An agreement with the terms as fields, a territory with the PIN codes frozen at grant, and a signing ceremony the counterparty completes in a browser with no account — email OTP, a drawn signature, and a hash-chained trail behind it.
  5. It gets opened A fifteen-phase opening plan back-scheduled from the date you promised, with the licence durations that actually apply in India, phases that stay locked until the earlier sign-off is approved, and a projected opening day driven by real slip.
  6. It starts trading The outlet files its sales for the period; you approve them. A figure that deviates from that unit’s own trailing median by more than your threshold is flagged into an audit queue before it is billed.
  7. The month closes One run walks every active royalty term, computes the statement, and raises the invoice with GST split by place of supply and TDS shown as expected rather than as a shortfall. Re-running it corrects rather than duplicates.
  8. The network gets governed Audits that cannot be closed until the failed critical items have corrective actions raised against them, a licence register that refuses the opening sign-off when a mandatory licence is missing, and an audit log nothing can edit.

The line to leave in the room One spine, eight stations. The lead you captured at the stall is the same record the royalty run bills four years later.

Royalty, fees, GST, TDS

The month closes, and the statement shows its working

We are going here third on purpose. This is where the software either earns its place or does not: a royalty figure a franchisee cannot rebuild from their own sales is a figure they will argue with every month for ten years.

The terms

  • Effective-dated royalty terms Module ↗

    A term binds a unit — or a franchise model — to a basis, rate, floor, cap, ad-fund percentage and technology fee for an effective date window, carrying a version number and a draft, active or superseded status.

    The rate that applied in March is still readable in March, so a franchisee arguing about an old period is answered from the record instead of from memory.

  • Copy forward instead of edit Module ↗

    An active or superseded term cannot be edited or deleted. Changing it mints the next version as a draft, ends the old row the day before the new effective date and marks it superseded, carrying the tier bands across.

    Nobody can quietly change last quarter’s rate. A rate change is a new version with a start date, which is how the agreement itself works.

  • One active term per unit, enforced under a lock Module ↗

    Activating a draft supersedes any currently active term on the same binding, with every term row on that binding locked first, so two people activating at once cannot leave two live rates.

    There is never a second opinion about which rate is current — the database refuses to hold two.

  • Percentage, flat, hybrid and tiered Module ↗

    Basis is percentage, flat or hybrid — flat plus the percentage leg — and where the term has bands the percentage leg is charged marginally: each band’s rate applies only to the slice of sales inside it, with an open top band catching the rest.

    A slab structure that rewards a busy outlet computes correctly instead of being approximated by whoever builds the spreadsheet.

  • Minimum guarantee first, then cap Module ↗

    If the computed royalty falls below the minimum guarantee, the guarantee is billed; a maximum cap is then applied on top. The statement stores a flag for each so the reader can see which one bit.

    The statement says "minimum guarantee applied" rather than showing a number the outlet cannot reproduce from its own sales.

  • Netting, and what counts as gross Module ↗

    A term can compute the percentage leg on net — gross less declared deductions — and carries the contract’s own free-text definition of gross sales beside the arithmetic. The ad fund always accrues on gross regardless.

    The contract’s definition sits next to the calculation, and the ad-fund contribution does not shrink when an outlet discounts.

The close

  • One run for the whole network Module ↗

    Closing a period walks every active term whose window covers it, finds that unit’s approved or submitted monthly report, computes the statement and upserts it keyed on term plus period — so re-running corrects rather than duplicates.

    The royalty run is one action, and running it twice is safe, so a late report just means running it again.

  • It runs itself on the 4th Module ↗

    A scheduled command closes the previous month for every workspace on the 4th at 08:00, isolating each one so a single malformed term cannot stop the rest of the network, and logging any workspace that fails.

    Royalty gets computed whether or not anyone remembers to press the button, and the 4th is late enough that outlets have filed.

  • Already-invoiced statements are never clobbered Module ↗

    A statement that is invoiced, paid or waived is skipped by the close run, and a race between two simultaneous closes falls back to the row the other wrote rather than duplicating.

    A month you have already billed cannot be silently restated by someone re-running the close.

  • Estimated billing when a report is missing Module ↗

    A unit with an active term but no filed report is still billed, on an estimate taken from the median of its last three reported months, and the statement is marked estimated. The run returns the list of units that were estimated.

    Not filing stops being a way to defer royalty, and the estimate is replaced when the real report arrives and the period is closed again.

  • Ad fund and technology fee ride the same statement Module ↗

    The period statement carries three co-billed lines — royalty, the ad-fund contribution as a percentage of gross, and a flat per-period technology fee — and a total due.

    One number to collect per outlet per month, with the split visible, instead of three separate chases.

  • The statement shows its working Module ↗

    Statement detail lists gross sales, the rate, the royalty, the guarantee and cap notices, ad fund, technology fee and total due — the figures the engine stored, not a re-derivation at read time.

    A franchisee reading the statement can rebuild the number from their own sales, which is what ends most royalty arguments.

2 more in this group
  • Master-franchise clearing split Module ↗

    A statement’s royalty can be split into what the collecting workspace retains and what it remits to its grantor, using the royalty share on the brand-to-master link, one hop up the chain. The split is computed and persisted when the statement’s distributions are opened, and recomputing is idempotent. A link with no share configured defaults to an even split, so set it.

    A master franchisee collecting on your behalf can see, per statement, what is theirs and what is owed up the chain. Trust-account ledgers and automated remittance are not built.

  • Area developers see rows, not amounts Module ↗

    An area-developer workspace has royalty and sales amounts redacted while the rows still list, and the audit queue, clearing splits and local-spend breakdown are refused outright. The same rule bars an outside operator whose seat is not scoped to finance.

    Territory developers run their development job without being handed every unit’s profit and loss.

Royalty statement and tax invoice — one outlet, one month

Illustrative figures. The arithmetic is the engine’s: royalty and ad fund on gross, GST on the taxable value, TDS on the pre-GST base. One section and one rate apply to the whole invoice — 194J is 10% on royalty but 2% on fees for technical services, so agree with your CA which section a bundled technology fee falls under before this becomes your default.
Gross sales declared and approved ₹18,40,000
Royalty at 6% of gross ₹1,10,400
Minimum guarantee ₹75,000 Not applied
Ad fund at 2% of gross ₹36,800
Technology fee, flat per period ₹5,000
Taxable value ₹1,52,200
CGST 9% ₹13,698
SGST 9% ₹13,698
Invoice total ₹1,79,596
TDS 194J at 10% on ₹1,52,200 −₹15,220
Expected in the bank ₹1,64,376

Rule 46 particulars, minus the signature blockCGST + SGST — same stateOne TDS section per invoice — 194J at 10% here

Representative interface

The invoice, the tax and the money in

  • CGST and SGST, or IGST, from place of supply Module ↗

    The engine compares place of supply against your own state code: same state charges CGST plus SGST at half the rate each, a different state charges IGST at the full rate, and the split is stored so it never drifts.

    Interstate invoices carry the right tax head without anyone remembering which franchisee is where.

  • It refuses to guess the supply type Module ↗

    If your workspace has not configured its own state code, the engine charges no split at all rather than picking one — a guessed head is a legally wrong invoice. Reverse charge and a zero rate both collapse to no tax, with the total equal to the taxable value.

    A misconfigured tax profile produces a visibly incomplete invoice instead of a confidently wrong one.

  • Org tax profile as the invoice default Module ↗

    GSTIN, state code, default SAC (998311, the consulting code, out of the box — a franchisor billing royalty usually wants 998396 for trademarks and franchises, so this is a day-one setting rather than a leave-it), default GST rate (18) and the expected TDS section and rate (194J at 10%) live in settings and seed every new invoice. A non-GST workspace gets a clean untaxed ledger rather than empty tax fields.

    Whoever raises the invoice does not need to know the tax answers — they are already on the organisation.

  • Rule 46 fields on the document Module ↗

    The tax invoice PDF carries the number and date, place of supply, the customer’s name and GSTIN, the SAC on the line, taxable value, the CGST and SGST or IGST split, the amount in words and the grand total in rupees, with the reverse-charge statement printed even when the answer is no — presenting the stored figures without recomputing them. Two Rule 46 particulars are not on it yet: the supplier’s signature block, and the recipient’s full address, where the PDF prints their city.

    Your CA gets a document already carrying almost every field they ask for, and the PDF can never disagree with the ledger it evidences. Raise the signature block with us before you issue from it.

  • Gapless invoice numbers per financial year Module ↗

    Numbers follow a pattern you configure with financial-year and sequence tokens, allocated from a per-workspace per-year counter under a row lock inside the same transaction as the insert, restarting each fiscal year.

    No duplicates and no burnt numbers when two people raise invoices at once — the thing a GST audit actually looks for.

  • TDS shown as expected, not as a shortfall Module ↗

    The invoice carries the TDS section — 194J, 194H, 194C or none — and rate, computes the withholding on the pre-GST taxable base, and stores the expected net receipt alongside the gross total.

    You know before the payment arrives what will actually land — on the illustrative invoice above, ₹1,64,376 against a ₹1,79,596 bill, because the withholding is on the pre-GST value and the invoice is not — so nobody chases a franchisee for money that went to the government.

11 more in this group
  • Partial payments settle progressively Module ↗

    Each receipt records net cash, TDS withheld, mode — NEFT or RTGS, UPI, cheque, card, cash — date and reference. The invoice flips to settled only when receipts cover the billable total, and deleting a receipt reopens it.

    Part payments stop being either paid or unpaid; the balance is the truth and it moves on its own.

  • TDS credit ledger for 26AS Module ↗

    A receipt with tax withheld opens a credit line stamped with the section and the TDS return quarter, walked through awaited, Form 16A received, matched in 26AS, then claimed or mismatch, with the deductor’s TAN captured.

    The tax your franchisees deducted is tracked as an asset you will reclaim, per quarter, instead of as a permanent list of fake shortfalls.

  • Receivables that do not double-count Module ↗

    Outstanding is the GST-inclusive total of open invoices less the receipts banked against them, split into 0–30, 31–60, 61–90 and 90-plus day buckets off the due date, with TDS still unrealised reported separately.

    Outstanding plus collected equals what you billed, so the ageing report survives being checked.

  • Dunning ladder with a promise-to-pay pause Module ↗

    A daily run records a reminder for each open invoice as it crosses a configured offset — T-3, T0, T+7, T+15, T+30 by default — once per offset per invoice, writing it to the franchisee’s timeline. An invoice with a future expected payment date is skipped, and the ladder resumes if that date passes unmet. The reminder is recorded, not emailed — outbound mail is not wired.

    Chasing happens on a schedule rather than when someone is annoyed, and a franchisee who committed to a date is not chased for keeping their word.

  • Credit notes with the section 34 cutoff Module ↗

    A credit note records a reason — service deficiency, rate error, negotiated reduction, cancellation — and an amount, and a GST-adjusting note is refused after 30 November following the invoice’s April–March financial year, telling you to issue a commercial note instead. Section 34 is the earlier of that date and the day you file that year’s annual return; the software checks the 30 November limb, so if you file the return first, a note between the two dates will still pass.

    The limb everyone misses is enforced by the software rather than discovered by your CA in December — with the annual-return date still yours to watch.

  • GSTR-1 B2B export Module ↗

    Pick a month and download the B2B section as CSV — GSTIN, invoice number and date, taxable value, rate, CGST, SGST, IGST, total and place of supply — covering only issued, numbered invoices carrying a stored tax split.

    Filing month stops being a re-key out of the system into a spreadsheet.

  • Fee schedules as plans and milestones Module ↗

    A fee plan carries the structure — retainer, lump sum, milestone, success fee, hybrid — contract value, retainer amount and frequency, success-fee basis, and its own GST rate and SAC. Milestones under it carry a title, trigger, date and amount.

    Franchise fee, renewal, training and brand charges become a schedule the system bills from, not a note in somebody’s inbox.

  • One milestone, one invoice Module ↗

    Only an invoiceable milestone can generate an invoice, and the check and the transition happen under a row lock, so two simultaneous clicks cannot mint two invoices. The plan’s own GST rate and SAC override the organisation default.

    Nobody double-bills a franchisee because the button was pressed twice.

  • Live tax preview that matches the engine Module ↗

    The invoice composer recomputes the split, total, TDS and net receipt in the browser as you type, using the same rules the server applies when it saves.

    What you see before you press save is what gets stored on the invoice.

  • Your statuses, our engine Module ↗

    Invoice types and statuses, payment modes, TDS credit statuses, credit-note reasons, fee structures and milestone triggers are tenant-editable lists, and receivables, settlement and the dunning ladder key off a status’s role — open, settled, void — rather than its label. Royalty statement statuses are the exception: the royalty engine still matches those by key, so leave them alone.

    You can rename "Sent" to "Raised" without breaking the receivables total.

  • E-invoice IRN Partly built Module ↗

    Invoices carry the IRN, its status and a QR payload as columns with a status vocabulary, so the screen can show a "not connected" state. There is no IRP integration behind it.

    There is somewhere for the portal’s response to land when e-invoicing is wired, and until then the screen says so instead of implying it is done.

The marketing fund, and the books

  • Ad fund as its own ledger Module ↗

    Contributions in, brand spend out and franchisee-recorded local spend are three kinds on one fund ledger, each expenditure carrying a category — production, media placement, administrative, other — a campaign reference and a region.

    An annual breakdown of what the fund collected and where it went is a query rather than a reconstruction, which is what franchisees ask for.

  • Fund plan: contribution rate and local minimum Module ↗

    A fund plan sets the contribution basis — percentage of gross or flat — the rate, the minimum local spend required of each unit, and whether corporate-owned units contribute.

    The rule your agreement states about the marketing fund becomes a configured object rather than a paragraph nobody enforces.

  • Fund statement with a commingling flag Module ↗

    Closing a fund period computes opening balance, contributions, expenditures and closing balance from the ledger, records the ad-fund amount royalty accrued for the same period for reconciliation, and raises a flag when spend exceeded what was available. The statement can then be marked issued to franchisees and audited.

    You can hand franchisees a fund accounting that reconciles to the royalty run, and the flag catches the fund being spent beyond its own money.

  • Local-spend shortfall list Module ↗

    For a period it compares each unit’s recorded local marketing spend against the plan’s minimum percentage of that unit’s reported gross, and returns the units that fall short with the required, recorded and shortfall amounts.

    The local marketing obligation is checked per outlet per month instead of being remembered at renewal.

  • Approving an expense is what posts it Module ↗

    An expense is captured with date, category, vendor, invoice number, taxable amount and tax, then approved or rejected. Approval writes the balanced ledger entry, stamps who approved it and when, and links the entry to the claim.

    An approval that does not move the books is a rubber stamp. Here they are the same act, so what was approved and what was spent cannot diverge.

  • Reimbursement and recharge are one object Module ↗

    Every claim carries who paid — brand or outlet — and whose cost it is. When they differ, the cost lands on the other party’s khata instead of in the payer’s expenses, and reimbursing posts the entry that clears it.

    What a franchisee calls "my reimbursement" and you call "recharge" is one record, so the two sides cannot disagree at month end.

3 more in this group
  • Pure-agent posture on a recovery Module ↗

    A claim carries a GST posture of none, pure agent under Rule 33, or taxable recovery. A pure-agent recovery passes through at gross with no tax added; a taxable recovery recovers the taxable value as a supply in its own right.

    A brand that pays a bill on a franchisee’s behalf does not accidentally become a taxable supplier of the thing it merely paid for.

  • A ledger that has to balance and cannot be edited Module ↗

    Every posting must balance or it is refused, and nothing edits or deletes a posted entry — there is one write path and no update or delete route behind it. A reversal primitive exists in the service layer but is not yet reachable from the product.

    A royalty figure derived from these rows is evidence rather than an opinion, because the history cannot be rewritten.

  • Money is gated separately from everything else Module ↗

    Reading and writing fees, royalty, sales and ad fund are eight distinct named capabilities, and the royalty, ad-fund and sales-capture route groups each sit behind their own feature entitlement, so a workspace without them never reaches the routes at all.

    A field team can work leads and visits without anyone’s rate card or receivables being visible to them.

Where we stop, on money

We compute the statement, raise the Rule 46 invoice with the right GST head, show the TDS the franchisee will deduct, and chase it on a ladder that pauses the moment they commit to a date. We do not send the email and we do not take the payment. The reminder is a row on the franchisee’s timeline, and the money lands in your bank, never in ours.

Not built yet — on the plan

Nothing in this group is built yet, and every row is tagged that way. It is here because you will ask, and because a roadmap you can argue with beats one you find out about later — what we build next should be decided by the people paying for it, so tell us which of these actually blocks you.

  • Pay this invoice — a link on every franchisee bill Not built yet Module ↗

    Each royalty or fee invoice carries a payment link, UPI included, and a payment against it writes the receipt and settles the invoice with no re-keying.

    Collection stops depending on a bank transfer somebody remembers to reference correctly, and receivables move the moment the money does.

  • Mandate-based collection: e-NACH and UPI AutoPay Not built yet Module ↗

    A franchisee signs a mandate once, and the monthly royalty presents against it on the due date, with failures raised into the dunning ladder instead of into somebody’s inbox.

    Royalty collection stops being a chase. This is the feature franchisors ask for before any other in the money conversation, and it is the one that moves DSO rather than measuring it.

  • The dunning ladder that actually sends Not built yet Module ↗

    Each rung of the reminder ladder goes out by email and WhatsApp on its date, with the invoice and the statement attached, and the promise-to-pay pause still holds it back.

    The chase that today is a row on a timeline becomes a message in the franchisee’s hand, which is the difference between a record of chasing and being paid.

  • Tally and Zoho Books sync Not built yet Module ↗

    Invoices, receipts, credit notes and the tax split post into Tally or Zoho Books on a schedule, keyed so a re-run corrects rather than duplicates.

    Your finance team stops re-keying every royalty invoice into the books, which is where the two systems currently start disagreeing.

The line to leave in the room The franchisee can rebuild the number from their own sales figure. That is the whole design, and it is why royalty stops being an argument.

Agreements, signature, territory

The contract as a record, not a PDF in a drawer

The terms you will be asked about in year three — renewal window, notice period, what territory was granted, who signed and from where — are the ones that live in a scanned document nobody opens. Here they are fields.

The agreement

  • The terms as fields Module ↗

    Stores a franchise, development, master, disclosure, NDA or other contract with effective and expiry dates, term months, renewal count and years, notice-period days, counterparty type, entity name, ownership percentage and contract value, tied to the franchisee’s record.

    The renewal date, the notice window and who actually signed become queryable data instead of clause 4 of a document nobody opens.

  • Renewal creates a fresh record Module ↗

    Renewing marks the current agreement renewed and creates a new active one running the same span again from the old expiry date, carrying over owner, ownership percentage, term, notice period and value.

    You can still show what the terms were in 2022 and what they are now, because the renewal did not overwrite the contract it replaced.

  • Key-date triggers with a lead-time offset Module ↗

    Any dated obligation — renewal window, expiry, insurance expiry or one you name — is recorded with a due date and a number of days’ notice, and moves upcoming to due to passed on its own.

    You are told ninety days before the renewal window opens, not on the day the agreement lapses.

  • A nightly sweep moves the ladder Module ↗

    A scheduled command runs every morning, walks every workspace’s key dates and insurance certificates, advances each along its ladder, and writes a note on the franchisee’s timeline on every change.

    The reminder happens whether or not anyone opened the app, and the franchisee’s file shows the date the warning was raised.

  • Acknowledging a trigger names a person Module ↗

    A due key date is closed by somebody acknowledging it, which stamps the user and the timestamp. The daily sweep never touches an acknowledged trigger again.

    Somebody owns the renewal conversation, and there is a record that they did.

  • Expiring in the next thirty days, on the band Module ↗

    The agreements stat band counts active agreements and the total contract value across active and renewed, each with a weekly trend, plus the agreements whose expiry falls inside the next thirty days.

    Renewals stop being something you notice when the franchisee calls.

2 more in this group
  • Amendments are append-only Module ↗

    An amendment carries an effective date, a summary and a document reference, and there is deliberately no route to edit or delete one.

    The variation history of a contract cannot be quietly rewritten, which is the only version of it worth having in a dispute.

  • Insurance certificates on their own ladder Module ↗

    A certificate is filed against the agreement and the unit with carrier, coverage types — general liability, workers’ comp, auto, umbrella, property — and expiry; its status is computed from that expiry on a 60/30/15-day ladder rather than typed in.

    You can answer "which units are uninsured right now" without emailing forty franchisees for a PDF.

Signing

There is no e-sign provider vouching for any of this, which is exactly why the trail is built the way it is. And one boundary before the detail: the signer’s ceremony is a real screen, but the brand half — open the session, inspect the certificate, seal it — runs through the API today with no console button, so in a walkthrough we drive that half from the API and you watch the franchisee’s screen do the rest.

  • A signing link the counterparty opens without an account Partly built Module ↗

    Opening a session on an agreement mints a 48-character token URL with a fourteen-day expiry; the franchisee opens it in a browser with no login and no app.

    The person signing is usually not a user of your system yet, and making them create an account is where signing flows die.

  • Email OTP before the signature is accepted Module ↗

    The signer requests a code to the email address you already hold, and the server refuses the signature outright if the code has not been verified. The code is issued for signing specifically, so it can never be replayed as a login.

    Mailbox possession is the identity evidence. A signature captured without it is a picture of a name.

  • A drawn signature and an explicit tick Module ↗

    The ceremony requires both a signature drawn on the pad and the assent checkbox, and the API rejects the submission if either is missing.

    A squiggle alone is not consent and a ticked box alone is not a signature — the record holds both.

  • Declining is a recorded outcome Module ↗

    The signer can decline from the same page, optionally saying why; the session moves to declined and the refusal is written into the trail.

    An abandoned tab and a refusal look identical over email. Here they do not.

  • Hash-chained trail with IP and user agent Module ↗

    Every step — created, sent, viewed, code sent, code verified, signed, sealed, declined — is appended to a ledger row carrying IP, user agent, timestamp, and a SHA-256 of the previous hash plus its own canonical payload. The table has no updated column, because an event never changes.

    Alter any event after the fact and every hash after it stops matching — and the system tells you at which step it broke.

  • Sealing writes the signature back onto the agreement Module ↗

    Sealing a signed session makes it immutable, stores a hash over the certificate facts, and stamps the agreement with the signed-at time, the signer’s name, the IP captured at the moment of signing, and status active.

    The contract record and the evidence stop being two systems, and the DPDP erasure path never reaches a sealed instrument or its ledger.

2 more in this group
  • Signing certificate with the chain’s verdict Partly built Module ↗

    Returns the signer’s name and email, the method, when the code was verified, when it was signed and sealed, the sealed document’s hash, whether the chain is intact, and every event with its sequence, time, IP and hash. The signer-facing ceremony is a real screen; the brand-side session — open it, inspect the certificate, seal it — runs through the API today, with no console button yet.

    Everything an arbitrator, a lender or an anxious franchisee needs in order to satisfy themselves the signature is real, on one page.

  • Stamp duty on the signed instrument Partly built Module ↗

    The signing session holds the state code, the duty amount and the SHCIL e-stamp certificate number. The columns exist and nothing writes them yet — no endpoint and no screen.

    Named here because a franchisor will ask about stamp paper, and the honest answer today is that we have the place for it and not the workflow.

Territory

  • Defined the way you actually sell it

    A territory records its definition method — PIN list, district, radius, drive time or polygon — with up to 5,000 geo units, plus region, population, median income, daytime population and written performance conditions.

    The rights you granted are a list of PIN codes you can point at, not a paragraph two people remember differently.

  • Grant type and the rights you keep back

    Each territory is granted exclusive, protected or non-exclusive, with the reserved rights recorded as a multi-select: online sales, wholesale, national accounts, alternative brands, non-traditional locations.

    The carve-out that causes a dispute four years later — who owns online orders into their PIN codes — is on the record at grant time.

  • Reserve on a deposit, with a hold that expires

    A hold flips the territory to reserved and records the deposit and an expiry. The territory row is locked and re-checked inside the transaction, so two people cannot reserve the same territory at the same moment.

    You can hold a city for a serious prospect without taking it off the market forever, and the race that would double-promise it is closed in the database.

  • Expired holds release themselves overnight

    A daily sweep expires held reservations whose window has passed, returns the territory to available, and writes a note on the prospect’s timeline.

    Territory stops silently sitting on hold because a deal went quiet and nobody tidied up.

  • Converting a reservation freezes the grant

    Converting on award moves the territory to committed and freezes a snapshot of the name, region, definition method, geo units, grant type, reserved rights and performance conditions, with the moment it was frozen.

    What was granted stays granted as at that date, even if you later redraw the map.

  • Agreement-grade territory export

    Returns the canonical geo units and grant terms for a territory, flagged frozen or not and with the date they were frozen — a draft can be previewed but is marked as not yet binding.

    The territory schedule attached to the franchise agreement comes out of the system rather than being retyped into the contract.

1 more in this group
  • Sub-territories with a development schedule

    A master territory owns sub-territories and carries a development schedule of unit-count-by-deadline rows plus a fee split percentage; a rollup shows each master’s quota against how many sub-territories are actually committed, and whether it is on track.

    An area developer’s unit obligations become a number you can hold them to at review time, without a spreadsheet.

The line to leave in the room The signature, the terms and the map are one record — and none of the three can be edited quietly after the fact.

Getting outlets open on the date you promised

An opening plan that knows what the paperwork takes

An opening plan that ignores licence processing time is a wish. These start from what the paperwork actually takes in India, and they lock the phases that must not be worked ahead.

The plan

  • The fifteen-phase opening journey Module ↗

    Every opening runs the same platform sequence: signing, entity and finance, site selection, LOI and lease, design and fit-out, licensing, construction and equipment, tech activation, hiring, training, stock and supply, pre-launch marketing, soft launch, grand opening, stabilization.

    Head office, the field team and the franchisee are looking at the same plan with the same names for the same steps.

  • Six industry packs with Indian licence durations built in Module ↗

    F&B and QSR, education centre, salon and wellness, pharmacy, retail store and premises-light services packs are seeded per workspace, carrying researched processing times as ordinary editable durations — Shops and Establishment 5–10 days, GST registration 7, trade licence 7–15 general and 15–30 for health trades, fire NOC 15–30, FSSAI state 30–60, eating-house licence with the police 15–25 in the states that require one, drug licence 30–45 after inspection.

    Your first plan is built on what the authority actually takes rather than on an optimistic guess that gets learned once per opening.

  • The pharmacy pack models the pharmacist-before-licence inversion Module ↗

    In the pharmacy pack, hiring the registered pharmacist is a real predecessor of the drug-licence application, because the application cannot be made without one.

    The sequencing mistake that costs six weeks is already in the template instead of being discovered on your first pharmacy opening.

  • Back-scheduling from the opening date Module ↗

    Each task declares an anchor — project start, a predecessor, or the target open — with an offset and a duration, and the planner lays the whole thing out in day offsets. A predecessor offset of zero starts immediately after its prerequisite ends; a negative one overlaps.

    You pick the opening date you want and the plan tells you the site has to be signed by a particular week, rather than adding up the steps and hoping.

  • Moving the date recomputes every window Module ↗

    Retargeting rewrites the planned start and end of every task from the plan’s own scheduling data, without re-reading the template.

    The date slips once and the whole plan moves with it, instead of thirty dates going stale.

  • Clone a pack to edit it; platform packs stay read-only Module ↗

    A workspace customises a template by cloning it into its own numbered version with every task copied. Writes against a platform pack are refused, though you can still mark one as your default.

    Your edits are yours and versioned, and the pack you started from is still there to compare against.

1 more in this group
  • Applying a template snapshots it onto the outlet Module ↗

    Applying copies title, phase, gate, criticality, assignee and the scheduling triple onto each task row and remaps template-local dependencies to real tasks. A project that already has a journey refuses a second template.

    Editing your library next quarter never rewrites an opening that is already halfway through.

Opening plan — F&B pack, one outlet

Illustrative. The durations are the shipped pack’s own defaults; the dates come from the opening day you set.
Shops and Establishment registration 5–10 days
GST registration 7 days
Trade licence — health trade 15–30 days
Fire NOC 15–30 days
Eating-house licence — police, where required 15–25 days
FSSAI State licence 30–60 days
Gate that locks construction Design and fit-out sign-off
Board turns red when slip exceeds 7 days
Projected opening day Target, pushed out by the worst slip on a critical task

Six packs seeded per workspaceDurations are editableCloned packs are versioned

Representative interface

The gates

  • A phase stays locked until the earlier sign-off is approved Module ↗

    A phase is locked while any gate in any earlier phase is unapproved, and every mutation on a task — complete, block, approve — is checked against that on the server, so nobody can work ahead by posting straight at the API.

    No construction before the drawings are approved. The rule is in the database, not in a policy document.

  • Only a sign-off clears a gate, and only the brand can give it Module ↗

    Gates are approval tasks. Ticking a checklist item — even a milestone — can never open the next phase, approval tasks refuse to be marked done, and a decision on a project’s gate is restricted to the tenant that owns the project.

    An outlet cannot sign off its own opening, and an assignee cannot clear a gate by ticking their own task.

  • Franchisor-only steps are hidden but still gate Module ↗

    Tasks marked franchisor-only are filtered out of the outlet’s view and cannot be touched from the outlet side, while the gating still evaluates the full list.

    An internal credit check keeps the franchisee’s next phase locked without showing them a step that is none of their business.

  • The licences sign-off reads the register, not a checkbox Module ↗

    Approving the licences-verified gate is refused, naming the offending items, when the unit has a mandatory statutory licence that is missing or expired — and the statutory library is seeded on the spot, so the gate cannot pass merely because nobody ever opened the compliance screen.

    An outlet cannot be signed off as licence-clear because someone senior ticked a box in a hurry.

  • Grand open refused while a sign-off is outstanding Module ↗

    Marking a project opened returns an error counting the unapproved sign-offs. Once it succeeds, the actual open date becomes the baseline every downstream clock measures from.

    Opening day is a fact the system agrees with, which is what makes royalty, reporting cadence and stabilization trustworthy afterwards.

  • Launch readiness gates Module ↗

    A launch record carries six named booleans — training complete, buildout sign-off, licences verified, POS live, staff hired, soft open done — set one at a time. It cannot be marked opened while any is unmet, and it cannot be created already-opened either.

    "Are we ready to open" has a definite answer with the missing items named, on both the mark-opened button and the generic edit path.

1 more in this group
  • The licences gate is re-checked even when it is ticked Module ↗

    At mark-opened, licences-verified is forced false whatever the stored flag says if the unit has any licence record in expired or missing status.

    The one gate people are tempted to tick optimistically is the one the system checks again.

Running thirty openings at once

  • Exceptions-first board with a colour per outlet Module ↗

    The opening command centre defaults to the projects with exceptions — red when slip exceeds seven days or a gate or critical task is already overdue, amber when anything is late or blocked — sorted worst first, with the pending approval inbox and the bottleneck table on the same screen.

    A field director opens one screen and sees which of thirty openings are in trouble and what would unstick them, rather than reading thirty plans.

  • Projected opening day driven by critical-path slip Module ↗

    The projected open is the target pushed out by the worst slip on a critical task — measured against today for an unfinished one, or against when it actually landed for a finished one. Slippage on non-critical tasks is visible but never moves the date.

    The date on the screen is the date the outlet will open, not the date somebody promised in January.

  • Blocked tasks carry a reason from a fixed list Module ↗

    A task is flagged blocked with one of awaiting landlord, awaiting authority, awaiting brand, awaiting vendor or awaiting funds, plus a free note. Completing a task clears the block.

    Because the reasons are a fixed list, the network can be counted — "half your openings are waiting on landlords" becomes a number rather than an impression.

  • Bottleneck table: average slip per template step Module ↗

    Across every opening, tasks are grouped by the template step they came from and ranked by average days of slip, with how often it slipped and how often it was blocked.

    You learn that your own fire-NOC estimate is twelve days optimistic and fix the template, instead of chasing each franchisee.

  • Days to open and days to first bill Module ↗

    Reports the average days from project start to opening across opened outlets, and the average days from opening day to the outlet’s first recorded sale.

    Two numbers that say whether your opening process is getting faster, and whether new outlets start trading on day one or three weeks later.

  • Problem locations and the most overdue tasks Module ↗

    A rollup ranks the worst eight unopened locations by overdue milestones and overdue tasks with a pace signal — on track, at risk, overdue — and lists the twelve most overdue individual tasks with how late each is and which outlet it belongs to.

    A weekly openings call runs off two lists instead of a project-by-project readout.

3 more in this group
  • Onboarding checklist per franchisee, with dependencies Module ↗

    Items filed under a franchisee carry a phase, an assignee type, a due date, a planned start and end, a sequence, a dependency on another item, and milestone and franchisor-only flags, with totals for completed, blocked and overdue.

    The pre-opening list for one franchisee is a plan with owners and dates, not a shared spreadsheet.

  • Opening budget against actual spend Module ↗

    A launch holds the target open date, the soft and grand open dates, the opening budget and the actual spend.

    What the opening was supposed to cost and what it did cost sit on the same record as the dates.

  • Opened units that owe a sales report Module ↗

    A board listing every opened outlet with no sales report filed for the current month.

    The reporting cadence starts the day the shutter goes up, and the gaps are visible while the month is still running rather than at royalty close.

The line to leave in the room You set the opening day, and the plan tells you what has to start this week for that date to survive.

Standards, audits, licences, documents

Holding a standard across people who do not work for you

An audit that closes because somebody clicked submit changes nothing. An audit that cannot close until the failed critical items have owned corrective actions against them changes the next visit.

Audits and visits

  • Audit template builder Module ↗

    Build a scorecard as weighted sections of scored questions, each with a maximum score, an N/A toggle, a response type — yes/no, score, text — and a critical-item flag. A template carries a draft, active or archived status you set; nothing yet stops a draft template being used on a visit.

    Your brand standards become something the field team scores against, instead of a checklist that differs by whoever printed it last.

  • Additive or deductive scoring, with N/A removed from both sides Module ↗

    Score either as points earned out of the maximum or as points deducted from it. N/A answers leave the numerator and the denominator, and sections combine as a weight-weighted average.

    An outlet with no kitchen is not marked down for the kitchen section, and a brand that runs demerit-style audits does not have to invert its own checklist.

  • Critical items that fail the whole visit Module ↗

    A question marked force-failure that scores zero fails the visit regardless of the arithmetic, and the visit is stamped poor on the universal good/fair/poor reading whatever percentage it earned. The band letter itself still reflects the score.

    A food-safety auto-fail cannot be reported to the network as a good visit, which is what keeps the critical-item mechanism real rather than decorative.

  • Corrective-action gate on completion Module ↗

    Where the template requires it, a visit cannot be completed until every failed critical question has a finding with a corrective action raised against it — enforced on the complete action and on the generic update, so there is no second door.

    The audit is closed by its actions being raised, so the same finding stops reappearing three months later because nothing owned closing it.

  • Twelve visit types you can rename Module ↗

    Visits ship with twelve seeded types — compliance audit, brand standards, food safety, business review, mystery shopper, training, pre-opening check, regulatory inspection, maintenance, stock, marketing compliance, general inspection — as an editable vocabulary rather than a fixed enum.

    A brand that calls it a QBR and one that calls it a business review both get their own word, while a regulator’s inspection stays structurally separate because it is somebody else’s visit.

  • A live score in the outlet that matches the server Module ↗

    The field screen captures a score, an N/A flag and a note per question, saves answers as an upsert that re-scores the visit, and shows a running percentage computed by a client mirror of the server’s scoring engine.

    The auditor sees the score they are about to hand over while still standing in the outlet, and it is the same number the server persists.

8 more in this group
  • A completed visit is a closed record Module ↗

    Once a visit is completed its answers can no longer be edited; the endpoint refuses rather than silently re-scoring.

    Nobody can quietly improve last quarter’s score after the gate it passed.

  • Grading bands you set Module ↗

    The raw percentage is computed by the engine and never overwritten. The band label — A/B/C, red/amber/green, whatever you use — is a workspace setting resolved at completion, alongside a universal good/fair/poor reading.

    Re-banding your scale changes what today’s visits are called, not what last year’s visits scored — and dashboards can still ask whether a visit was good.

  • Findings to corrective actions, tracked to verification Module ↗

    A finding carries a severity — low, medium, high, critical — and hangs corrective actions with an assignee, a due date, a resolution note and a status of open, in progress, resolved or verified. Marking one verified stamps who verified it and when; un-verifying clears both.

    A closed action has a name and a timestamp against it, so "we fixed that" is checkable rather than asserted.

  • The open corrective-action queue Module ↗

    One list across the whole workspace of corrective actions, filterable by status and ordered by due date first.

    The overdue remediation across forty outlets is one screen, not forty visit reports somebody has to open.

  • External inspection register Module ↗

    File a regulator’s visit as a first-class record: the authority, the notice or reference number, the outcome, the penalty amount and the statutory deadline — filed as completed with no score, because you are recording what somebody else decided. A notice, penalty or closure outcome reads as poor, and the deadline is indexed.

    The FSSAI officer’s visit stops being something you hear about second-hand.

  • Visit statistics and score trend Module ↗

    One call returns counts by status, the average score, the pass rate, the last twelve completed scores as a trend, the total findings raised and the open corrective actions.

    Audit performance across the network is a number you can put in front of a board, not a spreadsheet somebody rebuilds each quarter.

  • Audit score feeds unit health and peer benchmarking Module ↗

    Completed scores roll into each unit’s period rollup, carry a fifth of the default health score, and raise a warning for any unit sitting in the bottom quartile of the network. Never having been audited scores as a gap rather than a pass.

    A weak outlet surfaces from its own audit history without anyone running a report.

  • Photo evidence on a checklist item Partly built Module ↗

    Visit answers and corrective actions carry photo reference columns, but nothing uploads a file to them — the only upload endpoint in the product is the organisation logo — and the conduct screen captures score, N/A and note only.

    Said out loud because a franchisor will ask on the first visit screen they see. The seam is there; the camera is not.

Licences and compliance

  • A seeded Indian statutory licence library Module ↗

    Every workspace seeds a brand pack — trademark, GST registration, FSSAI central licence, EPR plastic packaging, POSH committee, Udyam — plus one of five industry outlet packs for F&B, pharmacy, salon, education and retail, each item carrying its authority, cycle, validity, renewal window, alert ladder, mandatory flag and a paragraph of guidance.

    The register starts populated with the guidance a renewal actually needs — FSSAI renewal opens 180 days ahead, the ₹100-a-day late fee bites inside the last 30, and after expiry it escalates to 3× for 90 days then 5×, with the licence dead at +180 — plus the municipal trade licence’s April–March year and the drug licence’s five-year retention fee, instead of starting blank and being filled in from memory.

  • Required versus held, worst first Module ↗

    The register compares what a unit must hold against what it does hold and sorts by severity — lapsed, expired, missing, due, flagged, ok, not tracked — so a mandatory obligation with no record at all is a row rather than an absence you have to notice.

    You open the screen to find the outlet that never had a fire NOC, not to browse a filing cabinet you already know is fine.

  • Network compliance portfolio Module ↗

    One call returns a register per franchisee unit plus your own head-office register, each with its counts and its blocking items.

    Exposure across the whole network is one screen with the broken units impossible to miss.

  • Licence clocks that behave differently Module ↗

    The register models fixed-year, annual, perpetual-with-retention, no-expiry and state-variable cycles, and derives an expiry from the issue date where the statute implies one.

    A pharmacy’s Form 20/21 tracks its retention due date rather than a fake expiry, and a GST registration never appears on a renewal ladder it has no business being on.

  • An append-only review trail per licence Module ↗

    Every record stamps the person who filed it and, on review, the reviewer, the timestamp and a note. Each decision — approve, comment, flag renewal, reject evidence — is written to a separate append-only table with its from and to state. Reassigning a record to a different owner is not yet possible.

    Flagging a licence never erases where the record had got to, and the history of who looked at it survives.

  • Daily expiry sweep on a 60/30/15 ladder Module ↗

    A scheduled command recomputes every licence’s status against the ladder each morning and writes a note on the unit’s timeline the day it crosses into expiring or expired.

    You learn about a lapse from the system before you learn about it from the franchisee, and it costs nobody a diary reminder.

1 more in this group
  • Missing-licence insight raised per unit Module ↗

    A critical insight names the mandatory licences a unit does not hold, deduplicated per period, and closes itself when the condition stops holding.

    Compliance exposure arrives in the same severity-sorted stream as overdue royalty, rather than in a report someone has to remember to run.

Documents

  • A vault attached to the record, not a folder Module ↗

    A register of KYC, disclosure, agreement, certificate and other documents, each with a reference, an expiry, a public, internal or role-scoped access level, an optional review cycle in months, and an attachment to the franchisee it belongs to. It stores the metadata and a reference string — there is no file upload endpoint, so scans are referenced rather than held.

    Documents sit with the record they belong to, and one with a review cycle comes back around on its own.

  • Versions supersede rather than overwrite Module ↗

    Publishing a new version mints the next version pointing at the one it supersedes and archives the prior, taking a row lock first so two concurrent updates cannot both branch a version two.

    There is exactly one current operations manual, and the superseded one is still readable rather than gone.

  • Read-and-sign, with a who-has and who-has-not report Module ↗

    Assign a document to named users or a role target; each assignee starts unacknowledged, acknowledging stamps the time, the typed name and the IP, and the screen reports both sides. Publishing a new version re-creates a pending acknowledgment for every prior assignee.

    The updated operations manual is provably in front of every franchisee, with the ones who have not opened it named — and a revised manual forces a fresh read rather than inheriting last year’s signature.

  • Issued documents are immutable Module ↗

    A generated PDF is rendered once, hashed, and stored outside the web root. Every download re-checks the hash and refuses to serve a file that no longer matches, and re-issuing mints a new record rather than rewriting the old one.

    The copy a franchisee already holds keeps saying what they received, which is the only basis on which a tax document means anything.

  • A revocable public link on an issued document Module ↗

    Minting a share token makes a document downloadable with no login and counts the downloads; revoking nulls the token while keeping the file and its hash, and a revoked link returns a plain 404.

    You send a franchisee or their CA the actual document instead of a screenshot, and take the link back without saying what it used to point at.

Documents, rendered for India

  • PDFs that set Devanagari properly Module ↗

    Generated documents run through a PDF engine chosen for Devanagari shaping, so a franchisee’s name in Hindi on a royalty bill is the name and not a row of boxes.

    The document you send an Indian franchisee is one you would be willing to have printed and put in front of an inspector.

Not built yet — on the plan

Nothing in this group is built yet, and every row is tagged that way. It is here because you will ask, and because a roadmap you can argue with beats one you find out about later — what we build next should be decided by the people paying for it, so tell us which of these actually blocks you.

  • Audits captured with no signal Not built yet Module ↗

    The audit app holds a whole visit — scores, notes and photos — on the device inside a basement kitchen or a highway outlet, and syncs when the phone reconnects, with the score computed on the device meanwhile.

    Your auditor stops carrying paper into the places where the audit actually matters, and the visit reaches head office the same day rather than on Monday.

  • Evidence you can actually attach Not built yet Module ↗

    Licence scans, audit photos, insurance certificates and signed agreements upload against the record they belong to, with the file held in the vault and versioned like everything else.

    “Send me the FSSAI certificate” stops being an email thread, and a licence register that holds a number and a date starts holding the document too.

  • Training and certification for outlet staff Not built yet Module ↗

    Modules, assessments and certificates per role sit under the training phase of the opening journey, and the training gate reads whether the named people actually passed rather than whether somebody ticked it.

    The training obligation your agreement puts on you becomes evidence you can produce, and a new outlet’s staff are certified before the gate that says they are.

  • A marketing asset library Not built yet Module ↗

    Approved logos, creatives, campaign kits and local-store templates live in one place the network downloads from, versioned, with the superseded version withdrawn.

    A brand collecting an ad fund every month has somewhere to put what the fund produced, and off-brand local creative stops being the default because the right file was hard to find.

  • Customer feedback and NPS per outlet Not built yet Module ↗

    A feedback capture at the counter and public review scores roll up per unit and per period, trend against the network, and sit beside the audit score on the same unit health reading.

    You see the outlet the customers have already downgraded before your next scheduled audit finds out, and the mystery shop stops being your only outside opinion.

The line to leave in the room A standard you cannot evidence is a preference. Every gate here refuses on data rather than on somebody’s word.

Running a network you do not employ

The channel between head office and forty owners

Franchisees do not report to you. Everything you need from them — the month’s sales, the number and expiry on a licence they just renewed, an answer to a discount request — arrives only if asking is easier than not asking, and only if you can see who has not answered. One setup decision up front: requests, chat and announcements are queues inside a workspace, so how you and your network share one — a single workspace with outlet memberships, or separate consoles — is something we decide together rather than something that routes itself.

The network

  • Outlet records are free; outlet logins are the paid unit Module ↗

    Creating outlet records is unlimited. Issuing a login to an outlet consumes a seat, counted as members plus still-usable pending invitations, and an over-cap invitation is refused with the seat ledger attached. The limit resolves from the outlet’s own entitlement first, then the brand’s.

    You map your whole network on day one without a bill, and pay only for the outlets you actually switch on — whether the brand pays or the outlet does.

  • An outlet that is not paid for cannot trade Module ↗

    The outlet-users surface reports a lock reason per outlet — suspended, awaiting payment, no seats, no users — beside its seat ledger and its opening project. The awaiting-payment posture is enforced: every business route in that outlet’s workspace is refused until the first invoice is settled. The seat and user reasons are reported rather than enforced.

    You build the store before you bill for it, and trading is what the meter runs on.

  • Bulk outlet import Module ↗

    Creates outlet records from a CSV with per-row validation, and refuses a row marked opened that does not say when it opened. Imported rows are outlet records only — link one to a franchisee record before royalty terms and the missing-report board can see it.

    A brand already running forty stores gets its network in on day one, without pretending each one went through the opening workflow.

  • Sales reports the outlet files and you approve Module ↗

    A unit files gross and deductions for a period and net is derived; the report moves due to submitted to approved, with filing and approving behind separate capabilities. Only a monthly report in a closeable status is ever used as a royalty basis.

    The number royalty is computed from was filed by the outlet and accepted by you — the disagreement happens before the invoice, not after.

  • Weekly management reporting that cannot become the royalty basis Module ↗

    Reports carry a grain — weekly (2026-W24), fortnightly or monthly — and only the monthly grain is picked up by the close or fed into the trailing median.

    You can run weekly reporting without a weekly rollup ever being mistaken for the month and flagging every honest outlet as an anomaly.

  • POS variance and the anomaly flag Partly built Module ↗

    Flags a report whose gross deviates from that unit’s trailing three-period median by more than your threshold — 25% out of the box — into a royalty audit queue. That half is live. The POS side is not: an imported POS gross is stored beside the declared figure and the variance computed, but the import runs through the API only, there is no import screen in the console, and re-importing the same file adds to the imported figure again.

    Under-reporting against a unit’s own history surfaces as a flagged row before the month is billed. POS-versus-declared is a seam we would switch on with you rather than hand over.

2 more in this group
  • Period rollup from the trading days Partly built Module ↗

    Builds the period report for one unit or every unit that traded from the business days below it, summing declared figures, carrying signed corrections into this period’s base and preserving the per-channel split. A report already approved is refused rather than rewritten. This runs through the API today; there is no console button for it yet.

    Day-by-day capture becomes the royalty basis without anyone retyping it at month end.

  • Staff aggregates, not individual attendance Module ↗

    An outlet-and-date-range summary returns headcount, total minutes worked, shift count and the share of shifts that were self-evidenced — an aggregate carrying no names and no punch rows.

    You get the labour number you need to read an outlet P&L without holding an individual’s attendance history, which is personal data under DPDP you have no need to hold.

Requests, cases and announcements

  • Twenty typed request templates, split by who is asking Module ↗

    The catalogue is split into outlet-to-brand and brand-to-outlet queues — discount approval, royalty dispute, supply shortage, equipment repair, renovation approval on one side; document request, licence evidence, missing sales report, royalty chase, audit corrective action, inspection follow-up on the other — each with its own typed fields and decision SLA in hours, with required fields refused on the server.

    A discount request arrives with the percentage on it instead of as prose somebody has to read and re-key, and both sides can see who owes whom an answer.

  • Delegated discount authority Module ↗

    A discount request’s approval level is computed from the percentage on it and stored on the record — up to 10% marked self-approve, up to 20% area manager, anything above head office — and a percentage that is not a number is marked head office rather than waved through. The level is a label the decision screen shows: it does not route the request, and it does not itself stop a decider who holds the capability.

    The request arrives already classified, so nobody reads prose to work out whose call it is, and an out-of-band approval is visible on the record afterwards. Binding the ladder to who may press approve is not built — today that boundary is the capability grant.

  • A decision clock separate from the resolution clock Module ↗

    Templated requests carry their own decision due date, and the decide action records the approval or rejection with who decided and when — only on approval-kind requests, and only once.

    "We answered you" and "we finished the work" are tracked as the two different promises they are.

  • SLA policies with a pause that actually pauses Module ↗

    Per-priority first-response and resolution targets drive a clock where moving a case to pending banks the paused minutes and slides the resolution due date forward, so a case waiting on the franchisee cannot breach.

    Your SLA measures your own response time rather than punishing you for the days a franchisee took to send the photo you asked for.

  • Daily SLA sweep that does not nag Module ↗

    Each morning a command walks open and pending cases carrying a policy and writes a note when the first-response target is missed and when resolution breaches, each firing at most once per case.

    A late request is visible as late rather than as silence, without the system generating the same reminder every day.

  • Case thread with internal notes and canned responses Module ↗

    Replies append to the thread, can be marked internal so they stay private, and can be pasted from a saved canned response the message then cites. The first non-internal reply stamps the first-response time.

    The handling notes and the reply the franchisee sees live in one record, and the clock is stopped by an actual answer rather than by someone claiming they called.

7 more in this group
  • Reopen count and satisfaction on resolution Module ↗

    Resolving can capture a 1–5 rating with a comment; reopening increments a counter and re-arms the breach notification.

    A case resolved four times is visibly a case that was never resolved.

  • Case queue statistics Module ↗

    One call returns counts by status and priority, how many missed first response, how many breached resolution, and the average satisfaction score with its sample size.

    Head office’s support performance towards the network becomes a number head office can be held to.

  • Your own categories and channels Module ↗

    Case categories and intake channels are per-workspace label sets, while priority stays a fixed four levels because the SLA keys off it.

    You classify cases in your own words without breaking the clock that measures them.

  • Chat that cannot silently drop a message Module ↗

    Every message gets a per-channel sequence number allocated under a lock on the channel row, and polling reads forward from that sequence rather than from database row ids.

    Two people posting at once cannot cause a message to be skipped forever, which is the difference between a message being late and being gone.

  • Convert a chat message into a request Module ↗

    A message that turns out to be real work becomes a request carrying its text, and the message keeps a pointer to what came out of it. A message can only be converted once, and a removed one cannot be converted at all.

    Chat deliberately has no status, assignee or due date, so the conversation and the work never become two systems that disagree about what is open.

  • Message removal that stays visible Module ↗

    Moderating a message stamps who removed it and when, and the row stays in the thread rather than disappearing. It sits behind its own capability.

    A network where messages silently vanish is one nobody trusts; removal is accountable.

  • Announcements with a receipt per recipient Module ↗

    Publishing creates a read-and-acknowledge receipt for every member at the moment it goes out, tracks reading and acknowledging as two separate acts, reports how many are outstanding, and refuses a receipt from somebody who was not in the audience. Today it sends to every member of the workspace; selective audiences are stored but not yet honoured.

    "Who has seen the recall notice" has an answer, and "nobody has read it" never looks the same as "we never sent it to them".

The everyday surface

  • Install it on the phone like an app

    The console installs to a phone or tablet home screen with its own icon and no browser chrome, and the shell is precached so it opens instantly; API calls are never cached, and a new deploy prompts to reload rather than swapping under somebody mid-task.

    Your field team taps an icon, not a bookmark, and nobody is looking at last month’s build because their browser held onto it.

  • My Work: one list across every module

    Tasks, calls, meetings and third-party calls are one activity record with an owner and a due date, grouped into overdue, today, upcoming and someday, and created or closed from the same screen.

    Somebody managing forty franchisees works from one list instead of remembering which of nine screens holds the thing due today.

  • Unread counts, per person, per channel Module ↗

    Every channel carries an unread count for the person reading it, computed from their own read cursor; polling a channel advances only their cursor, so opening a thread never marks it read for anybody else.

    Someone back from two days out sees which conversations moved, and one person catching up does not clear the badge for the whole team.

Not built yet — on the plan

Nothing in this group is built yet, and every row is tagged that way. It is here because you will ask, and because a roadmap you can argue with beats one you find out about later — what we build next should be decided by the people paying for it, so tell us which of these actually blocks you.

  • A live POS connection, not a CSV Not built yet Module ↗

    The outlet’s till pushes the day’s sales, tender split and item mix straight into the trading day, so the declared figure and the machine agree without anyone exporting a file.

    The royalty basis comes off the till rather than off a person’s memory of the till, which is the single change that makes under-reporting hard rather than merely detectable.

  • WhatsApp Business messaging Not built yet Module ↗

    Templated WhatsApp messages go out from the system for royalty reminders, missing reports and announcements, and replies land in a shared inbox against the franchisee’s record.

    In India the message that gets read is the WhatsApp message. Click-to-chat opens the conversation; this one keeps it.

  • Inventory and approved-supplier ordering Not built yet Module ↗

    Outlets order from your approved supplier list inside the system, with par levels, stock counts and a purchase record that feeds cost of sales.

    Supply-chain compliance — the thing an F&B or retail franchisor polices hardest — becomes a record rather than a WhatsApp order and a hunch about leakage.

  • Apps in the stores, for the field team and the franchisee Not built yet

    A native app for each side — the field team’s audit and visit app, and the franchisee’s day, statement and request app — with push notifications and a camera that behaves like a camera.

    An icon your network installs from the store is one nobody has to be talked through, and push is how a missing report gets filed the same day.

The line to leave in the room Every ask between head office and an outlet has a type, an owner and a clock — which is the only version of a WhatsApp group that can be audited.

Finding, qualifying, matching, signing

A pipeline anyone on your team can read

Franchise enquiries arrive from an expo counter, a portal, a phone call and a WhatsApp message on the same day. The ones that convert are the ones somebody followed up.

Capture

  • Public capture form that creates the lead Module ↗

    A published form has its own token URL anyone can fill with no login; a capture form creates the lead on submit and stamps its last activity so a fresh entry sorts to the top of quiet-lead views rather than the bottom.

    The record exists before anyone gets back to the office, and a counter capture is chased first instead of last.

  • Unpublishing kills the link Module ↗

    Unpublishing a form nulls its share token, so a link already handed out stops working immediately, while the responses already collected stay exactly where they are.

    A form printed on last season’s standee cannot keep feeding your pipeline after you have moved on.

  • Typed fields with Indian money parsing Module ↗

    Form fields are typed — text, number, money, boolean, date, select, multiselect — and answers are coerced on submit, so "₹2,50,000" typed on a phone becomes the integer 250000 and lakh-grouped commas read as separators, not decimals.

    Numbers collected at a stall arrive as numbers you can report on, rather than as text that silently breaks the first summary somebody runs.

  • Explicit field-to-lead mapping Module ↗

    Only a field carrying an explicit mapping — name, email, phone, city, company, notes — writes onto the created lead. Everything else stays in the submission.

    A visitor’s company name can never land in the phone field, which is what happens when a tool guesses from labels.

  • Answers pinned to the schema they answered Module ↗

    Adding or removing a field bumps the form’s schema version, and each submission stores the version it was answered against.

    Changing a question next month does not rewrite what people answered last month.

  • Shareable form link with copy, WhatsApp and QR Module ↗

    Generates a tokenised seven-day link to a specific form for a specific person — only the SHA-256 hash of the token is stored — and offers copy, an email send, or WhatsApp with a scannable QR beside it.

    You send the investor the form instead of typing their answers for them, and at a counter they scan the QR straight off your screen.

5 more in this group
  • Share-link tracking and revoke Module ↗

    Records when the link was opened and when it was submitted, keeps the channel and recipient it went to, and revoking makes the token 404 rather than explain what it used to point at.

    You can tell whether the investor opened the form or ignored it before you chase, and a link sent to the wrong person is dead the moment you revoke it.

  • Investor self-intake in one page Module ↗

    One shareable form collects the investor’s background — profession, decision makers, existing business, LinkedIn — alongside the full investment profile; the background lands on the lead and the criteria on the primary profile.

    The investor fills it once, in their own time, and the matchmaking inputs arrive complete instead of half-captured over three phone calls.

  • Business-card scan into a lead draft Module ↗

    Sends a card photo (JPEG, PNG or WebP, up to 6 MB) or pasted text to a vision model and returns a structured draft that prefills the new-lead form. The scan itself persists nothing.

    The stack of cards from an expo becomes leads the same evening, and a bad scan costs nothing because no record is created until someone confirms it.

  • Consent receipt written before the data lands Module ↗

    A public submission records an append-only consent receipt for each declared purpose — lead nurture, matchmaking — with IP, user agent and the link’s identifier, before anything is persisted. A staff-entered or imported lead records a staff-entered basis instead.

    Under DPDP you can show when and how the person agreed rather than asserting it, and there is no window in which you hold data with no basis for it.

  • CSV lead import with per-row errors Partly built Module ↗

    Imports up to 500 rows against a downloadable template, validates each row on the server, inserts each in its own transaction, and returns row-indexed errors — one bad row never sinks the batch. A stage named in the file must exist in your own taxonomy or that row is flagged.

    An aggregator export loads in one pass and you fix the eight rows that failed. The endpoint and template ship today; the console’s CSV takeover screen is wired for outlets, so leads import through the API for now.

Work the pipeline

  • Your own stages, with guardrails Module ↗

    Stages are rows you name, reorder, retone and deactivate, each carrying a role — open, qualified, lost — that automation keys off. A stage in use by any lead cannot be deleted, only deactivated, and the set must always keep one active open stage.

    You run your pipeline rather than the vendor’s, and nobody can delete a stage out from under two hundred live leads.

  • Franchise India preset, applied non-destructively Module ↗

    Ships two named presets — a FranOpero default and Franchise India (New, Hot, Call Back, NR, QL, BQL, NQL, Churned). Applying one upserts the preset stages to the front; stages you already had are deleted if unused and deactivated if in use.

    A team that already thinks in QL and BQL keeps its vocabulary from day one, and applying a preset never orphans a live lead.

  • Three emails and three phones per lead Module ↗

    Stores up to three emails and three phones with one primary of each kind, dedupes case-insensitively, and mirrors each primary onto the lead’s own columns so lists and search stay fast. Search reaches the secondary numbers too.

    The second phone number the person actually answers on is on the record instead of in a note.

  • Call, WhatsApp and email from the row Module ↗

    Every row with contact details carries always-visible call, WhatsApp and email actions; hovering reveals the value with one-tap copy, and the WhatsApp action shows a QR that opens the chat with that number on your phone.

    A desk conversation moves to the phone in your hand without anyone reading a number aloud. Click-to-chat and scan-to-chat only — this is not a WhatsApp Business API inbox.

  • Action-typed timeline with automatic system entries Module ↗

    A timeline entry is a note or a logged action — call, meeting, WhatsApp, email, visit — and every stage change, owner change, contact edit, archive and conversion writes its own system entry.

    When you ask why a lead stalled in March, the record answers instead of the person who worked it.

  • Follow-ups, overdue buckets and quiet leads Module ↗

    A lead carries a follow-up date and note; the list filters by overdue, today, this week or none, and the stat band separately counts leads with no follow-up set that have had no activity for fourteen days.

    The two ways a lead dies — a missed date, and nobody ever setting one — are both visible on the same screen.

8 more in this group
  • Bulk stage, owner and follow-up changes Module ↗

    Applies a stage change, owner reassignment, follow-up date or follow-up clear to up to 100 selected leads at once; rows outside your visibility are silently skipped. Stage and owner changes each write their own timeline entry.

    Reassigning a departing manager’s book takes one action and still leaves a per-lead audit trail of the reassignment.

  • Saved views, private or shared Module ↗

    Saves the current filter, search and sort as a named view; you see your own plus the tenant-shared ones, and only the owner or a tenant admin can manage a shared view — enforced on the server, not hidden in the UI.

    "Hot leads in Maharashtra with no follow-up" becomes a tab everyone opens instead of a filter each person rebuilds.

  • Your own fields, one of them indexed Module ↗

    Define custom fields per workspace on leads and deals; values are validated and coerced server-side, and the one nominated field is projected into an indexed column so filtering on it hits an index.

    The thing your business tracks that no vendor anticipated is a real filterable field rather than a note.

  • Ownership scoping and desk boundaries Module ↗

    Owners, admins and managers see every lead; an individual contributor sees their own plus unassigned. A member scoped to the investor or brand desk only ever sees that side of the book, and an unscoped membership is unaffected.

    Two teams can work one pipeline without seeing each other’s book, and the API enforces it — the screen only mirrors it.

  • Eight-reason lost taxonomy Module ↗

    Moving a lead to a lost-role stage records a reason from a fixed eight — capital gap, location mismatch, operational concerns, timing, chose competitor, brand paused, documents incomplete, other — plus a note, both written to the timeline. The API validates the reason but does not force one; an unstated reason records as "other".

    You can answer "why are we losing them" with a count rather than an anecdote, and capital gap losing to location mismatch changes what you do next.

  • Archive rather than delete Module ↗

    Archiving hides a lead from every default list and writes a timeline entry; restoring writes another. There is no delete route on leads at all.

    A lead that did not convert keeps its history and can be re-engaged in two years, instead of being deleted to keep a list tidy.

  • AI next steps grounded in this lead’s state Module ↗

    Builds the suggestion from a server-side context — track, stage, gate status, profile percentage, which profile fields are missing, the last six notes, follow-up state — and caches it against a signature of the lead so re-opening the record does not re-bill a call.

    The suggestion refers to this lead’s missing fields and overdue follow-up rather than generic advice, and the cost tracks real changes, not clicks.

  • Stat bands scoped to what you can see Module ↗

    Open leads, qualified, overdue follow-ups, quiet leads and brands assessed are computed inside the caller’s own visibility and desk scope, each with a weekly series and a period-on-period delta. The candidate and investor-profile bands are workspace-wide counts rather than per-book ones.

    A manager’s total and a consultant’s total are both correct on the pipeline numbers that matter most.

Qualify and match

  • Investment profile as structured criteria Module ↗

    Twelve fields per investor — capital band, liquid capital, geographic scope, preferred locations, operating model, sectors, formats, the maximum royalty they will accept, timeline, multi-unit appetite, franchise experience, narrative — each scored into a completeness percentage.

    What the investor can and will do is a record you match against, not a paragraph in somebody’s proposal.

  • A half-filled profile cannot be padded out Module ↗

    An investor can hold several named profiles with one primary, but another can only be added once the primary passes the workspace’s completeness threshold.

    Nobody escapes an incomplete profile by starting a second one.

  • Explainable score on five weighted dimensions Module ↗

    Scores a profile against a franchise model on capital, format, geography, sector and royalty — weighted 30/20/20/20/10 by default, normalised to 0–100 whatever weights you set — and returns a per-dimension verdict of yes, partial, no or unknown with the weight that produced it. Unknown counts as half.

    When a colleague asks why those two were matched, the score itself answers, so the reasoning can be reviewed, taught and handed over.

  • The rules behind the score, in plain arithmetic Module ↗

    Capital scores full inside the band and half within half the minimum to one and a half times the maximum; royalty scores zero the moment the model’s royalty exceeds the investor’s stated ceiling; geography and sector are token overlap.

    A prospect can argue with the rule rather than with a black box, which is the only kind of argument that improves the shortlist.

  • Bands and weights you can retune Module ↗

    Dimension weights, the rupee edges of each capital band, and which model variants satisfy each multi-unit appetite are workspace vocabulary you edit. The shipped defaults reproduce the standard scoring exactly.

    A brand whose ₹50 lakh band means something different in its category changes the band instead of arguing with the score.

  • Matched against offers you can actually place Module ↗

    From an investor it ranks every live franchise model; from a brand it ranks investors by their best-fitting model. Retired models drop out of the pool entirely.

    The shortlist never includes a model that was withdrawn last quarter.

8 more in this group
  • Franchise models as your supply Module ↗

    An expansion plan holds franchise models — unit, area developer or master franchise — each with investment amount, franchise fee, royalty percentage, expected monthly revenue, gross margin and a status.

    The offer you are actually selling is a record with numbers on it, so the same figures drive the match, the pitch and the paperwork.

  • Unit economics computed from the model Module ↗

    Derives monthly net contribution, payback in months to one decimal, and annual ROI from investment, monthly revenue, gross margin and royalty — and returns nothing at all when the inputs for a meaningful figure are missing.

    The payback number a prospective franchisee asks for comes from the same model the match used, and the system stays silent rather than inventing a figure.

  • Your own house record Module ↗

    A brand workspace has one self-record carrying its profile, readiness, expansion plans and franchise models, created on first visit and excluded from the prospect list so it never appears as a lead.

    Your own franchise offer lives in the same shape as everything you match against, which is what lets a brand run matchmaking on its own leads.

  • Franchisability readiness scorecard Module ↗

    Rates a brand on seven dimensions — proven concept, documented systems, brand strength, unit economics, legal and IP, support capacity, financial capacity — as strong, partial, gap or unknown with a note each. Unknowns are excluded from the mean rather than counted as zero, and the dimension set is editable.

    A brand that is not ready to franchise is a different conversation from one that is, and this puts the gaps on one page with a note against each.

  • Eligibility gate before matchmaking Module ↗

    A lead cannot be advanced into matchmaking until its profile passes the workspace completeness threshold — 80% by default, configurable — and the gate renders the condition with its current value, so "Profile ≥ 80%" shows "45%".

    Nobody is shortlisted on a profile too thin to match on, and the person blocked can see exactly which condition is short and by how much.

  • Journey rail with the next move named Module ↗

    Each lead shows an ordered path grouped into phases, where some stages are derived from the data, one is a computed gate and the rest are advanced by hand — with the next action written in words, such as "Complete the profile (45% → 80%)".

    Anyone opening a lead can see where it is and what the next move is without being briefed by the person who owns it.

  • Promote a match into a tracked deal Module ↗

    A match starts a deal with the investor and the brand already linked. The API refuses a second live deal for the same pair, returning the existing one, overridable when a fresh attempt after a loss is genuinely intended.

    The shortlist turns into something with an owner and a close date, and the same pair cannot be worked twice by accident.

  • Deal board with commission that recomputes Module ↗

    Seven stages from suggested to won or lost, each carrying a role automation keys off. A deal holds value, a commission percentage or flat amount that recomputes on every edit, an expected close date, and stamps won or lost with a reason at the moment the stage changes.

    Pipeline value and the fee it will earn are the same record, so a forecast is a query rather than a spreadsheet somebody maintains.

Candidates and the committee

  • Candidate financials and a qualification score Module ↗

    A franchise candidate carries net worth, cash available, funding source, a 0–100 qualification score, source and broker attribution, and the discovery day — scheduled and attended — alongside the applied → screening → interview → approved or rejected stage.

    Whether somebody can actually fund the unit is on the record before the committee meets, not discovered after a disclosure pack has gone out.

  • Disclosure pack with a cooling-off clock Module ↗

    Sending a pack snapshots the workspace’s cooling-off window — 14 days by default, settable 0 to 365 — onto that pack. Recording the acknowledgment starts the clock, and recording a deposit is refused, naming the date it clears, until the window has fully elapsed. The acknowledgment is filed by a signed-in staff user; there is no candidate-facing acknowledgment page yet.

    The waiting period is enforced by the system rather than by everyone remembering it, and a later settings change cannot retroactively unlock a window already running.

  • Committee decision as its own gated action Module ↗

    Approving or declining goes through a decision action that stamps the decision, the timestamp and who decided; a decline requires a reason from your own list. A general edit that tries to move a candidate straight to approved or rejected is refused and told to use the decision action.

    An award is always attributable to a person and a date, and there is no back door that quietly approves somebody through a field edit.

  • Attribution freezes at award Module ↗

    Approving a candidate locks attribution: source, broker network and broker reference become read-only and a patch that tries to change them is silently dropped.

    Nobody re-attributes a signed franchisee to a different broker after the fact, which is the argument that otherwise happens when the referral commission is calculated.

  • Deposit recorded with its refund terms Module ↗

    A deposit stores the amount, whether it is refundable, and whether it is credited against the franchise fee, with the moment it was recorded.

    The two questions that come up when a candidate walks away — do we return it, and does it count toward the fee — are answered by the record.

  • Heat-ranked call-next queue Module ↗

    Ranks open candidates by qualification score plus a stage weight — interview 30, screening 20, applied 10 — plus a recency bonus that decays over twenty days. Approved, rejected and declined rows drop out entirely.

    The morning call list orders itself, and stays a live list rather than becoming a report of everyone who ever applied.

1 more in this group
  • Convert a lead into a franchisee in place Module ↗

    Marks an investor lead as a franchisee, capturing the franchise or outlet name that carries forward into Outlets, and moves the cursor to onboarding. The only gate is a name plus a phone or an email.

    There is no separate "new franchise" form to retype into, so nothing captured during the pipeline is lost at the moment it starts to matter — including for a brand signing at an exhibition with a name and a number and nothing else.

Finding things, and forms beyond capture

  • Search from the keyboard, anywhere Module ↗

    One shortcut opens a palette that jumps to any screen you have access to and searches leads live — matched on the server by name, phone, email and city — with the records you opened recently listed before you type anything.

    A caller says a phone number and the lead is on screen before they finish the sentence, without anyone navigating to a list and filtering it.

  • Forms are not only for lead capture Module ↗

    A form carries a purpose — capture, onboarding, survey or checklist — and only a capture form mints a lead. A survey or checklist published to its own public link stores each submission against the schema that was live when it was answered.

    A pre-opening checklist or a franchisee satisfaction survey uses the same builder, the same public link and the same QR as your enquiry form, without polluting the pipeline with rows that are not leads.

Not built yet — on the plan

Nothing in this group is built yet, and every row is tagged that way. It is here because you will ask, and because a roadmap you can argue with beats one you find out about later — what we build next should be decided by the people paying for it, so tell us which of these actually blocks you.

  • Lead-source ROI, down to cost per signing Not built yet Module ↗

    Spend is recorded against each source — portal, expo, broker, paid search, referral — and read against leads, qualified leads, signings and franchise fee collected, so each source carries a cost per signed franchisee.

    You stop renewing the portal contract on the strength of lead volume, and the expo either survives the arithmetic or it does not.

The line to leave in the room The match is a number with its working attached, so it can be reviewed, taught and handed to somebody else.

What you can finally look at

One row for the month, and the reason underneath it

Reporting on a franchise network fails in one of two ways: twelve charts nobody reads, or a number with no way to ask why. This is one row, five drivers and a stream of findings that name their own rule.

The network row for a period

Outlets trading
Units with sales in the period
Network net sales
Summed from the units’ own reports
Same-store growth
Only units present in both periods
Royalty billed
From the period’s statements
Royalty collected
Receipts banked against them
Collection rate
Collected over billed
Average audit score
Across completed visits
Open findings
With an unresolved corrective action
Period still partial
Flagged, so nobody quotes it as final
  • Rollups you can rebuild from source Module ↗

    Three narrow derived tables — unit-day, unit-period and brand-period — built over a trailing sixty-day window, every method safe to run twice because each writes on a natural key. They rebuild when you ask them to; there is no nightly schedule.

    Head office reporting is always recomputable from source, so a late correction changes the reports instead of leaving them wrong.

  • A deterministic insight stream Module ↗

    Eighteen coded rules are declared against your rollups, ten of which the engine evaluates today — sales drop, record month, prime cost, negative four-wall EBITDA, cash-mix spike, missing licence, overdue royalty, bottom-quartile audit score and health band moves in both directions. Each finding names its rule and carries the numbers behind it.

    You get told what changed instead of being handed twelve charts, and each item can be argued with because the rule and the figures are on the card.

  • Insights that close themselves Module ↗

    Raising the same finding twice updates one row rather than adding another, a finding that stops being true resolves itself and says it closed automatically, and something a person resolved by hand is never reopened by a re-run.

    The stream stays worth opening, because nobody has to dismiss forty warnings about problems they already fixed.

  • Tunable thresholds, mutable rules Module ↗

    The number on any rule can be changed per workspace and a rule you do not want can be muted entirely, while the logic itself stays in code where it can be read. Runs are triggered rather than scheduled, and nothing is emailed out.

    You set what counts as a sales drop for your format without inheriting somebody’s unexplainable model.

  • Cash-mix spike as a signal, not an accusation Module ↗

    Compares each outlet’s cash share of takings against its own trailing thirty days and raises a warning only on an upward move past your threshold — cash falling is just card uptake.

    The oldest tell in retail gets surfaced against the unit’s own baseline, and it is phrased as look at this.

  • Outlet health score with its drivers Partly built Module ↗

    Scores each unit 0–100 from five weighted drivers — royalty settlement, sales against the unit’s own trailing average, audit score, open requests and reporting discipline — each scored 0–100 before weighting, with weights configurable. It is returned by the API and used by the insight rules; there is no console screen for the score itself yet.

    One number sorts forty outlets, and five drivers mean the first question — why is Whitefield a 62 — has an answer beside it.

4 more in this group
  • League table you can publish Partly built Module ↗

    Ranks units by net sales for a period with average ticket, prime cost and audit score, and an anonymised mode where you always see your own name and everybody else is a position. Available through the API; the console screen is still being built.

    "You are 14th of 31" motivates a franchisee where "you are below Whitefield" starts an argument — so you have a form you can actually send to the network.

  • Outlet profit and loss with prime cost Module ↗

    For a unit and date range it builds net sales from the declared trading days, groups approved spend into cost of sales, labour, occupancy, marketing and other, keeps aggregator commission on its own line, and reports prime cost and four-wall EBITDA scored against benchmark bands. Attendance minutes are recorded alongside on the unit-day rollup; the labour line itself comes from approved claims.

    You can read a franchisee’s unit economics in the same vocabulary they do, which is what makes a support conversation possible.

  • Aggregator commission read from the settlement Module ↗

    Commission is taken from the aggregator’s own imported settlement rather than from an expense row or a headline rate, because the money is netted at source and never reaches the outlet.

    The operator learns what delivery actually costs, and where there is no imported settlement the gap stays visible instead of being invented.

  • CSV out of any stat tile Module ↗

    The stat tiles on the module pages that carry a stat band — eighteen of them plus the home dashboard — open an explorer showing the series behind the figure and export it as CSV. The GSTR-1 B2B extract is its own separate export.

    Your finance team gets the number in their own model without asking anyone to run a report for them.

The home queue

  • A “needs you” queue that is cards, not rows

    The home queue returns one card per problem — count, money at stake, at most three named examples and a link to the full list — ranked by severity, and each section is dropped entirely for a viewer who lacks the capability behind it.

    A hundred overdue royalties is one card that says a hundred, not a hundred rows you scroll past; and what a person sees on the home screen is already scoped to what they are allowed to know.

Not built yet — on the plan

Nothing in this group is built yet, and every row is tagged that way. It is here because you will ask, and because a roadmap you can argue with beats one you find out about later — what we build next should be decided by the people paying for it, so tell us which of these actually blocks you.

  • The Monday report, in your inbox Not built yet

    A network report — openings at risk, royalty billed and collected, missing reports, audit scores, licences expiring — is scheduled to named recipients on a cadence you set, as a PDF that matches the screen.

    The people who need the number never log in, and a system nobody opens tells nobody anything.

The line to leave in the room Every number on this page can be taken apart into the rows that produced it. That is the difference between a dashboard and a system of record.

Who can see what, and who did what

Access you can explain, and a trail nothing can edit

In a franchise network the awkward questions are about visibility. Can my area manager approve a royalty statement. Can the consultancy running my development desk see my receivables. Can support look at my data while helping me. Each has a specific answer.

The access kernel

  • Forty-seven named capabilities, default deny

    Every action in the product is gated by one of forty-seven named capabilities declared in a single registry, grouped by module, and refused unless granted.

    When you ask whether your area manager can approve a royalty statement, the answer is a named permission you can point at on screen, not a guess about what a role implies.

  • Role defaults per workspace type

    Brand, master franchise, area developer, outlet, consultancy and QA workspaces each carry their own role-to-capability matrix, so an outlet trainee, an outlet manager and a brand admin start with different bundles — and an outlet’s roles use outlet words.

    A new store manager gets the right access the day they are added, without anyone deciding permissions from scratch.

  • Per-member overrides

    On top of the role default, one capability can be granted or revoked for one named person, recorded with who granted it. A reason is captured when the grant comes from an approved access request.

    You give the finance person royalty and receivables visibility by name, instead of promoting them to admin and handing over agreements, consent and operator seats along with it.

  • Desk scoping on the pipeline

    A membership can be limited to one or more desks — investor, brand, advisory, network ops, finance — and an investor- or brand-scoped desk only sees its side of the lead book, enforced in the query. The capability-level desk refusal is built but not yet armed, because no capability is assigned to a desk today.

    Two teams work one pipeline without seeing each other’s book, and the API is what enforces it.

  • Explain-the-gate refusals

    A refused action returns why — capability, desk, operator scope, feature not in plan, or AI budget — the capability needed, and the names of the people in that workspace who can grant it. The button greys out and says so rather than disappearing.

    Nobody files a ticket saying "the button is missing". They read who to ask, and ask them.

  • Self-service access requests

    From the locked action a user raises a request for the exact capability; an approver approves or denies, and approval writes the override automatically.

    Access changes happen in minutes with a record of who asked, who approved and when, instead of over WhatsApp with no trail.

3 more in this group
  • Operator seats with dual attribution

    You issue a scoped seat — operations, development, finance, or all — to an outside consultancy who then works inside your workspace, and every record they write is stamped with both the person and the seat. Seats suspend and revoke without deleting history.

    When a consultancy runs your development desk, you can pull up exactly what was done under that seat and switch it off in one action.

  • Bounded support access

    Platform support can only enter a workspace with a stated reason, for sixty minutes, and read-only unless full mode is explicitly chosen — and a hard denylist blocks settings writes, access grants, member management, password changes and the whole control plane even then.

    When you call for help, somebody can see what you see without being able to change your permissions, your team or your configuration while wearing your name.

  • Append-only audit log

    One write path appends action, actor, subject, evidence and IP to a table with no update route — and automatically stamps the real admin when somebody is impersonating, plus the seat and the on-behalf-of organisation when an operator is acting.

    Every consequential change has one row that cannot be edited afterwards, and "who actually did this" survives support access and outsourced operations.

Configuration you own

  • A settings registry of thirty-seven declared keys

    Every configurable setting is declared in code with a key, type, default and validation across identity, locale and money, tax, pipeline, matching, fees, royalty, sales, visits, analytics and candidates — and only a declared key can be written. The India profile is in there: GSTIN with a format check, GST state code 01–38, default SAC, GST rate, expected TDS section and rate, and an April fiscal year start.

    Configuration is a fixed validated list you can walk through, not a free-text blob that drifts per customer — and a bad value is refused at the API rather than found three months later in a report.

  • Every settings change is audited

    Each effective change writes one audit row carrying the key, the old value, the new value, the actor and the IP.

    When a royalty variance threshold or a cooling-off window changes, you can see who moved it and from what.

  • Tenant vocabularies with safety floors

    Status and category lists across the product — invoice statuses, payment modes, royalty bases, visit types, territory grant types, licence types, finding severities, candidate decline reasons — are editable per organisation, with engine behaviour keyed to a semantic role rather than a label. A set can never be left with zero active values, and a set with a role floor must keep one.

    You rename a stage to what your team calls it and the engine still knows an invoice is open — and nobody can deactivate their way into a system that will not accept a new invoice.

  • Custom fields per entity

    Define your own extra fields with typed definitions, ordering, immutable keys and deactivate-rather-than-delete, and every mutation writes an audit row naming the actor.

    The one thing your business tracks that nobody else does gets a real field with real validation, instead of living in a notes box.

  • Export, clone and template a configuration

    An organisation’s settings, vocabularies and lead stages export as one payload with no ids and no secrets, which can be applied to another organisation, cloned from an existing one, or saved as a reusable template — with a per-section skip or overwrite policy and a manifest written to the audit log.

    Setting up a second brand, a new master-franchise region or a pilot workspace takes a configuration you already trust, and it never drags users, invoices or commercial terms across with it.

  • Plan entitlements and module toggles

    Fifteen module toggles and three numeric limits resolve per organisation as tenant override, then plan, then catalogue default, enforced by middleware on the routes themselves. While a first subscription invoice is unpaid every module gates off and the shell keeps working.

    You buy the modules you run, and a module you have not bought is unreachable at the API rather than merely hidden in the menu.

1 more in this group
  • Your identity on generated documents Module ↗

    The accent colour, registered name and address, GSTIN and the UPI or bank details you set once are what a generated document prints, degrading to something printable when any are missing. The logo and signature image are uploadable and stored but not yet drawn on the PDF, and the UPI details print as text rather than as a scannable code.

    What lands in a franchisee’s inbox carries what they need to pay it, and a missing value is never the reason an invoice cannot be issued.

AI, on a leash

  • AI governance panel

    Per workspace: turn individual AI features on or off, pick a model tier, set a monthly budget and a per-user daily budget, see this month’s and today’s spend, and hit a kill switch that pauses AI entirely.

    AI is a line item you control rather than a background cost, and you can stop it for the whole workspace in one click.

  • The budget is enforced by the access kernel

    The same check that decides every capability refuses an AI action when the workspace is paused, the feature is off, or the month’s or day’s budget is spent — and says which of those it was.

    A budget enforced where the decision is made cannot be overspent by a user who ignored a banner.

  • A usage ledger, successes and failures alike

    Every AI call appends a row with the user, workspace, feature, model, prompt and completion tokens, cost priced per model, status, error and duration.

    You can answer what AI cost you last month, per feature and per person, from the ledger rather than from an invoice.

  • Guardrails on every prompt

    A per-user per-minute rate limit, a hard clamp on output length, all field text framed as untrusted data the model must never obey as instructions, and explicit rules against inventing facts or reasoning from protected attributes.

    A rep pasting a customer’s email into a note cannot turn it into an instruction to the model, and a suggestion never quietly invents a commitment you did not make.

DPDP

  • An append-only consent ledger

    Consent is a receipt, not a checkbox: each record stores the person, the purpose, the legal basis, the collection point, the method, an evidence bag with IP and user agent, and a hash of the exact notice version shown. Withdrawal appends a new row referencing the grant instead of editing it.

    You can show, per person and per purpose, what was agreed to, when, through which channel and against which notice text — and nothing in that trail can be rewritten.

  • Data-principal rights queue with the clock running

    Access, correction, erasure, grievance and nomination requests run through a guarded state machine with a thirty-day response target set at intake — our default rather than a statutory figure, and configurable, because DPDP sets an outer ceiling and expects you to publish the window you will actually keep — plus assignment, identity verification as a first-class step, and an audit row on every edge. Disclosure is withheld until identity is verified, and what is disclosed is a summary of purposes, categories held, processing activities, recipients and retention.

    The window you publish starts its own clock, and the illegal shortcuts are closed by the software rather than by training.

  • Erasure that preserves your books

    Erasure is planned before it runs — the confirm screen groups the person’s mapped columns into what will be nulled, what will be tokenised and what is under a statutory hold — then executes per column, appends a withdrawal to every granted purpose, and resolves the request as partially fulfilled when a hold remains.

    You honour an erasure request without deleting a GST invoice you are required to keep for six years, and the request records honestly that a hold remains.

  • A PII register kept honest by CI

    Every column holding personal data is declared in a code register with its category, purpose, how rows for a person are located, and its erasure strategy — and a build check fails if a known personal-data column is not mapped.

    The data map cannot go stale, because adding a personal-data column without registering it stops the build rather than quietly creating something erasure would miss.

  • Public rights intake with email verification

    Somebody outside the system requests a code by email, verifies it, submits their request, and gets back a reference number and the response window. The receipt never reveals whether any record matched.

    You have a real intake channel rather than an inbox somebody has to watch, and it cannot be used to find out whether you hold data on someone.

Signing in, sessions, language and your subscription

  • Sign in with Google

    Members sign in with their Google Workspace account through a redirect-and-callback pair, and the login screen offers the button only when a client id and secret are actually configured, so nobody is bounced to Google’s error page by a half-set-up tenant.

    A head office already living in Google Workspace onboards its team without issuing anybody a second password to forget.

  • Your signed-in devices, and one button to cut the rest

    Every session lists with its IP, browser and last activity, with the one you are using marked, and a single action ends every other session on every other device.

    An area manager who leaves, or a laptop left signed in at an expo, is handled by the person who owns the account rather than by a support ticket.

  • The whole console in Hindi

    Language is a per-person preference in account settings across six string namespaces, any key Hindi does not carry falls back to English rather than showing a blank, and the choice sets the document language so Devanagari renders in the right face.

    The person at head office and the person at the counter do not have to share a reading language for the same record to be worked by both.

  • Your own subscription, self-serve

    Plan, entitlements, seat ledger, every subscription invoice and a payment link sit on a billing screen inside your workspace, and changing plan is an action you take rather than an email you send.

    You can see exactly what you are paying for and what you are using without asking us, which is also how you check we have not quietly added a seat.

Not built yet — on the plan

Nothing in this group is built yet, and every row is tagged that way. It is here because you will ask, and because a roadmap you can argue with beats one you find out about later — what we build next should be decided by the people paying for it, so tell us which of these actually blocks you.

  • Enterprise SSO and directory sync Not built yet

    SAML and OIDC sign-in against Okta, Entra or Google, with SCIM provisioning so a leaver loses access when HR closes the record rather than when somebody remembers.

    Your IT function can approve the rollout on its own terms, and offboarding a regional manager is one action in one system.

  • The rest of the Indian languages Not built yet

    Tamil, Telugu, Marathi, Kannada, Bengali and Gujarati join English and Hindi as full interface languages, chosen per person.

    A national network stops having its southern and western outlets work in their second language while head office works in its first.

The line to leave in the room Every refusal in this product can name the capability it wanted and the person who can grant it. That is what makes access something you configure rather than argue about.

The same spine, six different rhythms

A coaching centre and a QSR are not the same business

The tables never fork. What changes is the vocabulary, the channels, whether the day is chased at all, and which licences gate the opening.

Industry The trading day What gates the opening What changes
F&B and QSR Daily regime: open the day, quick entry by tender, blind cash count, close. Channels are dine-in, takeaway, delivery aggregator and own online. FSSAI State licence 30–60 days, fire NOC 15–30, health-trade licence 15–30, Shops and Establishment 5–10 — plus the police eating-house licence at 15–25 in the states that require one. Prime cost is scored against the accepted envelopes — food at or under 30% with 35% the warning line, labour 20–25%, prime at or under 60% — and aggregator commission is read from the settlement rather than assumed.
Retail and pharmacy Daily regime with the retail and pharmacy vocabulary, walk-in and institutional channels, and a cash-up at close. Drug licence 30–45 days after inspection, with the registered pharmacist hired as a real predecessor of the application, because the application cannot be made without one. Form 20/21 is a perpetual-with-retention clock, so the register tracks its retention due date instead of inventing an expiry.
Salon and spa Daily regime with shift handover: each shift opens with its own float and closes with its own declared take, cash count, over or short, and a handover note stored verbatim. Health-trade licence 15–30 days, Shops and Establishment 5–10, plus the salon outlet compliance pack. The handover is the accountability moment, so it is a record rather than a calculation — opening a new shift closes the previous one.
Education Period regime: the month is canonical, day-chasing and cash-up are switched off entirely, and the product stops asking for yesterday’s number. The education centre opening pack and the education outlet compliance pack. A fee receipt collected on the 3rd is simply a receipt in that month — nagging a coaching centre for a daily figure is noise, so the regime does not.
Gym and fitness Daily regime with its own channel vocabulary, tenders and KPI strip from the gym sales preset. No gym-specific opening or compliance pack ships. The closest is the premises-light services pack, which you clone and edit — say that rather than implying one exists. Everything downstream — reporting grain, royalty, audits, licences — is the same as any other format.
Services Period regime, premises-light: the month is the unit of reporting and there is no cash-up step. The premises-light services opening pack — Shops and Establishment and GST, without the trade and fire licences a premises business carries. The same royalty terms, invoices and audits apply; only the rhythm of capture changes.

Four settings override the preset sparsely — the industry preset itself, the reporting grain, the channel vocabulary and whether cash-up runs — so absent means inherit. An F&B brand that also does catering adds a channel rather than asking for a new preset.

The line to leave in the room Six presets, one set of tables. Your format changes what people see and what gets chased, never what the royalty engine reads.

First week, first month

What actually happens after you say yes

  1. Day one — the workspace exists Your organisation identity, registered address, GSTIN and place-of-supply state code, default SAC and GST rate, and the expected TDS section go into the settings registry. Every generated document reads from there afterwards.
  2. Day one — your words Apply a pipeline stage preset or build your own, rename the vocabularies your team argues about — invoice statuses, visit types, licence types, decline reasons — and add the custom fields nobody else would have anticipated.
  3. Week one — your network in Import your outlets from CSV against a downloadable template, with per-row errors so one bad row does not sink the file, and import leads through the same validation. Link imported outlets to their franchisee records so royalty and the missing-report board can see them.
  4. Week one — the licence register wakes up The statutory library seeds on first use with the brand pack plus your industry’s outlet pack, and the register immediately shows what each unit must hold against what it does.
  5. Week two — terms and templates Enter royalty terms per unit with their effective dates, clone the opening pack closest to your format and edit the durations you disagree with, and build the audit template your field team already uses on paper.
  6. Month one — the first close Outlets file, you approve, the period closes on the 4th, statements carry their working and invoices carry Rule 46 fields. Anything that looks wrong is a term or a report you can fix and close again, because re-running corrects rather than duplicates.
  7. Later — the second brand Export the configuration you now trust and apply it to the next brand, region or pilot workspace, with a per-section skip-or-overwrite policy and a manifest in the audit log. Users, invoices and commercial terms never travel with it.

What you need to hand before we start

  • Your GSTIN and the state code you supply from.
  • The royalty terms per unit or per model, with the dates they became effective.
  • A list of outlets — name, city, status and, for the opened ones, the date they opened.
  • Your pipeline stages, if you already have names for them.
  • The audit checklist your field team uses today, in whatever form it exists.
  • Which modules you actually want switched on to begin with.

Getting configured

  • A setup checklist that checks itself off

    Nine items — legal identity, branding, tax profile, team, invitations sent, pipeline stages, first leads, vocabulary, outlets — are computed from your live data rather than ticked by hand, each links straight to the screen that satisfies it, and the meter shows a completion percentage. Anyone can dismiss it for themselves without hiding it from the rest of the workspace.

    Nobody has to remember what a properly configured workspace looks like, and “are we set up” is a number instead of an opinion.

The line to leave in the room You are not waiting on an implementation project. The first royalty close is a month-one event, not a quarter-three one.

What we do not do

Said out loud, before you find it yourself

Every item here is a real boundary in the product today. It is on the page because discovering one of these in month two costs more than reading it now.

  • We are early. This is a young product being deployed with its first brands, not one with a decade of networks behind it. Everything on this page is built and testable in front of you — what we cannot offer is somebody else’s five-year story about running it. Ask what an early-brand arrangement looks like.
  • Requests, chat and announcements live inside one workspace. If your outlets run their own consoles, automatic routing between them is not built.
  • It is a browser application. It works on a phone, but there is no native app in an app store today.
  • There is no file upload except the organisation logo. Licence scans, audit photos and vault documents are referenced, not stored.
  • WhatsApp is click-to-chat and scan-to-chat QR only. There is no Business API inbox and no template messaging.
  • E-invoicing has columns and a status, and no IRP integration behind them.
  • Payment links exist for your own subscription invoices. There is no route today that mints a pay link for an invoice you raise on a franchisee.
  • Dunning reminders are recorded against the invoice and written to the franchisee timeline. Outbound email for them is not wired.
  • Payroll is a boundary, not a feature. Staff records carry a payroll reference; the product never computes pay.
  • Insight runs and analytics rollups are triggered, not scheduled, and nothing notifies anybody — the stream has to be opened.
  • An opening project is created and its template applied deliberately. Nothing provisions a journey automatically the moment a lead converts.
  • The outlet-side "my opening" view is built and gated in the API, with no screen wired to it yet.
  • Chat channels are created by hand. Nothing provisions one per outlet automatically.
  • Announcement audiences are stored but not honoured — today an announcement goes to every member of the workspace.
  • Master-franchise clearing computes and persists the split rows. Trust-account ledgers and automated remittance are not built.
  • Stamp duty has columns on the signing session and nothing that writes them.
  • Withholding a mystery-shop report is not settable yet; releasing one is recorded properly.
  • SLA clocks measure elapsed time. The business-hours-only flag is stored, but a working calendar is not computed.
  • There is no accounting-package sync and no Tally export. What leaves the system leaves as CSV or as a PDF.
  • Bulk-imported outlets are outlet records only — they need linking to a franchisee record before royalty and the missing-report board pick them up.
  • The brand half of signing — open a session, inspect the certificate, seal it — runs through the API with no console button yet. The signer’s own screen is real and finished.
  • A discount request is classified by percentage and the level is stored on it. Nothing routes on that level and nothing blocks on it: today the boundary is who holds the capability to decide.
  • A licence record carries a visibility field you can set. Nothing reads it back, so it does not restrict who sees the record — what actually separates your register from an outlet’s is that they are different workspaces.
  • POS sales import runs through the API with no console screen, and re-importing the same file adds to the imported figure again rather than replacing it.
  • Lead CSV import validates 500 rows at a time through the API. The console’s import screen is wired for outlets, not for leads.
  • The tax invoice PDF carries almost all of the Rule 46 particulars. The supplier’s signature block is not drawn on it, and the recipient line prints their city rather than a full address.
  • The credit-note cutoff enforces 30 November following the financial year. Section 34 is the earlier of that and the day you file the annual return, and the second limb is yours to watch.

None of that is on a promised date, because a date we cannot keep is worse than a gap we admitted. If one of these is the thing that decides it for you, say so — it moves up the list on merit, not on hope.

That is also how to read the tags earlier on this page. A row marked “Partly built” means the behaviour exists and you cannot reach all of it from a button yet — we can still show it to you. A row marked “Not built yet” means there is nothing to demonstrate: it is on the page so you can tell us whether it belongs at the top of the list. Everything untagged is shipped, and you should ask us to open it.

The line to leave in the room A vendor who will not tell you the limits is telling you they have not been asked yet.

Bring the awkward question

Ask for the royalty run on a unit with a tiered rate, a minimum guarantee and a month nobody filed. Ask what happens when the same territory is reserved twice at once. Ask to see the audit that will not close. Everything on this page exists in the product, and the fastest way to check that is to try to break it in front of us.