mars-dashboard

byPriyank Dave

Project Brief — GE Powerzone Service Operations & Supply Chain Platform What this product is An internal web platform for a gas & electrical appliance service business. It sits as a wrapper and automation layer on top of ServiceM8 (field service management — jobs, technicians, scheduling), which the company already lives in. The office staff will do their day-to-day work inside this new platform; ServiceM8 continues to act as the underlying data store and technician mobile app, and the two stay in sync both ways. The goal is to replace a lot of manual copy-paste, email chasing, and switching between tabs with a single dashboard that tracks jobs, parts, quotes, and suppliers, and automates follow-ups where a human is currently the glue. Users and roles Admin / office staff (Kylie, Linda, Wendy, Elaine): full access. Create jobs, quote, invoice, manage inventory, run analytics. Technicians (field): light access. Log in to report which parts they used from their van and view their assigned jobs. They do NOT re-enter anything they already put in ServiceM8. Owner / reporting view (Kylie, Elaine only): revenue and analytics dashboards (sourced from ServiceM8 invoice/quote totals). These sections must be access-controlled because random visitors walk through the office. Core modules to build 1. Unified Operations Dashboard (the home screen) A single-pane-of-glass quick view that mirrors how ServiceM8 feels (so staff don't feel like they've left it), but with much better information density: Jobs by stage/queue: pending quote, P&A requested, quote sent, follow-up 1, follow-up 2, intervention required, parts on order, ready to schedule, awaiting invoice, etc. The queue structure should mirror ServiceM8 queues (currently ~5–8 queues, will grow as automation adds stages). "How long has this job been sitting here?" indicator per job (like the McDonald's drive-thru timer — visual cue when a job is aging out). Counts: jobs outstanding, jobs awaiting parts, quotes awaiting approval. Jobs comparison by month across years (e.g. Jan 2024 vs Jan 2025 vs Jan 2026). Top clients by month/quarter (spend and job count, sourced from ServiceM8 invoice totals). Better search than ServiceM8's — must treat multi-word queries as a phrase, not split into individual letters. Search across contacts, jobs, and job notes. Include refinements (date range, stage). Alerts panel: low stock, aged jobs, stuck follow-ups, overdue supplier responses. 2. Job Management List, detail, and create jobs (jobs can be created from the platform OR continue to be created in ServiceM8 — both must sync). Job status lifecycle: Created → Technician Assigned → Diagnosed → Quote Required → Quote Sent → Awaiting Approval → Awaiting Parts → Scheduled → Completed → Invoiced. Jobs can re-enter earlier stages (a completed job can revert to "quote needed" if a second visit finds more parts). Link jobs together by customer / appliance / issue so related jobs are visible to each other (prevents duplicate quoting). Every job has a job ID (format like 260503 — year + sequence). 3. Automated Work Order Ingestion Watches an inbox for incoming work orders (email + PDF attachments). Uses an LLM to extract: customer name & contact, site location, appliance make/model/serial, fault description, requested service. Creates the draft job in ServiceM8 via its API. Office confirms/edits before it goes live. 4. Technician Notes Cleanup (the most important automation per client) Technicians write raw, messy notes in the ServiceM8 "quote description" / "invoice description" field (spelling mistakes, stream-of-consciousness, mixed with internal commentary like who they spoke to). Office staff currently manually copy → clean → paste this into a customer-facing format for every quote and invoice. Trigger: when a technician checks out of a site / signs out of a job. Action: LLM takes the raw note, keeps the original raw version saved in the job's Notes section (audit trail), and writes a cleaned, formatted version back into the quote/invoice description. Format: top-level header with MAKE / MODEL / SERIAL / LOCATION in caps, then body. Preserve data loyalty: do NOT change part numbers the technician quoted — those are ordering-critical (if a tech wrote part X and office orders part X and it's wrong, the tech must not be able to say "I never gave you that number"). Keep the original raw note verbatim for this reason. Idempotency: mark formatted sections with an asterisk delimiter (e.g. ***...***) so the cleaner knows what it already touched. On a 2nd or 3rd site visit, append a NEW cleaned block below the old one — do not re-clean and rewrite earlier ones, because the customer may already have received a quote referencing that text. Learns the house style from examples — the client already experimented with this in Claude and it worked. 5. Inventory / Parts Tracking (has to be custom — ServiceM8 doesn't do this properly) Parts catalog: ~16,000 items already, growing daily (new appliance models constantly). Fields per part: part name, internal SKU, supplier SKU(s) (can differ per supplier), optional photo (stored in AWS S3 — separate cost line), quantity, price, minimum-stock threshold. Storage locations: a main Warehouse + one stock location per technician van (Van 1, Van 2, …). Admin can add new storage locations (warehouse 2, van 6, etc.). Transfers: office moves stock Warehouse → Van when scheduling a job. Technicians do not pull stock themselves — the office does it from the admin UI (decided in the call to reduce technician friction). Usage logging: technicians, when they fit parts on a job, log what they used (either via the existing ServiceM8 mobile billing screen that syncs back, or a light mobile view in this new platform — ideally the former to avoid double entry). Low-stock alerts: for warehouse AND per-van (e.g. "Van 2 is down to 2 solenoids, normal load is 4 — alert office to top up"). Parts-to-job mapping: every part consumption maps to a job ID. A single job can have parts from 8+ different suppliers, so one job → many POs is normal. 6. Purchase Orders & Supplier Communication No formal PO system today — orders happen via supplier websites or Linda emailing "spares@hobart" style addresses asking for price & availability. Platform must support a PO record: supplier, parts, job ID reference, expected delivery, price, status. Supplier follow-up automation: once an email is sent to a supplier for P&A (price & availability), if no reply in a set window, auto-send follow-ups. Client wants aggressive cadence ("every 6 hours" was mentioned, realistic default 24h, configurable). After N automated follow-ups (default 3), STOP auto-sending and alert Linda to call. Requires a dedicated Gmail account for the platform so it can send-and-parse supplier replies. Supplier scorecard: average response time, delivery time, pricing consistency. 7. Customer Quote & Estimate Follow-Up Automation Triggered once the quote is manually sent for the first time (office sends the initial one, automation takes over after). Cadence: Day +3: friendly reminder email (+ optional SMS via ServiceM8's built-in SMS feature, using the existing template). Day +7 (or before the 2-week expiry): "your quote is about to expire" reminder. After that: automation stops, creates an "Intervention Required" alert so a human calls the customer. Don't become the "buy my fence" spam bot. Every automated send moves the job into a corresponding ServiceM8 queue (Follow-up 1, Follow-up 2, Intervention Required) so both systems stay visually aligned. Track: sent timestamp, response (approved / rejected / no response), approval history. 8. Cross-Job Parts Reconciliation Engine (prevents duplicate billing) This is a later but critical piece. Real scenario: same customer, same appliance, two open jobs — office quotes the same part twice by accident. Centralized Parts Usage Ledger: ordered / allocated / installed events per part per job. Cross-job matching on (customer, appliance, issue, SKU, part name) using fuzzy/NLP matching (part names aren't standardized). Pre-quote validation: when a quote is being prepared, flag if the part was recently installed on a linked job or is already on another open quote. Show warning, allow manual override with a reason logged for audit. Auto-link related jobs by customer + appliance + issue. 9. Analytics & Reporting Jobs by month, year-over-year comparison. Component usage: most-used parts, high-failure parts, seasonal demand. Repair trends: most common failures by appliance type, repeat-failure patterns, average repair time. Technician efficiency: completion time, time waiting on parts / approvals, quote approval turnaround. Supplier performance (see §6). Top clients.

LandingDashboardSuppliersAnalyticsInventoryJobsPurchaseOrdersLoginQuotes
Landing

Comments (0)

No comments yet. Be the first!

System Requirements

System Requirement Document
Page 1 of 6

System Requirements Document (SRD)

Project Name: mars-dashboard

1. Introduction

The mars-dashboard project aims to deliver a cutting-edge, AI-enabled service operations platform tailored for the GE Powerzone Service Operations & Supply Chain. This platform will streamline workflows, automate repetitive tasks, and provide intelligent insights to enhance operational efficiency.

The dashboard will serve as a unified interface for office staff, technicians, and owners, integrating seamlessly with ServiceM8 to ensure data synchronization and operational continuity.

2. System Overview

The mars-dashboard platform will act as a wrapper and automation layer over ServiceM8, providing enhanced functionality for job management, inventory tracking, supplier communication, and analytics. It will replace manual processes with automated workflows, reducing errors and saving time.

Key features include:

  • A unified operations dashboard for quick insights.
  • Automated work order ingestion using AI.
  • Inventory and parts tracking across warehouses and vans.
  • Smart follow-up automation for quotes and supplier communication.
  • Advanced analytics for operational performance and trends.
Page 2 of 6

3. Functional Requirements

As Admin:

  • I should be able to create, edit, and manage jobs.
  • I should be able to track inventory across warehouses and vans.
  • I should be able to automate supplier follow-ups.
  • I should be able to view analytics dashboards for revenue, technician efficiency, and supplier performance.

As Technician:

  • I should be able to view assigned jobs and report parts usage.
  • I should be able to log notes for jobs directly into the platform.

As Owner:

  • I should be able to access revenue and analytics dashboards.
  • I should be able to view top clients and job trends.

4. User Personas

Admin

  • Role: Office staff responsible for job creation, inventory management, and supplier communication.
  • Needs: Full access to all modules, including analytics and reporting.

Technician

  • Role: Field staff responsible for job execution and parts usage reporting.
  • Needs: Limited access to assigned jobs and inventory logging.
Page 3 of 6

Owner

  • Role: Business owner overseeing operations and performance.
  • Needs: Access to revenue and analytics dashboards.

5. Visuals Colors and Theme

Color Palette

ElementHex Code
Background#0F1923
Surface#1C2A3A
Text (Primary)#FFFFFF
Text (Muted/Labels)#8A9BB0
Accent#14B8A6
Muted Tones#566A7E

Typography

ElementSizeWeightColor
Logo App Name18px700#FFFFFF
Hero Headline40px800#FFFFFF
Feature Row Title15px600#FFFFFF
Metadata Sidebar Labels10px600#566A7E
Page 4 of 6

6. Signature Design Concept

Login Page Design

The homepage will feature a two-column layout with a dark theme, creating a sleek and professional appearance.

Left Column:

  • Logo Block: A 3D cube icon with the app name and subtitle.
  • Hero Section: A bold headline and descriptive subtitle introducing the platform.
  • Feature Rows: Four interactive cards highlighting key features (e.g., Smart Work Orders, Inventory Intelligence).

Right Column:

  • Login Panel: A clean and minimal login form with fields for email and password.
  • Demo Access Information: A section providing demo credentials for testing.

Interactivity:

  • Hover animations on feature rows.
  • Smooth transitions between sections.
  • Subtle glow effects on interactive elements.

7. Non-Functional Requirements

  • The platform must load within 3 seconds on standard broadband connections.
  • Ensure compatibility with modern browsers (Chrome, Firefox, Edge).
  • Maintain high security standards for user authentication and data storage.

8. Tech Stack

Page 5 of 6

Frontend

  • React for Web

Backend

  • Python
  • FastAPI

Database

  • MySQL or MariaDB (with Alembic for migrations)

AI Models

  • GPT 5.4 for user-friendly responses
  • Claude 4.6 Opas for text cleanup

AI Tools

  • Langchain
  • Litellm for LLM Routing

Orchestration

  • Docker
  • Kubernetes
Page 6 of 6

9. Assumptions and Constraints

  • ServiceM8 will remain the underlying data store and technician mobile app.
  • The platform will integrate with Gmail API for supplier communication.
  • Inventory tracking will require custom implementation due to ServiceM8 limitations.

10. Glossary

  • ServiceM8: A field service management tool used for job scheduling and technician coordination.
  • LLM: Large Language Model, used for AI-powered text processing.
  • PO: Purchase Order, a record of parts ordered from suppliers.

11. Updated Navigation

Main Pages:

  • Dashboard
  • Jobs
  • Quotes & Follow-Ups
  • Analytics
  • Settings

Inventory Sub-Pages:

  • Overview
  • Purchase Orders
  • Warehouse
  • Van Management
  • Parts Transfer
  • Suppliers
Landing design preview
Landing: View Platform Info
Login: Sign In
Dashboard: View Job Pipeline
Dashboard: View Alerts
Jobs: Create Job
Jobs: Edit Job Details
Jobs: Manage Job Status
Inventory: Track Stock
Inventory: Transfer to Van
PurchaseOrders: Create PO
Suppliers: Manage Follow-ups
Quotes: Send Quote
Quotes: Track Follow-up
Analytics: View Reports