Ultimate CRM · Ultimate HRMS
A member walks in at 6:40am.
Everything after that is this software.
The finger on the reader, the package that expires in nine days, the reminder that leaves from your own WhatsApp number, the balance that turns up in tonight’s collection report. That is Ultimate CRM. The trainer who opened the floor at 6am, their shift, their leave balance and their payslip — that is Ultimate HRMS. One system, one login, two products.
Running since December 2023. 12,370,692 member check-ins recorded so far.
01 / Two products
One for your members, one for your staff
They are not two databases with an integration between them. The same attendance row a member’s check-in writes is the row a trainer’s payroll reads.
Ultimate CRM
Members, money and the front desk
One record per member with about a hundred and thirty fields on it. Enquiries through a ten-stage funnel. Memberships that freeze, transfer, upgrade and renew. GST invoices with their own numbering per branch. Biometric and QR check-in. WhatsApp, SMS and email that send themselves. About forty reports.
Ultimate HRMS
The people who run the place
Departments, designations and a live org chart. Onboarding, probation, transfer and exit. Shifts and rosters. An append-only leave ledger. Five kinds of letter on your letterhead. Staff documents stored outside the web root. Payroll from attendance to payslip, with a validator standing in front of the approve button.
02 / Measured, not claimed
Four numbers off the production database
Counted the day this page was written. The gloss underneath each one is there so you can tell what it does and does not mean.
12,370,692
member check-ins recorded since December 2023
1,529,290
of them in the last thirty days
420,624
member records across every centre
305
fitness centres on the platform
Of those 305 centres, 191 checked a member in during the last ninety days. The gap is the honest part: some centres are seasonal, some are set up and not yet live, some have stopped. A competitor quoting one number is quoting the bigger one.
On the staff side there are 1,871 staff accounts and 2,195 trainer accounts on the platform — the population Ultimate HRMS was built for.
Two numbers the old site carried have been removed and not replaced: the count of countries served, and the review score. Neither can be evidenced from anything we hold, so neither goes back on until it can be.
Ultimate CRM
03 / Everything on the member side
Six blocks. This is the whole of it, named the way it is named in the software.
03.1 / Members and enquiries
The list your staff open first
A member is one record at your gym: identity, address, emergency contact, ID documents and their scans, body metrics, goal and level, RFID number, biometric enrolment, e-signature. Everything else hangs off it.
Enquiries run a ten-stage funnel on the CRM screen — untapped, tapped, call not connected, demo scheduled, demo conducted, waiting for confirmation, not interested, training scheduled, training conducted, payment received — each with an owner, a next date, an expected close date and an expected value. Over thirty other follow-up types cover the things that are not enquiries: freeze, referral, transfer, measurement, PT trial, upgrade.
Lead ads on Facebook and Instagram arrive through a webhook, not a CSV export. The lead becomes a member record with its source recorded and a hot follow-up already scheduled, and a retried webhook does not create a second copy.
| Follow-up | When it appears |
|---|---|
| Renewal reminder | 45, 7 and 3 days before the membership expires |
| Membership expired | On the expiry date itself |
| Balance due | On the payment date the member agreed to |
| Not checked in | After 3 days without a punch |
| Irregular member | After 7 days without a punch, active memberships only |
| Birthday | On the day |
03.2 / Memberships and money
Packages, invoices, GST and the balance nobody chased
Plans carry a duration, a price, a tax treatment, a purchase window, a stock limit, a PT session count and a freeze allowance. A sale becomes a subscription with its own lifecycle, and every operation a gym actually asks for is a first-class screen rather than a workaround: freeze and unfreeze with a freeze history, transfer to another member, upgrade, downgrade, extend, renew.
Money is kept as separate quantities — gross, net of tax, paid, pending, balance, written off — so the collection report and the balance-due report cannot disagree. Invoices and receipts are real PDFs, numbered per branch. There are registers for sales, collection, daily collection, balance due, GST, write-offs and cancelled invoices.
Card and UPI collection runs through Razorpay, with the payment signature verified server-side, and through Stripe. PhonePe, Paytm, PayU, CCAvenue and others are recorded from the app after their own SDK has run. Offline is still where most of the money is, and the payment types say so: cash, cheque, card, NEFT, pay later, plus buy-now-pay-later providers in the Gulf.
What a membership can do
- Duration
- Hours, days, months, years, or Forever
- Tax
- GST exclusive, inclusive or not applicable; CGST and SGST held apart
- Freeze
- An allowance in days, with an audited freeze history
- Transfer
- To another member, recorded on both
- Change
- Upgrade, downgrade, extend, renew
- States
- Active, Pending, Expired, Cancelled, Used
- Wallet
- Store credit per member, as a ledger
03.3 / Check-in
Two ways in, and both of them survive the line going down
The terminal on the wall
eSSL and ZKTeco units speaking the classic ADMS push protocol — ZAM230-NF, ZAM180-NF50VA, F22, F85, F107 and ProMA-class multi-biometric terminals. Fingerprint on all of them, RFID card on all of them, face on the face-camera units.
Enrol a finger once on the master terminal and the user record, the fingerprint template and the face photo are queued onto every other terminal in that group. You do not walk the building with a laptop.
When a membership is sold, its start and end dates are pushed into the device. So when the line goes down, the reader keeps refusing the member whose package ended on Tuesday: the expiry lives on the device, not only in our database.
Setting a terminal up is a wizard. You type the serial off the box, mark it master or slave, copy a host and port into the device’s own comms settings, then verify, sync and reboot.
No palm reader. Nothing in the product reads a palm, and this site is not going to say otherwise.
The code in the member’s phone
The member app draws a QR code that is signed and expires sixty seconds later. Screenshot it, send it to a friend in the car park, and it is worthless before they reach the door. The desk scans it, the write takes a lock, and a second check-in on the same day is refused.
There is a typed gym code as a fallback for a phone with no camera, an all-access mode that consumes one session per day per gym with an audit row, and an in-app door unlock that dispatches a command to your terminals and logs who pressed it.
Numbers with a mechanism behind them
- QR validity
- 60 seconds from generation
- Device counts as online
- Seen within the last 60 seconds
- Command throughput
- Devices poll us; one command per poll, one poll per second
- Duplicate punch
- Keyed on device, PIN and timestamp, so a resync cannot double it
- Unknown PIN
- Recorded, not dropped
03.4 / Messaging
From your number, in your words
You write the wording
You connect your gym’s own WhatsApp by scanning a QR code once, and the messages then leave from that number. Birthday, new enquiry, irregular member, check-in welcome and bill created each have their own editable template; placeholders like {cust_first_name} are substituted as it sends. The check-in welcome rotates through 365 lines so a member who trains daily is not read the same sentence for a year.
SMS runs alongside with proper Indian DLT modelling — template id, vendor template id, sender id, entity id, operator. Email can leave from your own address over your own SMTP server. Push goes through Firebase.
The same member cannot be messaged twice
Every outgoing WhatsApp message is hashed — gym, phone number, message body — and that hash is remembered for twenty-four hours, inside the sender itself. Two triggers landing on the same member on the same day produce one message, not two. The renewal cron and a staff member pressing send at the same moment cannot double up.
It is enforced at the bottom of the stack, so every feature that sends anything inherits it. That is the difference between a rule and a habit.
SMS is India-only in practice: the sender accepts ten-digit +91 numbers and refuses everything else.
03.5 / The apps
One for members, one for trainers
Member app
- Check in by QR, by gym code, or unlock the door
- Workout plans assigned by a trainer, and logging with personal records
- Diet plans, meal logging and a food diary with protein, fat, carbohydrate, fibre and calories
- Body measurements with front, back and side photographs, and a transformation gallery
- PAR-Q and medical history forms
- Challenges with tasks, teams, leaderboards and a player of the day
- A community feed with posts, comments, follows and owner-side moderation
- An in-app shop with products, cart, coupons, delivery slots and orders
- Habits, water, steps and sleep
- Account deletion from inside the app
Trainer app and dashboard
- Client list, profiles, measurements and progress graphs
- A workout plan builder and a diet plan builder on the web dashboard
- Exercise logging and personal records against a client
- PT sessions logged against attendance, with accept and no-show flags
- Appointment slots, leave, expiring clients and client notes
- Sales statistics split into PT, new and renewals
- Commission as a fixed amount, a revenue share, or either banded by client count
- Monthly sales targets in five slabs, each with its own commission rate
- Twelve per-trainer permission switches, so one trainer can mark attendance and another cannot
Assigning a subscription is off by default for every trainer. You turn it on for the ones you trust with it.
Member-to-trainer messaging exists, one to one, and it polls. It is not group chat and we do not call it live chat.
03.6 / Reports
About forty of them, named as they are named in the software
So you can tell in ten seconds whether the one you check every Monday is in there.
- Collection, and day-wise collection
- Renewal analysis, with a drill-down to the members behind each bucket
- Enquiry-to-member conversion, and conversion by staff member
- Follow-up activity, and lead source attribution
- Personal training sales, and trainer and staff sales leaderboards
- Footfall by hour, and attendance analysis by batch
- Profit and loss, expenses, and revenue forecast
- Monthly sales statement, and month against month
- GST register, write-offs, cancelled invoices, balance due
- Bounced and failed memberships
Attendance analysis is capped at 50,000 rows in a single pull. A very large chain that expects to hit that ceiling should raise it with us before signing rather than after.
Ultimate HRMS
04 / Everything on the staff side
Newer than Ultimate CRM and deliberately narrower. What is built is built properly; what is not built is listed inside the product as not built, and listed here too.
The part worth reading twice
Where a payroll run stops
Approval is blocked by a validator, not by a warning you can click past. About a dozen blockers: no salary structure, incomplete or contradictory attendance, a negative net, a missing bank account, an attendance correction still pending, a leave request still pending, two current structures for the same person.
You can override a blocker. You cannot override it silently — the system takes a written reason and stores it with your name and a frozen list of exactly what you waved through.
Attendance it does not have to collect
Ultimate HRMS captures no punches of its own. It reads the biometric and QR attendance Ultimate CRM is already recording, adds manual entries and approved regularisations on top, and deduplicates by day so somebody who is both a trainer and a member counts once. A day gets exactly one status, decided by a fixed precedence. A punch up to two hours after a night shift ends is attributed back to the day the shift began, which matters if you are open twenty-four hours.
Employees raise a regularisation request for a missed punch and a manager approves it. Once payroll for a month is locked, attendance for that month stops being editable.
Leave as a ledger, not a number in a box
Every movement is an append-only entry, and there are eight kinds: opening, accrual, carry-forward, taken, reversal, encashment, lapse, adjustment. The balance is a cache recomputed from those entries and never typed in by hand. Each accrual carries a natural key, so re-running last month’s accrual twice cannot credit anybody twice. Leave costs working days, so a public holiday and a rostered weekly off do not come out of it. A mid-month joiner accrues a pro-rated share, and at year end the lapsed remainder is written as its own visible row rather than quietly disappearing.
And the rest of it
- Departments with a head, designations with a grade, and an org chart built from the reporting lines
- Six HR roles with a permission matrix behind them
- Employee records that deactivate rather than delete, because deleting would cascade away attendance history
- Onboarding with a seven-item checklist, probation and confirmation, inter-branch transfer, exit with a notice period, and full and final settlement
- Shifts with a night-shift flag, a flexible start window, minimum and maximum hours, a break and a lateness grace period
- One roster row per person per day, and a holiday calendar
- Five letter types — appointment, offer, confirmation, experience, relieving — on your letterhead with your signatories
- Assets: categories, asset tags, serial numbers, condition, and issue and return with an expected return date
- An employee self-service launchpad with exactly five tiles: my attendance, apply for leave, my payslips, my documents, my email address
An issued letter is frozen: the PDF, plus a snapshot of every value it was rendered from, so a letter reprinted in two years reads exactly as it did on the day. An unknown placeholder is left visible rather than silently blanked, which means a broken letter looks broken instead of looking finished.
Staff documents are written outside the web root and every download goes through a permission check. That is the honest answer to “where do my employees’ Aadhaar scans live”.
A payroll run, in order
-
Resolve the structure that was in force then
Not the one in force today. A raise in March does not rewrite February.
-
Pull the attendance and work out payable days
Working days minus absent minus unpaid leave. Approved paid leave is not docked.
-
Compute the components
Fifteen standard Indian components ship as defaults: basic, HRA, conveyance, medical, special, DA, LTA, performance bonus, overtime, commission, bonus, employee PF, employee ESI, professional tax, advance. Formulas are parsed rather than evaluated, and accept only numbers, four operators, brackets and known component codes.
-
Loss of pay as its own line
Charged against the fixed part only, and shown as a line you can point at, not folded into a net figure.
-
Deductions, loan instalments, approved reimbursements
PF, ESI and professional tax are computed once you configure them. They are off until you do.
-
Submit, approve, lock, mark paid
Lock is the irreversible one: it debits loan balances and freezes the run. A bulk run gives every person at the centre a row — computed, skipped with a reason, or failed with the error text. Nothing is silently missing.
Also not built, and listed as not built inside the product: tax management, recruitment, job openings, candidates, performance, appraisals, training, HR reports and analytics, custom reports, integrations, audit logs, backup and restore. There is no multi-level approval chain in leave or in payroll, no overtime hour computation, and no rupee value for leave encashment.
05 / Edges
Things we would rather you heard from us
Every one of these is a real limit today. None of them stops a gym running on this; all of them are cheaper to know now.
| You might assume | What is actually true |
|---|---|
| Automatic recurring debit from a member’s card, or EMI | Neither is built. Card and UPI go through Razorpay or Stripe as collections you take; a standing mandate product does not exist here. |
| A group-level rollup across your branches | Branches are separate sets of books reached from one login. There is no group entity above them and therefore no consolidated group report. |
| A shipped catalogue of exercises and foods | Exercises and food items are your gym’s own rows. You import them and we help. Nobody hands you a library of thousands. |
| Full white label with your own brand colours | Your logo, your domain, your login screen and a choice of themes. You pick from a fixed set of palettes; you cannot type in a brand hex. |
| IVR menus and call recording inside the CRM | There is a click-to-call button wired to one telephony provider, set up per gym on request. No IVR menus, no inbound routing, no missed-call-to-lead. |
| Live video sessions from your own app | Not built. There is no Zoom or Meet integration behind the member app. |
Bring the question you think will break it
A demo is a live console, sample data, and a person who will say “no, that is not built” when it is not. Tell us your member count, your branch count and what you run today, and we will skip the parts you do not need.
Or email crm.sales@proultimate.com. A person reads it.