{
  "title": "Email frequency capping: synthetic recipient example",
  "calculatedOn": "2026-10-11",
  "timezone": "Europe/Oslo",
  "source": "SoftwareInspect editorial calculation; invented inputs, not customer data",
  "method": {
    "marketingCap": 2,
    "rollingWindowHours": 24,
    "boundary": "Sends exactly 24 hours old are expired",
    "processing": "Chronological; sequential; only sent marketing messages count",
    "receipt": "Exempt from count; no change to purchase eligibility in this isolated frequency test",
    "cartPriority": "Cart intent available at hour 1; hold newsletter-1 and browse candidates, permanently; no rescheduling"
  },
  "limitations": [
    "One synthetic recipient and eight candidates",
    "Not a live product test or conversion benchmark",
    "No inbox delivery measurement, concurrency or integration latency",
    "Real purchase state should separately stop acquisition reminders"
  ],
  "candidates": [
    {
      "hour": 0,
      "id": "welcome",
      "label": "Welcome offer",
      "type": "marketing"
    },
    {
      "hour": 2,
      "id": "newsletter-1",
      "label": "Newsletter",
      "type": "marketing"
    },
    {
      "hour": 3,
      "id": "browse",
      "label": "Browse reminder",
      "type": "marketing"
    },
    {
      "hour": 5,
      "id": "cart-1",
      "label": "First cart reminder",
      "type": "marketing"
    },
    {
      "hour": 6,
      "id": "receipt",
      "label": "Order receipt",
      "type": "transactional"
    },
    {
      "hour": 18,
      "id": "cart-2",
      "label": "Cart follow-up",
      "type": "marketing"
    },
    {
      "hour": 25,
      "id": "newsletter-2",
      "label": "Newsletter",
      "type": "marketing"
    },
    {
      "hour": 26,
      "id": "promotion",
      "label": "General promotion",
      "type": "marketing"
    }
  ],
  "capOnly": {
    "marketingSends": 4,
    "totalSends": 5,
    "decisions": [
      {
        "hour": 0,
        "id": "welcome",
        "label": "Welcome offer",
        "type": "marketing",
        "decision": "send"
      },
      {
        "hour": 2,
        "id": "newsletter-1",
        "label": "Newsletter",
        "type": "marketing",
        "decision": "send"
      },
      {
        "hour": 3,
        "id": "browse",
        "label": "Browse reminder",
        "type": "marketing",
        "decision": "skip: cap reached"
      },
      {
        "hour": 5,
        "id": "cart-1",
        "label": "First cart reminder",
        "type": "marketing",
        "decision": "skip: cap reached"
      },
      {
        "hour": 6,
        "id": "receipt",
        "label": "Order receipt",
        "type": "transactional",
        "decision": "send outside cap"
      },
      {
        "hour": 18,
        "id": "cart-2",
        "label": "Cart follow-up",
        "type": "marketing",
        "decision": "skip: cap reached"
      },
      {
        "hour": 25,
        "id": "newsletter-2",
        "label": "Newsletter",
        "type": "marketing",
        "decision": "send"
      },
      {
        "hour": 26,
        "id": "promotion",
        "label": "General promotion",
        "type": "marketing",
        "decision": "send"
      }
    ]
  },
  "capPlusPriority": {
    "marketingSends": 3,
    "totalSends": 4,
    "decisions": [
      {
        "hour": 0,
        "id": "welcome",
        "label": "Welcome offer",
        "type": "marketing",
        "decision": "send"
      },
      {
        "hour": 2,
        "id": "newsletter-1",
        "label": "Newsletter",
        "type": "marketing",
        "decision": "hold for cart intent"
      },
      {
        "hour": 3,
        "id": "browse",
        "label": "Browse reminder",
        "type": "marketing",
        "decision": "hold for cart intent"
      },
      {
        "hour": 5,
        "id": "cart-1",
        "label": "First cart reminder",
        "type": "marketing",
        "decision": "send"
      },
      {
        "hour": 6,
        "id": "receipt",
        "label": "Order receipt",
        "type": "transactional",
        "decision": "send outside cap"
      },
      {
        "hour": 18,
        "id": "cart-2",
        "label": "Cart follow-up",
        "type": "marketing",
        "decision": "skip: cap reached"
      },
      {
        "hour": 25,
        "id": "newsletter-2",
        "label": "Newsletter",
        "type": "marketing",
        "decision": "send"
      },
      {
        "hour": 26,
        "id": "promotion",
        "label": "General promotion",
        "type": "marketing",
        "decision": "skip: cap reached"
      }
    ]
  },
  "reproductionCode": "def calculate(candidates, prioritize_cart):\n    sent_hours = []\n    decisions = []\n    for row in candidates:\n        hour = row[\"hour\"]\n        if row[\"type\"] == \"transactional\":\n            decision = \"send outside cap\"\n        elif prioritize_cart and row[\"id\"] in (\"newsletter-1\", \"browse\"):\n            decision = \"hold for cart intent\"\n        else:\n            recent = [h for h in sent_hours if 0 <= hour - h < 24]\n            if len(recent) >= 2:\n                decision = \"skip: cap reached\"\n            else:\n                decision = \"send\"\n                sent_hours.append(hour)\n        decisions.append({**row, \"decision\": decision})\n    return {\"marketingSends\": len(sent_hours), \"totalSends\": sum(r[\"decision\"].startswith(\"send\") for r in decisions), \"decisions\": decisions}\n\n# Supply the candidates array above, then call calculate(candidates, False) and calculate(candidates, True).\n"
}
