Nine capability areas, one shared data model. Every feature below ships in the product today — no add-on modules, no per-feature licenses.
Daily route plans per rep with area, purpose and outlet list. Draft → in-progress → completed states keep managers in sync without a call.
Check-in/out stamps coordinates on every visit. Check-out outside the org's geofence radius fires a manager alert — visit truth is structural, not self-reported.
The outcome you pick reshapes the form: product introduction, payment collected, contract signed, marketing supplied — each captures its own structured data.
Batched GPS breadcrumbs (5-min / 500-m defaults, tunable per org) draw each rep's day on the command-center map — who is where, right now.
The day can't close until expenses are filed — and a missed filing blocks the next day's route start. TADA discipline by design, not by reminder.
Minutes between stops are captured automatically, feeding cost-per-visit and route-density analysis in reports.
A visit outcome can book a specialist demo on the spot — slotted against the technician's calendar with availability lookup by region and treatment.
An exclusion constraint in the database rejects overlapping slots for a specialist — two reps can't book the same technician twice, even offline.
Every specialist carries a measured kit. Carried − consumed = remaining is computed per product, and restock requests flow straight to inventory.
Before/after photos and compressed demo videos attach to every completion — verifiable activation quality, not a ticked checkbox.
Technical execs run a structured service ticket queue — each ticket tied to its outlet, kit state and completion record.
Demos that produce an order on the day link the sale to the demo — the incentive engine pays for it automatically.
Temporary invoice → partially delivered → delivered. Line-level delivered quantities roll the order status forward — no manual status edits.
Distributors get real accounts linked to their record — they see orders to fulfil, raise direct orders, and track their own stock and statements.
Outlets order through an OTP-gated portal link — no app, no account. Requests queue for a rep or distributor and convert into real orders in one action.
Every delivery attaches the distributor's invoice (mandatory) and decrements outstanding quantities per order line — fulfilment is provable end to end.
One current MRP and default discount per product, admin-controlled. Order items snapshot price at creation — audits always reconcile.
One generator renders invoices, order sheets, delivery notes and distributor statements — server-rendered, org-branded, on demand.
Central warehouse, distributor locations and technician kits are all first-class stock locations — transfer, consume and count at each level.
Native camera scanning resolves raw material, incoming batch and finished-product codes to SKUs — restock verification and consumption logging in one scan.
Consumption logs decrement stock via a database trigger — toggleable per org, broadcast over WebSockets so dashboards update live.
Specialists scan kit items on restock; low-kit flags feed the requisition report so a technician never arrives at a demo empty-handed.
Distributor stock opening/closing per period, consumption by product, and restock needs — all standard reports, no exports required.
Demo consumption is allowed to take kit stock negative — a deliberate reconciliation signal, not silent data loss.
Sales execs to national managers, technical execs to NTM, plus ops, HR, accounts, marketing, distributor and admin — visibility follows the reporting line, enforced in the API.
Five target types and five incentive criteria — configured by managers, computed by the engine, paid out with pending→confirmed→paid states.
Daily food/travel/other expenses with receipts route to the reporting-line manager — approved or rejected with a timestamped audit trail.
Requests file offline if needed and land on the right manager's queue — approval state syncs back to the field app in real time.
Admin-defined business hours per role or org-wide drive the notification worker — late starts and missed check-ins surface automatically.
Expenses, leave and security alerts land in one manager inbox — push notifications on mobile, realtime badges on web.
Dense tabular reports with inline column search and an AND/OR filter-tree builder on any column — no per-report code, no exports needed to answer a question.
Field time, visits, orders generated vs supplied, demos booked/not converted, SKU sales, TADA, distributor stock, target-vs-achievement, incentives, weekly and monthly rollups.
Report definitions carry a default chart type; drill panels open the records behind any aggregate number — from national rollup to a single rep's Tuesday.
Filter, check rows, export or print a branded PDF of exactly the records you selected — statements, order sheets, audit extracts.
Platform invoices to each org live in the same document engine — billed/paid/overdue states and generated PDFs, no separate billing tool.
A daily worker rolls login devices and security events into a scheduled report — anomaly review is a morning habit, not an incident.
Purposes, outcomes, treatment/product lists — every dropdown is a tenant-editable picklist. New orgs inherit sane defaults, then rename freely.
Eleven field types — text, number, currency, date, picklist, multi-select, file and more — added per entity without a deploy.
Show, hide or require a field based on another field's value — "contract signed" asks for signing date and amount. Admins configure the logic, reps just see the right form.
Enable or disable mobile actions — create order, record payment, upload documents — per org, so each tenant sees exactly the toolkit they bought.
Geofence radius, inventory auto-decrement, GPS batching intervals, timezone — every tenant tunes behavior without touching code.
Deleted records go to a recoverable bin, not the void — admin mistakes are reversible.
Postgres RLS pins every row to its org. Even a buggy query can't leak another tenant's data — isolation is the storage engine's job, not the app's.
Each login is tied to a hardware fingerprint. A credential used on a new device raises a security alert and logs to the immutable audit trail.
Location, media and data-processing consent is stored with the exact text version shown — DPDP-ready by construction.
Login events are insert-only at the database level — history can't be edited, only appended.
New-device logins and geofence violations push to the responsible manager in real time — scoped to their reporting line only.
Each org gets a unique code and login link — no shared username namespace, no cross-org collisions, ever.
Every mutation writes locally first and replays chronologically on reconnect — the field app never blocks a rep waiting for signal.
Versioned writes detect true conflicts and flag them for review — financial fields never get silently overwritten by last-write-wins.
JS-level changes ship over-the-air via the store bundle system — new screens and fixes reach every device in minutes, no app-store review.
Photos resize to ≤1280px and 60-second videos stay under ~8MB before they enter the upload queue — media proves the work without burning the data plan.
Gzipped delta payloads, chunked resumable uploads, batched GPS — engineered for the network your field team actually has.
Virtualized lists, bounded media cache, native camera decode — the app stays fast on the 2GB-RAM devices field teams really carry.
We'll walk you through the workflows that matter to your category — live, not slideware.