{
  "generated": "2026-09-09",
  "campaign": "Trade up to Meridian Pro",
  "brief": "data/brief.json",
  "window": "November 3 to December 19, 2026",
  "method": "Every piece is read as rendered text, tags and attributes removed, whitespace collapsed. A fact passes only when the exact string from the brief is present in that text, so a piece that paraphrases the offer fails even though it reads fine.",
  "counts": {
    "pieces": 6,
    "facts": 10,
    "factChecks": 50,
    "factChecksPassed": 50,
    "factOccurrences": 92,
    "forbiddenClaims": 15,
    "forbiddenHits": 0,
    "trackingChecks": 6,
    "piecesPassing": 6
  },
  "verdict": "consistent",
  "failures": [],
  "facts": [
    {
      "id": "offer-line",
      "label": "Offer wording",
      "value": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
      "why": "The one sentence a customer repeats back. If two pieces phrase it differently, the customer heard two offers.",
      "source": "offer.line",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "requiredCount": 6,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 6,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u20263, 2026 to December 19, 2026 Trade up to Meridian Pro. ",
              "match": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
              "after": " For accounts running a Meridian Bench. Ask any Apex Instr\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026exclusions, in plain language Trade up to Meridian Pro ",
              "match": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
              "after": " Offer starts November 3, 2026 Offer ends December 19, 202\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u202619, 2026 Trade up to Meridian Pro Hello {{first_name}}, ",
              "match": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
              "after": " Our records show {{account_name}} is running {{bench_coun\u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026off a Meridian Pro when you trade in a Meridian Bench ",
              "match": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
              "after": " 3 months Atlas Care Plus Code TRADEUP26 apexinstruments.e\u2026"
            }
          ]
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u20263, 2026 to December 19, 2026 Trade up to Meridian Pro . ",
              "match": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
              "after": " Meridian Pro list $7,900 Trade-in credit $1,450 You pay $\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026the campaign Trade up to Meridian Pro: launch checklist ",
              "match": "Trade in a Meridian Bench and take $1,450 off a Meridian Pro, with three months of Atlas Care Plus included.",
              "after": " Work down this sheet. A row marked Gate stops the campaig\u2026"
            }
          ]
        }
      ]
    },
    {
      "id": "date-start",
      "label": "Start date",
      "value": "November 3, 2026",
      "why": "A piece that omits the start date makes early orders somebody's judgement call.",
      "source": "dates.start",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "requiredCount": 6,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 8,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Apex Instruments Counter flyer \u00b7 1 of 1 Offer window ",
              "match": "November 3, 2026",
              "after": " to December 19, 2026 Trade up to Meridian Pro. Trade in a\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026three months of Atlas Care Plus included. Offer starts ",
              "match": "November 3, 2026",
              "after": " Offer ends December 19, 2026 Credit $1,450 Price after cr\u2026"
            },
            {
              "before": "\u2026Kit is not a qualifying trade-in. Orders placed before ",
              "match": "November 3, 2026",
              "after": " or after December 19, 2026 do not qualify, including orde\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Pro when you trade in a Meridian Bench. Offer runs ",
              "match": "November 3, 2026",
              "after": " to December 19, 2026. Apex Instruments TRADEUP26 November\u2026"
            },
            {
              "before": "\u20263, 2026 to December 19, 2026. Apex Instruments TRADEUP26 ",
              "match": "November 3, 2026",
              "after": " to December 19, 2026 Trade up to Meridian Pro Hello {{fir\u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026to Meridian Pro: social frame 1080x1080 Apex Instruments ",
              "match": "November 3, 2026",
              "after": " to December 19, 2026 Trade-in offer Trade up to Meridian \u2026"
            }
          ]
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Service Contact Meridian Pro / current offer Offer, ",
              "match": "November 3, 2026",
              "after": " to December 19, 2026 Trade up to Meridian Pro . Trade in \u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026and it is not somebody else's to sign. Offer starts ",
              "match": "November 3, 2026",
              "after": " Offer ends December 19, 2026 Kit owner Sami Torres Campai\u2026"
            }
          ]
        }
      ]
    },
    {
      "id": "date-end",
      "label": "End date",
      "value": "December 19, 2026",
      "why": "The last day is the one people argue about. It is printed in full on every piece.",
      "source": "dates.end",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "requiredCount": 6,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 15,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Counter flyer \u00b7 1 of 1 Offer window November 3, 2026 to ",
              "match": "December 19, 2026",
              "after": " Trade up to Meridian Pro. Trade in a Meridian Bench and t\u2026"
            },
            {
              "before": "\u2026this code TRADEUP26 apexinstruments.example Offer ends ",
              "match": "December 19, 2026",
              "after": ". Trade-in must be a working Meridian Bench owned by the b\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Plus included. Offer starts November 3, 2026 Offer ends ",
              "match": "December 19, 2026",
              "after": " Credit $1,450 Price after credit $6,450 from $7,900 The t\u2026"
            },
            {
              "before": "\u2026trade-in. Orders placed before November 3, 2026 or after ",
              "match": "December 19, 2026",
              "after": " do not qualify, including orders quoted inside the window\u2026"
            },
            {
              "before": "\u2026$149 per month after the 3 included months. Offer ends ",
              "match": "December 19, 2026",
              "after": ". Trade-in must be a working Meridian Bench owned by the b\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026in a Meridian Bench. Offer runs November 3, 2026 to ",
              "match": "December 19, 2026",
              "after": ". Apex Instruments TRADEUP26 November 3, 2026 to December \u2026"
            },
            {
              "before": "\u202619, 2026. Apex Instruments TRADEUP26 November 3, 2026 to ",
              "match": "December 19, 2026",
              "after": " Trade up to Meridian Pro Hello {{first_name}}, Trade in a\u2026"
            },
            {
              "before": "\u2026Operations calls before anything is charged. Offer ends ",
              "match": "December 19, 2026",
              "after": ". Trade-in must be a working Meridian Bench owned by the b\u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026frame 1080x1080 Apex Instruments November 3, 2026 to ",
              "match": "December 19, 2026",
              "after": " Trade-in offer Trade up to Meridian Pro. $1,450 off a Mer\u2026"
            },
            {
              "before": "\u2026Plus Code TRADEUP26 apexinstruments.example Offer ends ",
              "match": "December 19, 2026",
              "after": ". Trade-in must be a working Meridian Bench owned by the b\u2026"
            }
          ]
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Meridian Pro / current offer Offer, November 3, 2026 to ",
              "match": "December 19, 2026",
              "after": " Trade up to Meridian Pro . Trade in a Meridian Bench and \u2026"
            },
            {
              "before": "\u2026may trade more than one inside the window. Offer ends ",
              "match": "December 19, 2026",
              "after": ". Trade-in must be a working Meridian Bench owned by the b\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026else's to sign. Offer starts November 3, 2026 Offer ends ",
              "match": "December 19, 2026",
              "after": " Kit owner Sami Torres Campaign code TRADEUP26 Due Task Ow\u2026"
            },
            {
              "before": "\u202614 Last order date restated to the field: nothing after ",
              "match": "December 19, 2026",
              "after": " Jordan Vale Closing it out Sat Dec 19 Offer ends. Landing\u2026"
            },
            {
              "before": "\u2026in one place and every piece is rebuilt. Offer ends ",
              "match": "December 19, 2026",
              "after": ". Trade-in must be a working Meridian Bench owned by the b\u2026"
            }
          ]
        }
      ]
    },
    {
      "id": "tracking-code",
      "label": "Campaign code",
      "value": "TRADEUP26",
      "why": "One code on every piece is what makes the result attributable at the end.",
      "source": "tracking.code",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "requiredCount": 6,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 19,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Monday to Friday, 8:00 AM to 6:00 PM ET Quote this code ",
              "match": "TRADEUP26",
              "after": " apexinstruments.example Offer ends December 19, 2026. Tra\u2026"
            },
            {
              "before": "\u2026Meridian Way, Suite 200, Tampa, FL 33602 Campaign code ",
              "match": "TRADEUP26",
              "after": " / channel TRADEUP26-CT"
            },
            {
              "before": "\u2026200, Tampa, FL 33602 Campaign code TRADEUP26 / channel ",
              "match": "TRADEUP26",
              "after": "-CT"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Quote the campaign code ",
              "match": "TRADEUP26",
              "after": " . A Meridian Bench lists at $4,850. The trade-in credit i\u2026"
            },
            {
              "before": "\u2026\u00b7 Offer terms \u00b7 Approved by Dana Whitfield Campaign code ",
              "match": "TRADEUP26",
              "after": " / channel TRADEUP26-TC"
            },
            {
              "before": "\u2026by Dana Whitfield Campaign code TRADEUP26 / channel ",
              "match": "TRADEUP26",
              "after": "-TC"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026November 3, 2026 to December 19, 2026. Apex Instruments ",
              "match": "TRADEUP26",
              "after": " November 3, 2026 to December 19, 2026 Trade up to Meridia\u2026"
            },
            {
              "before": "\u2026Suite 200, Tampa, FL 33602. (555) 010-0100. Campaign ",
              "match": "TRADEUP26",
              "after": " / channel TRADEUP26-EM / Unsubscribe Merge tokens in this\u2026"
            },
            {
              "before": "\u2026FL 33602. (555) 010-0100. Campaign TRADEUP26 / channel ",
              "match": "TRADEUP26",
              "after": "-EM / Unsubscribe Merge tokens in this send: {{first_name}\u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Atlas Care Plus included. 3 months Atlas Care Plus Code ",
              "match": "TRADEUP26",
              "after": " apexinstruments.example Offer ends December 19, 2026. Tra\u2026"
            },
            {
              "before": "\u2026combinable with other Apex Instruments offers. Campaign ",
              "match": "TRADEUP26",
              "after": " / channel TRADEUP26-SO"
            },
            {
              "before": "\u2026Apex Instruments offers. Campaign TRADEUP26 / channel ",
              "match": "TRADEUP26",
              "after": "-SO"
            }
          ]
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026check what your Meridian Bench qualifies for. Campaign ",
              "match": "TRADEUP26",
              "after": " Channel TRADEUP26-LP (555) 010-0100 What comes with a Mer\u2026"
            },
            {
              "before": "\u2026Meridian Bench qualifies for. Campaign TRADEUP26 Channel ",
              "match": "TRADEUP26",
              "after": "-LP (555) 010-0100 What comes with a Meridian Pro Specific\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": true,
          "count": 5,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026December 19, 2026 Kit owner Sami Torres Campaign code ",
              "match": "TRADEUP26",
              "after": " Due Task Owner Gate Before the window opens Mon Oct 26 Of\u2026"
            },
            {
              "before": "\u2026that is required Morgan Reyes Tue Oct 27 Campaign code ",
              "match": "TRADEUP26",
              "after": " and all six channel codes created in the order system Mor\u2026"
            },
            {
              "before": "\u2026weekly Weekly figure published from orders carrying a ",
              "match": "TRADEUP26",
              "after": " channel code Morgan Reyes Mon Nov 16 Email to lapsed Atla\u2026"
            },
            {
              "before": "\u2026Instruments \u00b7 Internal \u00b7 26 tasks, 4 gates Campaign code ",
              "match": "TRADEUP26",
              "after": " / channel TRADEUP26-CK"
            },
            {
              "before": "\u2026\u00b7 26 tasks, 4 gates Campaign code TRADEUP26 / channel ",
              "match": "TRADEUP26",
              "after": "-CK"
            }
          ]
        }
      ]
    },
    {
      "id": "price-credit",
      "label": "Trade-in credit",
      "value": "$1,450",
      "why": "The number the whole campaign turns on.",
      "source": "offer.credit",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "requiredCount": 6,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 18,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026up to Meridian Pro. Trade in a Meridian Bench and take ",
              "match": "$1,450",
              "after": " off a Meridian Pro, with three months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026or bring this sheet to the counter. Trade-in credit ",
              "match": "$1,450",
              "after": " against a Meridian Pro, plus 3 months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026$7,900 Meridian Bench lists at $4,850 Trade-in credit ",
              "match": "$1,450",
              "after": " Applied on the order, not paid out You pay $6,450 Before \u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 4,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026up to Meridian Pro Trade in a Meridian Bench and take ",
              "match": "$1,450",
              "after": " off a Meridian Pro, with three months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026November 3, 2026 Offer ends December 19, 2026 Credit ",
              "match": "$1,450",
              "after": " Price after credit $6,450 from $7,900 The terms 1 Who the\u2026"
            },
            {
              "before": "\u2026is closed. 3 What the credit is worth The credit is ",
              "match": "$1,450",
              "after": " against the list price of a Meridian Pro. It is applied o\u2026"
            },
            {
              "before": "\u2026is not a valuation of the unit, it is a fixed credit of ",
              "match": "$1,450",
              "after": " against the Meridian Pro list price of $7,900. Atlas Care\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 4,
          "pass": true,
          "occurrences": [
            {
              "before": "Trade up to Meridian Pro: promotional email ",
              "match": "$1,450",
              "after": " off a Meridian Pro when you trade in a Meridian Bench. Of\u2026"
            },
            {
              "before": "\u2026Hello {{first_name}}, Trade in a Meridian Bench and take ",
              "match": "$1,450",
              "after": " off a Meridian Pro, with three months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026credit applies to each one you trade. Trade-in credit ",
              "match": "$1,450",
              "after": " against a Meridian Pro, plus 3 months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026Pro, plus 3 months of Atlas Care Plus List $7,900 Credit ",
              "match": "$1,450",
              "after": " You pay $6,450 3 months of Atlas Care Plus start on the d\u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u202619, 2026 Trade-in offer Trade up to Meridian Pro. ",
              "match": "$1,450",
              "after": " off a Meridian Pro when you trade in a Meridian Bench Tra\u2026"
            },
            {
              "before": "\u2026in a Meridian Bench Trade in a Meridian Bench and take ",
              "match": "$1,450",
              "after": " off a Meridian Pro, with three months of Atlas Care Plus \u2026"
            }
          ]
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026up to Meridian Pro . Trade in a Meridian Bench and take ",
              "match": "$1,450",
              "after": " off a Meridian Pro, with three months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026Plus included. Meridian Pro list $7,900 Trade-in credit ",
              "match": "$1,450",
              "after": " You pay $6,450 01 Ask for a trade-in quote with the seria\u2026"
            },
            {
              "before": "\u2026with other Apex Instruments offers. Trade-in credit ",
              "match": "$1,450",
              "after": " 3 months of Atlas Care Plus are included, then it is $149\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Pro: launch checklist Trade in a Meridian Bench and take ",
              "match": "$1,450",
              "after": " off a Meridian Pro, with three months of Atlas Care Plus \u2026"
            },
            {
              "before": "\u2026a term on a quote creates a second offer. Credit figure ",
              "match": "$1,450",
              "after": " against $7,900. Every piece in the kit was generated from\u2026"
            }
          ]
        }
      ]
    },
    {
      "id": "price-list-pro",
      "label": "Meridian Pro list price",
      "value": "$7,900",
      "why": "The credit means nothing without the price it comes off.",
      "source": "offer.listPro",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "landing-section.html"
      ],
      "requiredCount": 4,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 7,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Pro, plus 3 months of Atlas Care Plus Meridian Pro list ",
              "match": "$7,900",
              "after": " Meridian Bench lists at $4,850 Trade-in credit $1,450 App\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 3,
          "pass": true,
          "occurrences": [
            {
              "before": "\u202619, 2026 Credit $1,450 Price after credit $6,450 from ",
              "match": "$7,900",
              "after": " The terms 1 Who the offer is for Any Apex Instruments acc\u2026"
            },
            {
              "before": "\u2026value. 4 What the price comes to A Meridian Pro lists at ",
              "match": "$7,900",
              "after": ". With the credit applied the price is $6,450, before tax \u2026"
            },
            {
              "before": "\u2026credit of $1,450 against the Meridian Pro list price of ",
              "match": "$7,900",
              "after": ". Atlas Care Plus continues at $149 per month after the 3 \u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026a Meridian Pro, plus 3 months of Atlas Care Plus List ",
              "match": "$7,900",
              "after": " Credit $1,450 You pay $6,450 3 months of Atlas Care Plus \u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026months of Atlas Care Plus included. Meridian Pro list ",
              "match": "$7,900",
              "after": " Trade-in credit $1,450 You pay $6,450 01 Ask for a trade-\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": false,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026creates a second offer. Credit figure $1,450 against ",
              "match": "$7,900",
              "after": ". Every piece in the kit was generated from one brief, so \u2026"
            }
          ]
        }
      ]
    },
    {
      "id": "price-net-pro",
      "label": "Price after the credit",
      "value": "$6,450",
      "why": "The figure a buyer writes on the purchase order. It has to be the same arithmetic everywhere.",
      "source": "offer.netPro",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "landing-section.html"
      ],
      "requiredCount": 4,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "landing-section.html"
      ],
      "totalOccurrences": 5,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026credit $1,450 Applied on the order, not paid out You pay ",
              "match": "$6,450",
              "after": " Before tax and shipping 3 months of Atlas Care Plus, incl\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026ends December 19, 2026 Credit $1,450 Price after credit ",
              "match": "$6,450",
              "after": " from $7,900 The terms 1 Who the offer is for Any Apex Ins\u2026"
            },
            {
              "before": "\u2026lists at $7,900. With the credit applied the price is ",
              "match": "$6,450",
              "after": ", before tax and shipping. 5 What is included with the pla\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026of Atlas Care Plus List $7,900 Credit $1,450 You pay ",
              "match": "$6,450",
              "after": " 3 months of Atlas Care Plus start on the day the Meridian\u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Meridian Pro list $7,900 Trade-in credit $1,450 You pay ",
              "match": "$6,450",
              "after": " 01 Ask for a trade-in quote with the serial number of you\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        }
      ]
    },
    {
      "id": "price-plan-month",
      "label": "Atlas Care Plus monthly price",
      "value": "$149",
      "why": "What the plan costs from month four. Leaving it off is how included turns into free.",
      "source": "offer.planMonthly",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "landing-section.html"
      ],
      "requiredCount": 4,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "landing-section.html"
      ],
      "totalOccurrences": 6,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026and parts on covered failures. It continues at ",
              "match": "$149",
              "after": " per month from month four, and it can be cancelled before\u2026"
            },
            {
              "before": "\u2026third month ends and there is no fee. After that it is ",
              "match": "$149",
              "after": " per month. Talk to Jordan Vale , Account Manager jordan.v\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 2,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026happens after three months Atlas Care Plus continues at ",
              "match": "$149",
              "after": " per month unless the account cancels before the third mon\u2026"
            },
            {
              "before": "\u2026Pro list price of $7,900. Atlas Care Plus continues at ",
              "match": "$149",
              "after": " per month after the 3 included months. Offer ends Decembe\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026on the day the Meridian Pro is installed, then it is ",
              "match": "$149",
              "after": " per month. Cancel before month four and there is no fee. \u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u20263 months of Atlas Care Plus are included, then it is ",
              "match": "$149",
              "after": " per month. Cancel before month four and there is no fee. \u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        }
      ]
    },
    {
      "id": "price-list-bench",
      "label": "Meridian Bench list price",
      "value": "$4,850",
      "why": "Only the two pieces that quote the trade-in in context carry it, so the checker knows where it is allowed to be absent.",
      "source": "offer.listBench",
      "requiredIn": [
        "flyer.html",
        "terms.html"
      ],
      "requiredCount": 2,
      "piecesCarrying": [
        "flyer.html",
        "terms.html"
      ],
      "totalOccurrences": 2,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Plus Meridian Pro list $7,900 Meridian Bench lists at ",
              "match": "$4,850",
              "after": " Trade-in credit $1,450 Applied on the order, not paid out\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026the campaign code TRADEUP26 . A Meridian Bench lists at ",
              "match": "$4,850",
              "after": ". The trade-in credit is not a valuation of the unit, it i\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": false,
          "count": 0,
          "pass": true,
          "occurrences": []
        }
      ]
    },
    {
      "id": "disclaimer",
      "label": "Required disclaimer",
      "value": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
      "why": "Four sentences that keep the offer honest. They travel with every piece, in the same words.",
      "source": "disclaimer",
      "requiredIn": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "requiredCount": 6,
      "piecesCarrying": [
        "flyer.html",
        "terms.html",
        "email.html",
        "social.html",
        "landing-section.html",
        "checklist.html"
      ],
      "totalOccurrences": 6,
      "missingFrom": [],
      "pass": true,
      "pieces": [
        {
          "file": "flyer.html",
          "label": "Counter flyer",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026PM ET Quote this code TRADEUP26 apexinstruments.example ",
              "match": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
              "after": " Apex Instruments \u00b7 400 Meridian Way, Suite 200, Tampa, FL\u2026"
            }
          ]
        },
        {
          "file": "terms.html",
          "label": "Terms card",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026continues at $149 per month after the 3 included months. ",
              "match": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
              "after": " Apex Instruments \u00b7 Offer terms \u00b7 Approved by Dana Whitfie\u2026"
            }
          ]
        },
        {
          "file": "email.html",
          "label": "Promotional email",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026days and Operations calls before anything is charged. ",
              "match": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
              "after": " Apex Instruments, 400 Meridian Way, Suite 200, Tampa, FL \u2026"
            }
          ]
        },
        {
          "file": "social.html",
          "label": "Social frame",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026Atlas Care Plus Code TRADEUP26 apexinstruments.example ",
              "match": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
              "after": " Campaign TRADEUP26 / channel TRADEUP26-SO"
            }
          ]
        },
        {
          "file": "landing-section.html",
          "label": "Landing page section",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026An account may trade more than one inside the window. ",
              "match": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
              "after": " Trade-in credit $1,450 3 months of Atlas Care Plus are in\u2026"
            }
          ]
        },
        {
          "file": "checklist.html",
          "label": "Launch checklist",
          "required": true,
          "count": 1,
          "pass": true,
          "occurrences": [
            {
              "before": "\u2026it changes in one place and every piece is rebuilt. ",
              "match": "Offer ends December 19, 2026. Trade-in must be a working Meridian Bench owned by the buyer. One credit per instrument. Not combinable with other Apex Instruments offers.",
              "after": " Apex Instruments \u00b7 Internal \u00b7 26 tasks, 4 gates Campaign \u2026"
            }
          ]
        }
      ]
    }
  ],
  "forbidden": [
    {
      "id": "no-free-plan",
      "label": "Calling the plan free",
      "match": "free atlas care",
      "reason": "Three months are included, then it is $149 per month. Free is the word that generates the refund call in month four.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-free",
      "label": "No cost",
      "match": "no cost",
      "reason": "There is a cost. It starts in month four and it is stated.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-lifetime",
      "label": "Lifetime anything",
      "match": "lifetime",
      "reason": "Apex Instruments sells no lifetime warranty and no lifetime plan. The word invites the claim.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-guarantee",
      "label": "Guarantee wording",
      "match": "guarantee",
      "reason": "The offer guarantees a credit against a price, not an outcome. Nobody may widen that.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-best-price",
      "label": "Best price",
      "match": "best price",
      "reason": "Unprovable and unnecessary. The figure is on the page.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-lowest",
      "label": "Lowest price",
      "match": "lowest price",
      "reason": "Same reason. State the price, not a ranking.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-limited-time",
      "label": "Limited time",
      "match": "limited time",
      "reason": "The dates are printed. Limited time is what you write when you do not want to print the dates.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-unlimited",
      "label": "Unlimited",
      "match": "unlimited",
      "reason": "Atlas Care Plus covers one calibration and parts on covered failures. Nothing about it is unlimited.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-risk-free",
      "label": "Risk free",
      "match": "risk free",
      "reason": "There is a return window with conditions. It is written out in the terms.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-hype-1",
      "label": "Hype word",
      "match": "revolutionary",
      "reason": "House style. It says nothing and it dates the piece.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-hype-2",
      "label": "Hype word",
      "match": "seamless",
      "reason": "House style. It says nothing.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-clinical",
      "label": "Out of world",
      "match": "clinical",
      "reason": "Apex Instruments sells precision instruments to labs and distributors. Care setting language belongs to a different company and a different regulator, and the word is the tell.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-dash",
      "label": "Em dash",
      "match": "\u2014",
      "reason": "House style forbids em and en dashes in every piece. A dash also breaks the line the same way on every printer, which is how a fact stops matching across pieces.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-endash",
      "label": "En dash",
      "match": "\u2013",
      "reason": "Same rule. Use a comma, a period, or a colon.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    },
    {
      "id": "no-bang",
      "label": "Exclamation mark",
      "match": "!",
      "reason": "House style. The offer is the interesting part.",
      "hits": [],
      "hitCount": 0,
      "pass": true
    }
  ],
  "channelCodes": [
    {
      "file": "flyer.html",
      "code": "TRADEUP26-CT",
      "found": true,
      "baseFound": true,
      "foreign": [],
      "pass": true
    },
    {
      "file": "terms.html",
      "code": "TRADEUP26-TC",
      "found": true,
      "baseFound": true,
      "foreign": [],
      "pass": true
    },
    {
      "file": "email.html",
      "code": "TRADEUP26-EM",
      "found": true,
      "baseFound": true,
      "foreign": [],
      "pass": true
    },
    {
      "file": "social.html",
      "code": "TRADEUP26-SO",
      "found": true,
      "baseFound": true,
      "foreign": [],
      "pass": true
    },
    {
      "file": "landing-section.html",
      "code": "TRADEUP26-LP",
      "found": true,
      "baseFound": true,
      "foreign": [],
      "pass": true
    },
    {
      "file": "checklist.html",
      "code": "TRADEUP26-CK",
      "found": true,
      "baseFound": true,
      "foreign": [],
      "pass": true
    }
  ],
  "strays": [
    {
      "file": "flyer.html",
      "strayFigures": [],
      "strayDates": [],
      "pass": true
    },
    {
      "file": "terms.html",
      "strayFigures": [],
      "strayDates": [],
      "pass": true
    },
    {
      "file": "email.html",
      "strayFigures": [],
      "strayDates": [],
      "pass": true
    },
    {
      "file": "social.html",
      "strayFigures": [],
      "strayDates": [],
      "pass": true
    },
    {
      "file": "landing-section.html",
      "strayFigures": [],
      "strayDates": [],
      "pass": true
    },
    {
      "file": "checklist.html",
      "strayFigures": [],
      "strayDates": [],
      "pass": true
    }
  ],
  "pieces": [
    {
      "file": "flyer.html",
      "label": "Counter flyer",
      "kind": "print",
      "owner": "Jordan Vale",
      "surface": "1 Letter page, printed, sits on the service counter and goes in the box with every calibration return",
      "textChars": 2379,
      "factsRequired": 10,
      "factsFound": 10,
      "factOccurrences": 16,
      "missingFacts": [],
      "channelCode": "TRADEUP26-CT",
      "channelCodeFound": true,
      "campaignCodeFound": true,
      "foreignChannelCodes": [],
      "strayFigures": [],
      "strayDates": [],
      "forbiddenHits": [],
      "pass": true
    },
    {
      "file": "terms.html",
      "label": "Terms card",
      "kind": "print",
      "owner": "Dana Whitfield",
      "surface": "1 Letter page, printed, handed over with any quote and attached to every order",
      "textChars": 3818,
      "factsRequired": 10,
      "factsFound": 10,
      "factOccurrences": 22,
      "missingFacts": [],
      "channelCode": "TRADEUP26-TC",
      "channelCodeFound": true,
      "campaignCodeFound": true,
      "foreignChannelCodes": [],
      "strayFigures": [],
      "strayDates": [],
      "forbiddenHits": [],
      "pass": true
    },
    {
      "file": "email.html",
      "label": "Promotional email",
      "kind": "email",
      "owner": "Sami Torres",
      "surface": "600px table email with merge tokens, sent to the three audiences on their own schedule",
      "textChars": 1603,
      "factsRequired": 9,
      "factsFound": 9,
      "factOccurrences": 17,
      "missingFacts": [],
      "channelCode": "TRADEUP26-EM",
      "channelCodeFound": true,
      "campaignCodeFound": true,
      "foreignChannelCodes": [],
      "strayFigures": [],
      "strayDates": [],
      "forbiddenHits": [],
      "pass": true
    },
    {
      "file": "social.html",
      "label": "Social frame",
      "kind": "screen",
      "owner": "Sami Torres",
      "surface": "1080 by 1080, one frame, posted on the campaign schedule",
      "textChars": 590,
      "factsRequired": 6,
      "factsFound": 6,
      "factOccurrences": 10,
      "missingFacts": [],
      "channelCode": "TRADEUP26-SO",
      "channelCodeFound": true,
      "campaignCodeFound": true,
      "foreignChannelCodes": [],
      "strayFigures": [],
      "strayDates": [],
      "forbiddenHits": [],
      "pass": true
    },
    {
      "file": "landing-section.html",
      "label": "Landing page section",
      "kind": "screen",
      "owner": "Sami Torres",
      "surface": "1200 by 900, the campaign section as it sits on the Meridian page",
      "textChars": 1610,
      "factsRequired": 9,
      "factsFound": 9,
      "factOccurrences": 13,
      "missingFacts": [],
      "channelCode": "TRADEUP26-LP",
      "channelCodeFound": true,
      "campaignCodeFound": true,
      "foreignChannelCodes": [],
      "strayFigures": [],
      "strayDates": [],
      "forbiddenHits": [],
      "pass": true
    },
    {
      "file": "checklist.html",
      "label": "Launch checklist",
      "kind": "print",
      "owner": "Morgan Reyes",
      "surface": "1 Letter page, printed, the person running the campaign works down it",
      "textChars": 3630,
      "factsRequired": 6,
      "factsFound": 6,
      "factOccurrences": 14,
      "missingFacts": [],
      "channelCode": "TRADEUP26-CK",
      "channelCodeFound": true,
      "campaignCodeFound": true,
      "foreignChannelCodes": [],
      "strayFigures": [],
      "strayDates": [],
      "forbiddenHits": [],
      "pass": true
    }
  ]
}
