Skip to main content

Spyrl — Business Requirements Document (BRD)

Version: 1.0 · Date: 2026-10-31 · Status: Draft for founder review Related: summary.md · prd.md · project-plan.md · architecture.md · research/spryple-analysis.md · CONVENTIONS.md

Labels follow CONVENTIONS.md: [Observed] = documented in the Spryple Help Center (cited by role page or SP- finding ID), [Observed-SS] = seen in a Help Center screenshot (research §21), [Inferred] = follows from documented behaviour, [Proposed] = our decision. D1–D16 are research documentation defects (§17), and "gap §N" points to a research section. All statutory rates and thresholds are examples to verify. Values in italics are tenant-configurable defaults.


1. Document control​

ItemValue
OwnerProduct (founding PM)
ApproversFounders (business), Engineering lead (feasibility), compliance/legal adviser (§9, §14)
Consumersprd.md turns BR- items into FR-/NFR-/US-; project-plan.md turns them into epics and risks; architecture.md takes the operational drivers
PrecedenceCONVENTIONS.md wins on names, codes, roles and release scope. This BRD wins on business intent and rules. The PRD wins on functional detail.
Change controlAny change to the meaning, priority or release of an ID needs a decision-log entry. IDs are never reused; a retired ID is marked Withdrawn.
VersionDateChange
0.12026-10-31Skeleton from research baseline v1.0
1.02026-10-31Full draft: 10 BOs, 125 BRs, 94 rules, 8 workflows

2. Business objectives​

Targets run from R1 GA unless a row says otherwise. RPT and the platform console produce every KPI (architecture.md §15).

IDObjectiveKPI → target
BO-01Fast, low-touch go-live, so price-sensitive SMEs can be served profitablyTrial provisioned in ≤ 2 min · median days from order to first live payroll: ≤ 21 (Standard/Professional), ≤ 45 (Enterprise) · implementation effort ≤ 16 staff-hours for a tenant with ≤ 200 employees
BO-02Accurate, on-time payroll≤ 0.1% of payslips corrected after lock · attendance lock → payslips published in ≤ 1 business day (≤ 500 employees) · 100% of runs finished before the tenant's pay date
BO-03Adoption≥ 70% of employees active monthly on ESS by month 3 after go-live · ≥ 95% of leave/attendance requests raised digitally · median approval time ≤ 24 h
BO-04Healthy unit economicsGross margin ≥ 75% on pooled tenants by month 12 and ≥ 60% on dedicated tenants · platform cost ≤ ₹8 per billed employee per month · CAC payback ≤ 12 months
BO-05Serve many clients with a small teamZero tenant-specific code branches · ≤ 2 support tickets per 100 billed employees per month · zero S1 incidents in the payroll window per quarter · ≥ 95% of pooled tenants on the latest version within 7 days of a release
BO-06Statutory compliance≥ 98% of statutory files accepted on first upload · statutory pack published ≥ 7 days before the effective date (≤ 5 business days after notification if the change is retrospective) · zero penalties caused by Spyrl
BO-07Growth150 paying tenants and 25,000 billed employees by GA + 18 months · trial-to-paid conversion ≥ 20%
BO-08RetentionMonthly logo churn ≤ 1.5% · net revenue retention ≥ 105% · admin NPS ≥ 40
BO-09Trust with personal dataZero cross-tenant exposures · 100% of face/GPS processing backed by a consent record · data-principal requests closed in ≤ 15 days (internal target)
BO-10Productive, fairly reimbursed field teams (R3)Median travel-to-reimbursement ≤ 10 days · ≥ 90% of visits geo-verified · ≤ 5% of km revisions disputed

3. Problem statement and context​

3.1 Indian SME pain points​

#Pain pointConsequence today
P1Payroll compliance is fragmented: EPF, ESI, state PT and LWF, TDS, gratuity, bonus and minimum wages each have their own ceilings, slabs, dates and file formats. The Labour Codes and the Income-tax Act, 2025 are now changing them too.Spreadsheets, Tally and a consultant; late filings; rework every month
P2Attendance is diverse: biometric devices, night and rotating shifts, field staff, branches with different holidaysReconciling punches to payable days by hand; LOP disputes
P3HR maturity is low: no HRIS admin, and policies live in people's headsInconsistent decisions; no audit trail
P4The workforce is mobile-first, often on low-end Android phonesLeave requests on paper or WhatsApp; HR asked for payslips
P5Field staff are hard to supervise and reimburse fairlyFake visits, padded km, slow claims
P6SMEs are price-sensitive and churn when cost or effort risesTools abandoned after a painful setup
P7DPDP Act 2023 and its Rules cover employee, biometric and location dataUnclear consent and retention; risk from tracking apps

3.2 Why we are not cloning Spryple​

Spryple proves there is a market, and it proves the attendance → leave → payroll chain [Observed] (research §1, §16). Its depth on Indian rules is worth matching: sandwich leave, lates-to-leave, extra days, week-off penalties and split payroll/leave windows. We never copy its UI, text or assets. Several of its design choices are ones we reject:

Spryple behaviourEvidenceOur position and why
Policy changes apply only to new employees[Observed] SP-X-08, SP-LVE-07Disagree. Payroll becomes unexplainable. We use effective-dated policies instead (RULE-ORG-04).
The same rule lives in two places (probation, notice, lates, default shift)[Observed] D4, D5Disagree. Each rule gets one home (RULE-ORG-05).
Default password "Welcome1!", emailed in plain text[Observed] SP-IAM-01; [Observed-SS] §21.2Disagree. This is a security defect. We use invite links (RULE-IAM-01).
Ten fixed leave types; maternity/paternity/wedding eligibility set by gender and marital status[Observed] SP-LVE-02, SP-LVE-04Disagree. Maternity benefit does not depend on marriage. We provide a type builder with inclusive eligibility (RULE-LVE-11).
Pay group chosen by CTC range[Observed] SP-PAY-05Disagree. Salary band and structure are different things. Structures are assigned explicitly (RULE-PAY-17).
TDS typed in by hand; IT Declaration and Form 16 menus exist but are undocumented[Observed] SP-PAY-16; [Observed-SS] §21.5Extend. A TDS engine ships in R1 (BR-PAY-04).
Statutory "reports"; a PDF for the bank[Observed] SP-PAY-13, SP-PAY-15Extend. We produce portal-ready files and bank transfer files.
No F&F, letters, payroll lock or off-cycle runsGaps in §7.3, §8 and §18Add. Must-have in R1/R2.
Four mobile apps; Lite sold as a separate product[Observed] research §15, D10Disagree. One app; Lite becomes a plan.
GPS with no documented consent, hours limit or retention; the store listing says "No data collected" yet also "Shares location"[Observed] research §11; [Observed-SS] §21.1Disagree. Tracking is consent-based, limited to work hours and retention-bound (RULE-FFM-01..03).
Shift swaps happen without the counterpart's consent[Observed] SP-ATT-09Change. The counterpart accepts first (RULE-ATT-15).

4. Scope by release​

ReleaseThemeIn scopeBusiness outcome
R0FoundationsPLT (provisioning, plans, flags, support access, console), IAM, ORG, NTF core, auditTenants can be created, configured, secured and operated
R1 — MVPAttend-to-PayEMP, ATT, LVE, PAY (EPF, ESI, PT, LWF, TDS with IT declarations, ECR/ESI/PT files, bank files), RPT standard, MOB (ESS + MSS), PLT billingA Standard-plan SME replaces its spreadsheets
R2Full HR lifecycleCLM, EXT + F&F, ENG, kiosk + face, biometric gateway, Form 16/24Q, public API/webhooks, first dedicated cellProfessional and Enterprise plans can be sold
R3Field & projectsFFM, TSMField Force and Timesheet add-ons
R4Learning & scaleLMS, advanced analytics, dedicated-cell automation, ERP integrationsEnterprise expansion; lower ops cost

Out of scope for R0–R4:

  • Recruitment/ATS
  • Performance management
  • Surveys
  • Asset management (listed in Spryple's footer [Observed-SS] §21.1)
  • Employee helpdesk
  • On-premise installs
  • Non-India payroll and multi-currency
  • Automated filing on government portals (the client uploads the files we generate)
  • Timesheet invoicing
  • CRM quotes, orders and inventory
  • Per-client code

5. Stakeholders​

5.1 Register​

StakeholderInterestInfluence
Internal
FoundersViability, margin, positioningVery high: approve the BRD, pricing and release gates
ProductScope, rules, roadmap; owns the statutory-pack content processHigh
Engineering (platform_admin, release_manager)Feasibility, reliability, isolation, payroll engine correctnessHigh
Implementation / Customer SuccessGo-live speed, adoption, renewalsHigh
Support (support_engineer)Ticket volume, clarity of rulesMedium
SalesPlans, trials, Enterprise scopingMedium
Finance (billing_admin)Billing, GST invoices, collectionsMedium
Legal / compliance adviserDPDP, labour and tax law, contractsHigh on §9 and §14
External
Client owner (org_owner)Cost, compliance, controlVery high (buyer)
Client HR (hr_admin, hr_manager)Less admin, fewer disputesHigh (champion)
Client finance/payroll (finance_admin, payroll_manager)Correct pay, files on timeHigh
Line managers (line_manager, sales_manager)Fast approvals, team visibilityMedium
Employees, field executives (employee, field_executive)Correct pay, easy requests, privacy, battery lifeMedium (drive adoption)
Kiosk operators (kiosk_operator)Fast front-desk check-inLow
Auditors (auditor)Registers, evidence, audit trailMedium
Statutory bodies (EPFO, ESIC, Income Tax Dept, state PT/LWF/labour departments)Correct filings; they interact with us only through file formats and due datesIndirect, high
BanksValid transfer files; later H2H APIsMedium
Integration partners (biometric vendors, SMS/WhatsApp BSPs, maps, face provider, Razorpay, Tally/Zoho)Correct API use; they are listed as sub-processorsMedium

5.2 RACI: Spyrl internal​

ActivityFoundersProductEngImpl/CSSupportSalesFinanceLegal
Scope and roadmapARCCICIC
Statutory pack contentIARII–CR
Payroll engine correctnessICA/RCI–––
Pricing and plansARCC–RRC
Tenant implementationICCA/RCII–
Billing and dunningICCIIIA/RC
DPDP, DPA, sub-processorsACRIII–R
Releases and payroll freezeICA/RII–––
Incidents and client commsIIA/RCRI–C
L1/L2 support–CCCA/R–––
Contracts and SLAsACCC–RCR

5.3 RACI: client side (per tenant)​

Activityorg_ownerhr_adminhr_managerfinance_adminpayroll_managerline_manageremployeeSpyrl CS
Masters and policiesARCCC––C
Employee data accuracyACR–CCR (own)I
Approvals before cut-offI–A–IRR–
Pay structures, statutory setupA––RC––C
Payroll approval and paymentA–IRR–I–
Statutory upload and depositA––RR––I
Privacy notices and consentsARR––IRC
Go-live sign-offARCRR––R

The client is the employer and the Data Fiduciary. Spyrl computes and generates files. It does not file returns or pay dues for the client.


6. User types and roles​

A role is a set of permissions plus a data scope (CONVENTIONS.md §4). Tenants can clone the seeded roles [Proposed]. Spryple's own role model is undocumented: its "Roles & Permissions" page copies "Users Login" [Observed] D1.

Role keyResponsibilitiesData scopeMFA
org_ownerSubscription, role assignment, optional final payroll approvalORGRequired
hr_adminMasters, policies, roles, templates, calendars, importsORGRequired
hr_managerHires, documents, checklists, exceptions, attendance lock, separationsORG or LOCATIONOptional
finance_adminSalary structures, statutory registrations, payroll policies, run approval, F&F approvalORGRequired
payroll_managerCompensation, inputs, runs, files, declaration review, claim final approval, advancesORG or LOCATIONRequired
line_managerApproves attendance, leave, OT and timesheets; verifies claims; raises on-behalf requests; manages rostersTEAMOptional
sales_adminCRM masters: stages, activity and associate types, territoriesORGOptional
sales_managerTeam map, pipeline, visit and travel verification, device approvalsTEAM or LOCATIONOptional
employeeOwn profile, punches, requests, payslips, declarations, claims, consentsSELFOptional
field_executiveEverything an employee does, plus tracked punches, visits, clients and collectionsSELFOptional
kiosk_operatorFront-desk punches at one location; nothing elseLOCATION (punch-only)Device-enrolled
instructorOwn courses, assessments, completion reportsOwn coursesOptional
auditorRead-only registers, reports and audit logORG (read)Required

Platform roles [Proposed]: platform_admin, support_engineer, billing_admin and release_manager. None has standing access to tenant data (RULE-IAM-05). Statutory bodies, banks and partners hold no Spyrl roles.


7. Business workflows​

7.1 Hire-to-retire​

#StepActorRule / output
1–2Create the new hire; the system sends a pre-joining linkhr_manager, SystemRULE-EMP-01, RULE-EMP-02
3Candidate submits personal, family, education, bank and documents, and accepts the privacy noticeCandidateSubmission
4Each document is approved or rejected with a reasonhr_managerRULE-EMP-03
5Joining is confirmed: location, job, manager; policies attach by applicabilityhr_managerID issued (RULE-ORG-01)
6Structure and CTC assigned from the joining datepayroll_managerRULE-PAY-17
7Employee accepts the invite, sets a password and binds a deviceemployeeRULE-IAM-01, RULE-IAM-03
8Checklist items closed by their owners; induction heldItem ownersRULE-EMP-04
9Probation confirmed, extended or endedline_manager → hr_managerRULE-EMP-06
10Effective-dated transfers, promotions and pay revisionshr_manager, payroll_managerRULE-EMP-07

7.2 Attend-to-pay (monthly cycle)​

Example calendar: attendance window from the 26th to the 25th, payroll period = calendar month, pay on the last working day. Spryple supports split windows [Observed] SP-PAY-04.

#StepActorRule / output
1Punch by mobile (selfie + geo-fence), web, biometric import or kioskemployee, field_executive, kiosk_operatorRULE-ATT-12..14
2Day status, lates, OT, extra days and penalties computedSystemRULE-ATT-01..11
3Leave, regularization, permission, OT and on-duty requests raised and approvedemployee, line_managerRULE-NTF-01..04
4Reminders sent; exceptions resolvedSystem, hr_managerException list cleared
5Attendance window lockedhr_managerRULE-ATT-16
6Variable pay, one-time items and arrears entered; declarations verified; approved claims and advances pulled inpayroll_managerRULE-PAY-11, RULE-PAY-12, RULE-PAY-18
7–8Run calculated; validations and variance checkedpayroll_manager, SystemRULE-PAY-01..10, RULE-PAY-14
9Run approved by someone who did not edit the inputsfinance_admin or org_ownerRULE-IAM-04
10–11Run locked; payslips published; bank, ECR, ESI, PT, LWF and TDS outputs generatedpayroll_managerRULE-PAY-13
12Bank file uploaded and run marked Paid; client uploads statutory files and deposits duespayroll_manager (portals sit outside Spyrl)Filing tracker

7.3 Leave lifecycle​

#StepActorRule
1Balances credited by frequency; joiners proratedSystemRULE-LVE-02, RULE-LVE-03
2Leave applied for (or raised on behalf); days counted, sandwich includedemployee / line_managerRULE-LVE-04, RULE-LVE-07, RULE-NTF-01
3Approved or rejected, multi-level where configuredline_manager, hr_managerRULE-LVE-14
4Future leave cancelled through approvalemployee → line_managerRULE-LVE-09
5Day marked as leave; LOP flows to payrollSystemRULE-PAY-03
6Year end: carry forward, lapse or encashSystem, hr_managerRULE-LVE-05

7.4 Claim-to-reimburse (R2)​

#StepActorRule
1One or more bills submitted (category, number, date, amount, file); policy checkedemployeeRULE-CLM-02, RULE-CLM-03
2Each bill accepted, reduced or rejectedline_managerRULE-CLM-01 [Observed] research §9
3Verified claim approvedpayroll_managerRULE-CLM-01
4–5Paid in the next run or by an off-cycle bank fileSystem, payroll_managerRULE-PAY-18

7.5 Separation and F&F (R2)​

#StepActorRule
1Resignation submitted, or termination raised with a categoryemployee / hr_managerRULE-EXT-01, RULE-EXT-06
2–3Manager recommends; HR approves the LWD; notice shortfall computed or waivedline_manager, hr_managerRULE-EXT-02
4IT, admin, finance and manager clearance items signed offItem ownersRULE-EXT-05
5Access revoked at LWD; ex-employee access opensSystemRULE-EXT-07
6–7F&F computed as an off-cycle run, approved and paidpayroll_manager, finance_adminRULE-EXT-03, RULE-EXT-04
8Relieving and experience letters issuedhr_managerBR-EXT-05

7.6 Field visit to travel reimbursement (R3)​

#StepActorRule
1Beat or assignments plannedsales_managerBR-FFM-06
2Punch in starts tracking (consent required)field_executiveRULE-FFM-01, RULE-FFM-02
3Visit check-in geo-verified; activity and collection loggedfield_executiveRULE-FFM-04
4Punch out; day summary of visits and kmSystemRULE-FFM-05
5Travel verified; km revised with a reasonsales_manager[Observed-SS] KM Revised §21.7
6–7Mileage claim enters CLM at Verified, is approved and paidSystem, payroll_managerRULE-CLM-04

Spryple keeps a separate travel path (Pending → Verified → Approved → Claimed) [Observed] research §9. We merge it into CLM so there is one reimbursement pipeline.

7.7 Timesheet cycle (R3)​

#StepActorRule
1Account, project, tasks and team set uphr_admin / project line_managerBR-TSM-01
2–3Hours entered in a weekly grid and submitted; defaulters remindedemployee, SystemRULE-TSM-01, RULE-TSM-02
4–5Bulk approval; the week locksline_managerRULE-TSM-02
6Variance, bench and billable reportsline_manager, org_ownerRULE-TSM-02

7.8 Client (tenant) lifecycle​

#StepActorRule
1Sign-up; tenant provisioned with seeded dataProspect or Sales; SystemBR-PLT-01, RULE-PLT-04
2Owner activates, sets up MFA and runs the setup wizardorg_ownerBR-ORG-07
3Order placed; subscription createdSales, billing_adminBR-PLT-03
4–5Configuration, imports and devices; at least one parallel payroll runImpl/CS, hr_admin, payroll_manager§12.2 go-live gate
6Go-live sign-off; metering startsorg_owner, Impl/CSRULE-PLT-02
7Non-payment: grace period, then read-onlySystem, billing_adminRULE-PLT-01
8Cancellation, full export, deletion certificateorg_owner, platform_adminRULE-PLT-05

8. Business requirements​

Each priority (MoSCoW) is relative to its target release. Functional detail is in prd.md.

8.1 PLT — Platform & tenant administration​

IDRequirementPriRelRationale
BR-PLT-01Self-serve trial provisions a seeded tenant (roles, leave templates, statutory pack, optional sample data) in ≤ 2 minMustR0BO-01; Spryple has a self-serve trial [Observed-SS] §21.1
BR-PLT-02Plans and add-ons enable modules and set limits without code changesMustR0BO-05; Lite as a separate product [Observed] research §15
BR-PLT-03PEPM subscription billing: metering, GST invoices, online payment, dunning, suspensionMustR1BO-04; architecture.md §14
BR-PLT-04Central console: tenant search, plan change, trial extension, suspend, usage and health scores, in-app announcementsMustR0BO-05; Spryple exposes no platform layer [Inferred]
BR-PLT-05Dedicated deployment option (own DB, optionally own stack) for Enterprise, on the same release train; automated in R4ShouldR2Isolation demand; architecture.md §3
BR-PLT-06Support access is time-boxed, reason-coded, audited and visible to the tenantMustR0BO-09; security gap §18
BR-PLT-07Versioned statutory packs (EPF/ESI ceilings, PT/LWF slabs, TDS slabs) published centrally with effective datesMustR1BO-06; Spryple shows PT slabs [Observed] SP-PAY-13, unversioned
BR-PLT-08Full tenant data export at any time; scheduled deletion with a certificateMustR1BO-09; DPDP
BR-PLT-09Branding (logo, colours, sender name); custom domain on EnterpriseShouldR1 (domain R2)Spryple supports a logo [Observed] SP-ORG-05
BR-PLT-10Rollout waves, maintenance windows, payroll-window freeze, per-tenant release notesMustR0BO-02, BO-05
BR-PLT-11Enterprise sandbox tenant (copied configuration, masked data)CouldR2Enterprise UAT

8.2 ORG — Organisation & masters​

IDRequirementPriRelRationale
BR-ORG-01Company, locations (geo, PF code, ESI code per state, PT/LWF registration), departments, designations, grades, employment typesMustR0[Observed] SP-ORG-01..04, SP-PAY-03; no grades in Spryple
BR-ORG-02Employee IDs per location prefix and sequenceMustR1[Observed] SP-ORG-04
BR-ORG-03Holiday calendars per location (public and optional)MustR1[Observed] SP-ORG-06
BR-ORG-04Typed, versioned, effective-dated policies assigned by applicabilityMustR0Disagree with SP-X-07/08 [Observed]; D2–D5
BR-ORG-05Reporting hierarchy, org chart, department–designation mappingShouldR1[Observed] SP-ORG-07; org chart gap §4.5
BR-ORG-06Custom fields on employee, client and claim, usable in reports and importsShouldR2Config gap §18
BR-ORG-07Setup wizard with a go-live readiness scoreMustR1BO-01; Spryple relies on its implementation team [Observed] (M: Attendance)
BR-ORG-08Several legal entities (PAN/TAN, PF/ESI codes) under one tenantShouldR2Open question §20.8
BR-ORG-09Master hygiene: unique names, active flag, deactivation blocked while in use, bulk reassignmentMustR1[Observed] SP-X-01, SP-ORG-02

8.3 IAM — Identity & access​

IDRequirementPriRelRationale
BR-IAM-01Invite-link activation; no default or emailed passwordsMustR0Disagree with SP-IAM-01 [Observed]
BR-IAM-02Role builder (permission × scope) with seeded templatesMustR0D1 [Observed]; §20.1
BR-IAM-03MFA for admin and payroll roles; OIDC SSO on Standard+; SAML on EnterpriseMustR0 (SSO R1, SAML R2)Security gap §18
BR-IAM-04Mobile device binding, optional approval of new devices, remote sign-outMustR1[Observed] Device Approvals (M: CRM)
BR-IAM-05Append-only, exportable audit log of changes and sensitive readsMustR0Gap §4.5
BR-IAM-06Masking of salary, bank, Aadhaar, PAN and biometric fields without a field permissionMustR1Aadhaar on profiles [Observed-SS] §21.2
BR-IAM-07Segregation of duties between compensation edits and payroll approvalMustR1BO-02; lock gap §7.3
BR-IAM-08Password floor that tenants can tighten; session list and revokeMustR0[Observed] HR Rules 1–9; D2

8.4 EMP — Core HR & onboarding​

IDRequirementPriRelRationale
BR-EMP-01New hire → self-service pre-joining → HR review → employee recordMustR1[Observed] SP-EMP-04..06
BR-EMP-02Document collection and approval with reasons, re-upload and expiry alertsMustR1[Observed] SP-EMP-08
BR-EMP-03Onboarding and offboarding checklists with an owner per itemMustR1[Observed] SP-EMP-07; [Observed-SS] §21.2
BR-EMP-04Effective-dated job history (transfer, promotion, manager, employment type)MustR1Only a Contract/Promotions tab [Inferred] §4.5
BR-EMP-05Bulk import with dry-run, error report and idempotent commit (employees, balances, YTD, bank)MustR1[Observed] SP-EMP-10, SP-ATT-14
BR-EMP-06Profile self-service with approval for sensitive changesMustR1Rule 34 is a single toggle [Observed] SP-IAM-03
BR-EMP-07Letter templates (offer, appointment, confirmation, revision, relieving, experience)ShouldR2Lifecycle gap §18
BR-EMP-08Probation tracking and confirmation from one settingShouldR1D4 [Observed]
BR-EMP-09Induction programmesCouldR2[Observed] SP-EMP-09

8.5 ATT — Attendance & time​

IDRequirementPriRelRationale
BR-ATT-01Punch capture by mobile (selfie + geo-fence), web, biometric CSV/API and Excel; kiosk in R2MustR1[Observed] SP-ATT-13, -14, -19, -20
BR-ATT-02Shifts (night, flexible), rotations, week-off patterns, default shiftMustR1[Observed] SP-ATT-01, -06..08
BR-ATT-03One attendance policy for graces, thresholds, lates-to-leave, breaks, OT, extra days and penaltiesMustR1Rules scattered in Spryple [Observed] research §5.4
BR-ATT-04Requests: WFH/on-duty/remote, regularization, permission, shift change and swapMustR1[Observed] SP-ATT-02, -09..12
BR-ATT-05Deterministic day computation, re-run whenever an input changes in an open windowMustR1[Inferred] research §5.3; [Observed-SS] §21.3
BR-ATT-06OT policy covering eligibility, approval, caps, and pay vs comp-offMustR1OT is only "hours beyond shift" [Observed] SP-ATT-16
BR-ATT-07Attendance lock tied to the payroll runMustR1Gap §5.4
BR-ATT-08Several geo-fences per location; Wi-Fi/QR fallbackShouldR1Single radius per branch [Observed-SS] §21.3
BR-ATT-09Biometric push gateway with device health monitoringShouldR2§20.4
BR-ATT-10Roster planner with coverage viewCouldR3Gap §5.4

8.6 LVE — Leave & holidays​

IDRequirementPriRelRationale
BR-LVE-01Leave-type builder with Indian templates and unlimited custom typesMustR1Ten fixed types [Observed] SP-LVE-02
BR-LVE-02Accrual: frequency, proration, carry-forward cap, lapse, encashment, advance leaveMustR1[Observed] SP-LVE-03
BR-LVE-03Sandwich rules per type, applied to each employee's own calendarMustR1[Observed] SP-LVE-01
BR-LVE-04Comp-off earning, request, expiry and consumptionMustR1[Observed] SP-LVE-03, -05
BR-LVE-05Leave ledger and opening-balance importMustR1Gap §6.3
BR-LVE-06Inclusive eligibility; maternity never depends on marital statusMustR1Disagree with SP-LVE-04 [Observed]
BR-LVE-07Team calendar with conflict warningsShouldR1Gap §6.3
BR-LVE-08Optional holidays with an annual maximumMustR1[Observed] SP-LVE-01
BR-LVE-09State statutory leave templates (Shops & Establishments, OSH Code)ShouldR2Gap §6.3

8.7 PAY — Payroll & statutory​

IDRequirementPriRelRationale
BR-PAY-01Salary-structure templates with formula components, kept separate from effective-dated compensationMustR1Disagree with SP-PAY-05 [Observed]
BR-PAY-02Run lifecycle with validations, variance report and immutable snapshotsMustR1Gap §7.3; RSK-01
BR-PAY-03EPF (with EDLI and admin charges), ESI (state codes), PT, LWF from statutory packsMustR1[Observed] SP-PAY-02, -03, -13; LWF missing §7.3
BR-PAY-04TDS engine: both regimes, declarations, proofs, projectionMustR1[Observed] SP-PAY-16; [Observed-SS] §21.5
BR-PAY-05Portal-ready ECR, ESIC, PT and LWF filesMustR1Spryple has "reports", not files [Inferred] §7.3
BR-PAY-06Bank transfer files (generic and major-bank formats) and a bank-wise summaryMustR1Spryple produces a PDF only [Observed] SP-PAY-15
BR-PAY-07Payslips in ESS and as password-protected email PDFsMustR1[Observed] (E: Payroll)
BR-PAY-08Inputs: auto-arrears, variable pay, OT, extra days, penalties, one-time itemsMustR1[Observed] SP-PAY-09, -17
BR-PAY-09Advance salary with recovery ledger; loans in R2ShouldR1[Observed] research §7.1; D9
BR-PAY-10Off-cycle runs (F&F, bonus, corrections)MustR2Gap §7.3
BR-PAY-11Form 16 and 24Q data, or their Income-tax Act, 2025 successorsMustR2Gap §18
BR-PAY-12Payroll journal export (Tally XML, CSV); Zoho Books/ERP API integration in R4ShouldR2Gap §18; CONVENTIONS.md §7
BR-PAY-13Parallel-run comparison against legacy payrollMustR1BO-01, BO-02
BR-PAY-14Variable DA from CPI notificationsCouldR2[Observed] SP-PAY-08
BR-PAY-15Statutory bonus and minimum-wage checksShouldR2Gap §7.3
BR-PAY-16Gratuity and leave-encashment liability reportsShouldR2Gratuity shown as a deduction [Observed-SS] §21.5
BR-PAY-17Two pay-schedule bases; separate attendance and payroll windowsMustR1[Observed] SP-PAY-04; D6

8.8 NTF — Notifications & approvals​

IDRequirementPriRelRationale
BR-NTF-01One approval engine: levels, conditions, delegation, escalationMustR1 (2 levels + delegation)[Observed] SP-X-03; §20.2
BR-NTF-02On-behalf requests auto-approved and auditedMustR1[Observed] SP-X-04
BR-NTF-03In-app, email and push channels; metered SMS and WhatsAppMustR1[Observed] SP-X-09
BR-NTF-04Unified approvals inbox on web and mobile with bulk actionsMustR1Three entry points [Observed] SP-ATT-05
BR-NTF-05Scheduled reminders (onboarding, regularization, declarations, cut-off, timesheets)MustR1[Observed] SP-EMP-03
BR-NTF-06Tenant-editable templates with language bundlesShouldR1Messages Master [Observed] SP-X-02

8.9 RPT — Reporting​

IDRequirementPriRelRationale
BR-RPT-01Each report defined once and filtered by the viewer's scopeMustR1Reports duplicated per role [Observed] research §14
BR-RPT-02Persona dashboardsMustR1[Observed] SA: Dashboard
BR-RPT-03Excel/CSV/PDF export that honours maskingMustR1[Observed] SP-X-05
BR-RPT-04Saved filters and scheduled email deliveryShouldR2Gap §14
BR-RPT-05Custom report builder and trend analyticsCouldR4Gap §14
BR-RPT-06Statutory registers in prescribed formatsShouldR2§14

8.10 MOB — Mobile & kiosk​

IDRequirementPriRelRationale
BR-MOB-01One Android + iOS app with role- and entitlement-based navigationMustR1Four apps [Observed] research §15; D10
BR-MOB-02Offline punch queue with trusted timeMustR1Gap §5.4
BR-MOB-03Kiosk mode (location-scoped, punch-only) with face verification and livenessShouldR2[Observed] SP-ATT-19; no liveness [Observed-SS] §21.3
BR-MOB-04Runs on low-end Android and weak networks; Indian languages laterShouldR1 (languages R3)P4
BR-MOB-05Company-code login, then PIN/biometric unlock on the bound deviceMustR1[Observed] SP-X-10

8.11 CLM — Claims​

IDRequirementPriRelRationale
BR-CLM-01Multi-bill claims with two-stage approval and decisions per billMustR2[Observed] research §9
BR-CLM-02Expense policy: categories, limits by grade/city tier, receipt thresholds, per-diem, mileageMustR2No limits in Spryple [Observed] research §9
BR-CLM-03Duplicate-bill detectionShouldR2Gap §9
BR-CLM-04Payout via payroll or off-cycle bank fileMustR2CLM → PAY missing §16
BR-CLM-05Mileage claims generated from verified FFM travelShouldR3Two reimbursement paths [Observed] §9
BR-CLM-06One status vocabulary across rolesMustR2Statuses differ by role [Observed] §9
BR-CLM-07GSTIN and tax fields on billsCouldR2Gap §9
BR-CLM-08Receipt OCRCouldR4Gap §9

8.12 EXT — Exit & F&F​

IDRequirementPriRelRationale
BR-EXT-01Resignation chain (employee → manager → HR) with LWD negotiationMustR2HR-only approval [Observed] (M: Exit); D7
BR-EXT-02Termination with categories and reasonsMustR2[Observed] (A: Exit)
BR-EXT-03Clearance with sign-off by the owner of each itemMustR2[Observed] offboarding checklist
BR-EXT-04F&F as an off-cycle run, with a statementMustR2Gap §8
BR-EXT-05Relieving and experience lettersShouldR2Gap §8
BR-EXT-06Access revoked at LWD; ex-employee access to payslips and tax documentsMustR2Gap §8
BR-EXT-07Exit interview, rehire flag, attrition analyticsCouldR3Gap §8

8.13 ENG, FFM, TSM, LMS​

IDRequirementPriRelRationale
BR-ENG-01Announcements with audience targeting, scheduling and read receiptsShouldR2[Observed] SP-ENG-01; targeting gap §13
BR-ENG-02Peer recognition with tenant-defined typesCouldR2[Observed] (MOB: HCM); [Observed-SS] §21.9
BR-ENG-03Birthday and anniversary feed (employees can opt out)CouldR2[Proposed]
BR-FFM-01Consent-based tracking in work hours only; point-to-point or continuous modeMustR3[Observed-SS] two modes §21.7; consent gap §11
BR-FFM-02Team map (live and past), battery, km, tracking logMustR3[Observed] (M: CRM)
BR-FFM-03Configurable pipeline stages and activity types with templatesMustR3Hard-coded demo pipeline [Observed] §11
BR-FFM-04Client accounts, contacts and associates shared with TSMMustR3[Observed] associates; duplicate masters §10
BR-FFM-05Geo-verified visits with configurable enforcementMustR3Indicator only [Observed-SS] §21.7
BR-FFM-06Beat/route plans and assignmentsShouldR3[Observed] assignments (M: CRM)
BR-FFM-07Payment collection in the fieldShouldR3[Observed] Client Payments
BR-FFM-08Manager-verified travel converted into reimbursementMustR3[Observed] Team Travel Approvals
BR-FFM-09Lead ageing and overdue follow-up alertsShouldR3[Observed-SS] §21.7
BR-TSM-01Projects, tasks, roles and team on shared client accountsMustR3[Observed] (A: Time Sheet)
BR-TSM-02Weekly grid, submission, bulk approval, period lockMustR3[Observed] (M: Time Sheet); gap §10
BR-TSM-03Defaulter remindersShouldR3[Observed] Defaulters
BR-TSM-04Billable flag and rate, export onlyShouldR3Gap §10
BR-TSM-05Bench, effort-variance and estimate-vs-actual dashboardsShouldR3[Observed] (M, SA: Time Sheet)
BR-LMS-01Mandatory compliance courses (POSH, safety, induction) by applicability, linked to onboardingMustR4Gap §12
BR-LMS-02SCORM import instead of a rich course builderShouldR4Research §12
BR-LMS-03Assessments, verifiable certificates, badgesCouldR4[Observed] (I, E: LMS); [Observed-SS] §21.10

9. Business rules​

"Window" means the attendance window and "period" means the payroll period.

9.1 ORG and IAM​

IDRuleLabel
RULE-ORG-01Employee ID per location. ID = location prefix + zero-padded sequence starting at the location seed. Locations sharing a prefix and seed share one sequence. A duplicate location with a different prefix is rejected. IDs are issued at joining confirmation, are gap-free and never reused, and do not change on transfer.[Observed] SP-ORG-04 (A: Employee Mgmt); timing and immutability [Proposed]
RULE-ORG-02Master names are unique per tenant, case-insensitive. A master in use by active employees cannot be deactivated until they are reassigned; bulk reassignment is offered.[Observed] SP-X-01, SP-ORG-02; bulk [Proposed]
RULE-ORG-03Each location has at most one holiday per date. A holiday edit recomputes open windows only; for locked windows the differences flow as adjustments.[Observed] SP-ORG-06; recompute [Proposed]
RULE-ORG-04Policy effective dating. Each policy version has a valid_from, ends the day before the next version starts, and never overlaps another version. A version applies to every employee whose applicability matches, from valid_from. valid_from must fall in an open window/period. An earlier date needs finance_admin approval and creates arrears or recoveries in the next run. Named employees may be pinned to the old version (grandfathered), with a reason.[Proposed]; disagrees with SP-X-08 [Observed]
RULE-ORG-05Applicability and single home. The most specific match wins: employee override > grade > designation > department > location > employment type > tenant default. Two matches at the same level are blocked at save. Each rule lives in exactly one policy type: probation and notice in Probation/Notice, lateness in Attendance, default shift in Shift.[Proposed]; fixes D4, D5 [Observed]
RULE-IAM-01No default passwords. Activation uses a single-use link valid for 72 h, and resending it invalidates earlier links. Password floor: ≥ 10 characters, breached-password check, 15-minute lockout after 5 failures. Tenants can tighten the floor, not loosen it.[Proposed]; disagrees with SP-IAM-01, Rules 1–9 [Observed]
RULE-IAM-02MFA is mandatory for org_owner, hr_admin, finance_admin, payroll_manager, auditor and all platform roles.[Proposed]
RULE-IAM-03The first mobile login binds the device. If device approval is on, a new device stays pending until the line_manager or sales_manager approves it; approval signs out the old device.[Observed] Device Approvals (M: CRM); sign-out [Proposed]
RULE-IAM-04Segregation of duties (on). Whoever edited compensation, one-time inputs or arrears for a period cannot approve that period's run. A tenant with a single finance user can turn this off; the change is audited.[Proposed]
RULE-IAM-05Support access needs a reason and a ticket, lasts ≤ 4 h, is read-only unless the tenant grants write, and appears in the tenant's access log. Enterprise tenants approve each session in advance.[Proposed]

9.2 EMP​

IDRuleLabel
RULE-EMP-01New-hire mandatory fields: first and last name, hired-on date, joining date, designation, mobile, emergency contact, and location. Personal email is optional; without one, the link is sent by SMS/WhatsApp.[Observed-SS] §21.2; location [Proposed]
RULE-EMP-02The pre-joining link is single-use and valid for 7 days. A resend invalidates the old link. Spryple's 24 h is too short for candidates who are still gathering documents.[Observed-SS] 24 h §21.2; 7 days [Proposed]
RULE-EMP-03Document approval. Employee uploads stay Pending until hr_manager approves or rejects them. A rejection needs a reason and reopens the upload. HR uploads are auto-approved. Allowed files: PDF/JPG/PNG ≤ 5 MB. Documents mandatory for joining block joining confirmation until approved. Expiring documents alert 30 days ahead.[Observed] SP-EMP-08; mandatory, size, expiry [Proposed]
RULE-EMP-04Onboarding is Completed only when the owner of every mandatory checklist item has marked it No Due.[Observed] SP-EMP-07; owners [Observed-SS] §21.2
RULE-EMP-05Profile fields are self-editable, approval-required (bank, legal name, PAN, address) or HR-only. A bank change reaches payroll only if it is approved before the period lock; otherwise it applies from the next period.[Proposed]; Rule 34 toggle [Observed]
RULE-EMP-06Probation is set in days, in one place. A confirmation task is raised 15 days before the end. If nobody acts, the employee stays on probation and the task escalates; nobody is ever auto-confirmed.[Proposed]; resolves months-vs-days D4 [Observed]
RULE-EMP-07Job and pay changes are effective-dated. A mid-period change splits the attendance policy and pay at the effective date. Imports commit only after a dry-run with zero blocking errors, and are idempotent by employee ID.[Proposed]

9.3 ATT​

IDRuleLabel
RULE-ATT-01Day-status precedence: (1) holiday or week-off from the employee's calendar; (2) approved full-day leave or attendance request; (3) punches; (4) thresholds. Statuses: P, A, HD, L, HL, W, H, WP, HP, OD, WFH. A half-day leave combines with a half-day worked.[Observed-SS] legend §21.3; precedence [Inferred] §5.3
RULE-ATT-02Half/full-day thresholds. Worked hours ≥ full-day threshold (8 h) → P; ≥ half-day threshold (4 h) → HD; otherwise A. Approved permission minutes count as worked.[Observed] HR Rules 27–28
RULE-ATT-03Worked hours = last out − first in − unpaid break, where break time beyond the allowed lunch/tea duration plus grace is unpaid. Punches from different sources within 2 min of each other are de-duplicated first, so breaks are always applied. Spryple ignores breaks when sources mix.[Observed] Rules 38–42; [Observed-SS] §21.3; de-dup [Proposed]
RULE-ATT-04Late / early. Late if first in > shift start + grace-in. Early-out if last out < shift end − grace-out. A night shift belongs to the date it starts.[Observed] SP-ATT-01; night shift [Proposed]
RULE-ATT-05Lates-to-leave. With L = late days in the window, deduction = floor(max(0, L − A) ÷ N) × X, where A = free lates (2), N = block size (3) and X = days per block (0.5). Example: 8 lates → floor(6 ÷ 3) × 0.5 = 1 day. The deduction is debited from leave types in order (CL, then EL), then LOP. It posts on the last day of the window and is recomputed if a late is regularized before lock.[Observed] SP-ATT-01, Rules 22–24; formula, order [Proposed]
RULE-ATT-06Missed punch. A day with an in-punch and no out-punch is "Missed punch" until regularized. With default punch-out on, out = shift end and the day is flagged. A day still unresolved at lock takes the policy status (HD).[Observed] Rule 35, SP-ATT-11; lock outcome [Proposed]
RULE-ATT-07Regularization is allowed within the lookback (7 days), only in an open window, at most 4 per month, with line_manager approval. The employee may convert the day to leave instead; it becomes LOP only if no balance is left.[Observed] Rules 32–33, SP-ATT-11/12; cap [Proposed]
RULE-ATT-08Permission (short leave): one per day, ≤ 120 min each, ≤ 4 per month, paid or unpaid per policy.[Observed] SP-ATT-10, Rule 29; caps [Proposed]
RULE-ATT-09OT eligibility. OT = worked minutes − shift minutes, counted only if ≥ the minimum (60 min). It is payable only if the policy is OT-eligible, the line_manager approved it, and it stays within caps (4 h/day, 50 h/quarter; verify under the OSH Code). Pay = OT hours × hourly ordinary wage × 2 (statutory for covered workers; verify). A day earns OT pay or comp-off, never both.[Observed] SP-PAY-07, SP-ATT-16; rest [Proposed]
RULE-ATT-10Extra-day slabs. Slabs are set per designation: min–max days worked → E extra days. "Days worked" counts the configured day types (WP, HP). If the count falls inside a slab, E days are paid at the RULE-PAY-01 per-day rate. A day paid as extra earns neither comp-off nor OT.[Observed] SP-ATT-17, Rules 43–45; computation [Inferred]; exclusivity [Proposed]
RULE-ATT-11Week-off penalty. For penalty designations, a week-off is unpaid if the employee is Absent (no approved leave or request) on the counting days (both the working day before and the one after; option: either). Separately, if LOP days in the window ≥ T (10), penalty week-offs = week-offs in window × LOP days ÷ scheduled working days, rounded down to 0.5. No week-off is penalised twice.[Observed] SP-ATT-18, Rules 46–48, SP-PAY-07; formula [Proposed]
RULE-ATT-12Geo-fence. A punch is inside if it falls within the radius (200 m) of any fence assigned to the employee, or comes from an allowed Wi-Fi/QR. Outside punches are flagged (or blocked, per policy). GPS accuracy worse than 100 m is flagged.[Observed-SS] 200 m §21.3; rest [Proposed]
RULE-ATT-13Selfie and face. Selfies are taken per policy. A low face-match score is flagged for review, never silently rejected. Kiosk face punches need liveness. Face enrolment needs recorded consent; without it the employee uses PIN or selfie.[Observed] SP-ATT-19; liveness, consent [Proposed]
RULE-ATT-14Offline punches keep device time if drift at sync is ≤ 5 min and the sync happens within 72 h. Otherwise they need approval.[Proposed]
RULE-ATT-15Shifts. Rotations advance through their sequence; a reassignment applies from its effective date. New joiners get the default shift and week-offs of their Shift policy. A shift change needs an assigned shift and manager approval. A swap also needs the counterpart's acceptance first.[Observed] SP-ATT-07, SP-ATT-09, Rules 16–21; consent [Proposed]
RULE-ATT-16Attendance lock. A locked window is read-only. Corrections approved by hr_manager become adjustment lines in the next run, quoting the original date.[Proposed]; gap §5.4

9.4 LVE​

IDRuleLabel
RULE-LVE-01The leave cycle is Apr–Mar or Jan–Dec. It can change only from the start of the next cycle.[Observed] SP-LVE-01; timing [Proposed]
RULE-LVE-02Accrual. Credit per period = annual quota ÷ periods per year (12, 4, 2 or 1), posted on the first day of the period.[Observed] SP-LVE-03; posting day [Inferred]
RULE-LVE-03Proration. A joiner's first credit = period credit × (days from joining to period end, inclusive) ÷ days in the period. For yearly types, the credit is the annual quota × months remaining ÷ 12, where the joining month counts if joining falls on or before the 15th. Credits round down to 0.5. Leavers get no credit for periods that start after the LWD. For yearly types, leave taken beyond the pro-rata entitlement is recovered in F&F.[Proposed]
RULE-LVE-04Sandwich. Suppose a sandwich-enabled type (or LOP) covers the full working day before and the full working day after a continuous block of week-offs (weekend flag) and/or holidays (holiday flag). Then every day in the block counts as that leave; if the two sides differ, the later-dated type is used. A half-day on either side does not trigger it. The employee's own calendar applies. Example: Friday + Monday leave = 4 days.[Observed] SP-LVE-01/03; tie-breaks [Proposed]
RULE-LVE-05Year end. Balances up to the carry-forward cap carry over. The excess lapses or is encashed per type: days × (basic + DA) ÷ 26, paid in the first run of the new cycle.[Observed] cap and lapse → perks SP-LVE-03; formula [Proposed]
RULE-LVE-06Comp-off eligibility and expiry. Earned by work on a week-off or holiday: ≥ full-day threshold → 1 day, ≥ half-day threshold → 0.5 day, and only if no OT or extra-day pay is claimed for that date. It must be requested within 30 days, needs line_manager approval, expires 60 days after the worked date, is consumed oldest first and cannot be encashed.[Observed] SP-LVE-03/05; FIFO, exclusivity [Proposed]
RULE-LVE-07Request checks: minimum service (months), eligibility conditions, advance notice (days; managers may override with a reason), maximum days per instance, and balance. Only advance-leave types may go negative; any excess must be applied as LOP.[Observed] SP-LVE-03, SP-LVE-05; override [Proposed]
RULE-LVE-08Sick leave longer than 2 consecutive days needs a medical document within 3 working days of return. Without it, the leave stays approved but is flagged, and hr_manager may convert it to LOP before lock.[Observed] threshold SP-LVE-03; handling [Proposed]
RULE-LVE-09Past-dated leave is allowed within 7 days, in open windows only. Employees can cancel approved leave only for future dates, through cancellation approval. Only hr_manager can reverse past leave, with a reason.[Observed] SP-LVE-01, SP-LVE-05/06; reversal [Proposed]
RULE-LVE-10Advance leave: up to N days borrowed against the future accrual of one monthly type, repaid from the next credits; anything outstanding at exit is recovered in F&F.[Observed] SP-LVE-03; F&F [Proposed]
RULE-LVE-11Parental eligibility never depends on marital status or binary gender. Maternity: 26 weeks for the first two children, 12 weeks after that; 12 weeks for adopting mothers (child under 3 months) and commissioning mothers; eligibility = ≥ 80 days worked in the preceding 12 months (verify all values). Paternity/partner and adoption leave can be configured for any parent.[Proposed]; disagrees with SP-LVE-04 [Observed]
RULE-LVE-12Optional holidays: at most N per cycle, chosen from the location's list, approved by line_manager.[Observed] SP-LVE-01/06
RULE-LVE-13Every balance change is a ledger entry (credit, debit, lapse, encash, adjust, reverse) with its source and reason. Balance = sum of entries. Balances are never edited directly.[Proposed]
RULE-LVE-14Default approver: line_manager. Leave longer than 5 days adds hr_manager as a second level.[Proposed]; §20.2

9.5 PAY​

IDRuleLabel
RULE-PAY-01Payable days, two bases. G = monthly amount of a prorated component. Actual days: D = calendar days in the period; PD = D − LOP − penalty week-offs − days before joining − days after LWD; earned = G × PD ÷ D. Organisation working days: W = the employee's scheduled working days in the period (excluding their week-offs and location holidays); PD = working days employed − LOP − penalty week-offs; earned = G × PD ÷ W. PD ≥ 0. Components marked non-prorated pay in full when PD > 0. A fixed 30-day basis is a third option.[Observed] two bases SP-PAY-04 (D6); formulas [Inferred]; 30-day [Proposed]
RULE-PAY-02Split windows. LOP and penalties counted in the window apply to the period. Days between window end and period end are treated as present and corrected in the next period. F&F uses actual attendance up to the LWD.[Observed] SP-PAY-04; carry-over [Proposed]
RULE-PAY-03Absent days are LOP when the policy says so (on). LOP = absent days + LOP leave + lates-to-leave that fell to LOP + missed punches unresolved at lock.[Observed] SP-PAY-07
RULE-PAY-04A mid-period revision prorates each component by calendar days at the old and new rates.[Proposed]
RULE-PAY-05EPF applicability. Mandatory at ≥ 20 employees (voluntary below that). PF wages = basic + DA + retaining allowance; check the Code on Wages 50% "wages" add-back. Employee pays 12%. The employer's 12% splits into 8.33% EPS (on wages capped at ₹15,000) and 3.67% EPF, plus EDLI 0.5% and admin 0.5%. New joiners above the ceiling who were never members may opt out. Contribution on actual wages above the ceiling is a per-structure choice. (All values to verify.)[Observed] SP-PAY-02; values [Proposed, verify]
RULE-PAY-06ESI applicability. An employee is covered if gross wages ≤ ₹21,000/month (₹25,000 for persons with disability) at the start of a contribution period (Apr–Sep, Oct–Mar), and stays covered to the end of that period. Employee 0.75%, employer 3.25% (verify). The work-location state's ESI code is used.[Observed] SP-PAY-03; values [Proposed, verify]
RULE-PAY-07Statutory contributions are computed on earned wages after LOP by default. Spryple's "independent of LOP" option is offered as a per-structure setting.[Observed] SP-PAY-07; default [Proposed]
RULE-PAY-08PT follows the work-location state's slab as of the period end date, with that state's wage base and frequency, including special months (e.g. a higher February deduction in some states). Annual PT never exceeds ₹2,500 (verify).[Observed] SP-PAY-13; mechanics [Proposed, verify]
RULE-PAY-09LWF applies the state's employee and employer amounts in the state's deduction months to employees who meet its wage criteria.[Proposed]; missing in Spryple [Observed] §7.3
RULE-PAY-10TDS (salary). Monthly TDS = (annual tax plus cess on projected taxable salary under the chosen regime − TDS already deducted this year, including by a previous employer) ÷ remaining months including the current one. The new regime is the default unless the employee opts out by the cutoff. Declarations count until the proof cutoff (January); after that, only verified proofs. One-time payments are taxed in the month they are paid. Without a PAN, the higher rate applies (verify).[Proposed]; replaces SP-PAY-16 [Observed]
RULE-PAY-11Advance salary. Available after ≥ 1 payslip, up to one month's gross, one open advance at a time. Instalment = ceil(amount ÷ n), with the last one adjusting; n ≤ the policy maximum; recovery starts in the run after disbursement. A new request is allowed only after the cooling-off months that follow full recovery. Total deductions in a month are capped at 50% of wages (verify), and any excess instalment is deferred. The balance at exit is recovered in F&F.[Observed] research §7.1, SP-PAY-07; cap, exit [Proposed]
RULE-PAY-12Arrears. A change back-dated into a locked period is computed as the difference per month and component, and paid or recovered in the next run. The payslip shows it by month.[Observed] SP-PAY-09 (manual); automatic [Proposed]
RULE-PAY-13Run lifecycle: Draft → Calculated → Approved (per RULE-IAM-04) → Locked → Paid. A locked run is immutable, and payslips and files are published only after lock. Corrections go through an off-cycle run or the next run. Unlocking is possible only before Paid, by finance_admin with a reason, and it voids the files. Emailed payslips are password-protected (first 5 characters of PAN + DOB as DDMM).[Proposed]; gap §7.3
RULE-PAY-14Pre-run validation. Blocking errors: no structure, no bank account (for bank-paid staff), negative net pay, no PAN when TDS > 0, no UAN for PF members after their first month. Warnings: net pay changed > 20%, joiners or leavers, zero attendance.[Proposed]
RULE-PAY-15Parameters come from the statutory-pack version effective on the period end date (or the payment date where the law says so). Tenants cannot edit a pack but can apply audited overrides. Components and net pay round to the rupee; statutory amounts follow the pack's rounding (e.g. ESI rounds up; verify).[Proposed]
RULE-PAY-16Gratuity is an employer cost. It may appear in CTC and liability reports but is never deducted from net pay.[Proposed]; disagrees with [Observed-SS] §21.5
RULE-PAY-17Structures are assigned explicitly and effective-dated. A CTC band may suggest a structure but never decides it.[Proposed]; disagrees with SP-PAY-05 [Observed]
RULE-PAY-18Claims approved by the period's input cut-off are paid in that run as reimbursement lines, taxable or exempt by category. Later approvals go to the next run or an off-cycle bank file.[Proposed]

9.6 NTF and CLM​

IDRuleLabel
RULE-NTF-01On-behalf auto-approval. A request raised for an employee is auto-approved when the actor holds the approve permission at a scope covering that employee and the request passes policy checks (balance, windows). Otherwise it goes to the approver above the actor. Nobody can raise an on-behalf request for themselves. The record says "by X on behalf of Y", and the employee is notified.[Observed] SP-X-04, SP-ATT-04, SP-LVE-06; checks [Proposed]
RULE-NTF-02Nobody approves their own request: if the resolved approver is the requester, the step moves up a level (to hr_manager at the top). Approvers can delegate for a date range. An approver on leave with no delegate routes to their own manager.[Proposed]
RULE-NTF-03A reminder goes out after 24 business hours; the step escalates after 48. Requests touching an open window appear on the cut-off dashboard. Nothing auto-approves on timeout unless enabled per request type. Non-urgent push/SMS is held between 21:00 and 08:00.[Proposed]
RULE-NTF-04The requester can edit or withdraw while the request is Submitted. A rejection needs a reason. Approved future items are cancelled only through cancellation approval.[Observed] SP-X-03
RULE-CLM-01Two-stage approval: Submitted → Verified by line_manager (per bill: accept, reject, or reduce up to the claimed amount) → Approved by payroll_manager → Paid. The same person never verifies and approves one claim. If every bill is rejected, the claim is Rejected.[Observed] research §9 (M, A, MOB: Claims); SoD [Proposed]
RULE-CLM-02Policy checks per category: limits per bill, day or month by grade and city tier; receipt needed above ₹500; bills older than 60 days are blocked. An over-limit bill needs a justification and is flagged to the verifier. Attachments are image/PDF ≤ 5 MB (Spryple allows 2 MB).[Observed-SS] 2 MB §21.6; rest [Proposed]
RULE-CLM-03The same bill number, amount, date and vendor already claimed by the same employee is blocked; across employees it is flagged.[Proposed]
RULE-CLM-04Mileage = verified km × rate per vehicle type (₹/km by grade). The claim is created from verified travel and enters at Verified. A claim is Paid when its run is Paid or its bank file is confirmed.[Proposed]; manual "mark Paid" [Observed] §9

9.7 EXT​

IDRuleLabel
RULE-EXT-01Separation chain: employee → line_manager (recommends) → hr_manager (decides). Proposed LWD = resignation date + notice days. HR may set another LWD, with a reason. The employee can withdraw before approval; after approval, only with HR's consent.[Observed] request, approved exit date (E, M: Exit); chain [Proposed]
RULE-EXT-02Notice shortfall = notice days − (LWD − resignation date + 1), when positive. Recovery = shortfall days × the RULE-PAY-01 per-day rate on gross (or basic, per policy). hr_manager may waive it in full or in part, with a reason. When the employer relieves someone early, the policy decides whether pay in lieu of notice is due.[Proposed]; gap §8
RULE-EXT-03Gratuity eligibility: ≥ 5 years of continuous service, waived on death or disablement; fixed-term employees qualify pro-rata after 1 year under the Code on Social Security (verify). Amount = last basic + DA × 15 ÷ 26 × completed years; a final part-year over 6 months counts as a full year; capped at ₹20 lakh (verify). Whether 4 years 240 days counts as 5 is a tenant setting pending counsel.[Proposed]; Spryple has only a coverage toggle [Observed] SP-PAY-07
RULE-EXT-04F&F components: earned salary to the LWD, encashable leave, gratuity, notice pay or recovery, pending reimbursements, variable pay/bonus/arrears due; minus advances and loans, excess leave, unreturned assets and notice recovery. TDS is recomputed for the year. A negative net is shown as recoverable. F&F is due 2 working days after the LWD (Code on Wages; verify), and overdue cases are flagged.[Proposed]
RULE-EXT-05F&F cannot be approved until every mandatory clearance item has been signed off by its owner.[Observed] No Due (M: Exit); owners [Observed-SS] §21.2
RULE-EXT-06A termination can be back-dated within the policy limit (0–60 days). If the date falls in a locked period, the difference is settled in F&F.[Observed] Rule 37; locked handling [Proposed]
RULE-EXT-07Login is disabled at 23:59 on the LWD, local time. Ex-employees get read-only access to their payslips and tax documents for 12 months, via mobile OTP.[Proposed]

9.8 FFM and TSM​

IDRuleLabel
RULE-FFM-01Tracking consent. Tracking starts only after the employee accepts a versioned notice covering purpose, hours, retention and viewers. Withdrawal stops continuous tracking immediately; punches and visits still work in point-to-point mode. Consent events are stored with the time and the notice version.[Proposed]; in-app disclosure [Observed-SS] §21.7
RULE-FFM-02Work-hours limit. Points are collected only between punch-in and punch-out, never on leave, week-offs or holidays unless the employee is on approved on-duty. Tracking stops automatically after 12 h or at shift end + 2 h, whichever comes first. An on-screen indicator shows when tracking is on. Each user has one mode: point-to-point or continuous.[Observed-SS] modes §21.7; limits [Proposed]
RULE-FFM-03Raw points are kept for 90 days. After that only daily aggregates (km, visits, durations) remain, kept as long as the related claim and payroll records.[Proposed]
RULE-FFM-04Geo-verified visit: a check-in within 150 m of the client location counts as Verified. Outside that, policy decides (flag, block or allow). A client with no location takes the location of its first visit, pending sales_manager confirmation.[Observed-SS] matched indicator, first-visit location §21.7; enforcement [Proposed]
RULE-FFM-05Day km = snap-to-road distance over filtered points (jumps above 150 km/h are dropped). A manager's revision needs a reason and keeps both values; claims use the revised value.[Observed-SS] KM Revised §21.7; method [Proposed]
RULE-FFM-06Lead-age bands (days since last activity): green 0–7, amber 8–14, red 15+. Overdue follow-ups show as Exceeded.[Observed-SS] §21.7
RULE-TSM-01When the policy is on, a day's timesheet hours cannot exceed that day's attendance worked hours.[Observed] (E: Time Sheet); missing from HR rules, D11
RULE-TSM-02Weekly timesheets are due by Monday 12:00 for the previous week. Defaulters are reminded, and approved weeks lock. Effort variance % = (actual − planned) ÷ planned × 100.[Observed] Defaulters (M: Time Sheet); [Observed-SS] variance §21.8; deadline and lock [Proposed]

9.9 PLT and RPT​

IDRuleLabel
RULE-PLT-01Tenant states: Trial (14 days, extendable once to 30) → Onboarding → Active → Past due (7-day grace, with a banner) → Suspended (read-only, but payroll and data export still work) → Churned (30-day export window) → Deleted. Expired trials are deleted 30 days after expiry.[Proposed]; architecture.md §14
RULE-PLT-02Billing count = the highest number of active employees on any day of the month; an employee whose LWD falls in the month counts. A plan minimum fee applies. Above 105% of the plan limit, the tenant sees warnings. At 110%, adding employees is blocked. Payroll is never blocked between the 25th and the 5th for billing reasons without founder approval.[Proposed]; architecture.md §14
RULE-PLT-03Payroll-window freeze, 25th to 5th IST: no release may change PAY/ATT/LVE computation or a statutory pack. The only exceptions are S1/S2 fixes that pass two-person review and the payroll golden tests, and legally mandated changes announced to tenants.[Proposed]; architecture.md §11
RULE-PLT-04Trial limits: ≤ 50 employees. Payroll can be calculated and payslips previewed (watermarked). Bank files, statutory files and payslip publishing stay disabled until conversion. The tenant slug is immutable after activation; renames add an alias.[Proposed]
RULE-PLT-05Offboarding. A full export (CSV/JSON + documents) is available until deletion. Deletion happens 30 days after churn, or 90 under an Enterprise contract. Records under legal hold or contracted statutory retention are excepted. A deletion certificate is issued.[Proposed]; architecture.md §9
RULE-RPT-01Report rows are filtered by the viewer's data scope. Sensitive columns are masked unless the viewer holds the field permission. Every export is written to the audit log.[Proposed]

10. Assumptions, constraints and dependencies​

10.1 Assumptions (including research §20 open questions)​

#Question → working assumptionIf wrong
A1§20.1 Spryple's permission granularity → irrelevant, because we build permission × scope rolesNo impact
A2§20.2 Spryple multi-level approvals → assume none; we ship 2 levels + delegation in R1Affects parity claims only
A3§20.3 Spryple's TDS computation → assume external; our engine ships in R1Already in scope
A4§20.4 Biometric protocols → ZKTeco/eSSL-class devices; CSV/API in R1, push gateway in R2More gateway work (RSK-07)
A5§20.5 Face provider and liveness → no evidence Spryple has liveness; ours requires it for kiosksCost per verification (RSK-09)
A6§20.6 GPS frequency, offline behaviour, retention → we set our own limits (RULE-FFM-02/03)Battery complaints (RSK-08)
A7§20.7 Spryple pricing → not analysed; our prices (§15) are indicativeMargin or conversion miss (RSK-14)
A8§20.8 Multi-company groups → common enough for R2 (BR-ORG-08)Statutory setup rework if it comes late
A9§20.9 Payroll lock/reversal → assume absent in Spryple; ours is a MustNo impact
A10§20.10 Customer API → assume absent in Spryple; ours ships in R2No impact
A11Clients have 10–1,000 employees and work in one or a few statesEnterprise demand arrives early
A12Clients upload statutory files themselvesDemand for a filing service
A13Most employees have smartphones; kiosks cover the restLower adoption (BO-03)

10.2 Constraints​

  • Data stays in India, and payroll is India/INR only.
  • A small team on one release train, with no per-client code (architecture.md §8).
  • Nothing statutory is hard-coded (CONVENTIONS.md §6).
  • We learn from Spryple's documented behaviour but never copy its UI, text or assets.
  • Releases freeze during the payroll window (25th–5th).
  • Mobile OS background limits constrain tracking.

10.3 Dependencies​

DependencyForRelease
Statutory content source plus legal reviewPAY, statutory packsR1
File specifications: EPFO ECR, ESIC, state PT/LWF, TDS returnsBR-PAY-05, BR-PAY-11R1/R2
Formats from 4–6 major banksBR-PAY-06R1
Email, SMS/WhatsApp BSP, pushNTFR1
Razorpay Subscriptions; GST invoicingBR-PLT-03R1
Maps/geocoding providerATT (R1), FFM (R3)R1/R3
Face provider with liveness, hosted in IndiaBR-MOB-03R2
Pilot clients willing to do a parallel runBO-02 go-live gateR1
Store approval of location declarationsMOB, FFMR1/R3

11. Functional business expectations​

PersonaSuccess looks like
org_ownerOne dashboard for headcount, attendance, payroll cost and filing status; payroll approved in minutes; no penalties caused by the tool
hr_adminSets up a new location or policy in under 30 minutes without vendor help; a change applies to everyone from a chosen date
hr_managerOnboards without re-typing data; clears month-end exceptions within a day
finance_admin, payroll_managerGets from lock to published payslips in one business day; files accepted on first upload; every variance explained before approval
line_managerEach approval takes under a minute on the phone; sees who is in today
employeeHandles leave, balances, payslips, Form 16 and declarations without contacting HR
field_executiveTracked only during work hours, with little battery drain; travel paid within 10 days
sales_managerSees the team's whereabouts in work hours and spots ageing leads; verifies travel in bulk
kiosk_operatorAbout 5 seconds per check-in; sees no other data
auditorPulls any period's registers and audit trail without asking HR
Spyrl CS / SupportTakes a 200-employee client live in ≤ 16 staff-hours; diagnoses issues through consented, audited access

12. Operational requirements​

12.1 Support model and SLAs​

Severities:

  • S1: outage; payroll blocked in the payroll window; or suspected data exposure.
  • S2: core function degraded with a workaround, or a wrong statutory/bank file.
  • S3: minor defect.
  • S4: question or request.
First responseLiteStandardProfessionalEnterprise
S14 business h2 business h1 h30 min, 24×7
S21 business day8 business h4 business h2 h
S3 / S43 / 5 business days2 / 3 business days1 / 2 business days1 / 1 business day
S1 workaroundBest effort8 h4 h4 h
ChannelsHelp centre, email+ in-app chat+ phone+ named CSM, quarterly review

Business hours are Mon–Sat, 09:00–19:00 IST. From the 25th to the 5th, Standard and above get extended hours (08:00–22:00, Sundays included). For an incident affecting several tenants, the status page is updated within 30 minutes. Professional and Enterprise tenants get a post-incident report within 5 business days.

12.2 Implementation service​

PackagePlansIncludesTarget
Self-serveLite, StandardWizard, templates, videos≤ 7 days
AssistedStandard, ProfessionalConfiguration review, imports, 1 parallel run, 2 training sessions≤ 21 days
ManagedEnterpriseProject manager, policy workshop, SSO/devices, YTD migration, 2 parallel runs, sandbox UAT, one cycle of hypercare≤ 45 days

Go-live gate: readiness score ≥ 90%, a parallel run in which every employee's net-pay variance is explained, statutory registrations entered, approvers mapped, and the owner's sign-off.

12.3 Data migration​

  • Scope: employee master and job data; UAN, ESI number, PAN and bank details; compensation; opening leave balances at cut-over; YTD earnings, deductions and TDS; open advances; documents (as a zip mapped by employee ID).
  • Rules: cut-over at the start of a period; dry-run before commit; a reconciliation report signed by the client; migrated history is read-only.
  • Out of scope: punch history before the current window, and regenerating old payslips (legacy PDFs can be uploaded as documents instead).

12.4 Training​

Each role (owner, HR, payroll, manager, employee, field) gets a learning path: short videos, a checklist and in-app tours. Help text is generated from the policy schema, so the docs cannot drift from the product (research §17). Every statutory-pack change comes with a release note for payroll users.

12.5 Change freeze and maintenance​

The payroll-window freeze follows RULE-PLT-03. Maintenance runs outside the freeze, on Sundays 23:00–03:00 IST, is announced ≥ 72 h ahead and is limited to ≤ 4 h a month. Dedicated cells upgrade in the client's agreed window, at most one wave behind.

12.6 Uptime by plan​

PlanTargetContractualService credits
Lite / Standard99.5%No–
Professional99.5% (rising to 99.9% after hosting Stage B)Yes, at 99.5%5% of the monthly fee per 0.5% below target
Enterprise99.9%Yes, once Stage B is live (architecture.md §10)10% below 99.9%; 25% below 99.0%

Announced maintenance is excluded. Uptime covers web, API and punch acceptance.

12.7 Backups and retention​

ItemCommitment
Point-in-time recovery35 days; RPO ≤ 5 min; RTO ≤ 1 h after a zone failure
Regional disasterEncrypted copies in a second Indian region; RPO ≤ 24 h, RTO ≤ 8 h
Single-tenant restoreOn request; ≤ 2 h for Enterprise
Locked payroll artefactsWrite-once storage; quarterly DR drills
Data classDefault retention (verify with counsel)
Payroll, statutory and tax records; audit log8 years
Punch selfies180 days
Raw GPS90 days
Face templatesUntil consent is withdrawn, or exit + 30 days
Ex-employee masterStatutory minimum, then erased or anonymised

12.8 Data residency​

All tenant data is stored and processed in India (architecture.md §7). The sub-processor list is published, and clients get 30 days' notice before a new sub-processor is added. Processing outside India needs the client's written agreement.


13. Reporting requirements​

#ReportAudienceFrequencyFormatRel
1Headcount and movementorg_owner, hr_managerMonthlyDash, XLSXR1
2Employee master (choose columns)hr_managerOn demandXLSX/CSVR1 [Observed] SP-RPT-01
3Today's attendanceline_manager, hr_managerDailyDashR1 [Observed] SP-ATT-16
4Monthly attendance registerhr_manager, auditorMonthlyXLSX, PDFR1 [Observed-SS] §21.3
5Late, missed-punch and regularizationline_managerWeeklyXLSXR1
6OT, extra days, penaltieshr_manager, payroll_managerMonthlyXLSXR1
7Leave balance and ledgeremployee, hr_managerOn demandDash, XLSXR1
8Payable days and LOP bridgepayroll_managerPer runXLSXR1 [Observed] SP-PAY-13
9Payroll register; variance vs last runpayroll_manager, finance_admin, auditorPer runXLSX, PDFR1
10Bank file and bank-wise summarypayroll_managerPer runBank CSV/TXTR1
11EPF ECR; ESI contributionpayroll_managerMonthlyPortal formatR1
12PT and LWF return data by statepayroll_managerPer stateXLSXR1
13TDS computation (own sheet for employees)payroll_manager, employeeMonthlyXLSX, PDFR1
14PayslipemployeeMonthlyPDF (protected)R1
15Audit logauditor, org_ownerOn demandCSVR1
16Platform health, usage, MRR, trial funnelFounders, platform_admin, CSWeeklyConsoleR1
17Quarterly TDS return data; Form 16 (or successors)finance_admin; employeeQuarterly; annualPortal format; PDFR2
18Statutory registers (wages, attendance, leave, OT)auditor, hr_managerMonthlyPDFR2
19Payroll journalfinance_adminPer runTally XML, CSVR2
20Claims status, settlement ratio, paid by categorypayroll_managerMonthlyDashR2 [Observed] §9
21Separation register; F&F statementhr_manager, employeePer eventPDF, XLSXR2
22Gratuity and leave-encashment liabilityfinance_adminQuarterlyXLSXR2
23Consent register (face, GPS)hr_admin, auditorOn demandCSVR2/R3
24Field activity, tracking log, kmsales_managerDailyDash, XLSXR3 [Observed] (M: CRM)
25Pipeline, lead ageing, collectionssales_managerWeeklyDashR3
26Timesheet defaulters, effort variance, benchline_manager, org_ownerWeeklyDash, XLSXR3 [Observed] (M, SA: Time Sheet)
27Mandatory-training compliancehr_managerMonthlyXLSXR4
28Attrition, absenteeism, OT and payroll cost trendsorg_ownerMonthlyDashR4

Scheduled delivery of any report arrives in R2 (BR-RPT-04).


Verify with counsel. This is a business summary, not legal advice. Central and state Labour Code rules, DPDP Rules timelines and the mapping to the Income-tax Act, 2025 were still settling when this was drafted. The adviser must confirm every rate, threshold, form name and due date before a statutory pack is published, and review them every quarter.

LawWhat Spyrl must enableRefsRel
DPDP Act 2023 and DPDP Rules. The client is the Data Fiduciary; Spyrl is the Data Processor.A DPA with each client; notices; purpose tags; consent records for face and GPS, which policy keeps consent-gated even where employment is a legitimate use; access, correction and erasure requests; retention schedules; breach notice to the client within 24 h (internal target) so the client can notify the Board and data principals; safeguards; sub-processor list; India residencyBR-PLT-08, BR-IAM-05/06, RULE-FFM-01, RULE-ATT-13R0–R3
Labour Codes (Wages 2019, Social Security 2020, Industrial Relations 2020, OSH 2020), as their rules are notifiedConfigurable "wages" definition (the 50% test); payment and F&F timing; deduction cap; OT limits; leave with wages; registers and returns; gratuity for fixed-term staffRULE-PAY-05, -11, RULE-ATT-09, RULE-EXT-03/04, BR-RPT-06R1–R2
EPF & MP Act 1952 (moving under the Social Security Code)Contributions, EDLI and admin charges; UAN; ECR; opt-outsRULE-PAY-05, BR-PAY-05R1
ESI Act 1948Coverage by contribution period; state codes; monthly fileRULE-PAY-06R1
State Professional TaxState slabs, frequency, special months, registration per stateRULE-PAY-08R1
State Labour Welfare FundAmounts and deduction months per stateRULE-PAY-09R1
Income-tax Act: salary TDS (Sec 192 of the 1961 Act; its successor provision in the Income-tax Act, 2025 from 1 April 2026)Regime choice, declarations and proofs, monthly TDS, quarterly return data, annual certificate. Section numbers and form names live in the statutory pack, not in codeRULE-PAY-10, BR-PAY-04, BR-PAY-11R1–R2
Payment of Gratuity Act 1972Eligibility, formula and ceiling; F&F payout; liability reports; never deducted from employeesRULE-EXT-03, RULE-PAY-16R2
Maternity Benefit Act 1961 (moving under the Social Security Code)Leave weeks by child count; adopting and commissioning mothers; the 80-day eligibility test. Eligibility must not depend on marital status.RULE-LVE-11, BR-LVE-06R1
Payment of Bonus Act 1965; minimum wages (both under the Code on Wages)Bonus within the statutory band; warnings when pay falls below the minimumBR-PAY-15R2
State Shops & Establishments ActsRegistration per location; weekly holiday, hours and OT limits by state; state leave templates; registersBR-ORG-01, BR-LVE-09, BR-RPT-06R1–R2
IT Act 2000 and SPDI RulesReasonable security practicesBR-IAM-05/06R0
GST (Spyrl's own invoices)Compliant invoices that show the client's GSTINBR-PLT-03R1

15. Commercial model​

This is the business view. The mechanics are in architecture.md §14, where ADR-013 is still Proposed. Prices are indicative and exclude GST; they must be validated before launch (A7).

PlanModulesIndicative PEPMMin / monthLimitSupport · uptime
LiteAttendance, basic leave, simple payroll with EPF/ESI/PT, payslips₹39₹999≤ 50 employeesLite · 99.5% target
StandardEMP, ATT, LVE, full PAY + TDS, ESS/MSS app, standard reports, OIDC SSO₹69₹2,999≤ 1,000Standard · 99.5% target
ProfessionalStandard + CLM, EXT/F&F, ENG, kiosk, API/webhooks, scheduled reports, multi-entity, custom fields₹109₹7,999≤ 2,500Professional · 99.5% SLA
EnterpriseProfessional + dedicated cell option, custom domain, SAML, sandbox, audit export, managed implementationFrom ₹149 (annual contract)QuotedCustomEnterprise · 99.9% SLA
Add-onUnitIndicative price
Field ForcePer tracked user per month₹199
Timesheets / LMSPEPM₹29 / ₹39
Face verificationPer enrolled employee per month₹15
SMS / WhatsAppPer messagePass-through + margin
StoragePer 10 GB per month₹299
Dedicated cell; Managed implementationPer month; one-timeQuoted
Assisted implementationOne-time₹15,000–50,000

Rules:

  • Billing: follows RULE-PLT-02. Annual prepayment gets 15% off.
  • Plan changes: upgrades apply immediately, pro-rated; downgrades apply at the next term.
  • Add-ons: need Standard or above (face verification is also available on Lite).
  • Trial: 14 days of Professional plus Field Force (a "reverse trial"), limited per RULE-PLT-04. Configuration and data carry over on conversion.
  • Implementation fees: must at least cover their delivery cost, so they never erode BO-04.

16. Risks (business level)​

IDs RSK-01 to RSK-15 follow the register in project-plan.md, which owns risks. RSK-16 to RSK-18 are business risks this BRD proposes adding to that register. The table shows only the risks with a business-level impact.

IDRiskLIBusiness mitigationBO
RSK-01Payroll errors reach employeesMCriticalDeterministic engine, golden tests, parallel runs, variance checks, lock, SoDBO-02
RSK-02Cross-tenant data leakLCriticalRLS + app checks + isolation tests; pen testsBO-09
RSK-04Statutory change (Labour Code rules, Income-tax Act 2025 forms, state slabs) outpaces our updatesHMEffective-dated packs; retained adviser; quarterly reviewBO-06
RSK-05Pilot clients will not share legacy payroll for parallel runsMHRecruit 6–8 pilots to land 3–5; incentives; anonymised data agreementsBO-02
RSK-06Scope creep and demands for custom codeHMConfiguration first; productise behind flagsBO-05
RSK-07Biometric device diversity slows go-livesHMCSV/API first, gateway in R2, certified-device listBO-01
RSK-08OS background limits break tracking or drain batteriesHMPoint-to-point mode, OS-sanctioned modesBO-10
RSK-09Face verification accuracy, spoofing or privacy complaintsMHLiveness, consent, templates not images, PIN fallbackBO-09
RSK-10DPDP obligations under-estimatedMHLegal review; consent and retention built into the MVPBO-09
RSK-13Payroll and ops knowledge concentrated in a few peopleMHRules documented here, pairing, golden testsBO-05
RSK-14Price pressure from established Indian HRMS vendorsHMLite plan, field-force niche, fast onboardingBO-07
RSK-16Implementation effort per tenant erodes marginMHWizard, templates, import toolkit, paid implementation packagesBO-01, BO-04
RSK-17Incident in the payroll windowMHFreeze (RULE-PLT-03), extended support hours, canary wavesBO-02, BO-05
RSK-18Low ESS or field adoptionMMOne app, low-end device support, nudges, trainingBO-03

17. Glossary​

TermMeaning
ApplicabilityThe conditions (location, department, designation, grade, employment type) that decide which policy version applies to an employee
Attendance windowThe dates whose attendance feeds a payroll period (e.g. 26th–25th)
CellA deployable unit of the application, either pooled or dedicated
Comp-offLeave earned by working on a week-off or holiday
CTCCost to company, including the employer's statutory contributions
DA / VDADearness allowance / variable DA linked to the CPI
Data Fiduciary / ProcessorDPDP roles: the client decides the purposes; Spyrl processes for the client
ECRElectronic Challan cum Return, the monthly EPF file
Effective datingGiving every record or policy version a start date so history can be reproduced
ESS / MSSEmployee / manager self-service
Extra dayA paid day earned under a designation's days-worked slab
F&FFull-and-final settlement
LOP / LWDLoss of pay / last working day
LWF / PTLabour Welfare Fund / Professional Tax (state levies)
Payable daysThe days salary is paid for in a period (RULE-PAY-01)
PEPMPer employee per month
PermissionShort leave measured in minutes
RegularizationAn approved correction of a missing or wrong punch
Sandwich leaveCounting the week-offs and holidays between two leave days as leave
Statutory packCentrally published, versioned statutory rates, slabs and formats
TDSTax deducted at source
UANEPF Universal Account Number
Week-off penaltyAn unpaid week-off caused by absence on the working days next to it

18. Traceability (BO → BR)​

BOBusiness requirements
BO-01BR-PLT-01, BR-ORG-02, BR-ORG-03, BR-ORG-07, BR-EMP-01, BR-EMP-05, BR-ATT-01, BR-ATT-09, BR-LVE-01, BR-LVE-05, BR-PAY-13, BR-MOB-05
BO-02BR-PAY-01, BR-PAY-02, BR-PAY-07, BR-PAY-08, BR-PAY-09, BR-PAY-10, BR-PAY-17, BR-ATT-02, BR-ATT-03, BR-ATT-05, BR-ATT-06, BR-ATT-07, BR-LVE-02, BR-LVE-03, BR-LVE-04, BR-IAM-07, BR-ORG-04, BR-EMP-04, BR-NTF-05, BR-PLT-10
BO-03BR-MOB-02, BR-MOB-03, BR-MOB-04, BR-NTF-02, BR-NTF-03, BR-NTF-04, BR-ATT-04, BR-ATT-08, BR-LVE-07, BR-LVE-08, BR-EMP-06, BR-ENG-01, BR-ENG-02, BR-ENG-03, BR-RPT-02
BO-04BR-PLT-02, BR-PLT-03, BR-PLT-05, BR-PLT-11, BR-MOB-01
BO-05BR-PLT-04, BR-PLT-06, BR-ORG-06, BR-NTF-01, BR-NTF-06, BR-RPT-01
BO-06BR-PLT-07, BR-PAY-03, BR-PAY-04, BR-PAY-05, BR-PAY-06, BR-PAY-11, BR-PAY-14, BR-PAY-15, BR-PAY-16, BR-LVE-06, BR-LVE-09, BR-RPT-06, BR-ORG-01, BR-ORG-08, BR-EXT-04, BR-LMS-01
BO-07BR-PLT-09, BR-FFM-03, BR-TSM-01, BR-LMS-02, BR-RPT-05, BR-PAY-12, BR-PAY-14, BR-ATT-10
BO-08BR-RPT-03, BR-RPT-04, BR-ORG-05, BR-EMP-02, BR-EMP-03, BR-EMP-07, BR-EMP-08, BR-EMP-09, BR-EXT-01, BR-EXT-02, BR-EXT-03, BR-EXT-05, BR-EXT-06, BR-EXT-07, BR-CLM-06, BR-TSM-02, BR-TSM-03, BR-TSM-04, BR-TSM-05, BR-LMS-03
BO-09BR-PLT-08, BR-IAM-01, BR-IAM-02, BR-IAM-03, BR-IAM-04, BR-IAM-05, BR-IAM-06, BR-IAM-08, BR-FFM-01, BR-ORG-09
BO-10BR-FFM-02, BR-FFM-04, BR-FFM-05, BR-FFM-06, BR-FFM-07, BR-FFM-08, BR-FFM-09, BR-CLM-01, BR-CLM-02, BR-CLM-03, BR-CLM-04, BR-CLM-05, BR-CLM-07, BR-CLM-08

Synced from /brd.md in the repository root. Edit the root file, not this page.