LogoLogo
SentianceInsights-Control-TowerLegacy DocsImportant Security Notice
  • Introduction
  • Integrating the SDK
    • Getting Started
    • Android Quick Start
      • 1. Including the SDK
      • 2. Initialization
      • 3. User Creation
      • 4. Enabling Detections
      • 5. SDK Status Updates
      • 6. Permissions
      • 7. Additional Requirements
    • iOS Quick Start
      • 1. Including the SDK
        • Using CocoaPods
        • Using Carthage
        • Using Swift Package Manager
        • Manual Integration
      • 2. Project Settings
      • 3. Initialization
      • 4. User Creation
      • 5. Enabling Detections
      • 6. SDK Status Updates
      • 7. Permissions
      • 8. Additional Requirements
    • React Native Quick Start
      • 1. Including the SDK
      • 2. Configuration
      • 3. Initialization
      • 4. User Creation
      • 5. Enabling Detections
      • 6. SDK Status Updates
    • Flutter Quick Start
      • 1. Including the SDK
      • 2. Configuration
      • 3. Initialization
      • 4. User Creation
      • 5. Enabling Detections
      • 6. SDK Status Updates
    • What Comes After Integration
    • Integration (FAQ)
    • Detections (FAQ)
  • Sentiance Insights
    • Overview of Sentiance Insights
      • Driving Insights
        • Transports
        • Driving Events and Scores
        • Car Crashes
      • Mobility and Lifestyle Insights
        • Visit Essentials
        • User Segmentation
    • Engagement
      • User Adaptive Score
      • Streaks
      • Challenges
      • Reward System
      • Communication Campaign
      • Social Groups
        • Technical Details
    • Accessing Sentiance Insights
      • via On Device API
      • via Cloud API
      • via Firehose - Realtime Messages
      • via Offloads
  • FAQ
    • Security, Privacy and Terms of Service (FAQ)
  • Important topics
    • SDK
      • Appendix
        • Android
          • Android 10 Update Behavior
          • Android Battery Optimization
          • Artifacts & Dependencies
          • Manifest Permissions
          • Notification Management
          • Sample Notification
          • Supported API Levels
        • iOS
          • App Store Privacy Section
          • App Store Release
          • Apple Privacy Manifest
          • ARM Simulator Support
          • Dependencies
          • iOS 13 permission changes
          • Supported iOS Versions & Architectures
          • Swift Support
          • v5.x Framework Files
          • v6.x Framework Files
        • Controlled Detections
          • Automatic Detections
          • Automatic Detections with Forced Trips
          • Controlled Trips Only
          • Checking Trip Status
        • Control Sending Data
        • Custom User Metadata
        • Detecting Vehicle Crashes
        • Feature Production Readiness
        • Migration Guide
          • Android
          • iOS
          • React Native
          • Flutter
        • On-Device Features
        • React Native
        • SDK Initialization
        • User Access Token
        • User Creation
        • User Linking
        • Xamarin
      • API Reference
        • Android
          • AsyncInitializationError
          • AsyncInitializationResult
          • DateTime
          • DetectionStatus
          • DisableDetectionsError
          • DisableDetectionsResult
          • Driving Insights
            • CallWhileMovingEvent
            • DrivingInsight
            • DrivingInsightsApi
            • DrivingInsightsReadyListener
            • HarshDrivingEvent
              • Type
            • PhoneUsageEvent
            • SafetyScores
            • SafetyScoreRequestParameters
              • Builder
              • OccupantRoles
              • Period
              • TransportModes
            • SpeedingEvent
          • Smart Geofences
            • DetectionMode
            • SmartGeofence
            • SmartGeofenceApi
            • SmartGeofenceEvent
              • Type
            • SmartGeofenceEventListener
            • SmartGeofencesRefreshError
              • SmartGeofencesRefreshFailureReason
            • SmartGeofencesRefreshResult
          • EnableDetectionsError
            • EnableDetectionsFailureReason
          • EnableDetectionsResult
          • EventTimeline
            • EventType
            • TransportMode
            • Event
              • OffTheGridEvent
              • StationaryEvent
              • TransportEvent
              • UnknownEvent
            • EventTimelineUpdateListener
            • EventTimelineApi
            • OccupantRole
            • Venue
              • VenueType
              • VenueSignificance
          • Feedback
            • FeedbackApi
            • OccupantRoleFeedback
            • OccupantRoleFeedbackResult
          • GeoLocation
          • InitializationResult
            • InitializationFailureReason
          • InitState
          • MetaUserLinker
          • MetaUserLinkerAsync
          • MetaUserLinkerCallback
          • OnInitCallback
            • InitIssue
          • OnSdkStatusUpdateHandler
          • OnStartFinishedHandler
          • PendingOperation
            • OnSuccessListener
            • OnFailureListener
            • OnFailureListener
            • OnCompleteListener
          • ResetCallback
            • ResetCallback.ResetFailureReason
          • ResetError
            • ResetFailureReason
          • ResetResult
          • SdkConfig
            • LocationPermission
            • Builder
          • SdkException
          • SdkStatus
            • LocationSetting
            • Quota Status
            • StartStatus
          • SdkStatusUpdateListener
          • Sentiance
          • SentianceOptions
            • SentianceOptions.Builder
          • StartTripError
            • StartTripFailureReason
          • StartTripResult
          • StationaryInfo
          • StopTripError
            • StopTripFailureReason
          • StopTripResult
          • SubmitDetectionsCallback
          • SubmitDetectionsError
            • SubmitDetectionsFailureReason
          • SubmitDetectionsResult
          • Token
          • TokenResultCallback
          • TransmittableDataType
          • Transport Sessions
            • SensorDataChunk
            • TransportSession
            • TransportSessionApi
            • TransportSessionListener
          • Trip
            • StartTripCallback
            • StopTripCallback
            • TransportMode
            • TripTimeoutListener
            • TripType
          • TripInfo
          • UserAccessTokenError
            • UserAccessTokenFailureReason
          • UserActivity
          • UserActivityListener
          • UserActivityType
          • UserContext
            • Attribute
            • Segment
              • SegmentCategory
              • SegmentSubcategory
              • SegmentType
            • SemanticTime
          • UserContextApi
            • RequestUserContextFailureReason
            • RequestUserContextError
            • UserContextUpdateCriteria
            • UserContextUpdateListener
          • UserCreationError
            • UserCreationFailureReason
          • UserCreationOptions
            • UserCreationOptions.Builder
          • UserCreationResult
            • UserInfo
          • UserLinker
          • UserLinkerAsync
          • UserLinkerCallback
          • UserLinkingError
            • UserLinkingFailureReason
          • UserLinkingResult
          • VehicleCrashDetection
            • CrashDetectionApi
            • CrashDetectionState
            • VehicleCrashDiagnostic
            • VehicleCrashEvent
            • VehicleCrashDiagnosticListener
            • VehicleCrashListener
            • VehicleCrashSeverity
          • Waypoint
        • iOS
          • Detections
            • Enable Detections
            • Disable Detections
          • Driving Insights
            • SENTCallWhileMovingEvent
            • SENTDrivingInsights
            • SENTDrivingInsightsReadyDelegate
            • SENTHarshDrivingEvent
              • HarshDrivingEventType
            • SENTPhoneUsageEvent
            • SENTSpeedingEvent
            • SENTSafetyScores
            • SafetyScoreRequestParameters
              • SafetyScoreRequestOccupantRoleOption
              • SafetyScoreRequestPeriod
              • SafetyScoreRequestTransportModeOption
          • Event Timeline
            • EventTimelineDelegate
            • SENTOccupantRole
            • SENTTimelineEvent
              • SENTOffTheGridEvent
              • SENTStationaryEvent
              • SENTTransportEvent
              • SENTUnknownEvent
            • SENTTimelineEventType
            • SENTTimelineTransportMode
            • SENTVenue
            • SENTVenueSignificance
            • SENTVenueType
          • Feedback
            • SENTFeedback
            • SENTOccupantRoleFeedback
            • SENTOccupantRoleFeedbackResult
          • SENTCompletionHandlers
          • SENTConfig
          • SENTDate
          • SENTGeolocation
          • SENTAsyncInitializationCompletionHandler
          • SENTAsyncInitializationError
          • SENTAsyncInitializationResult
          • Sentiance
          • SENTInitializationResult
          • SENTOptions
            • SENTOptionsInitPurpose
          • SENTPublicDefinitions
          • SENTSDKStatus
          • SENTToken
          • SENTTransmittableDataType
          • SENTUserActivity
          • SENTVehicleCrashDetectionState
          • SENTVehicleCrashDiagnostic
          • SENTVehicleCrashEvent
            • SENTVehicleCrashSeverity
          • SENTWaypoint
          • Smart Geofences
            • SENTSmartGeofencesRefreshHandler
            • SmartGeofenceDetectionMode
            • SmartGeofencesRefreshError
              • SmartGeofencesRefreshFailureReason
            • SmartGeofencesRefreshResult
            • SmartGeofence
            • SmartGeofenceEvent
              • SmartGeofenceEventType
            • SmartGeofenceEventDelegate
          • Transport Sessions
            • SENTAccelerometerDataIterator
            • SENTLocationDataIterator
            • SENTSensorDataChunk
            • SENTTransportSession
          • User Context
            • SENTAttribute
            • SENTRequestUserContextCompletionHandler
            • SENTRequestUserContextError
            • SENTRequestUserContextFailureReason
            • SENTSegment
              • SENTSegmentCategory
              • SENTSegmentSubCategory
              • SENTSegmentType
            • SENTSemanticTime
            • SENTUserContext
            • SENTUserContextDelegate
            • SENTUserContextUpdateCriteria
          • User Creation & Linking
            • SENTUserInfo
            • User Creation
              • SENTUserCreationResult
              • SENTUserCreationFailureReason
              • SENTUserCreationError
              • SENTUserCreationCompletionHandler
              • SENTUserCreationOptions
            • User Linking
              • SENTNoOpUserLinker
              • SENTUserLinkingResult
              • SENTUserLinkingFailureReason
              • SENTUserLinkingError
              • SENTUserLinkingCompletionHandler
              • SENTUserLinker
        • React Native
          • core
            • Definitions
            • Examples
          • crash-detection
            • Definitions
            • Examples
          • driving-insights
            • Definitions
            • Examples
          • smart-geofences
            • Definitions
            • Examples
          • event-timeline
            • Definitions
            • Examples
          • legacy
            • Definitions
            • Examples
          • user-context
            • Definitions
            • Examples
        • Flutter
      • Battery Optimization on Android
      • How To
        • Check the Location Permissions
        • Utilize the Event Timeline API
        • Utilize the Driving Insights API
        • Utilize the User Context API
        • Utilize the Smart Geofences API
      • Troubleshooting
        • Android
        • iOS
      • Changelog
        • Android
        • iOS
        • React Native
        • Flutter
    • Authentication and Authorization
    • User Creation (via Authentication Code)
    • User Deletion
    • PlayStore Location Access Review
    • Privacy Report & Dashboard
    • Crash Detection
    • Important Security Notice
    • Injecting Fake Data
    • Custom Aggregation For Analytics
    • Merging Scores for Motorcycles and Cars
  • Links
    • SDK Standard License
    • Insights-by-Sentiance Application
    • Insights-by-Sentiance Privacy Policy
    • Journeys License
    • Technical & Organizational Measures
Powered by GitBook
On this page
  • Sub Streaks
  • Streaks Context
  • Example Wireframe
  1. Sentiance Insights
  2. Engagement

Streaks

Streaks are a powerful feature designed to motivate users by encouraging consistent improvement in their driving or riding behavior. They leverage the psychology of habit formation by rewarding users for maintaining or improving their performance over consecutive trips or time periods. There are two types of streaks in the Engagement Module:

  • Strict Streaks In a Strict Streak, users must maintain their scores above a predefined threshold to continue the streak. This threshold can apply to trip scores, or aggregated scores over a time period (usually DAY by DAY). The idea is to challenge users to consistently meet a minimum standard of safe and efficient driving or riding. If the user’s score falls below the threshold at any point, the streak ends and it will start over. This type of streak is effective for reinforcing a baseline level of behavior.

  • Self-Competing Streaks Self-Competing Streaks encourage users to compete against themselves by striving for a streak of continuously improving scores. Unlike Strict Streaks, which have only a fixed threshold, Self-Competing Streaks require the user to keep the scores above the threshold while also surpassing their previous performance with each successive trip or period. This approach taps into the motivation to achieve personal bests and fosters ongoing improvement by rewarding users for incremental progress.

Both types of streaks are designed to keep users engaged and motivated, making the pursuit of safer and more efficient driving or riding behaviour a rewarding and continuous process.

Streaks are configurable and can be evaluated either on a TRIP by TRIP basis or on a DAY by DAY basis:

  • TRIP variant will evaluate the streak state after each trip

  • DAY variant will evaluate streaks state at the end of the day using the average score of all the trips in that time frame

Examples of customisable streaks include:

  • Excellent Trips Streak (default behavior): Tracks the number of consecutive trips rated as 'Excellent' (e.g >90)

  • Excellent Days Streak: Tracks the number of consecutive days where the average score was 'Excellent' (e.g >90)

  • Good Trips Streak: Tracks the number of consecutive trips rated as 'good'

  • Action Consistency Streak: Monitors the maximum number of times a user consecutively performs a specific positive action.

GQL Definition: UserEngagementStreaks

GQL Path for current streaks: user.engagement.streaks.current.slice.name

GQL Path for best streaks: user.engagement.streaks.best.slice.name

query getStreaks($user_id: String!) {
  user(user_id: $user_id) {
    user_id
    engagement {
      streaks(transport_mode: CAR, variant: STREAK_VARIANT_DAY, type: STREAK_TYPE_STRICT) {
        
        # provides the best streaks 
	best {
	  slice {
	    name # name of the score the streak is tracking. Ex: OVERALL_SCORE, LEGAL_SCORE
	    value # value of the streak
	  }
	}
	
	# provides the current on-going streaks
	current {
	  slice {
	    name # name of the score the streak is tracking. Ex: OVERALL_SCORE, LEGAL_SCORE
	    value # value of the streak
	  }
        }
      }
    } 
  }
}
      
 

Sub Streaks

In addition to recognising overall safe driving and riding behaviour, the "Streaks" feature offers a variety of sub-streaks designed to acknowledge and promote specific aspects of user conduct.

Streaks
Comment

FOCUS_SCORE

Acknowledges periods of attentive driving without active phone handling

CALL_WHILE_MOVING_SCORE

Identifies instances where drivers avoid making calls while moving over a speed of 15 km/h

ATTENTION_SCORE

Acknowledges periods of attentive driving without distractions like hands free calling, handheld

calling, phone handling or screen use

LEGAL_SCORE

Rewards adherence to speed limits

MFFS_SCORE

Variation of LEGAL_SCORE that excludes congested roads

HARSH_MOVEMENT_SCORE

Recognises sequences of smooth driving, emphasising gentle acceleration and braking

SMOOTH_SCORE

Similar to HARSH_MOVEMENT_SCORE but also takes into account harsh turning events

Streaks Context

Streaks can also be enriched with a context that gives more insights into how the streak progressed towards the current state.

query getStreaks($user_id: String!) {
  user(user_id: $user_id) {
    user_id
    engagement {
      streaks(transport_mode: CAR, variant: STREAK_VARIANT_DAY, type: STREAK_TYPE_STRICT) {
        	
	# provides the current on-going streaks
	current {
	  slice {
	    name # name of the score the streak is tracking. Ex: OVERALL_SCORE, LEGAL_SCORE
	    value # value of the streak
	  }
	
  	  context {
	    scores_trend { # trend represing how your last trip influenced you average scores for the DAY
	      slice {
		key
		value {
		  trend
          	  start_datetime
          	  end_datetime
		}
	      }
	    }
	    streak_thresholds { # as defined in Streaks configuration
	      slice {
		name
		value
	      }
	    }
	    daily_avg_scores { # average scores for the past 7 days
	      slice {
		 key
		 value {
		   slice {
		     name
		     value
	     	   }
	         }
	      }
	    }
	    today_avg_scores { # today's average scores
	      slice {
		name
		value
	      }
	    }
	  }
        }
      }
    } 
  }
}

Example Wireframe


Additional helpful links:

PreviousUser Adaptive ScoreNextChallenges

Last updated 7 months ago

GQL definition

UserEngagementStreaks