Planara Intelligence Layer
Operations

Dashboard Configuration

Configure which widgets appear on the technician dashboard, their data sources, labels, and stage layouts.

What this page does

The Dashboard page controls the technician frontend's widget layout and behavior. Every widget on the technician dashboard -- from AI Assessment to Telemetry to Job Queue -- is configurable here. You control which widgets are enabled, what data sources they use, what roles can see them, and how they're arranged in each workflow stage.

Changes made here are stored in the tenant's dashboard configuration and take effect immediately on the technician frontend.

Widget management

Each widget has a configuration card with the following fields:

FieldDescription
EnabledToggle the widget on or off. Disabled widgets do not appear on the technician frontend and their API endpoints return empty responses.
LabelDisplay name shown in the frontend. Override the default (e.g., rename "AI Assessment" to "Diagnosis" for your team).
Data SourceWhere this widget gets its data. See data source types below.
IntegrationWhen data source is integration, select which configured integration provides the data.
Role VisibilityWhich roles can see this widget. Empty means visible to all roles.

Available widgets

Widget IDDefault LabelDefault SourceDescription
assessmentAI AssessmentIntelligenceAI-generated summary, confidence badge, diagnosis cards
procedureProcedureIntelligenceStep-by-step instructions with safety refs and CKL refs
safetySafety WarningsIntelligenceANSI Z535 severity-tagged warnings with citations
partsPartsIntelligenceParts list with P/Ns, quantities, verification flags
specificationsSpecificationsIntelligenceKey-value specification pairs from documentation
citationsCitationsIntelligenceSource document references and page images
queueJob QueueMockWork order queue from DMS
job_summaryJob SummaryMockWork order details and Three C's close-out
fault_codesFault CodesMockFault codes from DMS or telemetry
telemetryTelemetryNone (disabled)Real-time engine event data
vitalsEngine VitalsNone (disabled)Current engine readings (RPM, temp, pressure)
customerCustomerNone (disabled)Customer info and service history

Data source types

SourceLabelDescription
intelligenceIntelligenceData from the Planara intelligence pipeline. The widget calls a Widget API endpoint that projects from a stored query response.
integrationIntegrationData from an external system (DMS, telemetry, ERP) via a configured integration. When selected, you must also choose which integration provides the data.
mockMockDemo data served from built-in mock endpoints. Useful for demos and development before real integrations are connected.
noneDisabledNo data source. The widget is hidden regardless of the enabled toggle. Use this to park widgets you plan to activate later.

How data sources flow

Dashboard Config (tenant configuration)

    ├── intelligence → /v1/widgets/{ns}/{widget}?session_id=...
    │                  (reads from stored query responses)

    ├── integration  → /v1/widgets/{ns}/{widget}
    │                  (dispatches to configured adapter)

    ├── mock         → /v1/widgets/{ns}/{widget}
    │                  (returns built-in demo data)

    └── none         → widget hidden, endpoint returns empty

Stage layout editor

The technician frontend uses a stage-based workflow: queue, assess, repair, verify, close. Each stage has a layout configuration that controls which widget is the hero (full-height left panel) and which widgets appear in the scrollable right rail.

Layout structure

FieldDescription
HeroThe primary widget that fills the left panel. One per stage.
RailOrdered list of secondary widgets in the right scrollable column.
Auto-fetchWhen enabled, the stage automatically triggers a query when the user navigates to it (e.g., the assess stage fetches an AI assessment as soon as a work order is selected).

Default stage layouts

StageHeroRailAuto-fetch
QueueJob QueueJob SummaryNo
AssessAI AssessmentFault Codes, Customer, VitalsYes
RepairProcedureSafety, Parts, Telemetry, SpecificationsNo
VerifyJob SummarySafety, CitationsNo

Tapping a rail widget on the technician frontend promotes it to the hero position. The previous hero moves into the rail. This is a user interaction -- it does not change the configured default.

Role visibility

Use the Role Visibility field on each widget to control which roles can see it. This works alongside the role-level settings on the Roles page.

  • Empty list -- widget is visible to all roles
  • Specific roles (e.g., ["technician"]) -- widget is only visible to users with one of those roles

Examples:

  • Fault Codes widget with ["technician"] -- owners do not see fault code data
  • Telemetry widget with ["technician"] -- only technicians see real-time engine telemetry
  • AI Assessment with [] -- visible to everyone

The technician frontend calls GET /v1/config/{namespace}/dashboard?role={role} at load time. The API filters the widget list based on role visibility before returning it, so the frontend never receives widgets the user should not see.

How changes propagate

  1. You update a widget configuration on this page and save
  2. The backoffice calls PUT /v1/config/{namespace}/dashboard with the new config
  3. The config is persisted to the tenant's dashboard configuration
  4. The technician frontend reads the config on next page load via GET /v1/config/{namespace}/dashboard
  5. Widgets render (or hide) based on the new configuration

There is no deploy step. Changes are live as soon as the technician refreshes or navigates.

API reference

MethodPathDescription
GET/v1/config/{namespace}/dashboardRead dashboard config, optionally filtered by ?role=
PUT/v1/config/{namespace}/dashboardReplace dashboard config (widgets and/or stages)

GET response shape

{
  "widgets": [
    {
      "id": "assessment",
      "enabled": true,
      "label": "AI Assessment",
      "data_source": "intelligence",
      "role_visibility": [],
      "settings": {}
    }
  ],
  "stages": {
    "assess": {
      "hero": "assessment",
      "rail": ["fault_codes", "customer", "vitals"],
      "auto_fetch": true
    }
  }
}

PUT request body

{
  "widgets": [
    {
      "id": "telemetry",
      "enabled": true,
      "data_source": "integration",
      "integration_id": "telemetry-001",
      "label": "Live Telemetry",
      "role_visibility": ["technician"],
      "settings": {}
    }
  ],
  "stages": {
    "assess": {
      "hero": "assessment",
      "rail": ["telemetry", "fault_codes", "customer"],
      "auto_fetch": true
    }
  }
}

Multi-procedure assessment

The assess stage supports confidence-driven hero selection. When the pipeline identifies multiple plausible diagnoses for a query (e.g., an overheating complaint that could be thermostat, water pump, or sensor-related), the assessment hero displays each as a tappable diagnosis card with:

  • Procedure title and confidence score
  • Key differentiating detail (why this diagnosis vs. the others)
  • Tap action that loads the corresponding procedure into the repair stage hero

This replaces the previous single-diagnosis model. The dashboard configuration controls which diagnoses appear (confidence threshold) and whether the assess stage auto-fetches multiple procedures or waits for user interaction.

Multi-tenant frontend routing

The technician frontend supports multi-tenant routing via namespace URL segments: /{namespace}/. For example, /yamaha/ and /honda-8/ load different configurations, documents, and branding. The namespace is extracted from the URL path and passed to all API calls.

Dashboard configuration is fully isolated per namespace -- widget layout, data sources, stage ordering, and role visibility are all tenant-specific.