{
  "title": "Arabic resume sample: file checks and results",
  "checkedOn": "2026-09-13",
  "fictional": true,
  "scope": "One fictional Arabic resume, one template, A4, one page in each inspected rendering. No applicant tracking system, employer screening, hiring outcome, or competitor test.",
  "template": "clean-professional",
  "locale": "ar",
  "pageSize": "a4",
  "assets": {
    "pdf": {
      "filename": "arabic-example-2026-09-13-v2.pdf",
      "bytes": 31928,
      "sha256": "e68a775241f965a60480a0d5122bc897f1ff30a0030ef0fc39e090b4d5778ae1"
    },
    "docx": {
      "filename": "arabic-example-2026-09-13.docx",
      "bytes": 42240,
      "sha256": "404c40bebc652bf2d1ed4b4fbb7f38acc56e4db3ccd3d7a35172a1bc4f0662c8"
    },
    "source": {
      "filename": "source-record-2026-09-13.json",
      "bytes": 3919,
      "sha256": "7bd7aabda5acaa8cefd8a57d2f12ef5b8719e9c30e898afe26dbafa6548282a7"
    }
  },
  "generation": {
    "method": "Existing Bespree V3 export QA harness using the application adapters and exporters. Offline local Chrome PDF rendering, not the authenticated production download route.",
    "harness": "scripts/qa/verify-resume-exports.ts",
    "sourceRecord": "The source download contains a V3 data object plus expected text, directly usable as RESUME_EXPORT_FIXTURE.",
    "environment": {
      "RESUME_EXPORT_FIXTURE": "public/data/reports/resume-file-check/source-record-2026-09-13.json",
      "RESUME_EXPORT_LOCALE": "ar",
      "RESUME_EXPORT_TEMPLATE": "clean-professional",
      "RESUME_EXPORT_PAGE_SIZE": "a4",
      "RESUME_EXPORT_OFFLINE": "1",
      "RESUME_EXPORT_PDF_TEXT_ENGINE": "pdfjs"
    },
    "command": "node --import tsx scripts/qa/verify-resume-exports.ts",
    "versions": {
      "node": "24.18.0",
      "chrome": "152.0.7977.83",
      "puppeteer-core": "25.1.0",
      "docx": "9.7.1"
    },
    "fonts": {
      "pdfEmbedded": [
        "NotoNaskhArabic-SemiBold",
        "NotoNaskhArabic-Regular",
        "OpenSans-Regular"
      ],
      "wordRequested": [
        "Arial",
        "Georgia"
      ],
      "wordLibreOfficeRendering": [
        "LiberationSans",
        "LiberationSans-Bold",
        "DejaVuSans",
        "DejaVuSans-Bold"
      ],
      "observation": "DOCX visual inspection used LibreOffice font substitution. It is not evidence of rendering with the requested fonts in Microsoft Word."
    },
    "saveFiles": "Set RESUME_EXPORT_PDF_DIR to a writable directory. The existing declared-string checks pass in this version because their normalization removes whitespace. This does not mean exact copying; see the raw results and independent word-spacing checks.",
    "docx": "The original DOCX and its inspected rendering are retained byte-for-byte. This repair changes only the PDF path."
  },
  "checks": [
    {
      "id": "pdf-visual",
      "method": "Render all pages with Poppler, inspect the resulting image.",
      "result": "One page; name, contact, summary, roles, organizations, dates and bullets visible, with no observed clipping or overlap. Dates sit closer to the role titles.",
      "limitation": "Visual inspection of this rendering only. No general PDF accessibility or text-order certification.",
      "engine": "Poppler 26.04.0"
    },
    {
      "id": "word-visual",
      "method": "Render DOCX with bundled LibreOffice, inspect all pages.",
      "result": "One page; Arabic content and role/date associations were visible, with no observed clipping or overlap. Fonts and number shapes differ from the PDF.",
      "limitation": "Microsoft Word and other word processors were not visually tested.",
      "engine": "LibreOfficeDev 26.8.0.0.alpha0 (2c87e51eeaa2b413ff4ae097b2705eea1995d8e5)"
    },
    {
      "id": "pdf-poppler",
      "engine": "Poppler pdftotext 26.04.0",
      "method": "pdftotext -enc UTF-8; compared with the same source record. Name, organizations, roles and complete bullet word spacing checked separately.",
      "status": "passed-declared-strings-with-copy-differences",
      "result": "Arabic letter order and both role/date associations are preserved in this sample. Extra spaces appear inside شخصًا and حقيقيًا around vowel marks. The original character order of those marks is preserved after whitespace removal. Exact copying still differs.",
      "extractedText": "‫ليلى أحمد‬\n\n‫سيرة ذاتية توضيحية‬\n\n‫‪sample@example.invalid‬‬\n\n‫الملخص المهني‬\n‫هذا مثال خيالي للتوضيح فقط‪ ،‬ولا يخص شخصً ا حقيقيً ا‪.‬‬\n\n‫الخبرة المهنية‬\n‫متطوعة في استقبال الزوار‬\n\n‫يناير ‪ - ٢٠٢٥‬يونيو ‪٢٠٢٥‬‬\n\n‫مركز مجتمعي توضيحي‬\n‫استقبلت الزوار خلال وجبة مجتمعية أسبوعية وقدمت الإرشادات بالعربية والإنجليزية‪.‬‬\n\n‫رتبت المستلزمات بعد كل لقاء‪.‬‬\n\n‫متطوعة في تنظيم الكتب‬\n\n‫سبتمبر ‪ - ٢٠٢٤‬ديسمبر ‪٢٠٢٤‬‬\n\n‫مكتبة توضيحية‬\n‫رتبت الكتب على الرفوف وساعدت الزوار في العثور على القسم المناسب‪.‬‬\n\n‫المهارات‬\n‫التواصل مع الزوار‪ ,‬تنظيم المستلزمات‬\n\n\f"
    },
    {
      "id": "pdf-pdfjs",
      "engine": "pdf-parse 2.4.5 using pdfjs-dist 5.4.296",
      "method": "PDFParse.getText(), saved without Unicode normalization or direction repair. Name, organizations, roles and complete bullet word spacing checked separately.",
      "status": "passed-declared-strings-with-copy-differences",
      "result": "Arabic name, organizations, roles and bullets now copy in logical letter order. Both dates remain with their respective roles. The word ولا is extracted as ول ا. Date components are returned in reader-dependent order. Exact copying still differs.",
      "extractedText": "ليلى أحمد\nسيرة ذاتية توضيحية\nsample@example.invalid\nالملخص المهني\nهذا مثال خيالي للتوضيح فقط، ول ا يخص شخصًا حقيقيًا.\nالخبرة المهنية\nمتطوعة في استقبال الزوار\t٢٠٢٥ يونيو - ٢٠٢٥ يناير\nمركز مجتمعي توضيحي\nاستقبلت الزوار خلال وجبة مجتمعية أسبوعية وقدمت الإرشادات بالعربية والإنجليزية.\nرتبت المستلزمات بعد كل لقاء.\nمتطوعة في تنظيم الكتب\t٢٠٢٤ ديسمبر - ٢٠٢٤ سبتمبر\nمكتبة توضيحية\nرتبت الكتب على الرفوف وساعدت الزوار في العثور على القسم المناسب.\nالمهارات\nالتواصل مع الزوار, تنظيم المستلزمات\n\n-- 1 of 1 --\n\n"
    },
    {
      "id": "pdf-pdfkit",
      "engine": "macOS PDFKit, PDFDocument.string",
      "method": "Supplemental native text extraction, not a visual Preview or Safari check.",
      "status": "copy-differences",
      "result": "Arabic names and sentences are readable; spaces appear around the summary vowel marks. Dates appear just before their roles. This was additional diagnostic evidence, separate from the two guide text checks.",
      "extractedText": "ليلى أحمد\nسيرة ذاتية توضيحية\nsample@example.invalid\nالملخص المهني\nهذا مثال خيالي للتوضيح فقط، ولا يخص شخص ً ا حقيقي ً ا.\nالخبرة المهنية\nيناير ٢٠٢٥ - يونيو ٢٠٢٥\nمتطوعة في استقبال الزوار\nمركز مجتمعي توضيحي\nاستقبلت الزوار خلال وجبة مجتمعية أسبوعية وقدمت الإرشادات بالعربية والإنجليزية.\nرتبت المستلزمات بعد كل لقاء.\nسبتمبر ٢٠٢٤ - ديسمبر ٢٠٢٤\nمتطوعة في تنظيم الكتب\nمكتبة توضيحية\nرتبت الكتب على الرفوف وساعدت الزوار في العثور على القسم المناسب.\nالمهارات\nالتواصل مع الزوار, تنظيم المستلزمات"
    },
    {
      "id": "word-mammoth",
      "engine": "Mammoth 1.12.3",
      "method": "mammoth.extractRawText; expected cross-format strings compared by the existing export harness.",
      "result": "All declared expected strings passed. The Arabic sentences were preserved. Directional isolate characters occur around some Latin text and numbers.",
      "status": "passed-for-declared-strings",
      "extractedText": "ليلى أحمد\n\nسيرة ذاتية توضيحية\n\n⁦sample@example.invalid⁩\n\nالملخص المهني\n\nهذا مثال خيالي للتوضيح فقط، ولا يخص شخصًا حقيقيًا.\n\nالخبرة المهنية\n\nمتطوعة في استقبال الزوار    يناير ⁦2025⁩ - يونيو ⁦2025⁩\n\nمركز مجتمعي توضيحي\n\nاستقبلت الزوار خلال وجبة مجتمعية أسبوعية وقدمت الإرشادات بالعربية والإنجليزية.\n\nرتبت المستلزمات بعد كل لقاء.\n\n\n\nمتطوعة في تنظيم الكتب    سبتمبر ⁦2024⁩ - ديسمبر ⁦2024⁩\n\nمكتبة توضيحية\n\nرتبت الكتب على الرفوف وساعدت الزوار في العثور على القسم المناسب.\n\nالمهارات\n\nالتواصل مع الزوار, تنظيم المستلزمات\n\n"
    }
  ],
  "limitations": [
    "The existing harness normalization removes whitespace and bidi controls. A passing declared-string result does not prove exact copying. Its expected strings were not weakened.",
    "The new real-PDF regression test preserves word spacing for sample names, organizations, roles and full Arabic bullets. It checks role/year association in Clean Professional. It does not certify arbitrary resumes or every date component.",
    "The broader 28-file Arabic matrix still has strict mixed-script, column, and date association failures. This sample is intentionally narrower.",
    "PDF and DOCX contain synthetic personal and employment details. The email uses the reserved .invalid domain.",
    "The sample excludes real phone numbers, addresses, photos, education, links, tables, long resumes and many other content variations.",
    "Readable or selectable text does not prove correct field extraction in an applicant tracking system.",
    "A successful Word text check does not prove that every Word reader or employer system will preserve the content.",
    "These samples should not be submitted as a real application."
  ],
  "references": [
    {
      "url": "https://support.greenhouse.io/hc/en-us/articles/200989175-Unsuccessful-resume-parse",
      "supports": "An ATS parser can fail or partially fill fields; applicants and recruiters may need to correct details. This source does not validate the samples."
    },
    {
      "url": "https://support.greenhouse.io/hc/en-us/articles/360052218132-Supported-formats-for-resumes-cover-letters-and-other-candidate-uploads",
      "supports": "Greenhouse supports several document formats, including PDF and DOCX. Employer instructions still take priority; this is not a universal format rule."
    }
  ],
  "version": 2,
  "sourceBaseCommit": "c7de4499f92a3f1651a8a23752726d30bcda27b3",
  "sourceState": "Local uncommitted Arabic PDF repair, based on sourceBaseCommit. Source hashes below identify the repair; no deployed commit is claimed.",
  "sourceFileSha256": {
    "lib/resume/pdfArabicText.ts": "38aefcb81ccf4735cc538861a52f4494b1734412863a9e109c075c9adbbf0fbf",
    "lib/resume/pdfBackgroundComposition.ts": "3da7dbf96392a3eb8303aea6e8b53b0b09fdfcd1900db1b1d099c21c56659754",
    "lib/resume/rendering/pdf.ts": "c0b2d425ca49f677c120abc050d18cc277289521b69f4fa2dd6e9fd21df846d9",
    "components/ResumeBuilderV3/adapters/HTMLAdapter.ts": "38a5118ccbaab580778e19d89e177c3c2f0e46d6c534be052439881e25afa112",
    "public/fonts/resume/css/noto-naskh-arabic.css": "dac7ce076e42b9089ea6ee0e4e570439b607615cc17e30c779217a78df933123",
    "scripts/qa/verify-resume-exports.ts": "18e6bdfceff6262da2e3658d47a425da7737a12876f963fe756aa057ced1fa62"
  },
  "baseline": {
    "method": "method-2026-09-13.json",
    "pdf": "arabic-example-2026-09-13.pdf",
    "note": "Preserved original sample and findings before the repair."
  }
}
