Skip to content

Instantly share code, notes, and snippets.

@amq
Last active March 18, 2026 20:47
Show Gist options
  • Select an option

  • Save amq/a5c0802c46dfae784cabd7d3070b12ab to your computer and use it in GitHub Desktop.

Select an option

Save amq/a5c0802c46dfae784cabd7d3070b12ab to your computer and use it in GitHub Desktop.
ToolSense Unified Data Model for OEM Analytics & Insights — Draft for discussion with i-team

📊 ToolSense Unified Data Model for OEM Analytics & Insights

Warning

DRAFT — FOR DISCUSSION This document is a brainstorming draft exploring what could be possible with i-team's IoT data. The data structures, use cases, and implementation ideas presented here are proposals to be discussed and refined together — they do not represent existing functionality or commitments.

📋 Executive Summary

This document explores a unified data model and insight strategy for i-team, enabling analytics, predictive capabilities, and new revenue streams from the IoT data already being collected by every i-mop in the field.

i-team currently markets the ToolSense platform as i-link — their customer-facing data and fleet management brand. The unified data model described here enhances i-link's capabilities significantly, both for in-platform dashboards and for an external API that i-team or their end customers can build upon.

What's in this document:

Section What It Covers
🔧 1. Unified Data Model Standardized data structures for assets, telemetry, tickets, sites, costs — the technical foundation
📈 2. Technical Insight Use Cases 22 analytics capabilities: predictive maintenance, efficiency, reliability, security, financial, AI/ML
💰 3. Commercial Value Use Cases Revenue generation, cost reduction, end-customer value, co-botics, network effects, additional ideas
🔗 4. Untapped Capabilities Features i-team isn't using yet (vehicle trips, BLE mesh) and combined cross-domain use cases
🚀 5. Data Delivery In-platform (i-link) and external API options
🎯 6. Use Case Prioritization Grouped by commercial impact and suggested sequencing

Tip

How to read this document: Section 2 describes WHAT the data can reveal. Section 3 describes WHY i-team should care — each maps to revenue, cost savings, or competitive advantage. Cross-references like "→ M15" link technical capabilities to their commercial framing.

Tip

i-link platform capabilities (built on ToolSense):

  • 🌐 Network effect — OEMs, dealers, and FM companies on the same platform create pull-push: customers prefer equipment that integrates with what they already use
  • 🗄️ Deepest data model — telemetry + ticketing + costs + work orders + parts + site hierarchy + BLE + trips in a single platform
  • 🔌 21+ integrations — multi-manufacturer support (i-team is already a named integration provider)
  • 🔗 Webhooks + API — real-time event webhooks (tickets, assets, work orders, sites) with retry logic, plus per-user API keys
  • 📋 Enterprise procedure engine — 29+ form field types, conditional logic (if/then/else), input tables, signature capture, photo attachments, QR/NFC scanning
  • 📱 QR self-service — unauthenticated end-users scan a QR code on any machine to see status, fill forms, report problems — without needing an account
  • 🏷️ Full white-labeling — custom domain, colors, logo, favicon, SSO, support email, mobile app links
  • 📍 Geofencing & rules engine — 5 trigger sources (IoT data, schedule, check, BLE, meter reading) with 9 automation actions
  • 💳 Financial tracking — 11 cost types, invoices, TCO per asset, cost center allocation
  • 🌍 45+ languages — global deployment ready
  • 📴 Offline-first mobile — field workers complete checklists without connectivity
  • 📄 Document management — files attached to assets, tickets, parts, procedures with visibility controls

Important

Top 5 highest-impact use cases for i-team:

  1. 🏆 M0 + M1: Tender compliance + cleaning proof — IoT is becoming mandatory in tenders. Compliance reporting wins deals. Table stakes.
  2. 📱 M42 + M43: QR self-service + inspection checklists — Already built in the platform. End users scan QR to report issues; i-team defines branded checklists with conditional logic. Quick wins.
  3. 💸 M2: Equipment-as-a-Service / pay-per-use — Transforms one-time hardware sales into recurring revenue.
  4. 🔋 M9 + M15: Warranty validation + battery extension — Reduces i-team costs (warranty) while giving end customers savings (battery life).
  5. 🎯 M55: Clean Score — Competitive parity with ICE Cobotics and Avidbots. Industry standard for fleet analytics.

🔧 1. Proposed Unified Data Model

The data structures below represent what a standardized, analytics-ready data model could look like. They are designed to illustrate the breadth of available data and how it could be structured for insights and API consumption. The exact fields, naming, and structure are open for discussion.

The platform already collects most of this data in various forms — the proposal is to expose it in a clean, unified format optimized for analytics.

1.1 Asset (Inventory)

The core entity representing a trackable piece of equipment.

interface UnifiedAsset {
  // Identity
  id: string;                          // ToolSense public ID (hashed)
  uuid: string;                        // Globally unique identifier
  serial: string | null;               // Manufacturer serial number
  externalId: string | null;           // Customer's own asset identifier
  inventoryNumber: string | null;      // Inventory tracking number
  plateNumber: string | null;          // Vehicle/equipment plate number

  // Classification
  category: {
    id: string;
    name: string;                      // e.g. "Floor Scrubber", "Vacuum Cleaner"
  };
  type: {
    id: string;
    name: string;                      // e.g. "i-mop XL", "i-mop XXL"
    make: string | null;               // Manufacturer model identifier
    isVehicle: boolean;
  };
  manufacturer: {
    id: string;
    name: string;                      // e.g. "i-team"
  };

  // Ownership & Financial
  ownership: 'PURCHASE' | 'LEASING' | 'RENTAL' | 'CUSTOMER_MACHINE' | 'OTHER';
  availability: 'READY_TO_USE' | 'DAMAGED' | 'IN_REPAIR' | 'RETIRED' | 'WAREHOUSE'
    | 'ORDERED' | 'NEEDS_APPROVAL' | 'BORROWED' | 'IN_TRANSIT' | 'TO_BE_ASSIGNED';
  purchaseCost: number | null;
  purchaseDate: string | null;         // ISO date
  warrantyEnd: string | null;          // ISO date
  dailyRate: number | null;            // For rental/billing
  currency: string | null;             // ISO 4217

  // Current Location
  currentSite: UnifiedSiteRef | null;
  currentLocation: {
    latitude: number;
    longitude: number;
    uncertainty: number;               // Meters
    timestamp: string;                 // ISO datetime
    source: 'CELLULAR' | 'WIFI' | 'TRIANGULATION' | 'SITE' | 'UNKNOWN';
  } | null;

  // IoT Module
  module: {
    imei: string;
    firmwareVersion: string | null;
    connectionStatus: 'primary' | 'secondary' | 'disconnected';
  } | null;

  // Organization
  organization: UnifiedOrganizationRef;
  commissionDate: string | null;       // ISO date — when asset was put into service

  // Metadata
  createdAt: string;
  updatedAt: string;
  customFields: Record<string, string | number | null>;
}

1.2 Telemetry (IoT Data)

Raw and processed sensor data from ToolSense IoT modules. The "DEFAULT" integration produces the following standardized payload per transmission:

interface UnifiedTelemetry {
  // Identity
  assetId: string;
  moduleImei: string;
  timestamp: string;                   // ISO datetime (from module clock)
  receivedAt: string;                  // ISO datetime (server receive time)

  // Runtime & Activity
  runtime: number;                     // Total runtime in seconds (cumulative)
  activityTime: number;                // Motion-based activity in ms
  powerOnTime: number;                 // Power-on duration in seconds
  ignitionSwitchOnTime: number;        // Ignition switch time in seconds

  // Vibration Breakdown (activity by intensity)
  vibration: {
    low: number;                       // Low vibration activity in ms
    medium: number;                    // Medium vibration activity in ms
    high: number;                      // High vibration activity in ms
  };

  // External Power Activity (same metrics but only while on external power)
  externalPowerActivity: {
    total: number;                     // Motion activity on external power in ms
    vibrationLow: number;
    vibrationMedium: number;
    vibrationHigh: number;
  };

  // Battery & Power
  moduleBattery: number;               // IoT module internal battery (0-100%)
  voltage: {
    average: number;                   // External device battery voltage (V)
    min: number;
    max: number;
  };

  // Location (derived from cellular/WiFi geolocation — NOT GPS; accuracy is typically dozens of meters)
  location: {
    latitude: number;
    longitude: number;
    uncertainty: number;               // Meters (typically 50-500m for cellular, 10-50m for WiFi)
    isValid: boolean;                  // loc flag
  } | null;

  // Connectivity
  signal: number;                      // Signal strength (0-31)
  firmwareVersion: string;

  // Interval Logs (start/end timestamp pairs)
  runtimeIntervals: [number, number][];           // [startTs, endTs]
  ignitionSwitchIntervals: [number, number][];    // [startTs, endTs]

  // Dynamic Config
  configId: number;
}

Processed/Aggregated Telemetry (for charting and dashboards):

interface UnifiedTelemetryAggregated {
  assetId: string;
  period: 'hour' | 'day' | 'week' | 'month';
  periodStart: string;                 // ISO datetime
  periodEnd: string;

  // Derived Metrics
  runtimeDelta: number;                // Runtime gained in this period (seconds)
  utilizationPercent: number;          // Runtime / available hours * 100
  workDone: number;                    // Work units (e.g., cleaning area in m²)

  // Battery Health
  avgVoltage: number;
  minVoltage: number;
  maxVoltage: number;
  chargeCycles: number;                // Estimated charge cycles in period

  // Activity Breakdown
  activeTime: number;                  // Seconds
  idleTime: number;                    // Powered on but not active
  offTime: number;                     // Not powered on

  // Location Summary
  distinctSites: string[];             // Site IDs visited
  totalDistance: number | null;        // Meters traveled (if location data sufficient)
}

1.3 Ticket (Service Requests & Issues)

interface UnifiedTicket {
  // Identity
  id: string;
  uuid: string;
  ticketNumber: number;                // Human-readable sequential number

  // Status
  status: 'open' | 'inProgress' | 'waitingForInformation' | 'approvalNeeded'
    | 'onHold' | 'closed' | 'declined';
  urgency: 'CRITICAL' | 'HIGH' | 'NORMAL' | 'LOW' | 'TOLERABLE';
  statusUpdatedAt: string;

  // Classification
  service: {
    id: string;
    name: string;                      // e.g. "Report a Problem", "Maintenance Request"
    preset: 'QR_LANDING' | 'REGULAR' | 'BLE';  // How the ticket was created
  } | null;

  // Associations
  assets: UnifiedAssetRef[];           // Affected assets
  sites: UnifiedSiteRef[];            // Related sites
  assetCategories: string[];           // Category names
  assetTypes: string[];                // Type names

  // Content (dynamic form fields)
  content: UnifiedTicketField[];

  // People
  createdBy: {
    userId: string | null;             // null if created by anonymous QR scan
    organizationId: string;
    email: string | null;
  };
  assignees: UnifiedAssignee[];
  siteManager: { userId: string; name: string } | null;

  // Costs
  costs: {
    total: number;
    currency: string;
    breakdown: {
      type: 'REPAIR' | 'LABOR' | 'SPARE_PARTS' | 'MAINTENANCE' | 'BATTERY'
        | 'CONSUMABLES' | 'FUEL' | 'LOGISTICS' | 'CERTIFICATION'
        | 'INSURANCE_TAXES' | 'OTHER';
      amount: number;
    }[];
  };

  // Timeline
  comments: UnifiedTicketComment[];
  history: UnifiedTicketHistoryEntry[];

  // Automation
  automations: {
    type: string;
    ranAt: string | null;
  }[];

  // Metadata
  createdAt: string;
  updatedAt: string;
  closedAt: string | null;            // Derived from status history
  firstResponseAt: string | null;     // Derived from first assignee action
  resolutionTimeHours: number | null; // Created → Closed duration
}

interface UnifiedTicketField {
  label: string;
  type: 'text' | 'number' | 'date' | 'dropdown' | 'single_choice' | 'multi_choice'
    | 'yes_no_choice' | 'checkbox' | 'attachment' | 'signature' | 'gps'
    | 'asset' | 'site' | 'phone' | 'email' | 'meter_reading' | 'input_table';
  value: string | number | boolean | null;
  comment: string | null;
}

interface UnifiedTicketComment {
  id: string;
  author: string;                      // User name or email
  isInternal: boolean;
  content: string;
  attachments: string[];               // Document URLs
  createdAt: string;
}

interface UnifiedTicketHistoryEntry {
  type: string;                        // e.g. 'STATUS_UPDATED', 'ASSIGNEE_ADDED'
  trigger: 'USER' | 'AUTOMATION';
  oldValue: string | null;
  newValue: string | null;
  performedBy: string | null;          // User name
  timestamp: string;
}

1.4 Site (Location)

interface UnifiedSite {
  // Identity
  id: string;
  uuid: string;
  name: string;
  externalId: string | null;

  // Address
  address: string | null;
  postalCode: string | null;
  country: string | null;
  city: string | null;                 // Derived from address
  coordinates: {
    latitude: number;
    longitude: number;
  } | null;

  // Hierarchy
  parentSiteId: string | null;
  siteType: string | null;

  // Management
  siteManagers: {
    userId: string;
    name: string;
    email: string;
    isPrimary: boolean;
  }[];
  contact: {
    email: string | null;
    telephone: string | null;
  };

  // Operational
  accountNumber: string | null;
  customerNumber: string | null;
  costCenter: string | null;

  // Organization
  organization: UnifiedOrganizationRef;

  // Derived Metrics (populated on request)
  assetCount: number;
  activeTicketCount: number;
}

1.5 Organization (Customer Hierarchy)

interface UnifiedOrganization {
  id: string;
  name: string;
  isCustomer: boolean;
  parentOrganizationId: string | null;
  vatNumber: string | null;
  identificationNumber: string | null;

  // Hierarchy
  rootOrganizationId: string;
  rootOrganizationName: string;
  childOrganizations: UnifiedOrganizationRef[];
}

1.6 Cost (Financial Records)

interface UnifiedCost {
  id: string;
  assetId: string;
  ticketId: string | null;
  siteId: string | null;

  title: string;
  type: 'REPAIR' | 'LABOR' | 'SPARE_PARTS' | 'MAINTENANCE' | 'BATTERY'
    | 'CONSUMABLES' | 'FUEL' | 'LOGISTICS' | 'CERTIFICATION'
    | 'INSURANCE_TAXES' | 'OTHER';
  amount: number;
  currency: string;
  quantity: number;

  invoiceNumber: string | null;
  invoiceDate: string | null;
  provider: string | null;
  costCenter: string | null;

  createdBy: string;
  createdAt: string;
}

1.7 Event (Activity Log)

interface UnifiedEvent {
  id: string;
  assetId: string;
  type: 'ERROR' | 'WARNING' | 'INFO' | 'SERVICE' | 'LOCATION' | 'TICKET'
    | 'MACHINE_CHECK' | 'MAINTENANCE' | 'COST' | 'WORK_ORDER';
  isCritical: boolean;
  startTime: string;
  endTime: string | null;
  isOngoing: boolean;
  data: Record<string, unknown>;       // Event-specific payload
  createdAt: string;
}

1.8 Service History (External — Customer-Provided)

This data does not exist in ToolSense today. The customer (i-team) would supply it. Proposed structure:

interface ExternalServiceRecord {
  // Identity
  externalId: string;                  // Customer's service record ID
  assetId: string;                     // Matched to ToolSense asset (by serial, externalId, or UUID)

  // Service Details
  serviceDate: string;                 // ISO date
  serviceType: string;                 // e.g. "Brush Replacement", "Motor Repair", "Annual Service"
  serviceCategory: string;             // e.g. "Preventive", "Corrective", "Emergency"
  description: string;

  // Parts & Cost
  partsUsed: { name: string; quantity: number; cost: number }[];
  laborHours: number;
  totalCost: number;
  currency: string;

  // Provider
  servicedBy: string;                  // Technician or service partner name
  serviceLocation: string | null;

  // Outcome
  resolution: string;                  // What was done
  rootCause: string | null;            // Why it failed (if known)
  downtimeHours: number | null;        // How long asset was out of service
}

1.9 Reference Types

interface UnifiedAssetRef {
  id: string;
  serial: string | null;
  categoryName: string;
  typeName: string;
}

interface UnifiedSiteRef {
  id: string;
  name: string;
  country: string | null;
}

interface UnifiedOrganizationRef {
  id: string;
  name: string;
}

interface UnifiedAssignee {
  type: 'user' | 'team' | 'group' | 'externalEmail' | 'siteManager';
  id: string;
  name: string;
  email: string | null;
}

📈 2. Technical Insight Use Cases

This section covers the analytics capabilities. For the commercial framing (revenue, cost savings, competitive advantage) of each, follow the → Mxx cross-references to Section 3.

🔩 Category A: Asset Health & Predictive Maintenance

# Use Case Description Uses Data From Example Output
A1 Predictive Repair Timing → M11, M57 Correlate cumulative runtime and asset age with service history to determine the average runtime at which a specific asset type requires a specific repair Telemetry (runtime), service history, asset classification "i-mop XL typically needs brush motor replacement at ~2,500 operating hours"
A2 Vibration-Based Failure Prediction → M57 Track vibration intensity distribution (high/medium/low) over time. A shift toward higher vibration ratios may indicate worn brushes, bearings, or suction motors before failure Telemetry (vibration), service history Time-series anomaly detection on vibration ratios triggers early warning alerts
A3 Battery Health Degradation → M15, M9 Monitor voltage trends over weeks/months. Declining average voltage under load indicates battery aging. Predict end-of-life and schedule proactive replacement Telemetry (voltage trends), asset type thresholds "Battery on asset #1234 has degraded 15% over 6 months — estimated 3 months until replacement needed"
A4 Battery Mismanagement Detection → M9, M15 Identify deep discharge patterns, incomplete charging, or excessive time on charger. Deep discharge dramatically shortens Li-ion battery life Telemetry (voltage min, charge cycles), runtime intervals Alert when voltage drops below safe threshold defined per asset type

⚡ Category B: Operational Efficiency

# Use Case Description Uses Data From Example Output
B1 Asset Utilization Analysis → M14, M48 Compare actual runtime against available working hours. Classify assets as underutilized, optimal, or overutilized Telemetry (utilization %), asset type benchmarks Per-asset utilization score with trend line. Flag assets below 40% or above 90%
B2 Fleet Right-Sizing → M14 When multiple underutilized assets exist at the same site, suggest consolidation. Factor in peak usage patterns Telemetry (per asset per site), runtime interval analysis "Site Amsterdam HQ has 5 i-mop XLs averaging 22% utilization — could operate with 3 during off-peak and 4 during peak"
B3 Seasonal & Temporal Patterns → M23, M12 Identify day-of-week, time-of-day, and seasonal usage patterns. Schedule maintenance during natural low-usage windows Telemetry (runtime intervals decomposed by time) Heatmaps of usage by hour and day. "Monday 6-10 AM is peak usage across all NL sites"

🎫 Category C: Ticketing & Reliability

# Use Case Description Uses Data From Example Output
C1 Reliability Scoring by Asset Type → M3, M27 Aggregate ticket volume and severity by asset type. Normalize by fleet size and runtime for a fair index Tickets (count, urgency), asset classification, telemetry (runtime) "i-mop XL: 0.8 tickets per 1,000 runtime hours. i-mop XXL: 1.2 tickets per 1,000 hours"
C2 Issue Clustering for Product Improvement → M11 NLP on ticket content to cluster the most frequently reported problems. Feed back to product/engineering Ticket content, comments, asset types "Top 3 issues for i-mop XL: (1) Water tank leak — 34%, (2) Brush wear — 28%, (3) Battery not charging — 19%"
C3 Ticket Resolution Time Analytics Track time-to-first-response, time-to-resolution, and reopen rates. Identify bottlenecks Ticket history (status transitions, timestamps) "Average resolution time: 48h. Tickets assigned to external partners take 3x longer"
C4 Repeat Issue Detection Identify assets with recurring tickets for the same issue. Flag chronic problems needing replacement vs. repair Tickets per asset over time, content similarity "Asset #5678 has had 4 brush motor tickets in 6 months — recommend replacement unit"
C5 QR Scan & Self-Service Analytics → M42 Track QR code scan frequency, which sites use self-service most, and what issues are reported Tickets (QR-originated), sites, timestamps Engagement rates per site, trending issue types from end-user reports

🏢 Category D: Site & Organizational Intelligence

# Use Case Description Uses Data From Example Output
D1 Site Benchmarking → M18, M27 Compare sites on standardized KPIs: utilization, ticket volume, maintenance costs, asset availability All data, grouped by site "Site Rotterdam: 85/100. Site Brussels: 62/100 — high ticket volume and low utilization"
D2 Site Manager Accountability Correlate ticket volume, resolution speed, and maintenance compliance with site managers Tickets, site managers, events "Sites managed by [manager] have 2.3x the ticket rate and 40% longer resolution times"
D3 Regional / Country-Level Analytics Roll up all metrics by geography for strategic decision-making All data, grouped by country/city Regional dashboards with KPI comparisons
D4 Customer Segmentation → M5, M24 Segment end-customers by usage patterns, support burden, fleet health, and engagement All data, grouped by organization Customer health scores: at-risk (declining usage, rising tickets) vs. healthy

🔒 Category E: Security & Compliance

# Use Case Description Uses Data From Example Output
E1 Theft / Unauthorized Movement → M25, H6 Flag assets that change location without runtime activity, or that move during non-working hours. Detects site-level relocations (geolocation accuracy is dozens to hundreds of meters) Telemetry (location, runtime), working hours, geofence settings "Asset #9012 detected at a new location 2km from assigned site at 2:30 AM with no runtime"
E2 Geofence Compliance Track assets leaving their assigned site geofence. Useful for rental/leasing scenarios Telemetry (location), site geofence config "Asset #3456 has been outside Site X geofence for 3 days"
E3 Check / Inspection Compliance Track adherence to scheduled machine checks and maintenance. Non-compliance is a safety and reliability risk Events (checks, maintenance), schedule data "72% of scheduled weekly checks completed on time. Site Y has 45% compliance"

💳 Category F: Financial & Business Model

# Use Case Description Uses Data From Example Output
F1 Pay-Per-Use Billing → M2, M34 Usage-based billing using runtime telemetry. Accurate billing without manual meter reads Telemetry (runtime), asset billing rates "Asset #1234 ran 142.5 hours in March. Invoice generated based on contracted rate"
F2 Total Cost of Ownership → M8, M13, M16 Full lifecycle cost per asset: purchase + maintenance + repair + parts + labor + downtime Costs, asset purchase data, tickets, service history "Average 3-year TCO for i-mop XL calculated. Repair costs account for 35%"
F3 Warranty Optimization → M7, M9 Identify assets approaching warranty expiration with high maintenance indicators. Prioritize claims before expiry Asset warranty dates, telemetry (health indicators), costs "12 assets with warranties expiring in 30 days have above-average maintenance costs"
F4 Cost Allocation by Site Break down costs per site, cost center, or department for financial reporting and chargeback Costs, site/asset cost centers Monthly cost reports by site and cost type
F5 Lease/Rental Contract Optimization → M13 Track assets approaching contract end dates. Cross-reference with utilization to decide: renew, return, or purchase Asset ownership data, leasing dates, utilization "Leased asset #2345 has 2 months remaining and 15% utilization — recommend return"

🤖 Category G: Advanced AI/ML Insights

# Use Case Description Uses Data From Example Output
G1 Anomaly Detection Unsupervised anomaly detection across all telemetry dimensions simultaneously. Catches patterns no human would look for Full telemetry time series "Asset #7890: runtime steady but vibration profile changed significantly 2 weeks ago — possible mechanical issue"
G2 Remaining Useful Life (RUL) Predict how many operating hours until a component needs service, based on degradation curves of similar assets Telemetry (historical curves), service history, asset type "Asset #4567 battery estimated RUL: 450 operating hours (±80 hours, 90% confidence)"
G3 Optimal Maintenance Scheduling Determine the maintenance interval that minimizes total cost (maintenance + unexpected failure + downtime) Telemetry, service history, costs, tickets "Optimal brush replacement for i-mop XL at high-traffic sites: every 800 hours (currently scheduled at 1,000)"
G4 Operator Behavior Profiling → M26, M56 Cluster usage patterns to identify different operator behaviors (hard on equipment, neglect charging, etc.) Telemetry (vibration, runtime intervals, charging patterns), site Segments: "Careful" (low vibration, regular charging), "Aggressive" (high vibration, deep discharge)
G5 Spare Parts Demand Forecasting → M12, M22 Predict future parts consumption based on fleet runtime accumulation and historical usage rates Service history (parts used), telemetry (runtime), costs "Projected brush consumption for Q2: 145 units across all sites (±12 at 95% CI)"
G6 Charging Pattern Optimization → M15 Analyze when/how assets are charged (inferred from voltage recovery patterns). Recommend optimal schedules Telemetry (voltage, runtime intervals, time-of-day) "Partial charges during shifts lose battery capacity 30% faster than full overnight charges"

💰 3. Commercial Value Use Cases (Revenue & Cost)

This section focuses exclusively on insights that directly save or generate money for i-team. Each use case has an explicit commercial mechanism: either it reduces i-team's costs, increases what i-team can charge, or gives end customers a financial reason to buy/upgrade IoT services.

Note

Branding: i-team markets the ToolSense platform as i-link. All customer-facing references below would be branded as i-link. The customer never sees "ToolSense."

Important

Key context: i-team currently struggles to sell the IoT subscription to end customers. The use cases below should be evaluated through the lens of: "Does this make the IoT subscription compelling enough that customers want it?" The most impactful use cases solve a concrete, pre-existing problem (compliance proof, labor savings, battery costs) — not abstract analytics.

📈 3.1 Revenue Generation — Selling IoT Better

# Use Case How It Makes Money Example
M0 Tender Compliance IoT is increasingly mandatory in tenders. Without it: disqualified. With analytics + compliance reporting: wins against competitors who only check the IoT box Tender-ready capability sheet: "runtime tracking, compliance reporting, predictive maintenance, sustainability metrics"
M1 Cleaning Compliance Proof Contract cleaners must prove cleaning was performed. IoT provides tamper-proof, automated proof — the single strongest sales argument for IoT "Site X: i-mop operated 06:00-08:15 and 14:00-16:30. Total: 4h 45min. SLA target: 4h. Compliant."
M2 Equipment-as-a-Service (EaaS) Usage-based pricing transforms one-time hardware sales into recurring revenue. Lower entry barrier for customers, higher lifetime value for i-team Automated monthly invoices based on actual runtime: per-hour, per-day, or minimum + overage
M3 Data-Backed Sales Advantage Aggregated fleet data proves i-mop superiority with real telemetry, not marketing claims. Justifies premium pricing "i-mop XL fleet average: 2,400h between service events. Industry average: 1,200h"
M5 Customer Health / Churn Prevention Declining utilization + rising tickets = churn risk. Early intervention saves the entire future revenue stream "Customer ABC: utilization dropped 30%, ticket volume up 2x. Risk: HIGH"
M6 End Customer Business Case Give customers data to justify the i-mop investment to their own management — removes the "convince my boss" barrier "Your 5 i-mops cleaned 12,000 m² in 180h. Equivalent manual effort: ~450 labor hours"
M7 Usage-Based Warranty Upsell Price extended warranties by actual runtime/vibration. Light-use = cheaper (low risk). Heavy-use = higher (fair pricing). High-margin recurring revenue "Asset at 1,800h, moderate vibration. Warranty expires in 60 days. Recommended renewal tier: [X]"
M8 Certified Pre-Owned Program Telemetry provides objective condition assessment for returned assets → data-backed resale at higher prices "i-mop #5678: 1,200h, battery 88%, Grade A — suitable for resale with 6-month warranty"

📉 3.2 Cost Reduction — i-team Internal

# Use Case How It Makes Money Example
M9 Warranty Claim Validation Voltage/vibration data proves misuse vs. product defect. Reduces warranty costs, shifts conversation to customer education "Claim: battery failure at 400h. Data: 47 deep discharge events. Fleet average: 3. Root cause: improper charging"
M10 Service Operation Cost Reduction Remote diagnostics avoids unnecessary visits. Parts pre-positioning avoids second visits. Route optimization reduces travel "Q1: 45 tickets resolved remotely (no visit). Travel per visit reduced 35% via batching"
M11 R&D Prioritization Fleet-wide failure data tells engineering exactly which component to fix first for maximum cost impact "#1 failure: brush motor bearing (28% of repairs, avg at 2,100h). Fix this first"
M12 Spare Parts Forecasting Runtime accumulation makes parts demand predictable. Less working capital, no rush orders, no stockouts "Q2 forecast: 85 brush sets, 23 batteries, 12 valve kits. Current stock covers 60%"
M13 Dynamic Leasing Residual Value Telemetry reveals exact asset condition at lease end — accurate residuals, competitive leasing pricing "Lease ending Q2: 22 Grade A, 6 Grade B, 2 Grade C (recommend refurbishment)"

🎁 3.3 Revenue Generation — End Customer Value Props

These make the IoT subscription worth paying for. The stronger these are, the easier i-team can sell IoT.

# Use Case How It Makes Money Example
M14 Fleet Right-Sizing Show customers they have more assets than needed. Builds trust → service contracts on remaining fleet "Site X: 5 i-mops at 22% utilization. 3 units cover 100% of peak demand"
M15 Battery Lifecycle Extension Charging recommendations extend battery life. Concrete savings that justify the IoT subscription alone "Current practices: 14-month battery life. With optimized charging: 20+ months"
M16 Downtime Cost Quantification Turns abstract "uptime" into a number the finance team understands "340h downtime in Q1. Predictive maintenance would have caught 8 of 12 events before failure"
M17 ESG / Sustainability Reporting Increasingly mandatory in procurement RFPs. Automated sustainability data wins large contracts "Co-botic water savings: 70%. Battery waste reduced 30% through optimized charging"
M18 Multi-Site Benchmarking Operations directors comparing sites daily become dependent on the platform → retention + organic growth "15 sites ranked. Top: A (92/100). Bottom: K (54/100 — low utilization, high tickets)"
M19 Proof for End Customer's Clients Contract cleaners show building owners professional, monitored equipment → win contracts at higher rates White-labeled report: "92 sessions, 100% coverage, avg 45min. All units operational"
M20 Outcome-Based Contracts Industry shifting from "pay for hours" to "pay for cleanliness." IoT proves outcomes, enables bonus/penalty clauses "98.5% sessions completed. All zones met thresholds. Bonus eligibility: YES"
M21 Labor Shortage ROI Proof 40% of contractors expect worse recruitment. IoT quantifies labor savings — turns a claim into proof "200 runtime hours = 600+ manual labor hours equivalent"
M22 Consumables Auto-Replenishment Runtime predicts when brushes/chemicals need replacing. Auto-ship = high-margin recurring revenue, no stockouts "780h since last brush change. Shipment triggered, arriving 5 days before needed"
M23 Smart Building Integration Prove cleaning responded to occupancy triggers. Wins tenders that specify BMS integration "Lobby spike at 12:00. Cleaning started at 13:05. Response time: 5 minutes"
M24 Dealer/Distributor Enablement IoT data makes distributors more effective → less likely to switch to competing OEM Distributor portal: fleet health, proactive alerts, consumable reorder suggestions
M25 Insurance Cost Reduction IoT tracking creates auditable trail insurers recognize → lower premiums or faster recovery "Fleet: all tracked, geofenced, 0 unrecovered thefts in 12 months"
M26 Training Effectiveness Compare before/after telemetry to prove training worked. Upsell training services with data-backed ROI "Post-training: session time +50%, high-vibration ratio halved"
M27 Industry Benchmarking Data Anonymized cross-customer data as premium feature. Positions i-team as industry authority "Healthcare avg: 6.2h/day. Your facility: 4.1h — 34% below benchmark"
M42 QR Self-Service for End Users End users scan QR on any i-mop to report problems, check status, complete inspections — without needing a login. Reduces support overhead, speeds up issue reporting Cleaner scans QR → sees battery status → taps "Report Problem" → fills form with photo → ticket created
M43 Configurable Inspection Checklists i-team defines inspection checklists with conditional branching, signatures, photos, tables. Ensures compliance and safety across all sites "Brushes OK? → YES → next. NO → which brush? → auto-creates ticket + auto-assigns dealer"
M44 Ticket-to-Work-Order Pipeline QR ticket → auto-converted to work order → assigned to dealer → tracked through completion with full cost tracking. End-to-end service lifecycle "Ticket #201 → Work Order #45 → Dealer → Completed 48h → Cost recorded"
M45 Webhook Integration to ERP/CRM i-team connects i-link to their own systems via real-time webhooks. Ticket created → push to CRM. Asset updated → sync to ERP. No polling, no manual export Webhook on ticket creation → i-team CRM creates case → dealer notified in their own system
M46 Offline Inspections Technicians complete checklists in basements/warehouses without connectivity. Data syncs automatically when back online. No paper forms 15-point checklist completed offline → walks upstairs → syncs → ticket auto-created

🤖 3.4 Co-Botic Fleet Intelligence (Planned — Robotic Product Line)

Tip

ToolSense will soon add full support for i-team's co-botic product family, including remote control and cleaning map visualization. This unlocks an entirely new data layer that manual i-mops cannot provide — and closes the competitive gap with FieldBots, Avidbots, and ICE Cobotics.

i-team co-botic product line:

Product Type Autonomy Sensors Key Data
i-walk i-mop XL attachment Semi-autonomous (Autofill, Teach & Repeat) Obstacle detection Routes, runtime, autonomous vs. manual split
co-botic 45 Robotic scrubber-dryer Fully autonomous 2D LIDAR, 2x 3D TOF, 4x ultrasonic Cleaning maps (covered/uncovered), water usage, task duration, route data
co-botic 65 Ride-on robotic scrubber Self-navigating Navigation sensors Route optimization, battery management
co-botic 1700 Portable robotic vacuum Autonomous Navigation sensors Area cleaned, runtime
co-botic 1900 Hotel robotic vacuum Autonomous (Drop & Go) Navigation sensors Area cleaned, runtime

The co-botic 45 is particularly data-rich: LIDAR cleaning maps, water consumption tracking, Wi-Fi + optional SIM. This is the same data quality FieldBots and Avidbots use as their primary selling point.

# Use Case How It Makes Money Example
M28 Cleaning Maps / Proof-of-Clean LIDAR maps show exactly what was cleaned vs. missed — the #1 feature that closes tenders against FieldBots and Avidbots. Manual i-mops can't do this (geolocation too coarse), but co-botics can "485 m² of 500 m² covered (97%). 2 areas missed due to obstacles. Water: 8.2L"
M29 Combined Fleet Analytics Unified dashboard for mixed fleets (i-mops + co-botics). No competitor offers this — unique differentiator "co-botic: 1,200 m² (95% coverage map). 3 i-mops: 6.8h runtime. Combined: 92% site coverage"
M30 Co-Botic ROI Justification Hard data (area/hour, water savings, labor freed) to justify the larger co-botic investment. Without data, sales depend on demos and promises "1,400 m²/day autonomous. Water saving: 60L/day. Operator time freed: 2.5h/day"
M31 Remote Fleet Control Start/stop sessions, update routes from i-link. Turns passive monitoring into active daily tool — strongest retention driver "3 co-botics across 2 sites. [Start] [Pause] [Reroute] controls. Error: obstacle at dock"
M32 Predictive Route Optimization AI optimizes routes from historical cleaning maps — less water, less battery, better coverage. Gets smarter over time "12% reduction in cleaning time, 8% improvement in coverage after optimization"
M33 Water & Chemical Tracking Measured consumption feeds ESG reports (M17), tender responses (M0), and auto-replenishment (M22) "Fleet used 2,800L. Manual equivalent: 9,300L. Saving: 70%"
M34 Pay-Per-Square-Meter Bill per m² cleaned (exact for co-botics via LIDAR, estimated for i-mops). Customer pays for output, not input "co-botic: 18,500 m² measured. i-mop: 26,500 m² estimated. Total: 45,000 m²"

🌐 3.5 Network Effect Use Cases (Unique to ToolSense Ecosystem)

Tip

Unlike single-OEM platforms (Tennant IRIS, Nilfisk TrackClean, ICE i-SYNERGY), ToolSense is a multi-party ecosystem where OEMs, dealers, and FM companies share a single platform. FieldBots also supports multiple robot manufacturers, but focuses on robotic fleet management only — ToolSense covers the full asset lifecycle including manual equipment, ticketing, costs, parts, and work orders.

# Use Case Description Example
N1 Seamless Service Chain End customer creates ticket via QR → routed to dealer → escalated to i-team if needed. Full audit trail visible to all parties. No email/phone chains, no duplicate data entry Ticket #201 created by FM company → dealer notified in 2 min → resolved on-site → i-team sees resolution for warranty tracking
N2 Cross-Party Telemetry Visibility End customer sees their fleet. Dealer sees their customers' fleets. i-team sees global fleet. Each party sees what's relevant — one dataset, three views, zero data export/import Dealer dashboard: "32 customers, 480 i-mops. 5 assets with battery alerts. 3 tickets pending."
N3 Dealer Performance Benchmarking i-team compares dealers on response time, resolution rate, parts consumption, customer satisfaction. Identify top performers and those needing support "Dealer A: avg resolution 18h, 95% first-visit fix. Dealer B: avg 72h, 60% first-visit — investigate parts availability"
N4 Parts Ordering Through the Chain i-mop approaches brush threshold → alert to dealer → dealer sees stock across all their customers → bulk order to i-team. Telemetry-driven demand flows up the supply chain "Dealer X: 12 customers will need brush sets in next 30 days (predicted from runtime). Auto-generated purchase order to i-team"
N5 Warranty Flow Across Parties Dealer handles first-line service, i-team handles warranty. Telemetry data (voltage, vibration, runtime) flows to both automatically — no diagnostic reports to email, no back-and-forth Dealer submits warranty claim with telemetry attached. i-team validates in minutes (M9) instead of days of investigation
N6 Mixed-Fleet Dashboard for FM Companies FM companies manage i-team equipment alongside other manufacturers (Kärcher, Nilfisk, etc.) in one dashboard. i-team benefits: their equipment is visible alongside competitors, and if TCO or reliability is better, it shows FM company: "Total cleaning fleet: 40 i-mops, 20 Kärcher, 15 Nilfisk. One dashboard, one compliance report, one cost view"
N7 Zero-Friction Adoption When an FM company already on ToolSense adds i-team equipment, there's no new platform to learn. The equipment appears in their existing dashboard instantly. Dramatically lowers the barrier to choose i-team FM company already using ToolSense for Hako fleet → adds 10 i-mops → visible immediately, no onboarding, no training
N8 Cross-Manufacturer Compliance Reporting End customer needs one cleaning compliance report covering their entire fleet (i-mop + other brands). Only possible if all equipment is on the same platform — and ToolSense is the only multi-OEM platform "March compliance: all 55 machines across 3 manufacturers met SLA. One report, one dashboard"
N9 Ecosystem-Wide Benchmarking Anonymized data across all OEMs on ToolSense enables cross-manufacturer comparison. i-team can prove their equipment outperforms competitors — not with marketing, but with real fleet data from shared customers "i-mop avg uptime: 97.2%. Industry average across all ToolSense-connected machines: 91.8%"

📰 3.6 Market Context

Key industry trends that make these use cases timely (based on 2025-2026 market research):

  • 62% of commercial cleaning companies are investing in IoT-enabled tools (2025 survey)
  • 80% of large contract cleaning firms expected to use digital platforms for quality audits and workforce accountability by 2026
  • 40% of cleaning contractors expect recruitment challenges to escalate — driving automation and efficiency investment
  • Outcome-based contracts are replacing input-based contracts in public and private tenders — requiring objective cleaning proof
  • ESG/sustainability metrics from vendors are increasingly required in procurement RFPs, especially in healthcare and real estate
  • The commercial cleaning services market is projected to grow from $225B (2025) to $336B (2031) at 6.9% CAGR
  • Smart building integration (occupancy sensors, BMS) is moving from pilot to standard in new commercial construction
  • FieldBots already integrates with 11 robot manufacturers (including i-team) as a neutral fleet management layer — validating the multi-manufacturer approach and raising end-customer expectations for brand-agnostic fleet analytics
  • Tender compliance: IoT connectivity is increasingly a mandatory specification, not an optional feature, in public and corporate procurement

🏗️ 3.7 Additional Use Case Ideas

# Use Case How It Makes Money Example
M55 Clean Score / Performance Grade Color-coded per-site score (green/yellow/red). Non-technical managers get it instantly. Basis for outcome-based contracts (M20) "Site A: 92 (green). Site B: 78 (yellow). Site C: 45 (red — 2 i-mops unused)"
M56 Operator Identification WHO used which machine WHEN. Enables accountability, training targeting, performance management. Strong retention driver "Operator A: 6.2h, efficiency 94%. Operator B: 3.1h, efficiency 71% — recommend training"
M57 Component Wear Tracking Compare actual hours vs. rated lifespan per component. Early warning before failure. Can save up to 20% in machine operating costs "Brush motor: 1,850h / 2,000h rated (93% — replace in 2 weeks). Battery: 80% — monitor"
M47 Transport vs. Cleaning Time Separate unproductive transport from active cleaning. Reveals hidden inefficiency, feeds fleet right-sizing "72% cleaning, 18% transport, 10% idle. Site X: 35% transport — investigate staging"
M48 Configurable Targets Customers define success (min runtime/day, sessions/week). Platform tracks actual vs. target. Upgrades from "data" to "management tool" "4 of 5 sites met targets. Site B missed Tuesday + Thursday. Fleet: 89%"
M49 Savings Quantification Platform shows exactly how much IoT saved the customer. Closes the ROI loop — #1 churn prevention tool "March: battery savings [X], 3 emergency repairs prevented, fleet optimization would save [Y]"
M50 Feature Adoption Tracking Are customers using premium features they paid for? Low adoption = churn risk. Surfaces training needs and upsell opportunities "40% of i-mops never used eco mode. 2 i-walks purchased, 0 autonomous sessions"
M51 Crowdsourced Benchmarking Anonymized performance data across all ToolSense-connected fleets. End customers compare operations against industry peers — cross-manufacturer "Your fleet: 5.1h runtime/day. Peer average (similar facility size): 6.4h. Top 10%: 7.8h"
M52 Consumables Marketplace In-platform marketplace where dealers offer spare parts, brushes, chemicals directly to end customers. Integrated with usage predictions (M22) "Brush set needed in ~2 weeks. 3 dealers offer compatible parts. [Order from preferred dealer]"
M53 TV / Wall Dashboard Mode Dedicated large-screen display for operations centers or building lobbies. Live fleet status, Clean Score, active co-botics — always visible Lobby screen: "4 machines active. Cleanliness score: 94. Next session: 14:00"
M54 Automated Service Delivery Reports Auto-generated PDF/Excel reports proving cleaning was performed — formatted for the end customer's client. Eliminates documentation burden Weekly auto-report: "5 sessions completed, all zones covered, 0 incidents"

🔗 4. Untapped Platform Capabilities & Combined Use Cases

Note

The use cases in this section focus on technical capabilities. For the commercial framing (revenue, cost savings), see Section 3.

i-team currently uses ToolSense for IoT runtime telemetry, inventory management, ticketing, and geofencing. However, the platform has significant additional capabilities that could unlock high-value combined insights. This section covers features not yet deployed for i-team and — more importantly — the cross-domain use cases that emerge when these features are combined with what is already in use.

4.1 Available but Unused Features

Feature What It Does Relevance to i-team
Vehicle / Trip Management Full GPS fleet management for service vehicles: routes, distance, speed, fuel, driving events (harsh braking, speeding, crash detection), NFC driver ID, private/work trip classification, live position tracking Service vans transporting i-mops, technician visits to customer sites, delivery vehicles
BLE Tag Mesh Network Every i-mop tracker doubles as a BLE gateway, scanning nearby BLE-tagged items and reporting their location. Sensors: battery, temperature, humidity. Limitation: scans every 5+ min (presence tracking, not real-time) i-mop fleet = distributed sensor network at zero extra cost. Tag accessories (batteries, docks, brush sets) to track via the mesh. Stationary gateways at warehouses for persistent indoor tracking
Working Hours & Non-Working Days Per-asset weekly schedules (split shifts supported) + date-range holidays/shutdowns. Feeds into rules engine and trip classification Detect off-hours usage, classify private trips, trigger alerts for unauthorized activity
Parts Inventory Spare parts tracking per site: stock levels (current/min/max), unit costs, movements between sites, automatic low-stock alerts Predict and pre-position parts based on fleet runtime (feeds M12, M22)
Reservations Time-based asset booking with start/end dates and multi-asset support Schedule shared equipment across floors, shifts, or teams

4.2 Combined Use Cases

The real power is in combining features. Each use case below crosses at least two domains.

# Use Case Combines Description Example
H1 Accessory Inventory Audit BLE + i-mop mesh + trips BLE-tag accessories (batteries, docks, brush sets). Every i-mop that powers on scans nearby tags and reports what it "sees." Service vans extend the mesh. Zero-effort inventory "145 of 150 batteries confirmed. 3 not seen in 10+ days. 2 at wrong sites"
H2 Delivery Confirmation Telemetry + trips + geofence Van transports i-mop → i-mop geolocation confirms arrival at new site + van trip confirms stop. BLE confirms accessory delivery. Auto-updates site assignment "i-mop #5678 delivered to Site Y by Van-03 at 14:22. 2 batteries confirmed via BLE"
H3 Technician Route Optimization Trips + tickets + live position Ticket created → system finds nearest van via live GPS → auto-assigns. Tracks departure, arrival, dwell time "Response time improved from 4.2h to 1.8h. Van-05 handled 3 tickets with optimal routing"
H4 SLA Verification Trips + tickets + geofence Van enters site geofence at 10:15, exits 11:42 → tamper-proof on-site time. Cross-reference with ticket resolution "Q1 SLA compliance: 94%. Avg on-site: 62min. 3 visits under 15min flagged"
H5 Driver Behavior vs. Cost Trips + costs + tickets Correlate harsh driving events per driver with vehicle maintenance costs. Aggressive drivers = more wear "Driver A: 3.2x more harsh braking. Assigned vehicles: 40% higher brake costs"
H7 Parts Pre-Positioning Telemetry + parts + BLE + trips i-mop at 780h → 20h from brush threshold. Parts check: Site X has 0 stock. Alert: "Pre-position brush set." Van delivers, confirmed via BLE "12 sites pre-positioned. Zero-stock delays reduced from 18% to 3%"
H8 Offline Asset Recovery Telemetry + BLE + trips Tracker offline 14 days? Other i-mops / vans may detect its BLE beacon passively. Dispatch nearest van on search route "8 of 11 offline assets located within 48h via BLE mesh"
H9 Environmental Monitoring BLE sensors + i-mop gateways BLE temp/humidity tags in storage rooms. i-mops act as gateways, collecting readings when nearby. Alert on freezing/heat "3 sites below 5°C. These sites: 2.8x battery failure rate"
H10 Smart Scheduling Telemetry + working hours + reservations Optimize shared i-mop schedules based on actual usage patterns per floor/zone, not fixed rotation "Reduces fleet from 5 to 3 i-mops at Building A while maintaining 100% coverage"
H11 Service Fuel Optimization Trips + tickets + sites Cluster ticket resolutions geographically. Combine with planned deliveries for multi-stop trips "Average km/ticket reduced from 28 to 16. Significant fuel and CO2 savings"
H13 Zone Dwell Time BLE beacons + site hierarchy BLE beacons per zone (lobby, floors, restrooms). i-mop detects which beacon is nearby → infers zone. Indoor tracking without GPS "Restrooms: 35% of cleaning time but 10% of area — understaffed zone"
H14 Accessory Presence BLE + site assignments Track if accessories still appear in periodic BLE scans at their assigned site. Presence/absence check (5+ min intervals) "4 docks confirmed. 1 dock not seen in 48h — investigate"

H6. Theft Detection — Multi-Signal Confirmation

Combines geolocation, runtime, working hours, and BLE for high-confidence theft detection. Geolocation is coarse (dozens to hundreds of meters), so this detects site-level relocations, not movements within a building. Any single signal might be a false positive — three or more together = high confidence.

Signal What It Detects
Geofence exit i-mop geolocation leaves assigned site area
No runtime Location change without motor activity (being carried, not operated)
Off-hours Location change outside defined working hours
Unknown location Asset at a location with no known sites nearby
Accessory left behind BLE-tagged dock still at site, but i-mop left — abnormal separation

Example: "LOW: i-mop #3456 outside assigned site at 18:30 (could be late shift)." → "HIGH: Unknown location at 22:00, no runtime, no known sites nearby. Likely theft."

H12. Asset Lifecycle Journey — Full Timeline

Every data source combined into a complete asset biography from commissioning to retirement:

Date Event Source
2024-01-15 Commissioned at Site A Asset created
2024-01-16 Delivered by Van-02 Trip + geolocation confirm arrival
2024-01-17 First runtime: 2.3h Telemetry
2024-03-22 500h runtime milestone Telemetry
2024-04-10 Ticket: "Water not dispensing" QR scan by end-user
2024-04-11 Technician visited, 45min on-site Van-05 trip to Site A
2024-04-11 Valve replaced Ticket resolved, parts, cost
2024-06-15 Moved to Site B Geolocation + Van-02 trip
2024-08-30 Battery degradation detected Voltage trend -8% over 2 months
2024-09-15 Proactive battery replacement Parts pre-positioned
2024-12-01 Vibration shift → brush replacement Predictive maintenance alert
2025-06-01 Retired at 2800h Full TCO calculated

Compare lifecycle costs and patterns across the entire fleet to identify systemic issues and optimize future purchasing decisions.

4.4 Additional Unified Data Models for New Features

Trip Data Model

interface UnifiedTrip {
  id: string;
  vehicleAssetId: string;

  // Route
  startTime: string;                   // ISO datetime
  endTime: string | null;              // null if trip is active
  isActive: boolean;
  startLocation: UnifiedAddress;
  endLocation: UnifiedAddress | null;
  route: string;                       // Encoded polyline
  waypoints: UnifiedWaypoint[];

  // Metrics
  distance: number;                    // Kilometers (actual route)
  linearDistance: number;              // Kilometers (straight-line)
  duration: number;                    // Seconds
  avgSpeed: number;                    // km/h
  maxSpeed: number;                    // km/h
  fuelConsumed: number | null;        // Liters
  fuelConsumedPercent: number | null;

  // Driver
  driverId: string | null;            // NFC-based identification
  driverName: string | null;
  responsiblePerson: string | null;

  // Classification
  isPrivate: boolean | null;          // Outside working hours

  // Driving Events
  drivingEvents: UnifiedDrivingEvent[];
}

interface UnifiedWaypoint {
  latitude: number;
  longitude: number;
  speed: number;                       // km/h at this point
  timestamp: string;
  distance: number;                    // km from previous waypoint
  direction: number;                   // Heading in degrees (0-360)
}

interface UnifiedDrivingEvent {
  type: 'HARSH_ACCELERATION' | 'HARSH_BRAKING' | 'HARSH_CORNERING' | 'CRASH' | 'SPEEDING';
  latitude: number;
  longitude: number;
  speed: number;
  timestamp: string;
}

interface UnifiedAddress {
  street: string | null;
  city: string | null;
  postalCode: string | null;
  country: string | null;
  latitude: number;
  longitude: number;
}

interface UnifiedVehicleLivePosition {
  vehicleAssetId: string;
  latitude: number;
  longitude: number;
  speed: number;
  direction: number;                   // Heading degrees
  isMoving: boolean;
  timestamp: string;
  currentTripId: string | null;
}

BLE Scan Data Model

interface UnifiedBleScan {
  assetId: string;                     // The asset being tracked (has BLE tag)
  tagId: string;                       // BLE beacon identifier
  gatewayAssetId: string;             // The asset that performed the scan
  gatewayImei: string;

  // Location (from gateway)
  latitude: number;
  longitude: number;
  uncertainty: number;                 // Meters
  isValidLocation: boolean;

  // BLE Tag Sensors (slow-changing values — scan interval is 5+ minutes)
  batteryLevel: number | null;        // Tag battery (0-100)
  temperature: number | null;         // Celsius
  humidity: number | null;            // Percentage

  scanTime: string;                    // ISO datetime
}

interface UnifiedBleLastSeen {
  assetId: string;
  tagId: string;
  lastSeenAt: string;                 // ISO datetime
  lastSeenByGateway: UnifiedAssetRef;
  lastKnownLatitude: number;
  lastKnownLongitude: number;
  daysSinceLastSeen: number;
  isAtExpectedSite: boolean;          // Matches current site assignment history
}

Parts Inventory Data Model

interface UnifiedPart {
  id: string;
  name: string;
  type: string;
  brand: string | null;
  vendor: string | null;

  // Location
  siteId: string;
  area: string | null;                 // Storage area within site

  // Stock Levels
  availableQuantity: number;
  minQuantity: number;                 // Low-stock alert threshold
  maxQuantity: number;
  unitOfMeasure: string;
  unitCost: number;
  currency: string;
  totalStockValue: number;

  // Status
  isCriticalStock: boolean;           // availableQuantity < minQuantity
  responsiblePerson: string | null;
}

Co-Botic Cleaning Session Data Model (Planned)

interface UnifiedCoBoticSession {
  id: string;
  assetId: string;                     // The co-botic asset
  siteId: string;

  // Session
  startTime: string;                   // ISO datetime
  endTime: string;
  duration: number;                    // Seconds
  mode: 'AUTONOMOUS' | 'MANUAL' | 'REMOTE';

  // Cleaning Map (LIDAR-based)
  cleaningMap: {
    totalArea: number;                 // Total mapped area in m²
    cleanedArea: number;               // Actually cleaned area in m²
    coveragePercent: number;           // cleanedArea / totalArea * 100
    missedZones: {                     // Areas not cleaned
      reason: 'OBSTACLE' | 'NO_GO_ZONE' | 'UNREACHABLE';
      area: number;                    // m²
    }[];
    mapImageUrl: string | null;        // Visual map (green = cleaned, white = missed)
  };

  // Route
  routeName: string | null;            // Named route (Teach & Repeat)
  routeType: 'AUTOFILL' | 'TEACH_REPEAT' | 'MANUAL';
  distanceTraveled: number;            // Meters

  // Resources
  waterConsumed: number | null;        // Liters (co-botic 45)
  batteryStart: number;                // Percentage at session start
  batteryEnd: number;                  // Percentage at session end

  // Quality
  obstaclesEncountered: number;
  emergencyStops: number;
  errors: string[];
}

interface UnifiedCoBoticStatus {
  assetId: string;
  status: 'CLEANING' | 'IDLE' | 'CHARGING' | 'ERROR' | 'OFFLINE';
  currentSession: UnifiedCoBoticSession | null;  // If status = CLEANING
  batteryLevel: number;
  nextScheduledSession: string | null; // ISO datetime
  lastSessionSummary: {
    endTime: string;
    coveragePercent: number;
    waterConsumed: number | null;
  } | null;
}

Geofence Event Data Model

interface UnifiedGeofenceEvent {
  assetId: string;
  siteId: string;
  type: 'ENTER' | 'EXIT';
  timestamp: string;
  latitude: number;
  longitude: number;
  geofenceShape: 'CIRCLE' | 'RECTANGLE' | 'POLYGON';
}

🚀 5. Data Delivery

The unified data model can be delivered through two channels:

  1. In-Platform Insights (i-link) — Dashboards, reports, alerts, and visualizations directly within the i-link platform. Best for: daily operational use, real-time monitoring, performance scoring.

  2. External API — A dedicated API that i-team or their end customers can query programmatically. Best for: integration with existing BI tools, custom analytics, data warehousing, building custom applications on top of the data.

The exact API design, endpoints, authentication model, and data freshness guarantees are to be discussed based on i-team's priorities and use cases.


🎯 6. Use Cases Prioritized by Commercial Impact

The use cases from this document grouped by urgency and commercial impact. Suggested sequencing — to be discussed and adjusted based on i-team's priorities.

🥇 Priority 1: Compliance & Proof-of-Clean (Highest urgency — tender requirement)

Use Case Why It Matters
Cleaning compliance reports (M1, M20) Timestamped proof of when/where cleaning happened — needed for tender compliance and outcome-based contracts
Clean Score / performance grading (M55, M48) Simple, color-coded per-site view of whether cleaning targets are met — what facility managers actually want to see
QR self-service for end users (M42) Scan QR on any i-mop to report problems, check status, complete inspections — without login. Already built in the platform
Configurable inspection checklists (M43) Brand-specific checklists with conditional logic, signatures, photos. Ensures compliance across all sites. Already built
Automated service delivery reports (M54) Auto-generated PDF/Excel reports proving cleaning was performed — eliminates documentation burden for contract cleaners
Data export API Foundation for i-team and end customers to build custom analytics on top of i-link data

Important

IoT is becoming mandatory in tenders. Without compliance reports and performance scoring, i-team loses bids to competitors. QR self-service and inspection checklists are already built in the platform — these are quick wins. Coverage maps are not feasible for manual i-mops (geolocation too coarse), but co-botic LIDAR maps (Priority 2b) close this gap.

🥈 Priority 2a: Battery & Maintenance Intelligence (Direct cost savings)

Use Case Why It Matters
Battery health monitoring (A3, A4, M15) Degradation tracking and charging behavior analysis — extends battery life, the most expensive consumable
Warranty claim validation (M9) Voltage/vibration data proves misuse vs. product defect — reduces warranty costs for i-team
Component-level wear tracking (M57) Rated hours vs. actual hours per component — prevents failures before they happen
Utilization analytics & fleet right-sizing (B1, B2, M14) Shows end customers which assets are over/underutilized — builds trust, optimizes fleet size
Ticket-to-work-order pipeline (M44) End-to-end service lifecycle from QR ticket to completed work order with cost tracking. Already built
Savings quantification (M49) Shows the customer exactly how much IoT saved them — justifies the subscription

Note

Immediate, quantifiable savings for both i-team (fewer warranty replacements) and end customers (longer battery life, optimized fleet). Creates the ROI story that makes the IoT subscription worth paying for.

🥈 Priority 2b: Co-Botic Fleet Intelligence (Competitive game-changer)

Use Case Why It Matters
Cleaning maps from co-botic LIDAR (M28) Visual proof-of-clean with covered/uncovered areas — the #1 competitive feature in robotic cleaning
Remote control & monitoring (M31) Start/stop sessions, update routes from i-link — turns passive monitoring into active operations tool
Combined fleet dashboard (M29) Unified view of manual i-mops + co-botics on one site map — no competitor offers this
Water & chemical consumption tracking (M33) Measured resource usage from co-botic 45 — feeds ESG reporting and sustainability tenders
Co-botic ROI reports (M30) Area cleaned, water savings, labor freed — hard data to justify co-botic investment

Note

Co-botic adoption is growing and competitors already offer cleaning maps. i-team needs this to compete in robotic tenders. Can be developed in parallel with 2a.

🥉 Priority 3: New Revenue Models & Stickiness

Use Case Why It Matters
Pay-per-use / EaaS billing (M2, M34) Usage-based pricing transforms one-time hardware sales into recurring revenue
Consumables auto-replenishment (M22) Runtime-based auto-shipment of brushes, chemicals — high-margin recurring revenue, no stockouts
Site benchmarking (M18) Multi-site customers compare performance across locations — creates daily dependency on i-link
Webhook integration to ERP/CRM (M45) Real-time push to i-team's own systems — no polling, no manual export. Already built
Offline inspections (M46) Field workers complete checklists without connectivity — data syncs when back online. Already built
Aggregated KPIs via API Pre-computed utilization, reliability, battery health scores — ready-to-use for customer BI tools

Note

Once Priorities 1-2 prove IoT value, these create new revenue streams and make the subscription indispensable.

4️⃣ Priority 4: Predictive Capabilities & External Data

Use Case Why It Matters
Service history import i-team's own service records combined with telemetry — enables the highest-value predictive use cases
Predictive repair timing & RUL estimation (A1, G2) Predict when specific components will need replacement based on fleet-wide patterns
Spare parts demand forecasting (G5, M12) Fleet-wide runtime accumulation predicts parts consumption — reduces inventory costs
Operator identification & tracking (M56) Who used which machine when — enables training effectiveness measurement and accountability
Ticket clustering for product improvement (C2, M11) NLP on ticket data reveals top failure modes — directs R&D investment

Note

Requires months of historical data accumulation from Priorities 1-3 to build reliable baselines and predictive models.

5️⃣ Priority 5: Advanced Differentiation

Use Case Why It Matters
AI/ML anomaly detection (G1) Catches patterns no human would look for — early warning across all telemetry dimensions
Smart building / BMS integration (M23) Cleaning responds to occupancy sensor triggers — growing requirement in new commercial buildings
Industry benchmarking data (M27) Anonymized cross-customer insights — positions i-team as the industry authority
Predictive route optimization for co-botics (M32) AI optimizes cleaning routes over time — more efficient, less water, better coverage

Note

Differentiates i-team from all competitors but requires the largest fleet-wide dataset and most sophisticated analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment