What we confirmed in-repo (truth set for pricing + capabilities)
Pricing (must-safe copy)
- JobShinobi is a paid Pro subscription product.
- The marketing pricing section explicitly says “All plans include a 7‑day free trial.” (
src/components/PricingSectionComponent.tsx) - Plan config in code (
src/app/constants/plans.ts):- $20.00 / month (Stripe payment link configured)
- $199.99 / year (Stripe payment link configured)
- Do not call the tool “free.” Approved phrasing: “Try free” / “7‑day free trial”.
Core product surfaces (feature-accurate)
- Resume builder (LaTeX-first) with cloud LaTeX → PDF compilation and 30-min in-memory compile caching (
/api/compile-latex). - AI resume analysis + scoring via
/api/resume/analyze:- Returns overall score + section scores + ATS issues + keyword analysis.
- Supports cached results unless
forceRefresh. - Supports enhancedMode vs comprehensive analysis.
- Optional
modelselection, validated viaisModelAvailable()(Shinobi Swift/Turbo/Pro branding).
- Resume-to-job matching + tailoring suggestions via
/api/job/extract(URL or text → structured job details) and/api/resume/match(match score + missing/present keywords + recommendations; stored injob_analyses). - Email forwarding → automatic job application tracking:
- SendGrid inbound webhook parses forwarded email and creates/updates job applications with fuzzy matching.
- Pro required for email ingestion endpoints (hard-gated).
Repo/SEO architecture gaps discovered (important)
1) Sitemap lists /guides/* but there is no src/app/guides route
src/app/sitemap.tsincludes:/guides/guides/how-to-use-free-ats-resume-scanner, etc.
- A UI component exists that links to guides (
src/components/guides/BlogCard.tsxuses<Link href={/guides/${slug}}>). - But a grep across
src/appdid not findsrc/app/guides/**. - Impact:
- Sitemap may be emitting non-existent URLs → crawl budget waste + soft 404s.
- Fix options:
- Re-add the missing
src/app/guides/page.tsx+[slug]routes, or - Remove guides from sitemap until the routes exist.
- Re-add the missing
2) There is currently no /tools route in the codebase
- Attempts to read
src/app/tools/...pages failed (files do not exist). - Impact:
- If your content strategy requires “tool pages” at
/tools/[slug], you likely need to create these routes (and add them to sitemap).
- If your content strategy requires “tool pages” at
- Practical recommendation:
- Create SEO landing pages under
/tools/that route users into the authenticated dashboard flows (resume analyze, job match, etc.).
- Create SEO landing pages under
Competitive research (what top pages are doing)
Access issues
- Some major competitors block automated fetching (HTTP 403): Jobscan and multiple Teal pages.
- We still extracted strong patterns from pages that were accessible.
Competitor page patterns (structure + on-page SEO)
ResumeWorded – Resume Scanner (/resume-scanner)
- ~1,994 words
- Multiple H1s (not ideal, but they still rank)
- Strong “Free ATS Resume Scan” framing, heavy CTA + FAQ
ResumeWorded – Targeted Resume (/targeted-resume)
- ~2,041 words
- Title + meta lean hard on “free ATS scan” + “keyword optimize”
- FAQ included
Enhancv – Resume Checker (/resources/resume-checker/)
- ~2,052 words
- Uses schema types including SoftwareApplication and AggregateRating
- FAQ present
- No H1 detected in fetch (their rendering may be JS-driven, but schema + depth are strong)
Rezi – Resume Checker (/tools/resume-checker)
- ~2,256 words
- Schema includes Product/Offer (commercial intent)
- Includes “How it works” section + FAQ
BeamJobs – Resume Scanner
- ~1,261 words
- Uses FAQPage schema and other structured data
- Shorter but still “tool-like” with clear CTA blocks
Cultivated Culture – ResyMatch resume scanner
- ~4,867 words
- Very content-heavy, strong proof/social claims + FAQ
Simplify – Job Application Tracker
- ~1,542 words
- Has WebApplication/Offer/FAQPage schema types
- Very clear value prop + CTA + FAQ
Huntr (homepage positioning)
- ~1,774 words
- Positions as “Job application tracker + resume builder + tools” (broad suite)
What this means for JobShinobi tool pages
To compete on “ATS resume scanner / resume score / resume-job match” queries, pages typically include:
- A clear tool definition + what you get as output (scores, checks, missing keywords)
- A step-by-step HowTo section (this is a must for conversions and schema)
- Visible FAQ (and ideally FAQPage schema)
- 1,200–2,200 words is common; outliers go higher (4k+)
Keyword / page opportunities mapped to JobShinobi’s real capabilities
Given the actual endpoints and UI flows, JobShinobi can legitimately support tool pages like:
- Resume Score / ATS Resume Checker
- Backed by
/api/resume/analyze(overall score, ATS score, keyword analysis, strengths/weaknesses, etc.) - Copy must avoid “free” claims; use “Try free” (7-day trial)
- Resume Keyword Scanner / Keyword Gap Analysis
- Also backed by
/api/resume/analyze(present/missing/overused keywords, density/coverage fields)
- Resume Job Description Match
- Backed by
/api/job/extract+/api/resume/match(match score, recommendations, missing/present keywords)
- Automatic Job Application Tracker (Email Forwarding)
- Backed by SendGrid inbound webhook + dashboard tracker
- Must clearly state Pro required for email parsing/ingestion
Immediate next steps (highest impact)
- Decide the SEO URL architecture
- If you want tool pages: implement
src/app/tools/[slug]/page.tsx(or separate routes per tool). - Add them to
sitemap.tsonce they exist.
- Fix sitemap/route mismatch for
/guides
- Either ship the missing routes or remove guide URLs from sitemap.
- Tool-page content spec (based on what ranks)
- Target ~1,200–1,500 words
- Include:
- Clear outputs (what the user receives)
- Real workflow steps mapped to JobShinobi UI (upload/paste LaTeX, analyze, view scores, apply suggestions)
- FAQ + HowTo schema
- Pricing language: “Try free (7-day trial)”, never “free tool”
If you tell me which tool page you want first (e.g., “ATS Resume Scanner”, “Resume Job Description Match”, or “Job Application Tracker via Email Forwarding”), I can draft the SEO tool page in the required frontmatter + HowTo format using only repo-verified claims.



