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
ActiveData refreshes every 5 minutes. Checking now…
Apps Script
—Web App endpoint for read/write automation.
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 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 ID | Customer | Items | Order Date | Expected Del. | Status | Notes |
|---|---|---|---|---|---|---|
| Loading orders from Google Sheets… | ||||||
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.
Go to Setup & Config to configure your dashboard URL.
—
Total Tasks
—
Pending
—
Overdue
—
Done Today
All
Pending
Overdue
Done
Loading checklist from Google Sheets…
Delegate a Task
Operational Intelligence
Tracking Sheets Hub
Real-time logs, CRM, payroll and gate records — click to open and edit directly in Google Sheets
Executive assistant logs, daily task updates and communication records.
Open & Edit in Google Sheets →
Client database, lead tracker and follow-up pipeline.
Open & Edit in Google Sheets →
Record and verify all materials entering and leaving the facility.
Open & Edit in Google Sheets →
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
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.
Go to Setup & Config to configure your dashboard URL.
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.
Go to Setup & Config to configure your dashboard URL.
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.
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/exec4
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.