Sixteen engines. 32 modules. One database.
Modules are not separate apps stitched together. They share one schema, one search index, one permission model and one ledger — so switching one on adds capability rather than another system to reconcile.
The sixteen engines
Built once, underneath everything. This is why a custom field, an approval rule or an audit entry works the same in payroll as it does in procurement.
Custom fields
E1Text, number, currency, date, select and multi-select fields defined per tenant on any entity, stored as JSONB and reportable like a built-in column.
Document numbering
E2Financial-year-aware sequential series per document type, with prefixes, auto-reset and gap-free allocation under concurrency.
Tenant configuration
E3Pipelines, units of measure, tax rates, custom roles, terminology and branding — all self-service, none of it a deploy.
Multi-company & multi-GSTIN
E4Several legal entities and branch registrations under one login, with place of supply deriving CGST/SGST vs IGST from the pair of state codes.
Soft delete & audit chain
E5Nothing is hard-deleted. Every mutation links into a SHA-256 hash chain (seq + prevHash + hash) that can be re-verified on demand, so a row changed outside the app is detectable.
Headless PDF renderer
E6Invoices, quotations and reports rendered through headless Chrome over CDP, with a pure-JS fallback renderer when no browser is available.
Background worker
E7A BullMQ queue running the cron sweeps: AMC visit generation, dunning, expiry alerts, scheduled reports and outbound dispatches.
Notifications
E8One outbound path with providers for email (SES), SMS (MSG91), WhatsApp Cloud API and in-app. Where a provider is not configured the message is still recorded on the thread and the screen says it was not delivered — never a silent success.
Automations
E9Trigger → condition → action rules on entity events across every module. Actions are notify and webhook, which is what lets an external system do the rest.
Approvals
E10Multi-step routing with thresholds for purchase orders, expense claims, credit notes and discounts, including who may approve their own request (nobody).
Custom objects
E11Whole entities you define yourself — fields, relations, list views, reporting and automation hooks — without a code change.
Reports & BI
E12A self-serve builder over every module's dataset: tables, charts, saved dashboards and scheduled email delivery.
Import & export
E13An RFC-4180 CSV parser with column mapping, a dry run that reports what would happen, and a per-row outcome on the real run.
Multi-currency
E14Nine currencies including INR. A document carries its own exchange rate and its base-currency total, so the ledger stays in one currency while the customer sees theirs. Platform billing itself is dual INR/USD.
Public API & SDK
E15Hashed opk_ API keys with per-scope permissions, signed outbound webhooks, and a typed TypeScript client generated from the same Zod contracts the server validates with.
Search & retrieval
E16Global cross-module search over PostgreSQL full-text, plus stored embeddings for semantic retrieval that the AI assistant grounds its answers in.
What you can actually run on it
Grouped by the department that uses it. Every line is a shipped screen with an end-to-end test behind it.
Money, GST & books
Double-entry- GST invoicing with CGST/SGST/IGST derived from place of supply
- e-Invoice IRN and e-Way Bill modelled end to end — see the note below on the portal
- A double-entry general ledger that posts itself from invoices, bills and purchase orders
- GSTR-1, GSTR-3B and GSTR-2B reconciliation with input-credit matching
- TDS 24Q/26Q/27Q/27EQ, challans, and Form 16 / 16A
- Bank statement import with automatic transaction matching, period locking and GSTR-9
CRM & sales
Lead to paid- Kanban pipeline with custom stages, sources and de-duplication
- Contacts 360 with full activity history, notes and follow-ups
- Quotations with PDF generation, e-signature and conversion to invoice
- Helpdesk tickets with business-hours SLA clocks, queues and CSAT
- Omnichannel inbox: WhatsApp, email, Instagram, Facebook, SMS and web chat in one thread
- Marketing campaigns and drip journeys to segments, with lead scoring
Operations & logistics
Field & factory- Multi-warehouse stock with batch/lot, FEFO expiry and serial tracking
- Multi-level bills of material, work orders, material issue and finished-goods costing
- Warehouse management with bins, located stock, wave picking and pick-pack-ship
- Procurement to goods receipt, with stock-in and the bill posting to the ledger
- Field service dispatch, job cards, AMC contracts and an offline-capable technician app
- Asset management with preventive maintenance on a schedule or a meter reading
People & payroll
Attendance to payslip- Attendance and leave feeding loss-of-pay straight into the payroll run
- Salary runs with PF ECR, ESI and Professional Tax
- Income tax under both the old and new regimes, and §192 salary TDS
- Recruiting with job openings, a public careers page, candidates and interviews
- Performance cycles with weighted goals, self and manager review, and rating bands
- Learning: courses, lessons, quizzes and completion tracking
Where the boundary is, stated plainly
e-Invoice and e-Way Bill: Opsylo builds the payload, computes the real IRN hash and models the full lifecycle including cancellation windows and validity. The acknowledgement, signed QR and e-Way Bill number are generated locally until a GSP credential is connected — so the workflow is testable today and becomes live filing the day those credentials are added, with no change to how you work. TDS returns: Opsylo produces everything up to the file the government utility consumes; the .fvu and Form 27A come from Protean's own jar, and the CSI from TIN/OLTAS. We do not reimplement a validator we cannot be authoritative about.
See it with your own data.
A private workspace, pre-seeded for your industry, in about a minute.