Project Proposal · Prepared for OneAirLiving · June 2026

Internal Systems for
OneAirLiving

A complete plan to build 7 internal tools covering the end-to-end business — from the first client enquiry through inspection, installation, and onboarding, to post-sale air quality monitoring, filter maintenance, and AMC management. Built lean, built to scale, no vendor lock-in.

OneAirLiving (OAL) Air Filter · Installation · AMC Hybrid Stack · GSheet + Cloudflare WhatsApp via Bagachat Prepared by Kapil Bindal
Contents
7 systems to be built

These 7 systems cover the complete OAL business lifecycle — from the first sales enquiry to ongoing post-sale care. P0 systems are built first as they are operationally critical. P1 and P2 follow in sequence.

P0 Must-have · build immediately
P1 Critical · Phase 2
P2 Important · Phase 3
P3 Nice-to-have · Phase 4
#SystemChannelPrimary usersPriority
1
CRM – Order Management (OMS)
Tracks every client order from initial enquiry through inspection, proposal, negotiation, payment, installation, onboarding, and invoice — 10 stages in total. AE owns the client relationship throughout. OC coordinates field resources. Supports 500 orders/month initially, built to scale.
Web App
AEACPLOC
P0
2
Care & Ticketing System – FMS
Post-sale support owned end-to-end by CC. Covers service visits, filter replacements, maintenance, and AMC requests. CC raises tickets, OC allocates OE/FE for execution, clients are notified via WhatsApp. Completely separate from the OMS sales pipeline.
WhatsAppWeb App
CCOCCustomers
P1
3
WMS – Inventory Management (IMS)
Filter stock, spare parts, and warehouse management. Critical for coordinating installation and maintenance supply. Everything depends on inventory being accurate.
Web App
PLOC
P0
4
P&L Dashboard
Revenue, cost, and margin reporting across one-time sales, AMC subscriptions, and maintenance revenue streams. Auto-pulls from OMS and FMS data. Covers both installation revenue and recurring care revenue.
Reporting
ACPL
P2
5
Air Quality & Monitoring Dashboard
CC's primary daily tool. Shows live air quality data per client site (sourced from internet AQI data + OAL's own on-site readings entered during care visits), open care tickets, filter replacement schedules, and OE/FE field activity.
Live Dashboard
CCOC
P2
6
Live Proposal Calculator
Real-time pricing tool for AE to generate a quote during a client call. Pulls pricing rules from Google Sheet — AE or PL can update pricing without any code changes. Outputs a shareable proposal.
Web Tool
AEAC
P2
7
Field Check-in — OE, FE, FC
Location is captured automatically when OE, FE, or FC completes an on-site action — inspection (S2), installation (S8), or a post-sale care visit. All three roles use the same mobile web app; role flag controls what each sees. FC gets an additional team view. No background GPS.
Mobile Web
OEFEFC
P1
8 roles across OAL — three foundational, three coordinators, two senior

Currently many of these roles are worn by the same person. The system is designed around the roles, not headcount — so as OAL grows and roles split into dedicated people, nothing needs to change in the software.

AEAccount Executive
Owns the client relationship from first enquiry to invoice. Single point of contact through installation. Shares final invoice, collects feedback informally, then hands off to CC for all post-sale care. Uses the OMS dashboard.
OEOperations Executive
Field operations lead. Conducts or oversees site inspections (S2) and leads installations (S8). Interfaces with the client during field visits. Reports back to OC. Manages FEs on-site. Uses the mobile check-in app.
FEField Executive
End-to-end field execution. Assists OE during installation (S8). Executes post-sale service, filter replacement, and maintenance visits raised by CC. Uses the mobile check-in app.
CCCare Coordinator
Owns the entire post-sale vertical. Raises service, filter replacement, and maintenance tickets. Monitors air quality per client site. Interfaces with clients post-onboarding. CC's world starts after S9 — no involvement in the OMS sales pipeline.
PLPipeline Coordinator
Backend support for AEs. Manages the sales pipeline view. Forwards installation requests to OC at S7. Follows up with AE for final payment at S9 and generates the invoice. Full OMS pipeline visibility.
OCOperations Coordinator
Oversees all field operations. Allocates OE and FE to inspections (S2) and installations (S7–S8). Schedules and coordinates care visits raised by CC. Interfaces with clients in rare circumstances.
ACAccount Coordinator
Senior AE. May manage multiple AEs. Sees own orders plus their team's orders in the OMS dashboard. Same permissions as AE otherwise.
FCField Coordinator
Senior FE. May manage multiple FEs. Uses the same mobile app as FE with an additional team view showing their FEs' check-ins and locations for the day.
System access by role
RoleOMSFMS / CareMonitoringMobile AppP&L
AEOwn orders
ACOwn + teamYes
PLFull pipelineYes
OCS2 + S7–S8Allocate onlyYes
CCFull accessPrimary
OES2 + S8 + care
FES8 + care visits
FCS8 + care + team view

Access is enforced at the API level — not just the frontend. A role that should not see certain data cannot retrieve it even if they know the URL.

From first enquiry to final invoice

Every client engagement follows this pipeline. AE owns the client relationship throughout. OC coordinates field resources for inspections and installations. The pipeline has one branch point at S5 — Closed Cold orders are archived for win/loss reporting, Closed Won orders continue to S6.

Stage
Description
Actor
Location GPS
WA notify
S0
Entry
AE records enquiry from client — call, text, or visit. Logged in OMS with date and source.
AE
S1
Discovery
AE conducts discovery with client — call, text, or in-person. Requirements and budget confirmed.
AE
Yes ✓
S2
Inspection
OE (allocated by OC) visits the site. Inspection report filed. AE reviews and advances to S3.
OE on-site
OC allocates · AE advances
Yes ✓
Yes ✓
S3
Proposal
AE sends proposal based on inspection report — using the Live Proposal Calculator.
AE
Yes ✓
S4
Negotiation
AE negotiates on the proposal. Revised quotes and approvals logged in OMS.
AE
S5a
Closed Cold — pipeline ends
AE marks as lost. Order archived. Not deleted — used for win/loss analysis. Reason logged.
AE
S5b
Closed Won — pipeline continues
AE marks as won. Order moves to S6. Customer notified.
AE
Yes ✓
S6
Payment
AE collects full or part payment. Payment recorded in OMS. Remaining balance tracked at S9.
AE
Yes ✓
S7
Installation scheduling
AE raises request. PL forwards to OC. OC schedules and aligns OE and FEs. Internal only — no client-facing action.
PL → OC
OC allocates OE + FEs
Yes ✓
S8
Onboard
OE leads installation, testing, and commissioning alongside FEs. Client onboarded on-site. OAL machine reading entered.
OE + FEs on-site
OC oversees
Yes ✓
Yes ✓
S9
Invoice
PL follows up for final payment, generates invoice. AE shares invoice and collects feedback. CC takes over post-sale care.
PL + AE
CC takes over after S9
Yes ✓

Payments are tracked as an array — part payment at S6, final at S9. S5 is a branch, not a linear step. Closed Cold orders are archived with a reason logged, enabling win/loss rate analysis over time.

Everything after S9 is owned by CC

Once the invoice is issued and AE hands off, the client enters OAL's care vertical. CC manages everything — air quality monitoring, filter replacements, service visits, maintenance, and AMC renewals. This is a recurring, subscription-like relationship that generates ongoing revenue separate from the initial installation sale.

Care ticket types
Service visitReactive · CC raises on complaint
Filter replacementScheduled · based on cycle
Maintenance visitScheduled · periodic check
AMC renewalAnnual · CC tracks and follows up
Emergency visitReactive · priority flag
Air quality data sources
Area-level AQISourced from internet (public AQI APIs)
Client-site readingOAL machine · entered manually at visit
Entry pointOE/FE enters on mobile at S8 + care visits
Viewed byCC on Monitoring Dashboard
IoT / auto-pushNot in current scope
📋
Filter replacement cycles & AMC — design note
Filter replacement cycles will be configured per client (e.g. every 3 months). The system will flag upcoming replacements automatically so CC can raise the ticket proactively — rather than waiting for a complaint. AMC contracts will have renewal dates tracked, with CC alerted before expiry. Both of these are scheduled ticket types in FMS, not reactive ones.
One mobile app · three roles · location on action only

OE, FE, and FC all use the same mobile web app. The role flag on login controls what each person sees and can act on. Location is captured only when an action is submitted — no background GPS, no battery drain, no continuous pings. Every location stamp is tied to a specific work event.

What each role sees in the app
OES2 inspections · S8 installations · care visits
FES8 installations · care visits
FCS8 + care visits + team view of all assigned FEs
What each check-in records
Actor ID + roleOE-03 · OE
GPS coordinateslat / lng via browser
Action typeS2_inspection / S8_onboard / care_visit
Linked toOrder ID (OMS) or Ticket ID (FMS)
Air quality readingEntered manually at S8 and care visits
TimestampISO 8601

The air quality reading entered at S8 (onboarding) becomes the baseline for that client site. Subsequent readings entered during care visits are compared against this baseline on CC's monitoring dashboard.

Phased delivery in 12 weeks

Work is sequenced by operational impact. The OMS and WMS are built first as they are the core of the business. Care, monitoring, and reporting tools follow once the sales pipeline is running.

3 wks
Phase 1 · Weeks 1–3
Core Operations
  • OMS — 10-stage pipeline
  • WMS – IMS (inventory)
  • Field check-in mobile app
  • AE, OC, OE, FE flows
4 wks
Phase 2 · Weeks 4–7
Care & Support
  • FMS — care ticketing
  • WhatsApp via Bagachat
  • CC dashboard
  • Filter replacement scheduling
3 wks
Phase 3 · Weeks 8–10
Reporting & Tools
  • P&L dashboard
  • Proposal Calculator
  • AMC tracking
  • Win/loss reporting
2 wks
Phase 4 · Weeks 11–12
Monitoring & Analytics
  • Air quality dashboard
  • Internet AQI integration
  • Site-level readings view
  • Live ops monitoring
Hybrid stack — two tools, each where it excels

After evaluating both options, neither Google Sheets nor Cloudflare wins outright. Google Sheets is excellent for reporting, formula-driven tools, and human-editable data. Cloudflare KV is built for concurrent high-speed writes and instant reads. The right answer is to use both.

Cloudflare Worker + KV
✓ Receives all writes instantly (<50ms)
✓ Handles all roles writing concurrently
✓ WhatsApp webhooks respond in <50ms
✓ Powers live dashboards (<10ms reads)
✓ No queue, no write conflicts
syncs every
5 minutes
Google Sheet + AppScript
✓ P&L pivot tables and charts — zero extra build
✓ PL and OC can edit data directly in the sheet
✓ WMS and Proposal Calculator run natively
✓ Source of truth for reporting and audit
✓ Non-technical staff can access without training
How they work together: Cloudflare Worker receives every write — OMS stage updates, FMS tickets, field check-ins, WhatsApp webhooks — and stores instantly in KV, returning confirmation in under 50ms. Every 5 minutes, a background job syncs KV data into Google Sheet for P&L, reporting, and audit. Staff who need to correct an entry open the sheet directly.
Why the hybrid — scored across what matters for OAL

Each option is scored on the criteria that matter most for this system. A 5 means it handles the requirement perfectly. This analysis drove the hybrid architecture decision.

Criteria
Google Sheet + AppScript
Cloudflare KV + Worker
Concurrent writes
AE, OE, FE, CC all writing at the same time
1/5 — One write at a time. Creates a queue under load.
5/5 — Every write is independent. No queue, no conflicts.
Write speed
OMS stage updates, FMS tickets, check-ins
2/5 — 800ms to 3 seconds per write.
5/5 — Under 50ms. Under 20ms from India.
Dashboard reads
CC monitoring · AE order list · OMS pipeline
3/5 — 300–800ms via Sheets API. Usable but noticeable.
5/5 — Under 10ms from nearest edge node.
P&L and reporting
Installation vs AMC vs maintenance revenue
5/5 — Native pivot tables, charts, formulas. Zero extra dev.
1/5 — No aggregation. All reporting must be built from scratch.
Non-technical access
PL corrects a wrong order amount
5/5 — Open sheet, click cell, fix it. No developer needed.
0/5 — No UI for raw data. Every correction needs a developer.
WhatsApp webhook
Meta requires response in under 5 seconds
2/5 — Cold start can breach 5-second limit, causing duplicate messages.
5/5 — Responds in under 50ms. Zero timeout risk.
Monthly cost
Infrastructure only
5/5 — ₹0 per month at this scale.
4/5 — ₹420/month flat ($5/mo paid plan).
Verdict: Google Sheet wins on reporting, human editing, and P&L. Cloudflare wins on write speed, concurrency, and webhook reliability. Using both gives OAL the best of each at minimal cost.
WhatsApp for both OMS notifications and post-sale care

Bagachat is a WhatsApp Business Solution Provider (BSP) that gives OAL a multi-agent inbox, chatbot routing, and webhook API without building raw WhatsApp integration from scratch. It handles two distinct flows — AE-triggered OMS notifications during the sales pipeline, and CC-managed post-sale care conversations.

Starter
$19/mo
≈ ₹1,580 / month
Conversations/month3,000
Agent seatsBase included
Extra 3k convs+$19/mo
Free convs/mo1,000
Risk at OAL scaleClose to cap
Agent seats add-on
$15/seat
≈ ₹1,250 / seat / month
Who needs a seatCC, OC in inbox
Estimated seats2–4 seats
Seat cost range₹2,500–5,000/mo
AE notificationsNo seat needed (automated)

Meta WhatsApp message charges — India, 2026

TypeWhen used at OALRateEst. monthly volumeEst. cost
Utility ✓ PrimaryOMS stage notifications (S1, S2, S3, S5b, S6, S7, S8, S9), FMS ticket updates₹0.13/msg~3,500 msgs~₹455
MarketingAMC renewal reminders, promotional outreach₹1.09/msg~200 msgs~₹218
Service (inbound)Client replies within 24hr windowFree₹0

A "conversation" in Meta's billing model is a 24-hour window — not a single message. One client enquiry resolved in a day = 1 conversation. Starter plan's 3,000 conversation cap is tight for OAL's volume. Business plan at 15,000 conversations provides comfortable headroom.

Currently on free Gmail — two options going forward

OAL currently uses personal Gmail IDs. This works for now but creates problems as the team grows — no centralised admin, no shared drives with proper access control, and AppScript on free Gmail has tighter execution limits. Here are the two options with an honest assessment of each.

Option A — Workspace for central team only
10 central staff (AE, AC, PL, OC, CC) get Workspace IDs. Field roles (OE, FE, FC) continue on personal Gmail or use app login only.
₹1,250/mo @ ₹125/user × 10 users
Pros
✓ Immediate fix for central team — proper email addresses, shared drives, admin control
✓ AppScript gets 30 min execution limit vs 6 min on free Gmail — important for P&L and WMS sync scripts
✓ Cheaper upfront — only 10 licences
✓ Field staff don't need email — they only use the mobile app
Cons
✗ Split setup — some staff on Workspace, some on personal Gmail
✗ As field roles grow into coordination roles, they'll need Workspace licences added later
Option B — Workspace for everyone
All 20 current staff (10 central + 10 field) get Workspace IDs. Scales cleanly as headcount grows.
₹2,500/mo @ ₹125/user × 20 users
Pros
✓ Clean, uniform setup — everyone on the same system
✓ OAL can issue and revoke access centrally when staff join or leave
✓ Field staff get professional email if ever needed for client communication
✓ No migration pain later as field staff move into coordination roles
Cons
✗ Double the cost upfront (₹2,500 vs ₹1,250/mo)
✗ Field staff primarily use the mobile app — a Workspace licence may be underutilised for them currently
Recommendation: Start with Option A — Workspace for the 10 central staff. The AppScript execution limit improvement alone makes this worth it for PL running the WMS and P&L scripts. Add field staff to Workspace as they grow into coordination roles or when the cost becomes negligible relative to the business size.
Day 1 vs steady-state costs — honest picture

Infrastructure costs are low. The dominant spend is WhatsApp (Bagachat + Meta) and Google Workspace. Costs below are shown as Day 1 (launch) and Steady State (6 months in, as the team and client base grow). All figures in INR per month.

Day 1 — at launch

Infrastructure
Cloudflare Workers paid plan
$5/mo flat · 10M requests · covers all OMS, FMS, check-ins, dashboards, webhook handling
CF KV · CF Pages
Within free tier at launch volume. KV storage and reads well below limits.
₹0
Google Sheet + AppScript
WMS, P&L, Proposal Calculator. Free indefinitely.
₹0
Domain + subdomains
1 custom domain · SSL on all 5 subdomains via Cloudflare (free)
Cloudflare R2 (inspection photos)
10GB free · for OE inspection report photos. Needed if OE uploads photos at S2.
₹0
Infrastructure total₹478 / mo
External services
Bagachat Business plan
$39/mo · 15,000 conversations · recommended over Starter for OAL's volume
Bagachat agent seats (2 seats)
CC + OC in the WhatsApp inbox. $15/seat/mo.
Meta utility messages
~3,500 OMS + FMS notifications/mo × ₹0.13
Meta marketing messages
~200 AMC renewals/mo × ₹1.09
Google Workspace (Option A)
10 central staff × ₹125/user/mo
External services total₹7,673 / mo
Day 1 total
~₹8,150 / mo
Infrastructure (₹478) + Bagachat + seats + Meta msgs + Workspace (10 users)
Without Workspace → ₹6,900/mo
Without agent seats → ₹5,650/mo
Pure infra only → ₹478/mo

Steady state — 6 months in, as OAL scales

Additional costs that will appear with growth
Google Workspace — field staff added
If field headcount doubles to 20 and they need Workspace IDs. Option B total = ₹2,500/mo.
Bagachat additional agent seats
Each additional CC or OC agent in the inbox = $15/seat/mo (₹1,250). Budget for 2–4 more.
CF R2 inspection photo storage
500 inspections × 5 photos × 2MB ≈ 5GB/mo accumulation. After 2 months exceeds 10GB free tier. ~₹100/mo.
Transactional email — Brevo
300 emails/day free. If PL generates 500 invoices + AE sends proposals, Brevo Starter at $25/mo (₹2,080) may be needed.
Google Maps API
~1,500 map loads/mo comfortably within $200 free credit. Watch if active client sites exceed 500 with daily monitoring loads. Alternative: Leaflet + OSM at ₹0.
₹0 (watch)
SMS fallback (optional)
If a client doesn't have WhatsApp or messages fail. ~₹0.60/SMS via Twilio. At 10% fallback on 3,500 msgs = ₹210/mo.
GSheet cell limit — 16 months out
At 500 orders × 10 stages × ~10 fields, you add ~50,000 cells/month. Google Sheets hits 10M cell limit in ~16 months if all data is in one sheet. Solution: sheet rotation (free, minor effort) or migrate OMS data to Cloudflare D1 (free up to 5GB, then $0.75/GB).
Plan ahead
Steady-state estimated range₹10,000 – ₹15,000 / mo

The ₹10,000–15,000 steady-state range assumes: Workspace for all staff, 4 Bagachat agent seats, full Meta message volume, R2 photo storage, and occasional email. Infrastructure (Cloudflare) remains flat at ₹478/mo regardless of scale. WhatsApp and Workspace are the dominant costs — not technology infrastructure.

How data flows through the system

Four diagrams showing: overall system architecture, the 10-stage OMS pipeline, the field check-in flow, and the post-sale care ticket flow via Bagachat.

Overall system architecture

OAL system architecture User types AE / AC / PL Sales pipeline OC Field coordination CC Post-sale care OE / FE / FC Field execution Clients (WhatsApp) via Bagachat BSP All writes land here first Cloudflare Worker OMS writes · FMS tickets · check-ins · Bagachat webhook · <50ms all paths Live data · dashboards read here at <10ms CF KV store Orders · tickets · check-ins · AQI Dashboards OMS · FMS · Monitoring · Mobile app background sync every 5 min Reporting · P&L · WMS · human-editable data · audit trail Google Sheet + AppScript P&L · WMS/IMS · Proposals · AMC tracking · manager edits · KV sync target Systems: OMS · FMS/Care · WMS-IMS · P&L · Air Quality Monitoring · Proposals · Field Check-in

No frontend app talks to GSheet directly. All writes go through the Cloudflare Worker. GSheet receives data only via the 5-minute background sync — keeping it clean and consistent.

OMS — 10-stage pipeline flow

Blue = AE/PL/OC (internal). Coral = OE + FEs on-site with GPS. Green = coordinator stages. S5 branches into Closed Cold (pipeline ends) or Closed Won (continues to S6).

OAL OMS 10-stage pipeline AE / PL OE + FEs on-site · GPS PL / OC coordination WA ✓ = client notified via WhatsApp S0 · Entry AE records enquiry — call, text, or visit S1 · Discovery AE conducts discovery with client WA ✓ S2 · Inspection OE visits site (allocated by OC) · GPS captured AE reviews report · manually advances to S3 WA ✓ S3 · Proposal AE sends proposal (via Proposal Calculator) WA ✓ S4 · Negotiation AE negotiates on the proposal with client AE marks outcome ↓ S5a · Closed Cold Archived · reason logged S5b · Closed Won Pipeline continues → WA ✓ S6 · Payment AE collects full or part payment WA ✓ S7 · Installation scheduling PL → OC · OC schedules · aligns OE + FEs Internal only · no client-facing action · no GPS WA ✓ S8 · Onboard OE + FEs install, test, commission · GPS captured OAL machine reading entered · client onboarded WA ✓ S9 · Invoice PL follows up for final payment · generates invoice AE shares invoice · collects feedback informally CC takes over post-sale care from here WA ✓ Every stage update → CF Worker → KV (<50ms) Dashboard reads live order status (<10ms) KV → GSheet every 5 min S5 Cold → Lost bucket for win/loss reporting Part pay at S6 + final pay at S9 → payments[] array

S2 and S8 are the only OMS stages that capture GPS. S8 also captures the first air quality reading for the client site — this becomes CC's baseline on the monitoring dashboard.

Field check-in flow

One mobile app for OE, FE, and FC. Role flag on login controls what each person sees. GPS is captured only on action submit — no background tracking.

Field check-in flow Mobile Web App Role-based login (OE / FE / FC) role flag OE view S2 · S8 · care visits FE view S8 · care visits FC view S8 · care · team map Submit action Actor ID · action type · linked order/ticket ID AQ reading (S8 + care) · timestamp ISO 8601 browser Geolocation API fires on submit · not background Cloudflare Worker validates · writes to KV · returns confirmation <50ms KV → OMS / FMS linked order or ticket record updated with check-in AQ reading stored CC sees on monitoring dashboard

FC gets an additional team map tab showing all assigned FEs' latest check-in locations for the day. No background GPS — every location stamp is tied to a submitted work event.

Post-sale care ticket flow

Everything after S9 is owned by CC. Tickets are either reactive (client complaint) or scheduled (filter replacement cycle, AMC renewal). All client communication goes via WhatsApp through Bagachat.

Post-sale care ticket flow Ticket triggers Reactive — client complaint Service visit · emergency visit Scheduled — system flagged Filter replacement · AMC renewal CC raises FMS ticket type · priority · linked client site · notes OC allocates OE / FE schedules date · assigns field resource · OE/FE notified WA → client notified of visit OE / FE field visit · mobile check-in GPS captured · AQ reading entered · work notes filed ticket status updated to In Progress → Completed Cloudflare Worker → KV updated · GSheet synced ticket closed · AQ data stored · 5-min sync to Sheet CC monitoring dashboard AQ trend · open tickets · next filter due WA → client notified visit complete · next steps via Bagachat

Scheduled tickets (filter replacement, AMC renewal) are auto-flagged by the system based on configured cycles — CC does not need to remember dates. Reactive tickets are raised manually by CC when a client raises a complaint via WhatsApp or call.

Prepared for OneAirLiving · June 2026 · Version 1.0 Kapil Bindal · Pricing: Bagachat · Meta · Cloudflare · Google