> ## Documentation Index
> Fetch the complete documentation index at: https://onlook.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Attention scoring

> How OnlookAI computes a 0–100 attention score per session.

## Overview

The scoring engine processes a rolling window of attention signals and outputs a single score between 0 and 100. The score is updated in real time as new signals arrive.

## Signal types

| Signal             | Effect                      | Points |
| ------------------ | --------------------------- | ------ |
| `TAB_HIDDEN`       | User switched away from tab | −20    |
| `WINDOW_BLUR`      | App window lost focus       | −20    |
| `IDLE`             | No input for 30s            | −20    |
| `NO_FACE`          | Face not detected in camera | −25    |
| `TAB_VISIBLE`      | User returned to tab        | +10    |
| `WINDOW_FOCUS`     | App window regained focus   | +10    |
| `ACTIVITY_RESUMED` | Input detected after idle   | +10    |
| `FACE_DETECTED`    | Face detected in camera     | +10    |

## Rolling window

Scores are computed over the last **10 events** using a ring buffer. This makes the score responsive to recent behavior without overreacting to momentary distractions.

## Thresholds

The default intervention threshold is **40**. You can configure this per session:

```ts theme={null}
const session = track(userId, { threshold: 60 })
```

When the score drops below the threshold and no intervention is currently active, the `drop` event fires.

## Score ranges

| Range  | Meaning                    |
| ------ | -------------------------- |
| 75–100 | High attention             |
| 50–74  | Moderate — monitor         |
| 0–49   | Low — consider intervening |
