{{ systemAnnouncement }}
You are currently impersonating {{ currentUser.name }} ({{ currentUser.role }}).
Retail Asset Operations

Sales Link

Daily File Tracking, Pipeline & Team Execution Portal

{{ loginError || registerError }}

Relationship Officers (ROs): Click below to sign in

Continue with your authorized Google work account

RO Relationship Officers: Sign in using the Google account invited by your Sales Manager.
SM Sales Managers: Sign in to monitor file tracking, team EODs, and pacing targets.
Authorized Internal Access • 256-Bit SSL Encrypted

Sales Manager onboarding a new branch?

SM Only
Sales Manager (SM) Setup Only

Relationship Officers (ROs): Do NOT register here. Your Sales Manager must invite you first. Please click Back to Sign In above.

Issued by Super Admin

ROs do not have a passcode. Click 'Back to Sign In' above.

Mandatory
Mandatory
SL

{{ getTabTitle(currentTab) }}

{{ currentUser.name }}

Platform Overview

Workspaces
(Tenants)

{{ saasStats.totalWorkspaces }}

+{{ saasStats.newWorkspaces }} in periodAll active

Total Users
(ROs)

{{ saasStats.totalUsers }}

{{ saasStats.activeUsers }} active in period

Files Logged
(Usage)

{{ saasStats.totalFiles }}

In selected periodAll time files

Total System
Records

{{ saasStats.filesAllTime }}

Total lifetime files

Platform Growth (Last 30 Days)

Workspace Health & Usage

Workspace / Tenant Status Seats (ROs) Usage (Files) Last Active Actions
{{ workspace.name }} {{ workspace.bankName || 'Axis Bank' }} {{ workspace.division || 'Auto Loans' }}
ID: {{ workspace.id }}
{{ workspace.status }} {{ workspace.roCount }} {{ workspace.fileCount }} {{ workspace.lastActive ? formatDate(workspace.lastActive) : 'Never' }}
No workspaces registered yet.

Global System Announcement

Set a message to display as a banner at the top of the app for all users. Leave blank to remove.

Sales Manager (SM) Registration Security Key

Managers must enter this security passcode to register a new bank workspace.

Active: {{ activeManagerPasscode }}
Security key updated successfully! New managers must use this key to register.

Global User Directory

No users found matching your filters.

{{ group.workspace.name }}

Tenant ID: {{ group.workspace.id }} • Users: {{ group.smUsers.length + group.roUsers.length }}

Name / Email Role Performance Status Actions
{{ user.name }}
{{ user.email || 'N/A' }}
Sales Mgr
{{ user.fileCount || 0 }} Files
{{ user.lastActive ? new Date(user.lastActive).toLocaleDateString() : 'Never Active' }}
{{ user.status || 'ACTIVE' }}
{{ user.name }}
{{ user.email || 'N/A' }}
Officer (RO)
{{ user.fileCount || 0 }} Files
{{ user.lastActive ? new Date(user.lastActive).toLocaleDateString() : 'Never Active' }}
{{ user.status || 'ACTIVE' }}

Overview Dashboard

Total Files

{{ stats.totalFiles }}

₹{{ formatCurrency(stats.totalValue) }}

Approved

{{ stats.approvedCount }}

₹{{ formatCurrency(stats.approvedAmount) }}

Disbursed

{{ stats.disbursedCount }}

₹{{ formatCurrency(stats.disbursedAmount) }}

In Process (FI)

{{ stats.loginCount }}

₹{{ formatCurrency(stats.loginAmount) }}

Rejected

{{ stats.rejectedCount }}

₹{{ formatCurrency(stats.rejectedAmount) }}

Approval Rate

{{ stats.approvalRate }}%

Apprv. + Disb.

RO Performance Leaderboard

Click any RO to open their 360° Cockpit and 1-tap WhatsApp nudges.

Interactive 360° Cockpit
#{{ index + 1 }}

{{ ro.name }}

{{ ro.conversionRate }}% Conv
₹{{ formatCurrency(ro.disbursedAmount) }}
{{ ro.totalFiles }} {{ ro.approvedFiles }}
Pipe: ₹{{ formatCurrency(ro.totalAmount) }} 360°
No RO data available.

Recent Activity

Latest 5 files

{{ file.customerName }}

₹{{ formatCurrency(file.loanAmount) }}
{{ file.status }} {{ file.roName }}
{{ formatDate(file.createdAt) }}
No recent activity found.
#{{ file.appId || 'NO ID' }} {{ file.loginDate ? formatDateOnly(file.loginDate) : formatDateOnly(file.createdAt) }}
{{ file.status }}

{{ file.customerName }}

₹{{ formatCurrency(file.loanAmount) }}
{{ file.nclUcl || '-' }} {{ file.sourcingChannel || 'DSA' }} RO: {{ file.roName }} SM: {{ file.smName }}
Updated: {{ formatDate(file.updatedAt || file.createdAt) }}

No files for {{ getTimelineLabel(roFilters.timeline) }}

{{ roFilters.timeline === 'today' && allFiles.length > 0 ? 'There are files logged on other dates.' : 'Try adjusting your search or filters.' }}

Showing {{ filteredFiles.length }} records

Team Users & Officers

{{ activeRoUsers.length }} Active {{ suspendedRoUsers.length }} Suspended

Manage RO branch team access, Google logins, and account status

Active Officers ({{ activeRoUsers.length }})

Authorized to login & report files
{{ user.name ? user.name.charAt(0).toUpperCase() : 'U' }}

{{ user.name }}

@{{ user.email }}

Active

No active RO accounts

Click "Add New RO" to invite team members

Suspended Officers ({{ suspendedRoUsers.length }})

Login Blocked
Accounts frozen. Click "Activate" to restore access or "Delete" to remove.

{{ user.name }}

@{{ user.email }}

Suspended
{{ currentUser?.name ? currentUser.name.charAt(0).toUpperCase() : 'R' }}

Hello, {{ currentUser?.name || 'Relationship Officer' }} 👋

Retail Asset Operations • {{ new Date().toLocaleDateString('en-IN', { weekday: 'short', day: 'numeric', month: 'short' }) }}

{{ roStats.approvalRate }}% Conversion
Total Portfolio
{{ roStats.totalFiles }}
₹{{ formatCurrency(roStats.totalAmount) }} pipeline
Disbursed
{{ roStats.disbursedCount }}
₹{{ formatCurrency(roStats.disbursedAmount) }} volume
Sanction
{{ roStats.sanctionCount || roStats.approvedCount }}
₹{{ formatCurrency(roStats.sanctionAmount || roStats.approvedAmount) }} approved
In Process
{{ roStats.inProcessCount }}
₹{{ formatCurrency(roStats.inProcessAmount) }} UW/FI

Pipeline Stage Breakdown

Click any stage to filter your tracking list

Recent Customer Cases

Latest customer logins by you

{{ file.customerName }} #{{ file.appId || 'NoID' }}
{{ file.nclUcl || 'NCL' }} • {{ file.sourcingChannel || 'DSA' }} • {{ formatDateOnly(file.loginDate || file.createdAt) }}
₹{{ formatCurrency(file.loanAmount) }} {{ file.status }}

No customer files logged yet.

Category Breakdown

Portfolio distribution

{{ roStats.totalFiles }} Total Files
NCL (New Car)
{{ roStats.nclCount }} files
₹{{ formatCurrency(roStats.nclAmount) }}
UCL (Used Car)
{{ roStats.uclCount }} files
₹{{ formatCurrency(roStats.uclAmount) }}
#{{ file.appId || 'NO ID' }} {{ file.loginDate ? formatDateOnly(file.loginDate) : formatDateOnly(file.createdAt) }}
{{ file.status }}

{{ file.customerName }}

₹{{ formatCurrency(file.loanAmount) }}
{{ file.nclUcl || 'NCL' }} {{ file.sourcingChannel || 'DSA' }} PPC: {{ file.ppc }} VCIP: {{ file.vcip }}
{{ file.smName || defaultSmName || 'Unassigned' }}

No files for {{ getTimelineLabel(roFilters.timeline) }}

{{ roFilters.timeline === 'today' && myFiles.length > 0 ? 'You have files logged on other dates.' : 'Try adjusting your search or filters.' }}

New Customer File

Log loan application details for daily tracking

Default: ALA00000
#
{{ formatLakhsToRupees(newFileForm.loanAmount) }}
₹ Lakhs

Enter in Lakhs (e.g. 5.5 = ₹5.50 L / ₹5,50,000)

Auto-Filled
RO: {{ currentUser.name }}
EOD copied! Paste in WhatsApp.

Daily EOD

{{ new Date().toLocaleDateString('en-IN', { day: 'numeric', month: 'short', year: 'numeric' }) }} Submitted Revising

You're all set!

EOD filed with your SM. Share it or revise if needed.

WhatsApp
Revising Today's Report

Update numbers or re-sync, then resubmit.

Submission Notice

{{ eodSubmitError }}

Logins
FTD: {{ eodTotals.loginCount }} / {{ eodTotals.loginAmount.toFixed(1) }}L MTD: {{ eodMtdTotals.loginCount }} / {{ eodMtdTotals.loginAmount.toFixed(1) }}L
Category FTD Nos FTD (L) MTD Tot
{{ currentRoMtd[m.key]?.count || 0 }}/{{ (currentRoMtd[m.key]?.amount || 0).toFixed(1) }}L
Sanctions
FTD: {{ eodTotals.sanctionCount }} / {{ eodTotals.sanctionAmount.toFixed(1) }}L MTD: {{ eodMtdTotals.sanctionCount }}
Category FTD Nos FTD (L) MTD Tot
{{ currentRoMtd[m.key]?.count || 0 }}/{{ (currentRoMtd[m.key]?.amount || 0).toFixed(1) }}L
Disbursements
FTD: {{ eodTotals.disbCount }} / {{ eodTotals.disbAmount.toFixed(1) }}L MTD: {{ eodMtdTotals.disbCount }} / {{ eodMtdTotals.disbAmount.toFixed(1) }}L
Category FTD Nos FTD (L) MTD Tot
{{ currentRoMtd[m.key]?.count || 0 }}/{{ (currentRoMtd[m.key]?.amount || 0).toFixed(1) }}L
Maruti
FTD (L/D): {{ eodForm.marutiLogin?.count || 0 }}/{{ eodForm.marutiDisb?.count || 0 }} MTD: {{ currentRoMtd.marutiLogin?.count || 0 }}/{{ currentRoMtd.marutiDisb?.count || 0 }}
Category FTD Nos FTD (L) MTD Tot
{{ currentRoMtd[m.key]?.count || 0 }}/{{ (currentRoMtd[m.key]?.amount || 0).toFixed(1) }}L
Other Metrics
Auto-Tracked
Metric FTD Nos FTD (L) MTD Tot
{{ currentRoMtd[m.key]?.count || 0 }}/{{ (currentRoMtd[m.key]?.amount || 0).toFixed(1) }}L
Logins
FTD: {{ eodTotals.loginCount }} ({{ eodTotals.loginAmount.toFixed(1) }}L)
MTD: {{ eodMtdTotals.loginCount }} ({{ eodMtdTotals.loginAmount.toFixed(1) }}L)
Sanction
FTD: {{ eodTotals.sanctionCount }} ({{ eodTotals.sanctionAmount.toFixed(1) }}L)
MTD: {{ eodMtdTotals.sanctionCount }} ({{ eodMtdTotals.sanctionAmount.toFixed(1) }}L)
Disb
FTD: {{ eodTotals.disbCount }} ({{ eodTotals.disbAmount.toFixed(1) }}L)
MTD: {{ eodMtdTotals.disbCount }} ({{ eodMtdTotals.disbAmount.toFixed(1) }}L)

Today's report is submitted.

Use the Revise button above to make changes, or check the Audit tab to verify your cases.

Today's Logins
{{ todayLoginsFiles.length }} files

No files logged for today's date yet.

{{ f.customerName }} #{{ f.appId || 'No ID' }} · {{ f.nclUcl || 'NCL' }} · {{ f.sourcingChannel || 'DSA' }}
₹{{ formatCurrency(f.loanAmount) }} {{ f.status }}
Today's Disbursements
{{ todayDisbFiles.length }} files

No files marked Disbursed today.

{{ f.customerName }} #{{ f.appId || 'No ID' }} · {{ f.nclUcl || 'NCL' }}
₹{{ formatCurrency(f.loanAmount) }} Disbursed
Auto-aggregated into your EOD form

No submissions yet

Your EOD reports will appear here after your first submission.

{{ new Date(eod.date).toLocaleDateString('en-IN', { day: 'numeric', month: 'short', year: 'numeric' }) }} Revised
Logins {{ (eod.metrics.loginOpenMarket.count || 0) + (eod.metrics.loginBranch.count || 0) + (eod.metrics.loginUsedCar.count || 0) }} {{ ((eod.metrics.loginOpenMarket.amount || 0) + (eod.metrics.loginBranch.amount || 0) + (eod.metrics.loginUsedCar.amount || 0)).toFixed(1) }}L MTD: {{ getRoMtdForDate(eod.date, eod.metrics).loginOpenMarket.count + getRoMtdForDate(eod.date, eod.metrics).loginBranch.count + getRoMtdForDate(eod.date, eod.metrics).loginUsedCar.count }}/{{ (getRoMtdForDate(eod.date, eod.metrics).loginOpenMarket.amount + getRoMtdForDate(eod.date, eod.metrics).loginBranch.amount + getRoMtdForDate(eod.date, eod.metrics).loginUsedCar.amount).toFixed(1) }}L
Disb {{ (eod.metrics.disbOpenMarket.count || 0) + (eod.metrics.disbBranch.count || 0) + (eod.metrics.disbUsedCar.count || 0) }} {{ ((eod.metrics.disbOpenMarket.amount || 0) + (eod.metrics.disbBranch.amount || 0) + (eod.metrics.disbUsedCar.amount || 0)).toFixed(1) }}L MTD: {{ getRoMtdForDate(eod.date, eod.metrics).disbOpenMarket.count + getRoMtdForDate(eod.date, eod.metrics).disbBranch.count + getRoMtdForDate(eod.date, eod.metrics).disbUsedCar.count }}/{{ (getRoMtdForDate(eod.date, eod.metrics).disbOpenMarket.amount + getRoMtdForDate(eod.date, eod.metrics).disbBranch.amount + getRoMtdForDate(eod.date, eod.metrics).disbUsedCar.amount).toFixed(1) }}L
Sanctions {{ (eod.metrics.sanctionOpenMarket?.count || 0) + (eod.metrics.loginBranchSanction?.count || 0) + (eod.metrics.sanctionUsedCar?.count || 0) }} {{ ((eod.metrics.sanctionOpenMarket?.amount || 0) + (eod.metrics.loginBranchSanction?.amount || 0) + (eod.metrics.sanctionUsedCar?.amount || 0)).toFixed(1) }}L MTD: {{ (getRoMtdForDate(eod.date, eod.metrics).sanctionOpenMarket?.count || 0) + (getRoMtdForDate(eod.date, eod.metrics).loginBranchSanction?.count || 0) + (getRoMtdForDate(eod.date, eod.metrics).sanctionUsedCar?.count || 0) }}
Share

RO Daily EOD Submissions

Date RO Name Total Logins (FTD) Total Disb (FTD) Total Sanc (FTD)
{{ new Date(eod.date).toLocaleDateString() }} {{ eod.userName }} {{ (eod.metrics.loginOpenMarket.count || 0) + (eod.metrics.loginBranch.count || 0) + (eod.metrics.loginUsedCar.count || 0) }} / {{ ((eod.metrics.loginOpenMarket.amount || 0) + (eod.metrics.loginBranch.amount || 0) + (eod.metrics.loginUsedCar.amount || 0)).toFixed(2) }}L {{ (eod.metrics.disbOpenMarket.count || 0) + (eod.metrics.disbBranch.count || 0) + (eod.metrics.disbUsedCar.count || 0) }} / {{ ((eod.metrics.disbOpenMarket.amount || 0) + (eod.metrics.disbBranch.amount || 0) + (eod.metrics.disbUsedCar.amount || 0)).toFixed(2) }}L {{ eod.metrics.loginBranchSanction.count || 0 }} / {{ (eod.metrics.loginBranchSanction.amount || 0).toFixed(2) }}L
No EOD reports submitted yet.

Filters & Sort

Refine your tracking list

Edit Customer File

Update file details & status

{{ formatLakhsToRupees(editFileForm.loanAmount) }}
₹ Lakhs

Enter in Lakhs (e.g. 5.5 = ₹5.50 L)

Add New Relationship Officer

They will use this Google account to log in.

{{ addRoError }}

Update File Status

Customer: {{ selectedFile?.customerName }}

Current Status: {{ selectedFile?.status }}

Customer File Details

#{{ selectedFile?.appId || selectedFile?.id }} • {{ selectedFile?.customerName }}

Loan Amount (in Lakhs)
₹{{ selectedFile ? formatCurrency(selectedFile.loanAmount) : '0.00 L' }} ({{ formatLakhsToRupees(selectedFile.loanAmount) }})
Status {{ selectedFile?.status }}

App ID

#{{ selectedFile?.appId || 'N/A' }}

Category

{{ selectedFile?.nclUcl || 'N/A' }}

Sourcing Channel

{{ selectedFile?.sourcingChannel || 'DSA' }}

Login Date

{{ selectedFile?.loginDate ? formatDateOnly(selectedFile.loginDate) : (selectedFile ? formatDateOnly(selectedFile.createdAt) : 'N/A') }}

SM Name

{{ selectedFile?.smName || defaultSmName || 'N/A' }}

PPC

{{ selectedFile?.ppc || 'N/A' }}

VCIP

{{ selectedFile?.vcip || 'N/A' }}

MI

{{ selectedFile?.mi || 'N/A' }}

Logged By (RO)

{{ selectedFile?.roName || 'N/A' }}

System Created

{{ selectedFile ? formatDate(selectedFile.createdAt) : '' }}

Edit User

Make sure this matches the RO's exact Google email to fix sign-in typos.

Set Monthly Target

Define your monthly login targets to automatically track your daily run-rate pace.

{{ (selectedRoAnalytics.ro.name || 'RO').charAt(0).toUpperCase() }}

{{ selectedRoAnalytics.ro.name }}

{{ selectedRoAnalytics.ro.status || 'Active' }}

{{ selectedRoAnalytics.ro.email }} {{ selectedRoAnalytics.ro.phone }}

Today's Execution & EOD Pulse

EOD Submitted Revised EOD Pending
Today Logins {{ selectedRoAnalytics.todayLoginsCount }} ₹{{ selectedRoAnalytics.todayLoginsVolume.toFixed(2) }} L
Today Disb {{ selectedRoAnalytics.todayDisbCount }} ₹{{ selectedRoAnalytics.todayDisbVolume.toFixed(2) }} L
Dealer Visits {{ selectedRoAnalytics.todayEod?.dealerVisits || '0' }} Field Touchpoints
Tomorrow Target {{ selectedRoAnalytics.todayEod?.tomorrowLogins || '0' }}L / {{ selectedRoAnalytics.todayEod?.tomorrowDisb || '0' }}D Commitment
RO Field Notes & Hold Remarks:

{{ selectedRoAnalytics.todayEod.remarks }}

MTD Conversion & Sourcing Quality

This Month
Total Logins {{ selectedRoAnalytics.mtdCount }} ₹{{ selectedRoAnalytics.mtdVolume.toFixed(2) }} L
Disbursed {{ selectedRoAnalytics.mtdDisbCount }} ₹{{ selectedRoAnalytics.mtdDisbVolume.toFixed(2) }} L
Conversion % {{ selectedRoAnalytics.conversionRate }}% Disb / Login
Approval Rate {{ selectedRoAnalytics.approvalRate }}% Pass Ratio
NCL: {{ selectedRoAnalytics.nclCount }} (₹{{ selectedRoAnalytics.nclVolume.toFixed(1) }}L) UCL: {{ selectedRoAnalytics.uclCount }} (₹{{ selectedRoAnalytics.uclVolume.toFixed(1) }}L)
New Car Loan Used Car Loan

No active cases in pipeline currently

#{{ file.appId || 'NoID' }}

{{ file.customerName }}

{{ file.nclUcl || '-' }} • {{ file.sourcingChannel || 'DSA' }} • {{ formatDateOnly(file.loginDate || file.createdAt) }}
₹{{ formatCurrency(file.loanAmount) }} {{ file.status }}

Zero Stalled Cases!

All files are moving through stages without delays.

⚠️ {{ file.daysStalled }}d stuck in {{ file.status }} #{{ file.appId || 'NoID' }}

{{ file.customerName }}

Amount: ₹{{ formatCurrency(file.loanAmount) }} • {{ file.sourcingChannel || 'DSA' }}
Showing live metrics for {{ selectedRoAnalytics.ro.name }}

Install SalesLink App

Fast offline access & fullscreen app

Install on iPhone / iPad

Add to Home Screen in 2 simple taps

1

Tap the Share button in Safari's bottom toolbar.

2

Scroll down the options and tap "Add to Home Screen" .

3

Tap "Add" in the top right. SalesLink will launch fullscreen from your home screen!