# SEO Comparison Content Cluster Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Publish 17 neutral, first-party-sourced comparison pages that target high-intent resume-builder searches and give appropriate readers a distinct reason to try Reactive Resume. **Architecture:** Add one MDX page per competitor under `docs/comparisons/`, using a consistent decision-oriented information order but unique claims, trade-offs, sources, and calls to action. Add the completed set to one visible Mintlify navigation group, then validate frontmatter uniqueness, structural requirements, JSON configuration, internal links, and Mintlify links without introducing new dependencies or shared abstractions. **Tech Stack:** Mintlify, MDX, `docs.json`, Node.js 24, `markdownlint-cli2`, Mint CLI 4.2.748 ## Global Constraints - Create exactly the 17 approved comparison pages; no comparison hub, new tab, redirect, schema type, custom component, or dependency. - Use only first-party product, pricing, help, privacy, source-repository, and license pages to support mutable claims. - Use search results only to select competitors, never as evidence in an article. - Use plain, neutral language and avoid `best`, `winner`, `superior`, `revolutionary`, `powerful`, `seamless`, and unqualified marketing claims. - Every page must identify at least one situation where the competitor is the better fit and one relevant Reactive Resume limitation. - Never promise ATS passage, interview outcomes, or repeat vendor outcome statistics and review scores as facts. - Qualify `free` as free creation, TXT export, designed PDF export, limited downloads, trial access, or another precise meaning. - Prefer durable plan descriptions over exact prices; include a first-party pricing link and `Last checked: July 28, 2026`. - Use two to four relevant internal documentation links per page. - End every page with a unique Mintlify `Card` linking to `https://rxresu.me`. - A shorter page is better than unsupported or padded copy; expected length is 600 to 1,000 words only when the evidence supports it. - Do not run the repository-wide `pnpm check`; it is write-capable. Use focused non-mutating validation commands. --- ## File map **Create:** - `docs/comparisons/reactive-resume-vs-canva.mdx` — general visual editor versus structured resume editor. - `docs/comparisons/reactive-resume-vs-adobe-express.mdx` — general template editor versus structured resume data. - `docs/comparisons/reactive-resume-vs-overleaf.mdx` — LaTeX authoring versus visual resume editing. - `docs/comparisons/reactive-resume-vs-resume-com.mdx` — two genuinely free builders with different ownership models. - `docs/comparisons/reactive-resume-vs-myperfectresume.mdx` — guided content with TXT-only free export versus free designed exports. - `docs/comparisons/reactive-resume-vs-resume-now.mdx` — guided AI/content with TXT-only free export versus direct control. - `docs/comparisons/reactive-resume-vs-resume-io.mdx` — commercial freemium builder versus open-source builder. - `docs/comparisons/reactive-resume-vs-zety.mdx` — guided writing and TXT-only free export versus free designed exports. - `docs/comparisons/reactive-resume-vs-kickresume.mdx` — integrated AI/content library versus bring-your-own AI. - `docs/comparisons/reactive-resume-vs-resumegemini.mdx` — AI/content examples versus open-source self-hosting. - `docs/comparisons/reactive-resume-vs-jobscan.mdx` — specialized ATS/job matching versus ownership and automation. - `docs/comparisons/reactive-resume-vs-resumod.mdx` — job-targeting assistance versus open-source control. - `docs/comparisons/reactive-resume-vs-rezi.mdx` — specialized keyword scoring versus optional bring-your-own AI. - `docs/comparisons/reactive-resume-vs-careercircle.mdx` — career-services platform versus standalone resume system. - `docs/comparisons/reactive-resume-vs-novoresume.mdx` — guided one-document free tier versus unrestricted core resume management. - `docs/comparisons/reactive-resume-vs-livecareer.mdx` — guided content with TXT-only free export versus free designed exports. - `docs/comparisons/reactive-resume-vs-freesumes.mdx` — ephemeral no-account builder and template library versus persistent structured resume management. **Modify:** - `docs/docs.json` — add the visible `Comparisons` navigation group after `Use Cases`. No runtime code or test file is needed. The content contract is checked with focused Node assertions, Markdown linting, and Mintlify's link checker. --- ### Task 1: General design and source-authoring comparisons **Files:** - Create: `docs/comparisons/reactive-resume-vs-canva.mdx` - Create: `docs/comparisons/reactive-resume-vs-adobe-express.mdx` - Create: `docs/comparisons/reactive-resume-vs-overleaf.mdx` **Interfaces:** - Consumes: Current Reactive Resume export, template, privacy, and open-source documentation. - Produces: Three self-contained MDX pages following the cluster heading, evidence, limitation, source, and CTA contract. - [ ] **Step 1: Re-verify the shared Reactive Resume facts** Read these current files before drafting: ```text docs/use-cases/free-resume-builder.mdx docs/use-cases/open-source-resume-builder.mdx docs/use-cases/privacy-focused-resume-builder.mdx docs/use-cases/self-hosted-resume-builder.mdx docs/guides/choosing-a-template.mdx docs/guides/exporting-your-resume.mdx docs/legal/license.mdx ``` Confirm only claims used in the three pages: Reactive Resume is MIT-licensed and self-hostable; the hosted builder's core resume workflow has no premium tier; current exports include PDF, DOCX, Markdown, and Reactive Resume JSON; and its visual controls are resume-specific rather than a freeform design canvas. - [ ] **Step 2: Verify the three competitors from first-party sources** Use: ```text Canva resume builder: https://www.canva.com/create/resumes/ Adobe Express resume builder: https://www.adobe.com/express/create/resume Adobe Express Free plan: https://helpx.adobe.com/express/web/adobe-express-subscription/free.html Overleaf free-plan documentation: https://docs.overleaf.com/getting-started/free-and-premium-plans Overleaf CV and resume templates: https://www.overleaf.com/latex/templates/tagged/cv Overleaf plan comparison: https://www.overleaf.com/user/subscription/plans ``` Do not infer that every Canva or Adobe asset/template is free. Describe their broader visual control and media/template libraries, and link the plan pages when a feature boundary matters. Describe Overleaf as a collaborative LaTeX editor with CV/resume templates, not a dedicated resume builder. - [ ] **Step 3: Create the Canva comparison** Use this frontmatter: ```yaml --- title: "Reactive Resume vs Canva" description: "Compare Reactive Resume and Canva for free resume creation, visual control, exports, data portability, and self-hosting." --- ``` The answer-first opening must say that Canva is the stronger choice for freeform visual composition and a broad design library, while Reactive Resume is purpose-built around structured resume fields, reusable resume data, and self-hosting. Include: ```markdown ## Quick comparison ## Where Canva is a better fit ## Where Reactive Resume is a better fit ## Which should you choose? ## Reactive Resume limitations in this comparison ## Sources ``` Name Reactive Resume's narrower design canvas as its limitation. End with: ```mdx Use structured resume sections and keep the option to export or self-host when you do not need a general design canvas. ``` - [ ] **Step 4: Create the Adobe Express comparison** Use this frontmatter: ```yaml --- title: "Reactive Resume vs Adobe Express" description: "Compare Reactive Resume and Adobe Express for resume templates, PDF export, visual editing, structured data, and self-hosting." --- ``` Credit Adobe Express for broader document, image, and layout editing. Explain that Reactive Resume keeps content in resume-specific fields and supports resume-focused versioning, formats, and deployment choices. Name its smaller visual asset library and lack of a general canvas as limitations. End with: ```mdx Try Reactive Resume when reusable work history and resume-specific controls matter more than general document design. ``` - [ ] **Step 5: Create the Overleaf comparison** Use this frontmatter: ```yaml --- title: "Reactive Resume vs Overleaf" description: "Compare Reactive Resume's visual resume builder with Overleaf's LaTeX templates, source editing, collaboration, and PDF workflow." --- ``` Credit Overleaf for direct LaTeX source control, its large community template gallery, and document collaboration. Explain that Reactive Resume is easier for readers who do not want to edit or debug LaTeX and stores resume content as structured data. Name the absence of LaTeX source editing and Overleaf-style academic document collaboration as Reactive Resume limitations. End with: ```mdx Build from structured sections and a live preview without maintaining a LaTeX document. ``` - [ ] **Step 6: Run focused validation** Run: ```bash pnpm exec markdownlint-cli2 \ docs/comparisons/reactive-resume-vs-canva.mdx \ docs/comparisons/reactive-resume-vs-adobe-express.mdx \ docs/comparisons/reactive-resume-vs-overleaf.mdx ``` Expected: exit code 0. Run: ```bash node - <<'NODE' const fs = require("node:fs"); const files = [ "docs/comparisons/reactive-resume-vs-canva.mdx", "docs/comparisons/reactive-resume-vs-adobe-express.mdx", "docs/comparisons/reactive-resume-vs-overleaf.mdx", ]; for (const file of files) { const text = fs.readFileSync(file, "utf8"); for (const required of [ "## Quick comparison", "## Where Reactive Resume is a better fit", "## Which should you choose?", "## Reactive Resume limitations in this comparison", "## Sources", "Last checked: July 28, 2026", 'href="https://rxresu.me"', ]) { if (!text.includes(required)) throw new Error(`${file}: missing ${required}`); } } console.log("Task 1 content contract passed"); NODE ``` Expected: `Task 1 content contract passed`. - [ ] **Step 7: Commit the batch** ```bash git add \ docs/comparisons/reactive-resume-vs-canva.mdx \ docs/comparisons/reactive-resume-vs-adobe-express.mdx \ docs/comparisons/reactive-resume-vs-overleaf.mdx git commit -m "docs: compare Reactive Resume with design editors" ``` --- ### Task 2: Mainstream free and freemium builder comparisons **Files:** - Create: `docs/comparisons/reactive-resume-vs-resume-com.mdx` - Create: `docs/comparisons/reactive-resume-vs-myperfectresume.mdx` - Create: `docs/comparisons/reactive-resume-vs-resume-now.mdx` - Create: `docs/comparisons/reactive-resume-vs-resume-io.mdx` - Create: `docs/comparisons/reactive-resume-vs-zety.mdx` **Interfaces:** - Consumes: Task 1's page contract and current Reactive Resume export/open-source documentation. - Produces: Five pages that distinguish free creation from free designed-document export. - [ ] **Step 1: Verify the competitors from first-party sources** Use: ```text Resume.com free-plan help: https://support.resume.com/hc/en-us/articles/360008079171-Is-Resume-com-really-free Resume.com account help: https://support.resume.com/hc/en-us/articles/360040199931-How-do-I-create-a-new-account MyPerfectResume free-builder guide: https://www.myperfectresume.com/career-center/resumes/how-to/free-resume-builder MyPerfectResume pricing: https://www.myperfectresume.com/pricing Resume-Now free-builder guide: https://www.resume-now.com/job-resources/resumes/how-to-use-our-resume-builder Resume-Now product page: https://www.resume-now.com/ Resume.io free-plan help: https://help.resume.io/en/articles/3785088 Zety pricing: https://zety.com/pricing ``` Preserve the important distinctions: Resume.com supports free PDF and plain-text downloads; MyPerfectResume, Resume-Now, and Zety limit free downloads to TXT; Resume.io currently allows a free PDF using its Vancouver template and TXT export, while other templates/features require its paid workflow. Do not quote a plan price. - [ ] **Step 2: Create the Resume.com comparison** Use: ```yaml --- title: "Reactive Resume vs Resume.com" description: "Compare two free resume builders by PDF export, accounts, templates, open-source access, portability, and self-hosting." --- ``` Do not manufacture a pricing advantage for Reactive Resume: both products support free PDF export. Credit Resume.com for its simple hosted workflow and lack of a paid membership tier. Distinguish Reactive Resume through source access, self-hosting, more export formats, API/MCP automation, and optional bring-your-own AI. Name account/setup complexity and the more technical options as Reactive Resume limitations. End with: ```mdx Try Reactive Resume when self-hosting, structured exports, or automation matter alongside free PDF creation. ``` - [ ] **Step 3: Create the MyPerfectResume comparison** Use: ```yaml --- title: "Reactive Resume vs MyPerfectResume" description: "Compare Reactive Resume and MyPerfectResume by free downloads, writing guidance, templates, AI, open source, and self-hosting." --- ``` Credit MyPerfectResume for step-by-step prompts, expert-written content suggestions, and its resume checker. State precisely that its free download is plain text and designed PDF/Word downloads require premium access. Name Reactive Resume's lack of an equivalent built-in content library and specialized checker as limitations. End with: ```mdx Use Reactive Resume when you already have the content and want free PDF, DOCX, Markdown, and JSON exports. ``` - [ ] **Step 4: Create the Resume-Now comparison** Use: ```yaml --- title: "Reactive Resume vs Resume-Now" description: "Compare Reactive Resume and Resume-Now by free export formats, guided writing, AI tools, templates, and self-hosting." --- ``` Credit Resume-Now for guided content suggestions and resume-analysis tools. State that its current free download is TXT and designed PDF/Word formats require paid access. Name Reactive Resume's smaller built-in writing-guidance surface as its limitation. End with: ```mdx Try Reactive Resume when direct editing and designed exports matter more than a large guided-content library. ``` - [ ] **Step 5: Create the Resume.io comparison** Use: ```yaml --- title: "Reactive Resume vs Resume.io" description: "Compare Reactive Resume and Resume.io by free PDF access, templates, writing tools, exports, open source, and self-hosting." --- ``` Credit Resume.io for its guided writing tools, sample content, and commercial template experience. State the narrow current free-PDF allowance without claiming all PDF export is paid. Note that Resume.io says plan availability can vary by location. Name Reactive Resume's smaller guided-content library as its limitation. End with: ```mdx Use Reactive Resume when you want the included templates, multiple export formats, and no premium resume tier. ``` - [ ] **Step 6: Create the Zety comparison** Use: ```yaml --- title: "Reactive Resume vs Zety" description: "Compare Reactive Resume and Zety by free downloads, guided writing, resume checks, templates, open source, and self-hosting." --- ``` Credit Zety for its guided builder, writing suggestions, cover-letter workflow, and resume check. State that Zety's free package currently exports TXT, while PDF and Word are paid formats. Name Reactive Resume's lack of equivalent prewritten guidance and job matching as limitations. End with: ```mdx Try Reactive Resume when free PDF and DOCX exports matter more than guided writing and job-matching tools. ``` - [ ] **Step 7: Validate and commit** Run: ```bash pnpm exec markdownlint-cli2 \ docs/comparisons/reactive-resume-vs-resume-com.mdx \ docs/comparisons/reactive-resume-vs-myperfectresume.mdx \ docs/comparisons/reactive-resume-vs-resume-now.mdx \ docs/comparisons/reactive-resume-vs-resume-io.mdx \ docs/comparisons/reactive-resume-vs-zety.mdx ``` Expected: exit code 0. Then: ```bash git add \ docs/comparisons/reactive-resume-vs-resume-com.mdx \ docs/comparisons/reactive-resume-vs-myperfectresume.mdx \ docs/comparisons/reactive-resume-vs-resume-now.mdx \ docs/comparisons/reactive-resume-vs-resume-io.mdx \ docs/comparisons/reactive-resume-vs-zety.mdx git commit -m "docs: compare mainstream resume builders" ``` --- ### Task 3: AI, ATS, and job-targeting comparisons **Files:** - Create: `docs/comparisons/reactive-resume-vs-kickresume.mdx` - Create: `docs/comparisons/reactive-resume-vs-resumegemini.mdx` - Create: `docs/comparisons/reactive-resume-vs-jobscan.mdx` - Create: `docs/comparisons/reactive-resume-vs-resumod.mdx` - Create: `docs/comparisons/reactive-resume-vs-rezi.mdx` **Interfaces:** - Consumes: Current Reactive Resume AI, automation, export, privacy, and self-hosting documentation. - Produces: Five pages that distinguish integrated specialist tools from Reactive Resume's optional provider model. - [ ] **Step 1: Re-verify Reactive Resume's AI and automation boundaries** Read: ```text docs/use-cases/ai-resume-builder.mdx docs/use-cases/api-mcp-resume-automation.mdx docs/guides/using-ai.mdx docs/guides/using-ai-in-the-builder.mdx docs/guides/using-ai-agent.mdx docs/guides/using-the-api.mdx docs/guides/using-the-mcp-server.mdx ``` Use only supported claims: AI is optional and bring-your-own-provider; users configure their provider credentials; Reactive Resume offers API and MCP workflows; and provider use can incur separate provider costs. Do not claim that Reactive Resume has a dedicated ATS score, native keyword-match score, or human review service. - [ ] **Step 2: Verify the competitors from first-party sources** Use: ```text Kickresume plan FAQ: https://www.kickresume.com/en/help-center/general/ Kickresume editor and AI documentation: https://www.kickresume.com/en/help-center/resume/ ResumeGemini product page: https://www.resumegemini.com/ ResumeGemini product overview: https://resumegemini.com/about-us Jobscan resume builder: https://www.jobscan.co/resume-builder Jobscan resume scanner: https://www.jobscan.co/resume-scanner Resumod product page: https://resumod.co/ Resumod AI builder: https://resumod.co/ai-resume-builder Rezi pricing and feature comparison: https://www.rezi.ai/pricing Rezi official product summary: https://www.rezi.ai/ai-llm-info ``` Treat every ATS or outcome statement as the vendor's positioning, not a proven result. It is safe to state that a product exposes a checker, score, keyword-targeting flow, or job-description analysis when the official page documents that feature. - [ ] **Step 3: Create the Kickresume comparison** Use: ```yaml --- title: "Reactive Resume vs Kickresume" description: "Compare Reactive Resume and Kickresume by free downloads, AI writing, content examples, templates, provider choice, and self-hosting." --- ``` Credit Kickresume for integrated AI writing, content examples, imports, and a larger guided career-document workflow. State that its free plan supports unlimited documents/downloads when free customization options are used. Name Reactive Resume's provider setup and smaller content library as limitations. End with: ```mdx Try Reactive Resume when you want AI to remain optional and configurable rather than bundled into the builder. ``` - [ ] **Step 4: Create the ResumeGemini comparison** Use: ```yaml --- title: "Reactive Resume vs ResumeGemini" description: "Compare Reactive Resume and ResumeGemini by free PDF export, AI optimization, content examples, open source, and self-hosting." --- ``` Credit ResumeGemini for prewritten examples and integrated job-targeted AI optimization. Its site currently documents at least one free template with free PDF download; do not generalize that to every template. Name Reactive Resume's lack of a built-in content-example library and keyword-optimization product as limitations. End with: ```mdx Use Reactive Resume when source access and deployment control matter more than integrated content examples. ``` - [ ] **Step 5: Create the Jobscan comparison** Use: ```yaml --- title: "Reactive Resume vs Jobscan" description: "Compare Reactive Resume and Jobscan by free PDF creation, ATS analysis, job matching, exports, open source, and automation." --- ``` Credit Jobscan for its free resume builder, nine current templates, LinkedIn import, resume scanner, and specialized job-description analysis. Avoid repeating its ATS success claims. Name Reactive Resume's lack of a native ATS score or job-keyword scanner as limitations. End with: ```mdx Build, export, and automate structured resume data in Reactive Resume when an ATS score is not your primary need. ``` - [ ] **Step 6: Create the Resumod comparison** Use: ```yaml --- title: "Reactive Resume vs Resumod" description: "Compare Reactive Resume and Resumod by AI writing, resume scoring, job targeting, exports, open source, and self-hosting." --- ``` Credit Resumod for role-specific content, resume scoring, job-targeted AI, and documented PDF/Word output. Do not state that every template or AI feature is free because the official page describes both free and paid templates without a clear complete plan matrix. Name Reactive Resume's lack of an integrated ATS-style score and content library as limitations. End with: ```mdx Try Reactive Resume when self-hosting and optional bring-your-own AI matter more than bundled scoring tools. ``` - [ ] **Step 7: Create the Rezi comparison** Use: ```yaml --- title: "Reactive Resume vs Rezi" description: "Compare Reactive Resume and Rezi by free limits, ATS scoring, keyword targeting, AI writing, provider choice, and self-hosting." --- ``` Credit Rezi for its specialized score, keyword targeting, integrated AI writing, interview tool, and expert-review option. State its current free limits as one resume and three PDF downloads without quoting the paid price. Name Reactive Resume's lack of those specialist scoring/review tools and the setup required for its AI as limitations. End with: ```mdx Use Reactive Resume when provider choice, open source, self-hosting, and API or MCP automation matter more than an integrated ATS score. ``` - [ ] **Step 8: Validate and commit** Run: ```bash pnpm exec markdownlint-cli2 \ docs/comparisons/reactive-resume-vs-kickresume.mdx \ docs/comparisons/reactive-resume-vs-resumegemini.mdx \ docs/comparisons/reactive-resume-vs-jobscan.mdx \ docs/comparisons/reactive-resume-vs-resumod.mdx \ docs/comparisons/reactive-resume-vs-rezi.mdx ``` Expected: exit code 0. Then: ```bash git add \ docs/comparisons/reactive-resume-vs-kickresume.mdx \ docs/comparisons/reactive-resume-vs-resumegemini.mdx \ docs/comparisons/reactive-resume-vs-jobscan.mdx \ docs/comparisons/reactive-resume-vs-resumod.mdx \ docs/comparisons/reactive-resume-vs-rezi.mdx git commit -m "docs: compare AI and ATS resume builders" ``` --- ### Task 4: Career-platform and template-library comparisons **Files:** - Create: `docs/comparisons/reactive-resume-vs-careercircle.mdx` - Create: `docs/comparisons/reactive-resume-vs-novoresume.mdx` - Create: `docs/comparisons/reactive-resume-vs-livecareer.mdx` - Create: `docs/comparisons/reactive-resume-vs-freesumes.mdx` **Interfaces:** - Consumes: Current Reactive Resume dashboard, application-tracking, export, and privacy documentation. - Produces: Four pages focused on broader career services, document limits, guided content, and no-account ephemeral use. - [ ] **Step 1: Verify the competitors from first-party sources** Use: ```text CareerCircle resume builder: https://www.careercircle.com/resume-builder Novorésumé product and plan comparison: https://novoresume.com/ LiveCareer pricing: https://www.livecareer.com/pricing LiveCareer resume builder: https://www.livecareer.com/t3 Freesumes resume builder: https://www.freesumes.com/resume-builder/ Freesumes product overview: https://www.freesumes.com/ Freesumes privacy behavior in the builder: https://www.freesumes.com/build-resume ``` Do not repeat claimed interview outcomes, ATS guarantees, review scores, or user counts. Describe only documented product behavior. - [ ] **Step 2: Create the CareerCircle comparison** Use: ```yaml --- title: "Reactive Resume vs CareerCircle" description: "Compare Reactive Resume and CareerCircle by free PDF and Word exports, career resources, accounts, open source, and self-hosting." --- ``` Credit CareerCircle for free PDF/Word output, staffing-expert guidance, jobs, courses, and professional-development resources in the same service. State its sign-up requirement. Name Reactive Resume's lack of CareerCircle's broader course/job community as its limitation. End with: ```mdx Try Reactive Resume when resume ownership, multiple export formats, and self-hosting matter more than bundled career services. ``` - [ ] **Step 3: Create the Novorésumé comparison** Use: ```yaml --- title: "Reactive Resume vs Novorésumé" description: "Compare Reactive Resume and Novorésumé by free document limits, templates, guided writing, AI, exports, and self-hosting." --- ``` Credit Novorésumé for guided design, writing advice, a content library, and its integrated assistant. State its current Basic limits precisely: one document and one page, with larger document counts and longer documents in Premium. Name Reactive Resume's smaller guidance/content surface as its limitation. End with: ```mdx Use Reactive Resume when you want multiple resumes and designed exports without moving to a premium plan. ``` - [ ] **Step 4: Create the LiveCareer comparison** Use: ```yaml --- title: "Reactive Resume vs LiveCareer" description: "Compare Reactive Resume and LiveCareer by free downloads, guided content, resume checks, templates, open source, and self-hosting." --- ``` Credit LiveCareer for ready-made content, spell-checking, writing tips, and resume checking. State that its free builder currently exports TXT, while unlimited PDF and Word downloads require premium access. Name Reactive Resume's smaller guided-content and checker surface as limitations. End with: ```mdx Try Reactive Resume when PDF or DOCX output matters more than ready-made writing suggestions. ``` - [ ] **Step 5: Create the Freesumes comparison** Use: ```yaml --- title: "Reactive Resume vs Freesumes" description: "Compare Reactive Resume and Freesumes by no-account use, PDF export, templates, saved resume management, privacy, and self-hosting." --- ``` Credit Freesumes for a no-account, no-card builder, six current builder templates, free PDF output, Word/Google Docs templates, and browser-session privacy. Explain the documented trade-off: builder data is wiped when the tab is refreshed or closed. Name Reactive Resume's account requirement and server-backed persistence as limitations for users who want a one-off local session. End with: ```mdx Use Reactive Resume when you want persistent resume versions, multiple export formats, sharing, and automation. ``` - [ ] **Step 6: Validate and commit** Run: ```bash pnpm exec markdownlint-cli2 \ docs/comparisons/reactive-resume-vs-careercircle.mdx \ docs/comparisons/reactive-resume-vs-novoresume.mdx \ docs/comparisons/reactive-resume-vs-livecareer.mdx \ docs/comparisons/reactive-resume-vs-freesumes.mdx ``` Expected: exit code 0. Then: ```bash git add \ docs/comparisons/reactive-resume-vs-careercircle.mdx \ docs/comparisons/reactive-resume-vs-novoresume.mdx \ docs/comparisons/reactive-resume-vs-livecareer.mdx \ docs/comparisons/reactive-resume-vs-freesumes.mdx git commit -m "docs: compare career and template resume tools" ``` --- ### Task 5: Navigation and whole-cluster verification **Files:** - Modify: `docs/docs.json` - Test: all 17 files under `docs/comparisons/` **Interfaces:** - Consumes: The 17 completed page paths and frontmatter contracts from Tasks 1 through 4. - Produces: Navigable and sitemap-eligible Mintlify pages with a verified unique-content contract. - [ ] **Step 1: Add the Mintlify navigation group** Insert this group immediately after `Use Cases`: ```json { "group": "Comparisons", "pages": [ "comparisons/reactive-resume-vs-canva", "comparisons/reactive-resume-vs-adobe-express", "comparisons/reactive-resume-vs-overleaf", "comparisons/reactive-resume-vs-resume-com", "comparisons/reactive-resume-vs-myperfectresume", "comparisons/reactive-resume-vs-resume-now", "comparisons/reactive-resume-vs-resume-io", "comparisons/reactive-resume-vs-zety", "comparisons/reactive-resume-vs-kickresume", "comparisons/reactive-resume-vs-resumegemini", "comparisons/reactive-resume-vs-jobscan", "comparisons/reactive-resume-vs-resumod", "comparisons/reactive-resume-vs-rezi", "comparisons/reactive-resume-vs-careercircle", "comparisons/reactive-resume-vs-novoresume", "comparisons/reactive-resume-vs-livecareer", "comparisons/reactive-resume-vs-freesumes" ] } ``` Keep the grouping order aligned with the article batches; do not add a hub page. - [ ] **Step 2: Validate JSON and the complete content contract** Run: ```bash node - <<'NODE' const fs = require("node:fs"); const paths = [ "canva", "adobe-express", "overleaf", "resume-com", "myperfectresume", "resume-now", "resume-io", "zety", "kickresume", "resumegemini", "jobscan", "resumod", "rezi", "careercircle", "novoresume", "livecareer", "freesumes", ].map((slug) => `comparisons/reactive-resume-vs-${slug}`); const config = JSON.parse(fs.readFileSync("docs/docs.json", "utf8")); const docsTab = config.navigation.tabs.find((tab) => tab.tab === "Documentation"); const group = docsTab.groups.find((entry) => entry.group === "Comparisons"); if (!group) throw new Error("Missing Comparisons navigation group"); if (JSON.stringify(group.pages) !== JSON.stringify(paths)) { throw new Error("Comparison navigation paths or order do not match the approved set"); } const titles = new Set(); const descriptions = new Set(); const ctas = new Set(); for (const pagePath of paths) { const file = `docs/${pagePath}.mdx`; const text = fs.readFileSync(file, "utf8"); const frontmatter = text.match(/^---\n([\s\S]*?)\n---/); if (!frontmatter) throw new Error(`${file}: missing frontmatter`); const title = frontmatter[1].match(/^title: "(.+)"$/m)?.[1]; const description = frontmatter[1].match(/^description: "(.+)"$/m)?.[1]; if (!title || !description) throw new Error(`${file}: missing title or description`); if (titles.has(title)) throw new Error(`${file}: duplicate title`); if (descriptions.has(description)) throw new Error(`${file}: duplicate description`); titles.add(title); descriptions.add(description); for (const required of [ "## Quick comparison", "## Where Reactive Resume is a better fit", "## Which should you choose?", "## Reactive Resume limitations in this comparison", "## Sources", "Last checked: July 28, 2026", 'href="https://rxresu.me"', ]) { if (!text.includes(required)) throw new Error(`${file}: missing ${required}`); } const competitorFit = text.match(/^## Where (.+) is a better fit$/m)?.[1]; if (!competitorFit || competitorFit === "Reactive Resume") { throw new Error(`${file}: missing competitor advantage section`); } const cta = text.match(/