{
  "schemaVersion": 1,
  "slug": "email-time-calculator",
  "category": "productivity",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "e016d73a0724963e9655e9c81c0d3fe69422405477164664f6a787124eb8b776",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/email-time-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "H_y = n × m × f × d ÷ 60",
    "vars": [
      [
        "n",
        "Emails per day"
      ],
      [
        "m",
        "Minutes per email"
      ],
      [
        "f",
        "Checking-frequency factor: 0.8–1.35"
      ],
      [
        "d",
        "Workdays per year"
      ],
      [
        "H_y",
        "Hours spent per year"
      ]
    ],
    "note": "Frequency multipliers (1.35, 1.15, 1, 0.88, 0.8) and 20% batching reduction are illustrative assumptions, not empirical constants. Salary value = annual salary ÷ 2,080 × modeled hours; benefits and overhead excluded."
  },
  "externalEvidence": {
    "reviewedAt": "2026-10-12",
    "sources": [
      {
        "name": "GAO — Schedule estimating, contingency and risk",
        "url": "https://www.gao.gov/products/gao-16-89g"
      }
    ],
    "referenceRole": "context",
    "implementationHash": "e016d73a0724963e9655e9c81c0d3fe69422405477164664f6a787124eb8b776",
    "basis": "H_y = n × m × f × d ÷ 60",
    "limitations": "The references provide context and limitations. They do not validate this page’s illustrative multipliers, lookup values or predictions."
  },
  "contract": {
    "compute": "const F = { continuous:1.35, hourly:1.15, fewTimes:1, twice:0.88, once:0.8 }; const minutesPerDay = emailsPerDay*minutesPerEmail*(F[checkFrequency] || 1); const hoursPerYear = minutesPerDay*workdaysPerYear/60; const workYear = 8; const percent = hoursPerYear/(workdaysPerYear*workYear)*100; const salaryCost = annualSalary/2080*hoursPerYear; const saved = minutesPerDay*0.2*workdaysPerYear/60; return { minutesPerDay, hoursPerYear, workdaysPerYear_: hoursPerYear/workYear, percentOfWorkYear: percent, salaryCost, savedByBatching: saved };",
    "inputs": [
      {
        "name": "emailsPerDay",
        "type": "number",
        "default": 120,
        "min": 0,
        "max": 2000,
        "step": 5,
        "slider": true
      },
      {
        "name": "minutesPerEmail",
        "type": "number",
        "default": 2,
        "min": 0.1,
        "max": 60,
        "step": 0.1,
        "slider": true
      },
      {
        "name": "workdaysPerYear",
        "type": "number",
        "default": 230,
        "min": 1,
        "max": 365,
        "step": 1,
        "slider": true
      },
      {
        "name": "checkFrequency",
        "type": "select",
        "default": "hourly",
        "options": [
          {
            "value": "continuous"
          },
          {
            "value": "hourly"
          },
          {
            "value": "fewTimes"
          },
          {
            "value": "twice"
          },
          {
            "value": "once"
          }
        ]
      },
      {
        "name": "annualSalary",
        "type": "number",
        "default": 85000,
        "min": 0,
        "max": 2000000,
        "step": 1000
      }
    ],
    "outputs": [
      {
        "name": "minutesPerDay",
        "precision": 0,
        "unit": "min"
      },
      {
        "name": "hoursPerYear",
        "precision": 1,
        "unit": "h"
      },
      {
        "name": "workdaysPerYear_",
        "precision": 1,
        "unit": "days"
      },
      {
        "name": "percentOfWorkYear",
        "precision": 1,
        "unit": "%"
      },
      {
        "name": "salaryCost",
        "precision": 0,
        "unit": "$"
      },
      {
        "name": "savedByBatching",
        "precision": 1,
        "unit": "h"
      }
    ],
    "interpret": null
  }
}
