{{ ic.alert }}Demonstration only · all names, customers and figures are fictional.
Needs my attention
{{ panelKicker }}{{ a.sevLabel }}{{ a.label }} · {{ a.ageLabel }}
{{ a.title }}
{{ a.stageLabel }}
Burn-up · PO-2026-018 · Nova Retail
Sites completed per week vs plan
{{ lastActLabel }} · gap {{ gapSites }}
Actual signed-offPlan
Cost breakdown · active POs
Actual vs budget by category
{{ b.label }}
{{ b.a }} / {{ b.b }} · {{ b.pctLabel }}
Filled bar = actual spend; track = budget. Support at 172% of budget is the outlier — driven by UrbanMart NVR repeat visits.
Top over-budget POs
Cost to date vs expected at this stage of billing
| PO | Customer | Program | Actual cost | Expected at stage | Variance | |
|---|---|---|---|---|---|---|
| {{ p.id }} | {{ p.customer }} | {{ p.title }} | {{ p.actual }} | {{ p.expected }} | {{ p.varLabel }} ({{ p.varPct }}) | {{ ic.chevronRight }} |
Open pipeline {{ pipelineTotal }}Weighted {{ weighted }}Open deals {{ openDeals }}Overdue follow-ups {{ overdueFollowups }}
{{ ic.kanban }}
No deals match “{{ crmQ }}”
Try a customer name like Nova or UrbanMart, or clear the filter to see all 9 deals.
{{ col.stage }}{{ col.count }} · {{ col.total }}
All purchase orders · {{ poCount }}
Where every rollout starts
| PO | Customer | Program | Value | Sites | Window | Status | |
|---|---|---|---|---|---|---|---|
| {{ p.id }} | {{ p.customer }} | {{ p.title }} | {{ p.valueF }} | {{ p.sitesF }} | {{ p.window }} | {{ p.status }} | {{ ic.chevronRight }} |
New purchase order
Six fields, then import the site list
Site count comes from the Excel import in the next step.
{{ ic.checkCircle }}{{ createdLabel }} saved · no sites yet
{{ P.status }}
{{ P.customer.name }} · {{ P.customer.stores }} stores
{{ P.id }} · {{ P.title }}
{{ P.scope }}
{{ P.valueF }}
Customer PO no. {{ P.poNo }}
PO received
{{ P.recF }}
Program window
{{ P.startF }} → {{ P.endF }}
Sites · waves
{{ P.sitesF }} sites · {{ P.waves }} waves
Customer contact
{{ P.customer.contact }} · {{ P.customer.title }}
Payment terms
{{ P.terms }}
{{ P.done }} of {{ P.sitesF }} signed-off · {{ P.pct }} · {{ P.blocked }} blocked
Finance
Synced from Tally · 12 min ago{{ r.k }}{{ r.v }}
Invoiced {{ P.invPct }}Received {{ P.recPct }}Budget used {{ P.costPct }}
| Site | Store | City | Region | Wave | Status | Engineer | Planned | |
|---|---|---|---|---|---|---|---|---|
| {{ s.id }} | {{ s.name }} | {{ s.city }} | {{ s.region }} | W{{ s.wave }} | {{ s.status }} | {{ s.engineer }} | {{ s.plannedF }} | {{ ic.chevronRight }} |
First 8 of {{ P.sitesF }} sites · open the full board
Wave {{ w.n }} · from {{ w.start }}
{{ w.done }} / {{ w.sites }} sites
{{ w.regions }} · {{ w.blocked }} blocked
Per-category budget vs actual
{{ b.label }}
{{ b.a }} / {{ b.b }} · {{ b.pct }}
Full drill-down under Cost Control. Invoices and receipts are Tally's numbers; costs are entered in Aerotech Ops and reconciled nightly.
| Document | File | Size | |
|---|---|---|---|
| {{ d.k }} | {{ d.f }} | {{ d.s }} | {{ ic.download }} |
Import preview · nova_sites_wave3_add.xlsx
6 rows read · {{ importOk }} valid · {{ importWarn }} warning · {{ importErr }} errors
| Store # | Site name | City | Region | Wave | Validation | Message |
|---|---|---|---|---|---|---|
| {{ r.no }} | {{ r.name }} | {{ r.city }} | {{ r.region }} | {{ r.wave }} | {{ r.tag }} | {{ r.msg }} |
Columns mapped: Store # → storeNo · Site name → name · City → city (master) · Region → region · Wave → wave. Rows with errors are skipped; warnings import with a review flag.
Wave timeline · {{ P.id }} · {{ P.fin.customer }}
Planned against actual, six waves
{{ w.wave }}{{ w.region }} · {{ w.sites }} sites
PlannedActualToday
{{ ic.search }}
{{ countLabel }}
{{ pageLabel }}
{{ selCount }} selected
| Site | Store | City | Region | Wave | Status | Engineer | Planned | Actual | Cost | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ s.id }} | {{ s.name }} | {{ s.city }} | {{ s.region }} | W{{ s.wave }} | {{ s.status }} {{ s.reason }} | {{ s.initials }}{{ s.engineer }} | {{ s.plannedF }} | {{ s.actualF }} | {{ s.costF }} | {{ ic.chevronRight }} |
{{ ic.filter }}
No sites match these filters
{{ hero.customer }} · {{ hero.poId }} · Wave {{ hero.wave }} · Template: SCO kiosk install v2
{{ hero.id }} · Nova Retail {{ hero.storeNo }} · {{ hero.name }}
{{ hero.address }} · Store manager {{ hero.manager }} · {{ hero.managerPhone }}
Engineer
{{ hero.engineer }}
Planned
{{ hero.plannedF }} · 09:30 AM IST
GPS check-in
{{ ic.gps }} 10:12 AM IST · 40 m
Kiosk serial
{{ hero.serial }} · UPS-88213
{{ tDone }} of 9 tasks · {{ woPct }}
Task checklist · dependencies enforced
Click a task to toggle · locked tasks explain whyPhotos · 3 of 6 captured · GPS + time stamped
{{ ic.image }}{{ p.k }}
Cost entries · this site
{{ c.k }}{{ c.a }} / {{ c.b }}
Total vs site budget₹40,050 / ₹31,500 · +₹8,550
{{ ic.alert }} Extra conduit ₹6,400 awaiting approval APR-317 · flagged in Commercials → Exceptions
Visit log · 17-Sep-2026
{{ l.t }}{{ l.e }}
Unassigned sites · {{ unassignedCount }}
Pick a site, then give it to an engineer
Every site in this wave has an engineer.
{{ ic.user }}{{ assignHint }}
Engineers · week of 14–20 Sep
Load for the week, and one click to assign
{{ e.name }}{{ e.region }} · {{ e.base }}
{{ e.loadLabel }}
Assigning a site sends it to that engineer's phone and to the 07:00 digest. No drag and drop, no calendar to keep in sync.
{{ ic.wifiOff }} Offline — {{ queueCount }} updates queued
{{ icL.checkCircle }} Back online — {{ syncedCount }} updates synced at {{ syncedAt }}
{{ mobileTitle }}
Fri 18-Sep-2026 · Rahul Deshmukh
Queued on this phone
{{ q.what }}{{ q.at }}
{{ ic.bell }} Reminders for you · {{ engAlertCount }}
{{ a.what }}
{{ a.ref }} · {{ a.lateLabel }}
Today's sites · 3 · Pune
{{ ic.truck }} Material for 02:00 PM site dispatched from Pune hub · UPS-88219, SCO-482203
Captured on this job
GPS check-in · {{ gpsLabel }}
Photos · {{ photoCount }} of 6 steps
Serials installed · SCO-482119, UPS-88219
Checklist · {{ tDone }} of 9 · {{ woPct }}
Customer sign-off
{{ signLabel }}
Sign-off starts the billing clock: Accounts is reminded if this site is not invoiced within 5 days.
Field engineer view · notes
Built for one hand, a noisy store and a patchy 4G link
Today's sites come from Schedule & Assign — the engineer sees only the stores assigned to them, ordered by time.
The job captures GPS check-in time, a photo per step, the serial numbers installed, a delay reason when the site is late, and the customer's signature or a photo of the signed job sheet.
Offline is real: tap the badge to go offline. Checklist ticks, photos and cost entries queue on the phone; when the link returns the app syncs and confirms what went up.
Sign-off is the money trigger. The moment it lands, the site enters the unbilled list and Accounts starts getting reminded.
44 px+ hit targetsOffline queueGPS check-inSignature capture
Read from Tally · synced 12 min ago · nothing is written back
Cost vs budget · per PO
Where the money went, and what it left behind
| PO | Customer · program | PO value | Budget | Actual | Consumed | Support cost | Support ÷ material | Margin | |
|---|---|---|---|---|---|---|---|---|---|
| {{ p.id }} | {{ p.customer }} {{ p.title }} | {{ p.value }} | {{ p.budget }} | {{ p.actual }} | {{ p.pct }} | {{ p.support }} {{ p.supPct }} of budget | {{ p.supRatio }} | {{ p.margin }} |
{{ CP.id }} · {{ CP.fin.customer }}
Budget vs actual by category
Budget
{{ CP.budgetF }}
Actual
{{ CP.actualF }} {{ CP.pct }}
Margin
{{ CP.margin }}
{{ b.label }}
{{ b.a }} / {{ b.b }} · {{ b.pct }}
Support cost vs material cost{{ CP.supF }} ÷ {{ CP.matF }} = {{ CP.supRatio }} (threshold 5%)
Per site · {{ CP.id }} · highest cost first
| Site | Material | Labour | Travel | Subcon | Support | Total | Budget | Var |
|---|---|---|---|---|---|---|---|---|
| {{ s.id }} {{ s.name }} | {{ s.mat }} | {{ s.lab }} | {{ s.trv }} | {{ s.sub }} | {{ s.sup }} | {{ s.total }} | {{ s.budgetF }} | {{ s.varF }} |
Signed off, not yet invoiced in Tally
{{ unbilledTotalF }} of completed work not yet billed
{{ unbilledCount }} groups across {{ unbilledPOs }} POs · oldest sign-off {{ unbilledOldest }} days ago · payment terms run 60 days from the invoice date
| Sites | Customer | PO | Signed off | Days waiting | Value | Owner | |
|---|---|---|---|---|---|---|---|
| {{ u.ref }} | {{ u.customer }} | {{ u.poId }} | {{ u.signedF }} | {{ u.days }} | {{ u.amountF }} | {{ u.owner }} |
Sign-off is what starts this clock. The reminder rule “site signed off but not invoiced more than 5 days” chases Accounts every morning until the invoice appears in Tally.
Exceptions · {{ leakCatLabel }}
Each row traces back to a material movement, an expense claim or an advance| Check | Ref | Person / party | Site · PO | Detail | Date | Amount | Owner | |
|---|---|---|---|---|---|---|---|---|
| {{ r.cat }} | {{ r.ref }} | {{ r.who }} | {{ r.siteName }} {{ r.poId }} | {{ r.detail }} | {{ r.dateF }} | {{ r.amountF }} | {{ r.owner }} |
Audit trail · money-related edits
| When (IST) | Who | What | From | To | Ref |
|---|---|---|---|---|---|
| {{ a.atF }} | {{ a.who }} | {{ a.what }} | {{ a.from }} | {{ a.to }} | {{ a.ref }} |
Reconciliation per PO
Issued · installed · returned · unaccounted
| PO | Customer | Issued | Installed | Returned | Unaccounted | Value at risk |
|---|---|---|---|---|---|---|
| {{ r.poId }} | {{ r.customer }} | {{ r.issued }} | {{ r.installed }} | {{ r.returned }} | {{ r.unaccounted }} | {{ r.valueF }} |
Material movements · serial level
| Ref | Date | Item · serials | Issued to | Iss | Inst | Ret | State |
|---|---|---|---|---|---|---|---|
| {{ m.id }} | {{ m.dateF }} | {{ m.item }} {{ m.serials }} | {{ m.to }} | {{ m.issued }} | {{ m.installed }} | {{ m.returned }} | {{ m.state }} |
New movement
Issue, install or return
Anything issued and neither installed nor returned lands in Exceptions the same night.
Expense claims
{{ expTotal }} submitted this month
| Ref | Engineer | Date | Site | Type | Amount | Bill | Status |
|---|---|---|---|---|---|---|---|
| {{ e.id }} | {{ e.who }} | {{ e.dateF }} | {{ e.siteId }} | {{ e.type }} | {{ e.amountF }} | {{ e.billLabel }} | {{ e.status }} {{ e.flag }} |
New claim
Travel, stay or conveyance
Cash advances
{{ advOpenTotal }} outstanding with engineers
| Ref | Engineer | Purpose | Given | Amount | Settled | Balance | Age |
|---|---|---|---|---|---|---|---|
| {{ a.id }} | {{ a.who }} | {{ a.purpose }} | {{ a.dateF }} | {{ a.amountF }} | {{ a.settledF }} | {{ a.balanceF }} | {{ a.ageLabel }} |
New advance
Cash given to an engineer
Settlement is logged against bills; the balance ages from the date given.
{{ remTabLabel }} · {{ remRoleLabel }}
One nudge sends an email and a WhatsApp message
| What | Site · PO | Who it is for | Late | |
|---|---|---|---|---|
| {{ r.what }} Rule: {{ r.rule }} |
{{ r.ref }} {{ r.amountF }} |
{{ r.forWho }} {{ r.role }} |
{{ r.lateLabel }} |
Nothing in this list. The 07:00 digest will still go out tomorrow.
{{ r.text }}→ {{ r.to }} · {{ r.weekLabel }} this week
Rules are edited in Admin → Reminder rules. Every role also gets a 07:00 digest by email.
{{ ic.refresh }} Loading tickets from the support queue…
| Ticket | Issue | Site · PO | Original install | Cover | Priority | SLA | Assignee | Status | |
|---|---|---|---|---|---|---|---|---|---|
| {{ t.id }} | {{ t.title }} {{ ic.repeat }} Repeat visit · same fault | {{ t.siteId }} · {{ t.siteName }} {{ t.customer }} · {{ t.poId }} | {{ t.installDate }} | {{ t.cover }} | {{ t.priority }} | {{ ic.clock }} {{ t.sla }} | {{ t.assignee }} | {{ t.status }} | {{ ic.chevronRight }} |
{{ ic.checkCircle }}
Nothing here
No tickets match this filter.
Report builder
{{ ic.squareCheck }} Sites completed / pending / blocked with reasons{{ ic.squareCheck }} Installation photos (4 per page){{ ic.squareCheck }} Wave-wise progress{{ ic.square }} Cost & margin (internal only)
Recipients: {{ RP.customer.contact }} ({{ RP.customer.email }}) · cc Tarun Kapoor
{{ ic.report }}
No report generated yet
Pick the customer, PO and period on the left. The preview appears here, then export PDF/Excel or email it in one click.
{{ ic.refresh }}
Compiling 1,240 sites and 3,412 photos…
Usually under 10 seconds.
Generated {{ reportAt }}
Rollout status report · week 16 · 12-Sep to 18-Sep-2026
{{ RP.customer.name }} · {{ RP.id }}
{{ RP.title }} · {{ RP.sitesF }} stores · {{ RP.waves }} waves
Prepared by Aerotech Systems
for {{ RP.customer.contact }}, {{ RP.customer.title }}
for {{ RP.customer.contact }}, {{ RP.customer.title }}
{{ r.k }}
{{ r.v }}
Blocked sites and reasons
| Site | Store | City | Wave | Planned | Reason |
|---|---|---|---|---|---|
| {{ b.id }} | {{ b.name }} | {{ b.city }} | W{{ b.wave }} | {{ b.plannedF }} | {{ b.reason }} |
Installation photos · sample
{{ ic.image }}{{ p.k }}
Figures as of 18-Sep-2026 10:42 AM IST · Site status per signed work orders · Photos GPS + time stamped · Page 1 of 4
Pending {{ pendingAppr }}Value awaiting decision {{ apprTotal }}Levels: L1 Service Manager · L2 Owner (above ₹1 L or any new PO) · Accounts co-signs subcontractor bills
{{ a.id }}
{{ a.type }}
{{ a.stateNow }}
{{ a.title }}
{{ a.note }}
Raised by {{ a.by }} · {{ a.atF }} · chain: {{ a.chainLabel }}
{{ a.amountF }}
{{ a.level }}
Reminder rules · plain English
What the system chases, and who it chases
| On | Rule | Goes to | Fires | This week |
|---|---|---|---|---|
| {{ r.text }} |
{{ r.to }} | {{ r.when }} | {{ r.weekLabel }} |
Reminders go out by email and WhatsApp. Nothing here writes to Tally.
Users & roles · {{ userCount }} of 15 seats
Five roles, one login each
| User | Role | Last active | Status | |
|---|---|---|---|---|
| {{ u.initials }}{{ u.name }} | {{ u.role }} | {{ u.email }} | {{ u.last }} | {{ u.status }} |
Task templates
Standard work-order checklists
| Template | Tasks | Used by | Version | |
|---|---|---|---|---|
| {{ t.k }} | {{ t.n }} | {{ t.po }} | {{ t.v }} | {{ ic.pen }} |
Daily digest · 07:00 IST
The email each role wakes up to
To: {{ digest.to }}
{{ digest.subject }}
Good morning {{ digest.name }} — here is what needs you today.
{{ l.a }}{{ l.b }}
Open Aerotech OpsReply STOP to pause reminders for a day
Sends this exact email to {{ digest.to }}
Excel is still your safety net
Nothing is trapped in the app
Daily Excel export → Google Drive06:00 AM IST · 6 files · OKToday
Last restore test07-Sep-2026 · passed · staging restored in 11 min
Drive folderDrive / AerotechOps / exports / 2026-09-18
| Nightly backup | Size | Duration | Status |
|---|---|---|---|
| {{ b.atF }} | {{ b.size }} | {{ b.dur }} | {{ b.status }} |
Tally connection
Tally Prime 4.1 · ODBC · port 9000
Last sync
18-Sep-2026 · 10:30 AM IST · 14 vouchers
Direction
Tally → Aerotech Ops · read only
Invoices and receipts are read from Tally. Aerotech Ops never writes back into Tally.
Milestone rail · where the programme is now
Filled marks are met · hollow are planned · Wave 3 is at risk
{{ m.name }}
{{ m.atF }}
{{ m.stateLabel }}
Role ↓ · stage →
Tinted columns are the stages running today. Your role ({{ lcRoleLabel }}) is marked in the left column — switch roles to read the lane from another seat. Click a stage header for its detail and gate.
Project plan · PO-2026-018 · May 2026 → Feb 2027
Bar = planned window · fill = progress · dark bar = overdue{{ t.groupLabel }}{{ t.name }}{{ t.owner }} · {{ t.deps }}
{{ t.pctLabel }}
Where is it now
{{ s.k }}
{{ s.v }}
The vertical accent line on the Gantt is today, {{ today }}. Wave 3 closes 30-Sep and is 78% done, which is what puts the Wave 3 milestone at risk.
Resource allocation by wave
Engineers needed vs available · 1.6 sites per engineer-day
| Wave | Window | Region | Sites | Sites left | Engineers needed | Available | Coverage | Status |
|---|---|---|---|---|---|---|---|---|
| {{ r.wave }} | {{ r.window }} | {{ r.region }} | {{ r.sites }} | {{ r.left }} | {{ r.needF }} | {{ r.have }} | {{ r.gapLabel }} |
{{ r.r }} · {{ r.n }} engineers{{ r.util }}
{{ r.pending }} sites pending
{{ r.gapLabel }}
Day-to-day assignment lives on Schedule & Assign; this Phase 2 view is the wave-level plan behind it.
{{ ic.search }}esc
No matches for “{{ q }}”. Try a site code like NR-0417, a PO number, or a customer.
Guided tour · {{ tourStepLabel }}
{{ tourTitle }}
{{ tourBody }}
{{ ic.checkCircle }}{{ toastMsg }}