Business DocumentationUser Onboarding

User Onboarding

Overview

LandlordX supports three distinct user roles, each with a unique onboarding journey tailored to their needs. This document describes the user types, their responsibilities, and the onboarding flow for each.

User Types

RoleDescriptionOnboarding Type
LandlordLegal owner of a property, or an individual/entity (may have Power of Attorney) legally authorised to sign agreements on behalf of the owner. Their name appears on lease agreements. Can be an individual or a company.Standard onboarding via PWA
ManagerPerson or entity managing property on behalf of the landlord. Receives most routine notifications. Not listed on lease agreements.Standard onboarding via PWA
TenantIndividual or entity renting/occupying the property.Just-in-time onboarding during agreement eSigning

Manager Notification Priority

When a property has a manager assigned:

  • Manager receives: All routine notifications (rent reminders, payment confirmations, general updates)
  • Landlord receives: Only high-priority notifications (eSign requests, maintenance escalations with high priority)

This ensures managers handle day-to-day operations while landlords are only notified for critical actions requiring their attention.

User Type Classification

Users can be classified as:

  • Individual: A person with PAN and Aadhaar for KYC
  • Company: A business entity with PAN and GSTIN for verification

Onboarding Flows

Landlord & Manager Onboarding (Standard Flow)

Landlords and managers follow the same progressive authentication flow through the PWA.

Step-by-Step Process

  1. Phone Verification

    • User enters mobile number
    • System sends OTP via SMS
    • User enters 6-digit OTP
    • Backend creates/authenticates user
  2. Profile Creation

    • User enters first name, last name
    • User enters email address
    • System sets hasCompletedProfile = true
  3. eKYC Verification

    • User connects DigiLocker account
    • System verifies Aadhaar details
    • System extracts and stores masked Aadhaar number
    • System sets kyc_verified = true
  4. Dashboard Access

    • User gains full access to LandlordX features
    • Can manage properties, create agreements, etc.

Tenant Onboarding (Just-in-Time Flow)

Tenants are onboarded at the point of eSigning a lease agreement. This minimizes friction as tenants primarily interact via WhatsApp.

Tenant Onboarding Scenarios

ScenarioRequired Steps
New tenant (phone not in system)OTP → Profile → eKYC → eSign
Existing user without KYCOTP → eKYC → eSign
Fully verified userOTP → eSign directly

eKYC Integration via Aadhaar

LandlordX uses Aadhaar-based eKYC for identity verification through a third-party eKYC Provider that integrates with DigiLocker and UIDAI.

eKYC Architecture

eKYC Flow

eKYC Request/Response

Create eKYC Request:

FieldDescription
redirect_urlURL to redirect user after completion
user_reference_idUnique identifier for the user

eKYC Response (on success):

FieldDescription
statuscomplete on successful verification
aadhaar.nameFull name from Aadhaar
aadhaar.dobDate of birth
aadhaar.genderGender
aadhaar.addressAddress from Aadhaar
aadhaar.maskedNumberMasked Aadhaar (XXXX-XXXX-1234)
aadhaar.photoBase64 encoded photo

Data Captured via eKYC

FieldDescriptionStorage
masked_aadhaarLast 4 digits visible (e.g., XXXX-XXXX-1234)Encrypted
first_nameLegal first name from AadhaarPlain text
last_nameLegal last name from AadhaarPlain text
kyc_verifiedVerification status flagBoolean

Company Verification (GSTIN)

For company users, additional verification is performed:

User State Transitions

User Data Model

interface User {
  user_id: string; // UUID
  phone: string; // Mobile number
  first_name: string; // Legal first name
  last_name?: string; // Legal last name
  email?: string; // Email address
  role: "landlord" | "manager" | "tenant";
  user_type: "individual" | "company";
 
  // KYC fields (individuals)
  pan_number: string; // Required for all
  masked_aadhaar?: string; // From DigiLocker
  kyc_verified: boolean; // Aadhaar verification status
 
  // Company fields
  company_name?: string; // If user_type is company
  gstin?: string; // GST identification number
  gstin_verified: boolean; // GSTIN verification status
}

Security & Privacy Considerations

  • PAN Number: Required for all users (tax compliance)
  • Aadhaar: Only masked version stored; full number never persisted
  • Phone: Unique per role (user can have multiple roles with same phone)
  • GSTIN: Verified via government API for company users
  • Session: JWT-based authentication with token refresh