Sign In
Create Account
Welcome back
Sign in to access your Business Info System
Business Information System
Welcome back 👋
All your operations in one place — centralised, live, and always in control.
Open Tasks
Overdue
Active Orders
4
Portals
Quick Access Portals
🏭
FMS Portals
Access all Factory Management System portals for production and orders.
📦
Order to Delivery
Track shipments, order flow and delivery timelines in real-time.
Ultimate Checklist
Daily pending tasks, overdue items and team assignments.
📈
Tracking Sheets
EA logs, CRM, inward/outward gate records and payroll data.
📊
Production Dashboard
Live KPIs, output metrics, targets and floor status.
🎁
Benefits
Company benefits, HR policies and employee resources.
Recent Activity
Loading activity…
System Status
Google Sheets
Checking…
Verifying connection to your master spreadsheet…
Auto Sync
Active
Data refreshes every 5 minutes. Checking now…
Apps Script
Web App endpoint for read/write automation.
Home FMS Portals
FMS Portals — Factory Management System
📦
Order to Delivery Dashboard
Track the full journey of every order — from placement through to final delivery. Monitor shipment status, timelines and exceptions.
Open →
🏭
Production Dashboard
Monitor factory floor status, production logs, output targets and machine utilisation in real time.
Open →
FMS Performance Overview — Live from Google Sheets
FMS Portals Order to Delivery Dashboard
Loading…
FMS Portal
Order to Delivery Dashboard
Full order lifecycle — placement to final delivery. Updates sync to Google Sheets in real-time.
Active Orders
Delayed
Delivered
In Transit
All
Delayed
In Transit
Processing
Delivered
Order IDCustomerItemsOrder DateExpected Del.StatusNotes
Loading orders from Google Sheets…
FMS Portals Production Dashboard
Analytics
Production Dashboard
Live KPIs, output metrics and floor targets
🏭
Production Dashboard Not Configured
To display your production analytics, create a Looker Studio report connected to your Google Sheets and paste the embed URL here.

Go to Setup & Config to configure your dashboard URL.
Checklist & Delegation Ultimate Checklist
Loading…
📋
Total Tasks
Pending
🔴
Overdue
Done Today
All
Pending
Overdue
Done
Loading checklist from Google Sheets…
Checklist & Delegation Delegation Sheet
Checklist & Delegation › Delegation Sheet Delegate a Task
Delegate a Task
Operations Tracking Sheets
Operational Intelligence
Tracking Sheets Hub
Real-time logs, CRM, payroll and gate records — click to open and edit directly in Google Sheets
📋
EA Tracking Sheet
Executive assistant logs, daily task updates and communication records.
Open & Edit in Google Sheets →
🤝
CRM Tracking Sheet
Client database, lead tracker and follow-up pipeline.
Open & Edit in Google Sheets →
⬆️
Inward / Outward Gate
Record and verify all materials entering and leaving the facility.
Open & Edit in Google Sheets →
💰
Wages Sheet
Payroll distributions, salary records and attendance-linked wages.
Open & Edit in Google Sheets →
Live Performance Metrics — from Google Sheets
KPI Score
Units Produced
Active Orders
Avg. Lead Time
Analytics Production Dashboard
Analytics
Production Dashboard
Live KPIs, output metrics and floor targets — connect your Looker Studio report to activate
📊
Production Dashboard Not Configured
To display your production analytics, create a Looker Studio report connected to your Google Sheets and paste the embed URL here.

Go to Setup & Config to configure your dashboard URL.
Analytics Checklist Dashboard
Analytics
Checklist Dashboard
Task completion metrics and delegation analytics — connect your Looker Studio report to activate
Checklist Dashboard Not Configured
To display your checklist analytics, create a Looker Studio report connected to your Google Sheets and paste the embed URL here.

Go to Setup & Config to configure your dashboard URL.
Company Benefits
Employee Benefits
Your Benefits & Perks
Everything the company offers to support your growth and wellbeing
Company Benefits
🏥
Health Coverage
Comprehensive health insurance for you and your family, covering hospitalisation, OPD and emergency care.
🎓
Learning & Development
Annual training budget for skill development, certifications and professional courses.
🏖️
Paid Leave
Generous annual, sick and casual leave policies to support work-life balance.
💰
Performance Bonus
Quarterly performance-linked bonuses based on individual and team KPI achievement.
🚗
Travel Allowance
Monthly travel reimbursement for business-related commute and field visits.
🍽️
Meal Allowance
Daily meal allowance for all employees working full shifts at the facility.
HR Policies — Quick Links
Leave Policy DocumentView →
Code of ConductView →
Payroll & Salary StructureView →
Grievance Redressal PolicyView →
⚙️ Setup & Google Sheets Configuration
One-Time Setup
Connect to Google Sheets
Follow these steps to connect your BIS to real Google Sheets data. Takes about 5 minutes.
1
Create the Google Apps Script Web App
Open your Master Google Sheet → click Extensions → Apps Script → paste the code below → click Deploy → New deployment → Web App → Set "Execute as: Me" and "Who has access: Anyone" → Copy the Web App URL.
// ════════════════════════════════════════════════════════ // My Company BIS — Google Apps Script Web App // Deploy: Extensions → Apps Script → Deploy → New Deployment // Type: Web App | Execute as: Me | Who can access: Anyone // ════════════════════════════════════════════════════════ const MASTER_ID = 'YOUR_SPREADSHEET_ID_HERE'; // ← replace this // Your sheet tab names (create these tabs in your spreadsheet): const SHEETS = { orders: 'Orders', // columns: Order ID,Customer,Items,Order Date,Expected Del.,Status,Notes checklist: 'Checklist', // columns: ID,Task,Category,Assigned To,Due Date,Status,Priority,Created,Updated delegation: 'Delegation', // columns: Task,Delegated To,Delegated By,Category,Due Date,Status,Created,Notes activity: 'Activity' // columns: Timestamp,Message }; function doGet(e) { try { const a = (e.parameter.action || '').trim(); let r; if (a === 'getStats') r = getStats(); else if (a === 'getOrders') r = getSheet2JSON(SHEETS.orders); else if (a === 'getChecklist') r = getSheet2JSON(SHEETS.checklist); else if (a === 'getDelegation') r = getSheet2JSON(SHEETS.delegation); else if (a === 'getActivity') r = getActivity(); else if (a === 'updateStatus') r = updateCell(e.parameter); else if (a === 'markDone') r = markDone(e.parameter); else if (a === 'addDelegation') r = addDelegation(e.parameter); else if (a === 'addTask') r = addTask(e.parameter); else r = { error: 'Unknown action: ' + a }; return out(r); } catch(err) { return out({ error: err.toString() }); } } function out(data) { return ContentService.createTextOutput(JSON.stringify(data)) .setMimeType(ContentService.MimeType.JSON); } function getSheet2JSON(name) { const s = SpreadsheetApp.openById(MASTER_ID).getSheetByName(name); if (!s) return { error: 'Sheet not found: ' + name }; const vals = s.getDataRange().getValues(); if (vals.length < 2) return { data: [] }; const hdrs = vals[0].map(h => h.toString().trim()); const data = vals.slice(1).map((row, i) => { const obj = { _row: i + 2 }; hdrs.forEach((h, j) => { obj[h] = row[j] instanceof Date ? row[j].toLocaleDateString('en-IN') : row[j]; }); return obj; }); return { data }; } function getStats() { const cl = (getSheet2JSON(SHEETS.checklist).data || []); const ord = (getSheet2JSON(SHEETS.orders).data || []); const del = (getSheet2JSON(SHEETS.delegation).data || []); const today = new Date(); today.setHours(0,0,0,0); const overdue = cl.filter(t => t.Status !== 'Done' && new Date(t['Due Date']) < today).length; return { openTasks: cl.filter(t => t.Status !== 'Done').length, overdue, activeOrders: ord.filter(o => o.Status !== 'Delivered').length, pending: del.filter(d => d.Status === 'Pending').length, kpi: calcKPI(cl) }; } function calcKPI(cl) { if (!cl.length) return 0; return Math.round((cl.filter(t => t.Status === 'Done').length / cl.length) * 100); } function getActivity() { const s = SpreadsheetApp.openById(MASTER_ID).getSheetByName(SHEETS.activity); if (!s) return { data: [] }; const vals = s.getDataRange().getValues(); const recent = vals.slice(1).slice(-15).reverse(); return { data: recent.map(r => ({ time: r[0] instanceof Date ? r[0].toLocaleString('en-IN') : r[0], msg: r[1] })) }; } function updateCell(p) { const s = SpreadsheetApp.openById(MASTER_ID).getSheetByName(p.sheet); if (!s) return { ok: false, error: 'Sheet not found' }; s.getRange(parseInt(p.row), parseInt(p.col)).setValue(p.value); log('Status updated → ' + p.value + ' in ' + p.sheet + ' row ' + p.row); return { ok: true }; } function markDone(p) { const s = SpreadsheetApp.openById(MASTER_ID).getSheetByName(SHEETS.checklist); if (!s) return { ok: false }; const hdrs = s.getRange(1, 1, 1, s.getLastColumn()).getValues()[0]; const statusCol = hdrs.indexOf('Status') + 1; const updCol = hdrs.indexOf('Updated') + 1; s.getRange(parseInt(p.row), statusCol).setValue(p.status || 'Done'); if (updCol > 0) s.getRange(parseInt(p.row), updCol).setValue(new Date().toLocaleDateString('en-IN')); log('Checklist task → ' + (p.status || 'Done') + ', row ' + p.row); return { ok: true }; } function addDelegation(p) { const s = SpreadsheetApp.openById(MASTER_ID).getSheetByName(SHEETS.delegation); if (!s) return { ok: false, error: 'Delegation sheet not found' }; const now = new Date().toLocaleDateString('en-IN'); s.appendRow([p.task||'', p.assignTo||'', p.delegatedBy||'Admin', p.category||'', p.dueDate||'', 'Pending', now, p.notes||'']); log('New delegation → ' + p.assignTo + ': ' + p.task); return { ok: true }; } function addTask(p) { const s = SpreadsheetApp.openById(MASTER_ID).getSheetByName(SHEETS.checklist); if (!s) return { ok: false }; const nextId = 'TSK-' + String(s.getLastRow()).padStart(3,'0'); s.appendRow([nextId, p.task||'', p.category||'General', p.assignTo||'', p.dueDate||'', 'Pending', p.priority||'Normal', new Date().toLocaleDateString('en-IN'), '']); log('New checklist task: ' + p.task); return { ok: true }; } function log(msg) { try { SpreadsheetApp.openById(MASTER_ID).getSheetByName(SHEETS.activity) .appendRow([new Date().toLocaleString('en-IN'), msg]); } catch(e) {} }
2
Set up your Google Sheet tabs
In your Master Spreadsheet, create 4 tabs with these exact names and column headers:
📋 Checklist
ID | Task | Category | Assigned To | Due Date | Status | Priority | Created | Updated
📦 Orders
Order ID | Customer | Items | Order Date | Expected Del. | Status | Notes
🤝 Delegation
Task | Delegated To | Delegated By | Category | Due Date | Status | Created | Notes
📝 Activity
Timestamp | Message
3
Enter your Apps Script Web App URL
Paste the URL you got after deploying the Web App. It looks like: https://script.google.com/macros/s/XXXXX/exec
4
Current Configuration Status
Apps Script URL
Not configured
Not connected
5
SMS OTP — Fast2SMS API Key (Optional)
To send real OTPs to mobile numbers during registration, get a free API key from fast2sms.com and paste it below. Without this, OTPs will be shown on screen only.