# Separate help searches with no results from searches with no click

Use search-event denominators without turning clicks or views into resolved tasks.

## Classify one search event at a time

This original six-event log stores result count and whether a click was observed. Zero results is one class. With results, clicked=false is no-click and clicked=null is unknown click evidence. The no-click fraction uses every result-bearing event as its stated denominator; unknown clicks remain separately reported. This is a sample log, not Asteratek analytics.

Six complete synthetic search events

| Event | Result count | Click observed | Class |
| --- | --- | --- | --- |
| S1 | 0 | No | Zero results |
| S2 | 0 | No | Zero results |
| S3 | 2 | No | No click |
| S4 | 1 | No | No click |
| S5 | 3 | No | No click |
| S6 | 2 | Yes | Clicked |

## Keep both denominators beside the counts

Zero-result searches are 2/6. Three of the four result-bearing searches have no click: 3/4. There is one clicked search. None of these counts establishes that an answer worked, why a reader left or whether the search came from Google.

1. Count unique recorded events
2. Separate zero-result events
3. Classify clicks only with evidence
4. Report unknowns and denominators

Unknown results or click evidence is not silently counted as success or failure.

S3’s click evidence becomes null. Is the no-click count still three?

No. Two no-click events remain, one is unknown-click, and one is clicked. The stated result-bearing denominator remains four, so report 2/4 plus one unknown-click event.

## Prepare a search-gap worksheet

The complete JSON material includes the baseline and changed-click case. Use the table/Markdown sheet to annotate a later observed export, retaining source window, event grain and unavailable fields. Do not paste customer query text into a public sample.

Results must be a whole count 0–1,000 or null; click evidence is true, false or null. A clicked zero-result event contradicts this contract and is rejected. A zero result-bearing denominator has no percentage. Repeated IDs or more than 30 events are rejected.

A zero-result gap may need a reader-permission check before new content is commissioned. Use this worksheet to prepare a search-analysis brief; measure actual task outcomes separately.

## Complete local records and trace

```json
{
  "issuer": "Astera Technology",
  "resource": "ops-help-search-gap-classification",
  "locale": "en",
  "contract": "This original six-event log stores result count and whether a click was observed. Zero results is one class. With results, clicked=false is no-click and clicked=null is unknown click evidence. The no-click fraction uses every result-bearing event as its stated denominator; unknown clicks remain separately reported. This is a sample log, not Asteratek analytics.",
  "input": {
    "events": [
      {
        "id": "S1",
        "results": 0,
        "clicked": false
      },
      {
        "id": "S2",
        "results": 0,
        "clicked": false
      },
      {
        "id": "S3",
        "results": 2,
        "clicked": false
      },
      {
        "id": "S4",
        "results": 1,
        "clicked": false
      },
      {
        "id": "S5",
        "results": 3,
        "clicked": false
      },
      {
        "id": "S6",
        "results": 2,
        "clicked": true
      }
    ]
  },
  "output": {
    "ok": true,
    "state": "complete",
    "result": {
      "events": 6,
      "withResults": 4,
      "counts": {
        "zero-results": 2,
        "no-click": 3,
        "clicked": 1,
        "unknown-click": 0,
        "unknown-results": 0
      },
      "zeroResultFraction": [
        2,
        6
      ],
      "noClickAmongWithResults": [
        3,
        4
      ]
    },
    "trace": [
      {
        "id": "S1",
        "decision": "zero-results"
      },
      {
        "id": "S2",
        "decision": "zero-results"
      },
      {
        "id": "S3",
        "decision": "no-click"
      },
      {
        "id": "S4",
        "decision": "no-click"
      },
      {
        "id": "S5",
        "decision": "no-click"
      },
      {
        "id": "S6",
        "decision": "clicked"
      }
    ]
  },
  "verificationCases": [
    {
      "name": "baseline",
      "input": {
        "events": [
          {
            "id": "S1",
            "results": 0,
            "clicked": false
          },
          {
            "id": "S2",
            "results": 0,
            "clicked": false
          },
          {
            "id": "S3",
            "results": 2,
            "clicked": false
          },
          {
            "id": "S4",
            "results": 1,
            "clicked": false
          },
          {
            "id": "S5",
            "results": 3,
            "clicked": false
          },
          {
            "id": "S6",
            "results": 2,
            "clicked": true
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "complete",
        "result": {
          "events": 6,
          "withResults": 4,
          "counts": {
            "zero-results": 2,
            "no-click": 3,
            "clicked": 1,
            "unknown-click": 0,
            "unknown-results": 0
          },
          "zeroResultFraction": [
            2,
            6
          ],
          "noClickAmongWithResults": [
            3,
            4
          ]
        }
      }
    },
    {
      "name": "material-edit",
      "input": {
        "events": [
          {
            "id": "S1",
            "results": 0,
            "clicked": false
          },
          {
            "id": "S2",
            "results": 0,
            "clicked": false
          },
          {
            "id": "S3",
            "results": 2,
            "clicked": true
          },
          {
            "id": "S4",
            "results": 1,
            "clicked": false
          },
          {
            "id": "S5",
            "results": 3,
            "clicked": false
          },
          {
            "id": "S6",
            "results": 2,
            "clicked": true
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "complete",
        "result": {
          "events": 6,
          "withResults": 4,
          "counts": {
            "zero-results": 2,
            "no-click": 2,
            "clicked": 2,
            "unknown-click": 0,
            "unknown-results": 0
          },
          "zeroResultFraction": [
            2,
            6
          ],
          "noClickAmongWithResults": [
            2,
            4
          ]
        }
      }
    },
    {
      "name": "fresh-boundary",
      "input": {
        "events": [
          {
            "id": "S1",
            "results": 0,
            "clicked": false
          },
          {
            "id": "S2",
            "results": 0,
            "clicked": false
          },
          {
            "id": "S3",
            "results": 2,
            "clicked": null
          },
          {
            "id": "S4",
            "results": 1,
            "clicked": false
          },
          {
            "id": "S5",
            "results": 3,
            "clicked": false
          },
          {
            "id": "S6",
            "results": 2,
            "clicked": true
          }
        ]
      },
      "expected": {
        "ok": true,
        "state": "unknown",
        "result": {
          "events": 6,
          "withResults": 4,
          "counts": {
            "zero-results": 2,
            "no-click": 2,
            "clicked": 1,
            "unknown-click": 1,
            "unknown-results": 0
          },
          "zeroResultFraction": [
            2,
            6
          ],
          "noClickAmongWithResults": [
            2,
            4
          ]
        }
      }
    }
  ],
  "meaningOfNull": "Unknown or no established value for the field; inspect its specific trace.",
  "businessSideEffects": false
}
```
