Skip to main content
The TypeScript SDK collects telemetry to help us improve evaluator quality, identify edge cases, and optimize performance.

What we collect

Telemetry is enabled by default and sends anonymous performance and metadata:
  • Performance metrics (latency, token usage)
  • Metadata (evaluator type, grade, SDK version)
Input text is not collected by default. You can opt in via recordInputs: true — see Enable input text collection below.
We never collect your API keys — only an anonymous identifier is used.

Example telemetry event

{
  "timestamp": "2026-02-05T19:30:00.000Z",
  "sdk_version": "0.1.0",
  "evaluator_type": "vocabulary",
  "grade": "3",
  "status": "success",
  "latency_ms": 3500,
  "text_length_chars": 456,
  "provider": "openai:gpt-4o-2024-11-20 + google:gemini-2.5-pro",
  "token_usage": {
    "input_tokens": 650,
    "output_tokens": 350
  },
  "metadata": {
    "stage_details": [
      {
        "stage": "background_knowledge",
        "provider": "openai:gpt-4o-2024-11-20",
        "latency_ms": 1200,
        "token_usage": {
          "input_tokens": 250,
          "output_tokens": 150
        }
      },
      {
        "stage": "complexity_evaluation",
        "provider": "google:gemini-2.5-pro",
        "latency_ms": 2300,
        "token_usage": {
          "input_tokens": 400,
          "output_tokens": 200
        }
      }
    ]
  }
}

Field reference

FieldDescription
timestampISO 8601 timestamp when evaluation started
sdk_versionVersion of the SDK (e.g., "0.1.0")
evaluator_typeWhich evaluator ran (e.g., "vocabulary", "sentence-structure")
gradeGrade level evaluated (e.g., "5", "K")
statusEvaluation outcome: "success" or "error"
error_codeError type if status is "error" (e.g., "Error", "TypeError")
latency_msTotal evaluation time in milliseconds
text_length_charsLength of input text in characters
providerLLM provider(s) used (e.g., "openai:gpt-4o", "google:gemini-2.5-pro")
token_usageTotal tokens consumed (input and output)
input_textThe text being evaluated — only included if recordInputs: true
metadata.stage_detailsPer-stage breakdown for multi-stage evaluators (optional)

Configuration

Default (anonymous)

Telemetry is on by default with no configuration required:
const evaluator = new VocabularyEvaluator({
  googleApiKey: process.env.GOOGLE_API_KEY!,
  openaiApiKey: process.env.OPENAI_API_KEY!,
  // telemetry: true (default — anonymous)
});

Partner with us (authenticated)

Provide a partner key to help us support your specific use case and collaborate more directly:
const evaluator = new VocabularyEvaluator({
  googleApiKey: process.env.GOOGLE_API_KEY!,
  openaiApiKey: process.env.OPENAI_API_KEY!,
  partnerKey: process.env.LEARNING_COMMONS_PARTNER_KEY!, // Contact us for a key
});
Reach out to get a partner key ↗

Disable telemetry completely

const evaluator = new VocabularyEvaluator({
  googleApiKey: process.env.GOOGLE_API_KEY!,
  openaiApiKey: process.env.OPENAI_API_KEY!,
  telemetry: false, // No data sent
});

Enable input text collection

const evaluator = new VocabularyEvaluator({
  googleApiKey: process.env.GOOGLE_API_KEY!,
  openaiApiKey: process.env.OPENAI_API_KEY!,
  telemetry: {
    enabled: true,
    recordInputs: true, // Also send input text with telemetry
  },
});