{
  "generatedAt": "2026-07-04T17:19:41.466Z",
  "summary": {
    "totalCombos": 15,
    "chromiumWorst": 0.6666666666666666,
    "weasyprintWorst": 0.4166666666666667,
    "chromiumAverage": 0.986033976762748,
    "weasyprintAverage": 0.9257170536225238,
    "verdicts": {
      "pass": 40,
      "warn": 4,
      "fail": 26
    }
  },
  "weasyprintWarnings": [
    "[[1/15] standard/classic] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[1/15] standard/classic] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[1/15] standard/classic] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[1/15] standard/classic] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[1/15] standard/classic] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[1/15] standard/classic] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[2/15] standard/elegant] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[2/15] standard/elegant] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[2/15] standard/elegant] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[2/15] standard/elegant] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[2/15] standard/elegant] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[2/15] standard/elegant] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[3/15] standard/minimal] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[3/15] standard/minimal] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[3/15] standard/minimal] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[3/15] standard/minimal] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[3/15] standard/minimal] WARNING: Ignored `font-family: ` at 1:63, no value.",
    "[[3/15] standard/minimal] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[4/15] standard/modern] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[4/15] standard/modern] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[4/15] standard/modern] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[4/15] standard/modern] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[4/15] standard/modern] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[4/15] standard/modern] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[5/15] standard/professional] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[5/15] standard/professional] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[5/15] standard/professional] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[5/15] standard/professional] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[5/15] standard/professional] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[5/15] standard/professional] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[6/15] unicode/classic] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[6/15] unicode/classic] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[6/15] unicode/classic] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[6/15] unicode/classic] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[6/15] unicode/classic] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[6/15] unicode/classic] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[7/15] unicode/elegant] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[7/15] unicode/elegant] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[7/15] unicode/elegant] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[7/15] unicode/elegant] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[7/15] unicode/elegant] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[7/15] unicode/elegant] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[8/15] unicode/minimal] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[8/15] unicode/minimal] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[8/15] unicode/minimal] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[8/15] unicode/minimal] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[8/15] unicode/minimal] WARNING: Ignored `font-family: ` at 1:63, no value.",
    "[[8/15] unicode/minimal] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[9/15] unicode/modern] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[9/15] unicode/modern] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[9/15] unicode/modern] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[9/15] unicode/modern] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[9/15] unicode/modern] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[9/15] unicode/modern] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[10/15] unicode/professional] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[10/15] unicode/professional] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[10/15] unicode/professional] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[10/15] unicode/professional] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[10/15] unicode/professional] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[10/15] unicode/professional] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[11/15] long/classic] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[11/15] long/classic] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[11/15] long/classic] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[11/15] long/classic] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[11/15] long/classic] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[11/15] long/classic] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[12/15] long/elegant] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[12/15] long/elegant] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[12/15] long/elegant] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[12/15] long/elegant] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[12/15] long/elegant] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[12/15] long/elegant] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[13/15] long/minimal] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[13/15] long/minimal] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[13/15] long/minimal] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[13/15] long/minimal] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[13/15] long/minimal] WARNING: Ignored `font-family: ` at 1:63, no value.",
    "[[13/15] long/minimal] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[14/15] long/modern] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[14/15] long/modern] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[14/15] long/modern] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[14/15] long/modern] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[14/15] long/modern] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[14/15] long/modern] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value.",
    "[[15/15] long/professional] WARNING: Expected a media type, got '(prefers-reduced-motion: no-preference)'",
    "[[15/15] long/professional] WARNING: Invalid media type ' (prefers-reduced-motion: no-preference) ' the whole @media rule was ignored at 2848:1.",
    "[[15/15] long/professional] WARNING: Expected a media type, got '(prefers-reduced-motion: reduce)'",
    "[[15/15] long/professional] WARNING: Invalid media type ' (prefers-reduced-motion: reduce) ' the whole @media rule was ignored at 2924:1.",
    "[[15/15] long/professional] WARNING: Ignored `font-family: ` at 1:62, no value.",
    "[[15/15] long/professional] WARNING: Ignored `font-family: , Arial , Helvetica , sans-serif` at 2825:16, invalid value."
  ],
  "reports": [
    {
      "fixture": "standard",
      "template": "classic",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 0.9921875,
          "weasyprint": 0.9296875,
          "detail": "chromium: missing 1/128: linkedin | weasyprint: missing 9/128: redesign, about, linkedin, anthropic, stripe, remote, university, science…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 0.75,
          "weasyprint": 0.75,
          "detail": "missing: link(LinkedIn)"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.85,
          "detail": "chromium: all 20 key tokens found | weasyprint: missing 3/20: Anthropic, Stripe, 2020"
        }
      ]
    },
    {
      "fixture": "standard",
      "template": "elegant",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.9140625,
          "detail": "chromium: all 128 ground-truth words found | weasyprint: missing 11/128: redesign, about, anthropic, stripe, remote, university, science, openmetrics…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.85,
          "detail": "chromium: all 20 key tokens found | weasyprint: missing 3/20: Anthropic, Stripe, 2020"
        }
      ]
    },
    {
      "fixture": "standard",
      "template": "minimal",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 0.9921875,
          "weasyprint": 0.8984375,
          "detail": "chromium: missing 1/128: ca | weasyprint: missing 13/128: redesign, about, ada@example.com, 123-4567, san, ca, linkedin, anthropic…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.85,
          "detail": "chromium: all 20 key tokens found | weasyprint: missing 3/20: Anthropic, Stripe, 2020"
        }
      ]
    },
    {
      "fixture": "standard",
      "template": "modern",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.9375,
          "detail": "chromium: all 128 ground-truth words found | weasyprint: missing 8/128: redesign, about, anthropic, stripe, remote, university, science, openmetrics"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.85,
          "detail": "chromium: all 20 key tokens found | weasyprint: missing 3/20: Anthropic, Stripe, 2020"
        }
      ]
    },
    {
      "fixture": "standard",
      "template": "professional",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.828125,
          "detail": "chromium: all 128 ground-truth words found | weasyprint: missing 22/128: redesign, about, anthropic, process, stripe, university, typescript, go…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.45,
          "detail": "chromium: all 20 key tokens found | weasyprint: missing 11/20: Anthropic, Stripe, 2020, TypeScript, Go, Python…"
        }
      ]
    },
    {
      "fixture": "unicode",
      "template": "classic",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 0.989247311827957,
          "weasyprint": 0.946236559139785,
          "detail": "chromium: missing 1/93: portfolio | weasyprint: missing 5/93: portfolio, principal, gmbh, informatik, übermetrics"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 0.6666666666666666,
          "weasyprint": 0.6666666666666666,
          "detail": "missing: link(Portfolio)"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.9166666666666666,
          "detail": "chromium: all 12 key tokens found | weasyprint: missing 1/12: 2020"
        },
        {
          "id": "unicode-preservation",
          "description": "Non-ASCII tokens (José, Müller, Zürich, em-dash, smart quotes) preserved verbatim",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 9 unicode tokens preserved"
        }
      ]
    },
    {
      "fixture": "unicode",
      "template": "elegant",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.8924731182795699,
          "detail": "chromium: all 93 ground-truth words found | weasyprint: missing 10/93: principal, gmbh, informatik, übermetrics, français, natif, deutsch, courant…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 3 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.9166666666666666,
          "detail": "chromium: all 12 key tokens found | weasyprint: missing 1/12: 2020"
        },
        {
          "id": "unicode-preservation",
          "description": "Non-ASCII tokens (José, Müller, Zürich, em-dash, smart quotes) preserved verbatim",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 9 unicode tokens preserved"
        }
      ]
    },
    {
      "fixture": "unicode",
      "template": "minimal",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 0.978494623655914,
          "weasyprint": 0.9032258064516129,
          "detail": "chromium: missing 2/93: senior, switzerland | weasyprint: missing 9/93: senior, jose.muller@example.com, 34, zürich, switzerland, portfolio, principal, gmbh…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 3 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 0.9166666666666666,
          "weasyprint": 0.8333333333333334,
          "detail": "chromium: missing 1/12: Ingénieur Logiciel Senior | weasyprint: missing 2/12: Ingénieur Logiciel Senior, 2020"
        },
        {
          "id": "unicode-preservation",
          "description": "Non-ASCII tokens (José, Müller, Zürich, em-dash, smart quotes) preserved verbatim",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 9 unicode tokens preserved"
        }
      ]
    },
    {
      "fixture": "unicode",
      "template": "modern",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.956989247311828,
          "detail": "chromium: all 93 ground-truth words found | weasyprint: missing 4/93: principal, gmbh, informatik, übermetrics"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 3 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.9166666666666666,
          "detail": "chromium: all 12 key tokens found | weasyprint: missing 1/12: 2020"
        },
        {
          "id": "unicode-preservation",
          "description": "Non-ASCII tokens (José, Müller, Zürich, em-dash, smart quotes) preserved verbatim",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 9 unicode tokens preserved"
        }
      ]
    },
    {
      "fixture": "unicode",
      "template": "professional",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.8279569892473119,
          "detail": "chromium: all 93 ground-truth words found | weasyprint: missing 16/93: gmbh, programmation, typescript, go, python, infrastructure, postgres, kubernetes…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 3 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.4166666666666667,
          "detail": "chromium: all 12 key tokens found | weasyprint: missing 7/12: 2020, TypeScript, Go, Python, Postgres, Kubernetes…"
        },
        {
          "id": "unicode-preservation",
          "description": "Non-ASCII tokens (José, Müller, Zürich, em-dash, smart quotes) preserved verbatim",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 9 unicode tokens preserved"
        }
      ]
    },
    {
      "fixture": "long",
      "template": "classic",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 0.9934640522875817,
          "weasyprint": 0.9673202614379085,
          "detail": "chromium: missing 1/153: linkedin | weasyprint: missing 5/153: about, linkedin, university, science, openmetrics"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 0.75,
          "weasyprint": 0.75,
          "detail": "missing: link(LinkedIn)"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.8571428571428571,
          "detail": "chromium: all 42 key tokens found | weasyprint: missing 6/42: 2023, 2023, 2023, 2023, 2023, 2023"
        },
        {
          "id": "cross-page-continuity",
          "description": "Long bullet straddling a page break survives as one continuous run",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "marker present, bullet body contiguous (10/10 vocab)"
        }
      ]
    },
    {
      "fixture": "long",
      "template": "elegant",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.9477124183006536,
          "detail": "chromium: all 153 ground-truth words found | weasyprint: missing 8/153: about, ingress, university, science, openmetrics, english, native, mandarin"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.8571428571428571,
          "detail": "chromium: all 42 key tokens found | weasyprint: missing 6/42: 2023, 2023, 2023, 2023, 2023, 2023"
        },
        {
          "id": "cross-page-continuity",
          "description": "Long bullet straddling a page break survives as one continuous run",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "chromium: marker present, bullet body contiguous (10/10 vocab) | weasyprint: marker present, bullet body contiguous (9/10 vocab)"
        }
      ]
    },
    {
      "fixture": "long",
      "template": "minimal",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 0.9934640522875817,
          "weasyprint": 0.9411764705882353,
          "detail": "chromium: missing 1/153: ca | weasyprint: missing 9/153: about, ada@example.com, 123-4567, san, ca, linkedin, university, openmetrics…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.8571428571428571,
          "detail": "chromium: all 42 key tokens found | weasyprint: missing 6/42: 2023, 2023, 2023, 2023, 2023, 2023"
        },
        {
          "id": "cross-page-continuity",
          "description": "Long bullet straddling a page break survives as one continuous run",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "marker present, bullet body contiguous (10/10 vocab)"
        }
      ]
    },
    {
      "fixture": "long",
      "template": "modern",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.9673202614379085,
          "detail": "chromium: all 153 ground-truth words found | weasyprint: missing 5/153: about, ingress, university, science, openmetrics"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.8571428571428571,
          "detail": "chromium: all 42 key tokens found | weasyprint: missing 6/42: 2023, 2023, 2023, 2023, 2023, 2023"
        },
        {
          "id": "cross-page-continuity",
          "description": "Long bullet straddling a page break survives as one continuous run",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "chromium: marker present, bullet body contiguous (10/10 vocab) | weasyprint: marker present, bullet body contiguous (9/10 vocab)"
        }
      ]
    },
    {
      "fixture": "long",
      "template": "professional",
      "metrics": [
        {
          "id": "word-integrity",
          "description": "Of ground-truth keywords, how many appear as standalone tokens",
          "chromium": 1,
          "weasyprint": 0.8300653594771242,
          "detail": "chromium: all 153 ground-truth words found | weasyprint: missing 26/153: about, ingress, process, university, typescript, go, python, rust…"
        },
        {
          "id": "section-titles",
          "description": "Of the 7 canonical section titles, how many are extractable",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 7 section titles found"
        },
        {
          "id": "contact-info",
          "description": "Email, phone, and URLs matchable by standard ATS regexes",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "all 4 contact fields matched"
        },
        {
          "id": "key-tokens",
          "description": "Proper nouns, skills, and years survive as contiguous phrases",
          "chromium": 1,
          "weasyprint": 0.6666666666666666,
          "detail": "chromium: all 42 key tokens found | weasyprint: missing 14/42: TypeScript, Go, Python, Rust, Postgres, Terraform…"
        },
        {
          "id": "cross-page-continuity",
          "description": "Long bullet straddling a page break survives as one continuous run",
          "chromium": 1,
          "weasyprint": 1,
          "detail": "chromium: marker present, bullet body contiguous (10/10 vocab) | weasyprint: marker present, bullet body contiguous (9/10 vocab)"
        }
      ]
    }
  ]
}
