ERPCrystal Lite (Free Version)
PRD: ERPCrystal Lite (Free Version)
Version: 1.1
Date: April 25, 2026
Owner: Product / Engineering / ERP Crew
1. Product Summary
ERPCrystal Lite is a low-friction ERP onboarding and trial product designed for small manufacturers. It leverages a shared Azure Entra identity for initial authentication, then establishes unique user identity and tenant isolation through mobile-number-based verification over Telegram. Each verified user is provisioned into a dedicated database clone with free-plan restrictions and Pro upgrade triggers.
๐๏ธ System Architecture & Core Flows
๐ฏ Objective
Create a seamless, friction-free onboarding experience while keeping infrastructure costs and management overhead low.
๐ Onboarding Sequence (Phase 1)
The authentication mechanism uses a single shared Azure account for bootstrap, followed by mandatory Telegram OTP verification tied to a unique Mobile Number.
sequenceDiagram
participant U as User
participant A as "Web App (Blazor)"
participant B as "Backend (API)"
participant T as Telegram Bot
participant D as Identity DB
U->>A: Click "Sign up for Free"
A->>B: "Shared Azure Login (Silent)"
B-->>A: "Logged In (Bootstrap)"
A->>U: Show User Detail Form
U->>A: "Submit (Mobile, Industry, etc.)"
A->>B: Create Onboarding Session
B->>B: "Generate Deep Link (Token)"
B-->>A: Deep Link URL
A->>U: Show Telegram Consent & "Open Bot" Button
U->>T: "Click Button (Deep Link opens Telegram)"
U->>T: Tap /start
T->>B: Webhook: /start with Token
B->>B: "Validate Token & Match Session"
B->>T: Send OTP Message
T->>U: Delivers OTP
U->>A: Enter OTP
A->>B: Verify OTP
B->>D: Create/Update FreeUserIdentity
B-->>A: Verification Successful
A->>U: "Show Processing / Welcome Screen" ๐ Tenant Provisioning Flow (Phase 2)
Provisioning happens asynchronously to ensure a responsive UI.
graph TD
A[OTP Verified] --> B{Existing User?}
B -- Yes --> C[Route to Existing DB]
B -- No --> D[Create Provisioning Job]
D --> E[Clone Template DB]
E --> F[Create Tenant Mapping]
F --> G[Notify User via Telegram]
G --> H[Send One-Click Login Link]
H --> I[User Logs In]๐ Identity & Isolation Model
- Shared Auth: Uses one Azure account (capped at 100 users) for initial portal entry.
- True Identity: Verified Mobile Number + Telegram Chat ID linkage.
- Tenant Isolation: Separate physical database per user.
- Access Control: App-level routing blocks access until OTP verification succeeds.
High-Level Scope by Phase
- Phase 1: Identity & Verification (Mobile capture, Telegram handshake, OTP)
- Phase 2: Provisioning & Routing (DB cloning, Tenant mapping, One-click links)
- Phase 3: Plan Controls & Growth (Feature caps, Upgrade triggers, Analytics)
Phase 1: Core Onboarding and Identity Verification
Phase 1 Objective
Launch a working onboarding and login flow for new and returning free users using:
- shared Azure login
- mobile number as unique identity
- Telegram consent and handshake
- OTP verification
This phase should prove that users can reliably enter the system without requiring individual Azure provisioning.
In-Scope
- โSign up for Free Versionโ entry point
- Pre-onboarding disclosure (Limitations, T&C, and explicit acceptance)
- Shared Azure Entra login flow
- Expanded user detail capture (Names, Email, Org details, Industry, Purpose)
- Telegram consent gate with Email OTP fallback option
- Telegram deep link generation
/start <token>handshake processing- Dual-channel OTP verification (Telegram or Email)
- New user vs returning user detection
- Basic processing screen after verification
Out of Scope
- Actual tenant DB cloning
- Personalized one-click login link delivery
/linkand/statusbot commands- Free Version feature restriction enforcement
- Upgrade prompts and monetization layers
User Stories
- As a new user, I want to sign up quickly without creating a full enterprise identity.
- As a user, I want to verify myself using a channel that is fast and simple.
- As a returning user, I want to log in using my mobile number and Telegram OTP.
- As the business, I want one mobile number to map to only one free tenant identity.
Functional Requirements
1. Pre-Onboarding Disclosure
- Before allowing access to the sign-in page, the system shall display a comprehensive list of:
- Limitations of the Free Version.
- Terms and Conditions of service.
- The user must explicitly accept these terms before being redirected to the authentication/sign-in page.
2. Entry and Authentication
- The system shall provide a โSign up for Free Versionโ CTA on the website/app.
- The system shall authenticate free users through a shared Azure Entra ID account.
- The shared Azure account session shall not grant app access until the secondary identity verification (Telegram/Email OTP) succeeds.
3. User Detail Capture
- The sign-in page shall require the following mandatory fields:
- First Name & Last Name
- Email Address
- Phone Number (Mobile)
- Organisation Name
- Organisation Type (Selectable: Proprietorship, Partnership, Company, Societies, NGOs)
- Number of Users
- Type of Industry
- Purpose (Why they want to use ERPCrystal Free Version)
- The mobile number shall be normalized into a standard format before storage and comparison.
- The system shall validate email and mobile formats.
4. Consent and Telegram Handshake
- The app shall display a mandatory Telegram consent notice.
- After consent, the app shall show instructions to install/open Telegram and start the bot with a unique deep link:
https://t.me/<BotUsername>?start=<token> - Email Fallback: A clear link/option shall be provided for users who are “not convenient” with Telegram: “Use Email Verification instead.”
- If the user chooses Email Fallback, the Telegram handshake step is skipped in favor of direct email OTP.
5. OTP Verification
- The system shall send OTP after either:
- Telegram handshake is confirmed (for Telegram flow).
- User selects the Email Fallback link (for Email flow).
- OTP shall be:
- 6 digits
- Valid for 5 minutes
- Single use
- Failed OTP attempts shall be rate-limited.
6. Existing vs New User Detection
- After successful OTP validation, the system shall check whether the mobile number already exists.
- If existing:
- mark flow as returning user
- If not existing:
- mark flow as new user pending provisioning
Data Requirements
Create or prepare these entities:
Table Separation Strategy: Session vs. Identity
The system employs two distinct tables to manage the onboarding lifecycle:
-
FreeUserSession:
- Purpose: Acts as a transient buffer for “in-flight” onboarding attempts.
- Usage: Captures raw user input, manages the Telegram handshake token, and stores temporary OTP hashes during the verification process.
- Rationale: Keeps the primary identity table clean from abandoned, partial, or failed sign-up attempts.
-
FreeUserIdentity:
- Purpose: Represents the “Golden Record” of a verified user.
- Usage: Once a user successfully verifies their mobile number, a permanent record is created (or updated) here.
- Rationale: This is the authoritative source for returning-user detection and tenant access control.
FreeUserSession- session_id
- first_name
- last_name
- mobile_number
- normalized_mobile
- organisation_name
- organisation_type
- no_of_users
- industry_type
- purpose
- verification_channel (Telegram or Email)
- consent_status
- telegram_token
- telegram_user_id
- telegram_chat_id
- handshake_status
- otp_hash
- otp_expiry
- otp_attempt_count
- created_at
- updated_at
FreeUserIdentity- identity_id
- first_name
- last_name
- normalized_mobile
- organisation_name
- organisation_type
- telegram_user_id
- first_seen_at
- last_login_at
- status
UX Requirements
- Show clear step-by-step progression:
- sign-up
- mobile details
- consent
- open bot
- verification
- If handshake is pending, the UI shall keep polling or allow manual refresh.
- If OTP expires, the user shall be able to request a resend.
- If Telegram is not installed, show fallback instructions.
Security Requirements
- Shared Azure login must not expose shared-state access across users.
- OTP values must never be stored in plain text.
- Deep-link tokens must be random, time-limited, and single-session scoped.
- Rate limiting required on:
- OTP send
- OTP verify
- handshake retries
- mobile number attempts
- Audit log required for:
- consent accepted/declined
- handshake success/failure
- OTP sent/verified/expired
Admin/Ops Requirements
- Support team needs a simple dashboard or query view showing:
- pending handshakes
- OTP failures
- duplicate mobile attempts
- blocked/rate-limited sessions
Dependencies
- Azure Entra shared free-tier identity setup
- Telegram bot registration
- BotFather
/setdomain - Secure secret/token storage
- Webhook endpoint for Telegram bot events
Acceptance Criteria
- A new user can complete consent, handshake, and OTP verification end-to-end.
- A returning user can authenticate using mobile number + Telegram OTP.
- No OTP is sent before Telegram
/starthandshake. - A declined-consent user cannot continue.
- Duplicate mobile detection works reliably.
- All events are logged for traceability.
Phase 2: Tenant Provisioning, Routing, and Free Workspace Access
Phase 2 Objective
Convert verified users into actual tenant workspaces by provisioning dedicated databases, mapping users to tenants, and enabling one-click return access through Telegram-delivered login links.
In-Scope
- New tenant creation after Phase 1 verification
- Template DB cloning
- Tenant mapping table
- Provisioning queue and worker
- Processing/status screen
- Telegram notification when DB is ready
- One-click unique login link
- Returning-user routing into correct DB
/linkand/statusTelegram bot commands
Out of Scope
- Advanced monetization controls
- Soft caps and usage warnings
- AI trial prompts
- Verticalized starter data packs unless needed for provisioning baseline
User Stories
- As a new user, I want my workspace created automatically after verification.
- As a returning user, I want to land directly in my own tenant environment.
- As a user, I want to recover my login link without contacting support.
- As operations, I want provisioning failures and retries to be visible.
Functional Requirements
1. Tenant Provisioning
- After Phase 1 verification, if the mobile number does not exist in tenant mapping, the system shall:
- create a provisioning job
- clone a template database
- assign a unique tenant identifier
- save tenant mapping
- Provisioning shall be asynchronous.
- The user shall see a โprocessingโ screen after verification if provisioning is not complete.
2. Tenant Mapping
- The system shall maintain a mapping between normalized mobile number and:
- tenant_id
- database_name / connection reference
- provisioning state
- login status
- Only one active free tenant shall exist per normalized mobile number.
3. Login Link Delivery
- When provisioning completes, the Telegram bot shall send:
- confirmation message
- personalized one-click login link
- Login links shall be signed, time-bound, and revocable.
- Login links shall route the user into the correct tenant after validating the mobile-linked identity context.
4. Returning User Access
- Returning users entering from:
- portal login
- Telegram unique link shall be routed to their tenant after OTP verification or signed-link validation.
- If a DB is still provisioning,
/statusshall show progress.
5. Telegram Bot Commands
/start- initiates or refreshes handshake
/link- sends active login link if tenant exists
/status- returns provisioning state for new users
Data Requirements
Add these entities:
TenantMapping- tenant_id
- normalized_mobile
- database_name
- db_server_ref
- provisioning_status
- provisioning_started_at
- provisioning_completed_at
- created_at
ProvisioningJob- job_id
- tenant_id
- source_template
- job_status
- retry_count
- last_error
- created_at
- updated_at
LoginLink- link_id
- tenant_id
- normalized_mobile
- token_hash
- expires_at
- last_used_at
- revoked_at
Backend Requirements
- Create a provisioning service/worker to clone DBs concurrently and safely.
- Add retry logic and dead-letter/error handling for failed provisioning.
- Ensure tenant connection resolution happens only after identity verification.
- Add cleanup jobs for expired sessions, OTPs, and stale tokens.
Frontend Requirements
- Add a โYour database is being preparedโ screen with:
- estimated status
- Telegram notification explanation
- retry/open Telegram guidance
- Add returning-user login portal for mobile number entry and OTP.
- Add link-validation landing route for personalized deep links.
Security Requirements
- No tenant should ever be resolved without verified mobile identity or valid signed link.
- Login links must not expose raw tenant identifiers in insecure form.
- Signed links should support revocation if abuse is suspected.
- Provisioning logs must not leak secrets or DB credentials.
Admin/Ops Requirements
Need operational visibility for:
- total free tenants created
- provisioning queue depth
- provisioning failure rate
- DB readiness time
- repeated
/linkrequests - suspicious repeated login attempts
Dependencies
- Template database snapshot strategy
- Background job infrastructure
- Tenant-aware connection management
- Telegram outbound messaging setup
- Signed token/link service
Acceptance Criteria
- A newly verified user gets a dedicated tenant DB provisioned automatically.
- Tenant mapping is created and can route users correctly.
- A Telegram message is sent once DB provisioning completes.
/linksuccessfully re-sends access link for existing users./statusshows accurate provisioning state.- Returning users reach only their own isolated workspace.
Phase 3: Plan Controls, Upgrade System, and Growth
Phase 3 Objective
Turn ERPCrystal Lite into a scalable growth channel by enforcing plan limits, exposing Pro value, and adding frictionless upgrade paths.
โ๏ธ Entitlement Logic Flow
The system centrally evaluates entitlements for every sensitive action.
graph TD
A[User Action Request] --> B[Identify Tenant Plan]
B --> C{Is Pro?}
C -- Yes --> D[Allow Action]
C -- No --> E[Check Usage vs Limit]
E --> F{Limit Reached?}
F -- No --> G[Check Warning Threshold]
G -- No --> D
G -- Yes --> H[Show Warning + Allow Action]
F -- Yes --> I{Grace Period Active?}
I -- Yes --> J["Show Warning + Allow Action (Limited Features)"]
I -- No --> K[Block Action + Show Upgrade Prompt]In-Scope
- Free Version plan limits by module
- Usage counters and entitlement engine
- Contextual upgrade nudges and persistent “Upgrade” button
- Stripe/Razorpay integration for self-service conversion
- Vertical onboarding starter profiles
- “Export My Data” trust feature
User Stories
- As a Lite user, I want to see clear indicators of my remaining usage.
- As a user hitting a limit, I want an immediate, self-service way to upgrade to Pro.
- As a Lite user, I want to trust that my data is portable and migratable to Pro.
Functional Requirements
1. Self-Service Upgrade & Payment
- The system shall provide a self-service upgrade path, allowing users to convert from Free to Pro without manual support intervention.
- Integration with a payment gateway (e.g., Stripe or Razorpay) shall be implemented to handle direct payments.
- Successful payment shall trigger an automatic tenant entitlement update from Free to Pro.
2. Persistent Navigation Visibility
- A prominent “Upgrade to Pro” or “Upgrade” button shall be consistently visible in the application’s top navigation bar for all users on the Free Version.
3. Entitlement and Usage Engine
- The system shall enforce feature limits based on plan type: Free Version or Pro.
- Limits shall be configurable per feature and per period:
- yearly
- monthly
- active-count based
- concurrent-user based
- Usage shall be tracked per tenant.
2. Free Version Restriction Types
Support these restriction models:
- hard cap
- soft cap with warning
- feature visible but disabled
- watermark output
- manual-only mode
- view-only mode
- AI prompt quota
- import/upload/email disabled
- limited history window
3. Module-Level Limits
Implement Free Version restrictions for:
- Sales
- Supply Chain
- Manufacturing
- HR & Payroll
- Finance
- System Tools
- AI features
- Integrations
- Audit tracking
- global org-level restrictions
The product team should configure exact limits from your strategy matrix into a centralized entitlement table.
4. Upgrade Trigger Design
- Show warnings before thresholds, for example at 80%.
- Optionally allow grace usage beyond nominal cap where configured.
- Display contextual nudges at moments of friction:
- repeated manual entry
- blocked upload
- AI quota reached
- third user attempt
- transaction limit near exhaustion
- Premium features shall remain visible with clear upsell messaging.
5. Trust and Conversion Features
- Add โExport All My Dataโ capability.
- Show โYour data is migratable to Pro with one click.โ
- Add branded/watermarked PDF footer for Free Version outputs.
- Add product-branded shareable outputs where applicable.
6. Verticalized Starter Setup
- During onboarding or post-provisioning, use industry type to initialize sample masters or starter configuration.
- Example: Fabricator profile can preload relevant items/processes.
7. Milestone-Based Rewards
- Support milestone unlocks such as:
- โfirst 10 sales ordersโ
- โ5 AI tries usedโ
- These should be configurable and tied to specific promotional unlocks if desired.
Data Requirements
Add:
PlanEntitlement- plan_type
- feature_code
- limit_type
- limit_value
- period_type
- grace_value
- warning_threshold
- restriction_mode
FeatureUsage- tenant_id
- feature_code
- usage_value
- usage_period_start
- usage_period_end
- last_updated_at
UpgradeEvent- tenant_id
- feature_code
- event_type
- trigger_context
- shown_at
- clicked_at
- converted_at
IndustryProfile- profile_code
- setup_payloadh
- active_status
UX Requirements
- Free Version/pro gating must be understandable and not feel broken.
- Disabled features should explain:
- what the user tried to do
- why it is unavailable in Free Version
- what Pro unlocks
- Usage meters should be visible on relevant pages.
- Warning banners should appear before users hit a hard stop.
- Upgrade CTAs should be contextual and not spammy.
Reporting and Analytics Requirements
Track:
- sign-up completion rate
- consent acceptance rate
- Telegram handshake completion rate
- OTP success rate
- provisioning completion rate
- time to first meaningful action
- feature usage by module
- limit-hit events
- upgrade CTA impressions
- upgrade CTA clicks
- Pro conversion rate
- conversion by industry profile
- churn or inactivity after first login
Security and Compliance Requirements
- Enforcing Free Version restrictions must happen server-side, not only in UI.
- All entitlement checks should be auditable.
- Export features must respect tenant isolation.
- Usage counting must be tamper-resistant.
Admin/Ops Requirements
Internal tools should allow:
- modifying plan limits
- reviewing tenant usage
- reviewing upgrade events
- enabling/disabling promotional unlocks
- manually retrying failed entitlement sync or usage recalculation
Dependencies
- Central feature flag or entitlement engine
- Usage metering framework
- Analytics/event pipeline
- PDF/report rendering hooks
- configurable pricing/upgrade destination
Acceptance Criteria
- Free Version restrictions match approved business rules per module.
- Usage limits are measured correctly per tenant and per period.
- Upgrade prompts appear at intended points.
- Premium features remain visible where defined.
- Data export works for Free Version users.
- Analytics dashboard can identify top conversion triggers.
๐งฎ 3. Sales Module Strategy
๐น Key Design Pattern
- Hard limits on transactions
- Watermarks + manual workflows
- AI throttling
๐ Sales Feature Matrix
| Feature | Lite Restriction | Pro Capability |
|---|---|---|
| Sales Order | 25/year + watermark PDF, Disable Email, Disable Upload Feature | Unlimited + Branded PDF + Email Sending + S3 Document Upload |
| Sales Enquiry | 25/year, | Unlimited |
| Invoice | 25/year, disable import, disable email, disable E-Invoicing, Disable Upload | Unlimited + AI creation + Bulk Excel import + E-Invoicing + S3 Upload |
| Export Invoice | View only | Full export documentation + Multi-currency support |
| Sales Rejection | 25/year | Unlimited |
| Short Close | Manual only | Unlimited manual short-closing |
| Marketing Activity | 100 logs max | Full CRM tracking (Calls/Visits) |
| Collection Status | Last 30 days | Full historical collection status |
| AI Invoice | 5 prompts/year | Unlimited AI-powered invoice generation |
| Sales Officer | 10/Year | Unlimited |
| Sales Order Status | 10/Year | Unlimited |
| Transfer Price Master | 25/ year, Import Disable | Unlimited + Bulk Excel Import |
โ Reports: Fully Enabled
๐ 4. Supply Chain Module Strategy
๐น Key Design Pattern
- Inventory movement throttling
- Manual procurement workflows
- Restricted stock visibility
๐ Supply Chain Feature Matrix
| Feature | Lite Restriction | Pro Capability |
|---|---|---|
| Purchase Indent | 25/year, No Upload, No Import | Unlimited + Bulk Excel Import + S3 Upload |
| GRN (Goods Received) | 25/year, watermark PDF | AI-Powered GRN creation, Unlimited records |
| Purchase Bill | 25/year, No upload, No email | Unlimited + Email Sending + S3 Document Upload |
| DNCN (Debit/Credit) | 25/year, No email, Watermark | Unlimited + E-DNCN generation + Print |
| Inventory Adjustment | 25/year | Unlimited warehouse reconciliation entries |
| MRN / IIRS | 50/year | Unlimited material issue/receipt entries |
| Advance License | View only | Full tracking and statutory reporting |
| Import Document | View only | Full landed cost calculation and document tracking |
| Masters | ||
| Item Master | 50 Active items, Single UOM | Unlimited Items + Bulk Excel Import |
| Store Master | 2 Max | Unlimited locations (Store/Unit) |
| UOM / HSN Master | System defaults only | Custom Units and HSN definitions |
| Price/Cost Master | 25/ year Manual entry only | Bulk Excel Import |
| Lead Time Master | 25/year Manual entry | Manual tracking per Party/Item/Mode |
โ Reports: Fully Enabled
๐ญ 5. Manufacturing Module Strategy
๐น Key Design Pattern
- Complexity limits for BOM
- Capacity planning throttling
- Single-stream production flow
๐ Manufacturing Feature Matrix
| Feature | Lite Restriction | Pro Capability |
|---|---|---|
| BOM | 10 max, 2 levels deep | Multi-level BOM (verified up to 4+ levels) |
| Production Plan | 1 active plan, Manual entry | Unlimited plans + Bulk Excel Import |
| Job Work | 25/year, manual challan | Unlimited Job Work tracking |
| Production Entry | Single shift selection | Multi-shift support (Day/Night) |
| QA Protocol | 25 Rejected lines allowed | Full Test Plan management and QA logs |
| Masters | ||
| Process Master | 5 max | Unlimited manufacturing processes |
| Machine Master | 5 max | Unlimited machines with machine specifications |
| Quality Parameters | System defaults only | Custom quality parameter definitions |
| Stage/Machine Map | 10 max | Unlimited mapping across production stages |
โ Reports: Fully Enabled
๐ฅ 6. HR & Payroll Strategy
๐น Key Design Pattern
- Headcount-based scaling
- Manual calculation overhead
- Limited attendance automation
๐ HR Feature Matrix
| Feature | Lite Restriction | Pro Capability |
|---|---|---|
| Employees | 10 Max active | Unlimited Employee Master and historical data |
| Payroll | Manual month-wise computation | Computation for entire crew + PDF Payslips |
| Leave Management | 5/month, No carry-forward | Full Leave policy tracking |
| Attendance | Manual entry only | Daily In-Out register tracking |
| Loan / Advance | 5/year | Employee Loan tracking and repayment |
| Crew Task Log | 100 entries max | Detailed worker task logs |
| Masters | ||
| Dept/Desig Master | 5 each | Unlimited Departments and Designations |
| Shift Master | 2 max (Day/Night) | Multiple shifts and timing rules |
| Holiday Master | 1 Global list | Unlimited Holiday and Weekly-off lists |
โ Reports: Fully Enabled
๐ฐ 7. Finance Module Strategy
๐น Key Design Pattern
- Transaction volume caps
- Single-currency focus
- Manual reconciliation friction
๐ Finance Feature Matrix
| Feature | Lite Restriction | Pro Capability |
|---|---|---|
| Vouchers | 50/month (Receipt/Payment/Journal) | Unlimited transactions + Bulk Excel Import |
| Bank Recon | Manual entry comparison | Bulk reconciliation via Excel Import |
| Fixed Assets | 10 max, Manual tracking | Unlimited Assets + Cost/Life tracking |
| Letter of Credit | View only | Complete LC / BOE lifecycle tracking |
| Investments | 5 max | Full bank/code based investment tracking |
| Masters | ||
| Account Ledger | 100 max | Unlimited Ledgers + Bulk Excel Import |
| Currency Master | INR Only | Multi-currency (Global) transactions |
| Cost Center | 5 max | Unlimited cost center definitions |
| TCS / TDS Master | Standard rates only | Full TCS/TDS master data management |
โ Reports: Fully Enabled
๐ ๏ธ 8. System Tools Strategy
๐น Key Design Pattern
- Multi-user throttling
- Security audit window
- Restricted automation tasks
๐ System Tools Matrix
| Feature | Lite Restriction | Pro Capability |
|---|---|---|
| Users | 2 Max concurrent | Unlimited staff logins |
| Access Roles | Basic (Admin/User) | Detailed Group-to-Role permissions |
| Audit Trail | 48 hours history only | Full historical change tracking |
| Task Scheduler | 2 active tasks | Unlimited background task scheduling |
| Notifications | In-app alerts only | Auto-Email notifications |
| PDF Layouts | Standard fixed headers | Managed Branded Headers/Footers |
| Two-Factor Auth | Disabled | Two-Factor Authentication via Email |
โ Reports: Fully Enabled Across All Modules
โ๏ธ 9. Cross-Feature Restrictions
๐ Global Limits
- Single Business Unit Only
- Single Branch Only
๐ค AI Restrictions
| Feature | Lite | Pro |
|---|---|---|
| AI Insights | Sample / Top 3 trends | Full AI-driven trend analytics |
| AI Invoice | 5 prompts/year | Unlimited generative invoice creation |
| AI GRN | 5 prompts/year | Unlimited generative GRN creation |
โ๏ธ Integrations
| Feature | Lite | Pro |
|---|---|---|
| S3 Upload | Disabled (UI visible) | Enabled via AWS S3 |
| Email Send | Disabled (UI visible) | Enabled via SMTP |
๐ Audit & Tracking
| Feature | Lite | Pro |
|---|---|---|
| Audit Trail | 48 hours | Full history |
๐ 10. Upgrade Triggers
๐ Natural Conversion Points
- Transaction limits reached
- Need for automation (AI, bulk ops)
- Multi-unit expansion
- Compliance requirements
- Team scaling (users/roles)
๐ก High Impact Suggestions
1. In-App “Upgrade” Triggers (Visual Psychology)
Instead of just hiding features, keep the “Premium” features visible but “Tease” the value:
- The “Mock” Dashboard: Show a blurred or sample-data version of the Dashboard with a badge: “Upgrade to Pro to see your real-time analytics.”
- Contextual Upsells: If a user manually enters 10 line items in a GRN, show a small pop-up: “Tired of manual entry? Try AI OCR to scan this bill and create GRN in 2 seconds. [Try 5 Free Scans]”
2. Branding as a Marketing Asset
The Free Version can act as a billboard for your main product:
- Watermarked Documents: Any Invoice or Report generated in the Free version should have a subtle footer: “Generated by ERPCrystal Lite โ Get the Full Version at [URL]”.
- Public Share Links: Allow free users to share a “Live View” of an invoice with their clients (with your branding). This creates viral exposure to other businesses that might need an ERP.
3. “Soft Cap” vs. “Hard Cap” Strategy
Instead of cutting the user off abruptly at 25 records (which can be frustrating):
- The Warning Phase: At 20 records, change the top bar color to Amber with a message: “You are 80% through your free transaction limit. Don’t let your business stopโUpgrade now!”
- The Grace Period: Allow them to go up to 30 records, but disable “Advanced Printing” or “Emailing” for those extra 5. This gives them time to pay without halting critical operations.
4. Data “Portability” (Building Trust)
One of the biggest fears for ERP users is “Vendor Lock-in”:
- Single-Click CSV Export: Explicitly offer a “Export All My Data” button. Paradoxically, showing users they can leave whenever they want makes them feel safer staying and upgrading.
- Trust Badge: Prominently state: “Your data is 100% migratable to the Pro version with one click.”
5. Multi-User “Collaboration Tease”
The Free version allows 2 users. Use this to encourage team expansion:
- The “Request Role” Notification: If a third person tries to log in, send an email to the owner: “Staff member ‘John’ tried to join your workspace. Upgrade to Pro to add unlimited team members.”
6. Vertical-Specific “Lite” Profiles
Different industries use different parts of your ERP. When they sign up for the Free version, ask: “What is your business type?” (e.g., Fabricator, Retailer, Trader).
- Pre-Configured Masters: If they select “Fabricator,” pre-load the system with a few sample “Sheet Metal” items and “Cutting” processes.
- Immediate Value: This reduces “Blank Page Syndrome” where users don’t know where to start, leading to higher trial completion rates.
Implementation Quick-Win: The “Power User” Milestone
Reward users for using the system.
- Example: “You’ve just completed your first 10 Sales Orders! We’ve unlocked the ‘Print’ feature for your invoices as a gift.” Small wins make the software feel “alive” and responsive to their growth.
๐๏ธ Final Recommendation
Develop ERPCrystal Lite as a “Single-Instance, Multi-Tenant” deployment where:
- Users sign up for a Free Lifetime Trial.
- The UI is stripped down to Core Masters + Sales + Sourcing.
- Revenue Drive: The most visible “Paywall” should be the AI OCR Extraction. Once users realize manual entry is tedious, the AI-powered
AIGrnCreate.razoracts as the primary conversion hook.
Tip
Key Conversion Hook: Allow the user to try 5 “AI Extractions” for free. This demonstrates the “WOW” factor of your product before requiring a subscription.
๐ ๏ธ Technical Strategy & Security
1. Identity & Access Model
- Shared Authentication: Uses a shared Azure account for initial entry to reduce management overhead.
- Verification Hook: Final identity is established only after a successful Telegram OTP handshake.
- Tenant Isolation: Every user is mapped to a dedicated physical database.
Why Mobile Verification via Telegram?
| Factor | Benefit |
|---|---|
| Uniqueness | SIM-based identity is harder to spoof than email. |
| Delivery | Instant delivery over the internet; bypasses email spam filters. |
| Cost | Telegram Bot API is free for high-volume OTP delivery. |
| UX | Deep-links open Telegram directly for a seamless “handshake.” |
2. Centralized Implementation Strategy
To enforce limits without modifying every page:
- Module Mapping: Link API Controllers to business modules (e.g.,
Sales,HR). - Global Action Filter: A middleware to intercept requests and block actions if limits are exceeded (
402 Payment Required). - Cascading Plan State: Provide the tenant’s plan (Lite/Pro) as a
CascadingValuein Blazor for instant UI updates. - Smart UI Guards: Use an
EntitlementGuardcomponent to wrap restricted features with a padlock icon/upgrade nudge.
3. Risks & Mitigations
- Telegram Dependency: Mitigated by clear UI instructions and a “Request /link” fallback bot command.
- Provisioning Latency: Mitigated by an async queue and a “Processing” status screen.
- Hard Limit Friction: Mitigated by “Soft Caps” and “Grace Periods” where users are warned before being blocked.
๐ Delivery Roadmap & Readiness
๐๏ธ Phase-wise Roadmap
- Phase 1 (Identity): Validate the acquisition funnel (Azure login, Telegram handshake, OTP).
- Phase 2 (Provisioning): Enable usable product access (DB cloning, tenant mapping).
- Phase 3 (Growth): Monetize usage (Entitlement engine, module caps, upgrade triggers).
โ Release Readiness Checklist
- Telegram Bot registered and
/setdomainconfigured. - Azure shared login tested for concurrency (max 100).
- DB cloning benchmarked and error-handling verified.
- Entitlement matrix approved by business stakeholders.
- Analytics pipeline active for conversion tracking.
๐ฏ Final Product Outcome
ERPCrystal Lite serves as a low-friction, secure, and isolated multi-tenant entry point that converts free users into Pro customers through value-driven friction and seamless upgrade paths.