Skip to main content

Branded SERP CTR Fix — 2026-05-07

Source action item: #1 in the 2026-05-07 Web Health & Growth Report — "Fix branded SERP CTR for 'jod'".

Plugin used: seo-geo-claude-skills (build/seo-content-writer, build/meta-tags-optimizer, build/schema-markup-generator, cross-cutting/entity-optimizer, optimize/on-page-seo-auditor, build/geo-content-optimizer).

TL;DR

  • The brand query "jod" gets 7,657 monthly Google impressions but only 2.3% CTR (expected 5%+ at position 7). That's the headline problem.
  • The root cause is not title-text alone — it is entity ambiguity: Google has no canonical Knowledge Graph entity for "Jod", so the SERP fragments brand authority across 5+ pages of jodapp.com and the gig.jodapp.com subdomain. Plugin (entity-optimizer/SKILL.md) reframed this from a copy problem to an entity-resolution problem.
  • 7 critical P0 bugs were found that block the work — including a /sign-up description that's leftover boilerplate from a different product entirely ("dead simple appointment and scheduling app"), a malformed <meta> tag on /login, and a grammar error in the homepage description. Fix these this week regardless of SEO.
  • No JSON-LD anywhere except job detail pages. No Organization, no WebSite, no LocalBusiness, no FAQPage. app/root.jsx is empty of structured data.
  • 11 of 13 pages have no OG/Twitter tags — every WhatsApp/LinkedIn share produces an empty preview. Critical for an audience that shares jobs in chat (100+ social_share sessions/month per the 2026-05-07 report).
  • The /about page is wasting trust queries — "what is jod" (40 imp/0 clicks), "is jod legit", "jod company", "jod meaning". Current description is mission-statement boilerplate that answers none of them.
  • Expected timeline: P0 bugs this week. Schemas + page-by-page rewrites over 4-6 weeks. Brand entity authority work (Wikidata + Knowledge Panel target) over 3-6 months.
  • Expected impact (per entity-optimizer/SKILL.md): "jod" CTR should move 2.6% → 3.5-4% in month 1 (schema + content), → 5-7% in months 2-3 (entity authority + press), → 7-15% in months 4-6 (Knowledge Panel candidate). 1,000-2,500 extra branded clicks per month at maturity.

Why this matters

From the 2026-05-07 Web Health & Growth Report:

Headline dataValueSource
"jod" monthly Google impressions7,657GSC §2.1
"jod" monthly clicks179GSC §2.1
"jod" CTR2.3% (expected 5%+ at pos 7)GSC §2.1
"jod" CTR previous period2.8% (declining)GSC §2.1
Brand search clicks growth (QoQ)+25% (143 → 179)TL;DR finding
Brand search impression growth (QoQ)+48% (5,186 → 7,657)GSC §2.1

The brand demand is growing — and we are losing the click on our own SERP. The 25% QoQ growth in branded search is unprompted (no Google Ads in this measurement; GSC excludes paid). People are searching "jod" because they remember the name. Then they don't click our result.

Trust-query gap on /about

A pattern that the original action-item scope missed but this work expands:

GSC query (last 28 days)ImpressionsClicksPage
"what is jod"400/about
"what is a jod"110/about
"is jod legit"10/about
"jod company"30/about
"jod meaning"20/about
"jod official website"20/about
"whats jod"60/about
"jod singapore"230/about

/about ranks for ~88 trust-related impressions/month and earns zero clicks. The current /about description is "Empowering the world's next billion workers..." — mission-statement boilerplate that answers none of these queries. /about rewrites are now in scope for action item #1, even though the original wording focused on the homepage.

In-site search reveals user mental model

From GA4 view_search_results events (last 28 days, top 30 of 164 unique terms):

  • By employer: NTUC (22), FairPrice (17 across casing), Seonggong (9), McDonald's (4), Mercuria (3), Four Points (3)
  • By role: Cleaner, Driver, Waiter, Packer, Kitchen, Janitor, Nursing, Pizza, Retail Sales, Accountant
  • By category: Food & Beverage (11), Part-Time Chef/Cook, Housekeeping

Users search by employer brand → role → category. Page copy + meta should mirror this hierarchy.


Critical P0 bugs — fix this week regardless of SEO

These are quality bugs found during the audit. None of the SEO work makes sense if these remain.

#BugFileWhy it matters
1/sign-up description is from a different product: "Sign up for an account for dead simple appointment and scheduling app."app/routes/identities-user/identities-user-sign-up-page.jsx:14-17Page ranks position 1.5 for "jod" (282 imp) but converts at 0.71% CTR because of this. Replacing the description should lift CTR to 15%+ — single biggest leverage on the site.
2/login malformed <meta> tag: name="Login" (capital L, invalid) with content "Create your account today!" (sign-up copy on a login page)app/routes/login-page.jsx:14-19Google likely ignores the description entirely. The page has effectively no description meta.
3Homepage description grammar: "Jod helps blue-collar workers with find jobs in Singapore" ("with find" is wrong)app/routes/home.jsx:19-27Signals low quality to Google's quality models. Visible in every SERP snippet for "jod".
4/employers title and description use U+2011 non-breaking hyphens (Full‑Time, Blue‑Collar) instead of regular U+002Dapp/routes/org/org-home-page.jsx:5-15Visually identical, but a different unicode character — may affect keyword matching in Google's tokeniser.
5/jobs/mcdonalds is missing <meta name="twitter:card" content="summary_large_image">app/routes/jobs/jobs-mcdonald-page.jsx:19-81Without it, Twitter/X downgrades the existing twitter:image to a tiny summary card. The 1200x630 image is wasted.
6/how-it-works has no body text — only a YouTube iframeapp/routes/how-it-works-page.jsx:9-10Page ranks position 5 for "jod" (1,212 imp) at 0.58% CTR — biggest CTR waste on the site. Crawlers see no indexable text.
7/sign-up has no <h1> (only an h2 "Create Account")app/routes/identities-user/identities-user-sign-up-page.jsxHeader hierarchy violation. Plugin (on-page-seo-auditor/SKILL.md Step 4) flags this as a single-H1 rule violation.

Total estimated effort: ~1 engineering day across all 7 bugs.


Brand entity authority playbook

Per cross-cutting/entity-optimizer/SKILL.md Step 1-3, applied to Jod.

This is the headline reframe from the plugin: the "jod" SERP problem is not a title-text problem; it is an entity-resolution problem. Google does not have a canonical Knowledge Graph entity for "Jod", so brand authority fragments. Below is the framework to fix it.

Phase 0 — Run the AI Entity Resolution Test (this week)

Per entity-optimizer/SKILL.md Step 1. Run these queries in each AI system and record the answer verbatim:

QueryChatGPTClaudePerplexityGoogle AI Overview
"What is Jod?"????
"Is Jod legit?"????
"Who founded Jod?"????
"Jod vs FastJobs" (or top SG competitor)????
"Best jobs app in Singapore for blue-collar workers"????

Record:

  • Does each system describe Jod accurately?
  • Does each system cite jodapp.com as a source?
  • Does each system confuse Jod with the Hebrew letter "jod" or the Dutch word "jod"?

If any system returns "I don't know" or describes Jod incorrectly, that is the entity gap to fix.

Phase 1 — Foundation (Weeks 1-2)

Per entity-optimizer/SKILL.md Step 2 Category 1 (Structured Data) and Category 2 (Knowledge Bases):

  1. Deploy the global Organization + WebSite + MobileApplication schemas to app/root.jsx (provided in Global JSON-LD below). Use one canonical @id: https://jodapp.com/#organization.

  2. Create a Wikidata entry for Jod. Required properties: instance of (Q4830453 business enterprise), country (Q334 Singapore), inception (founding year), official website, founder, headquarters location. This single action is the highest-leverage entity move.

  3. Submit Jod to industry directories: CrunchBase, LinkedIn Company, Singapore Tech directories, MOM EA Licence directory (if applicable), e27, Tech in Asia.

  4. Standardise NAP+E (Name + Address + Phone + Email) across:

    • jodapp.com (homepage, /about, /contact)
    • Google Business Profile
    • LinkedIn Company page
    • Facebook page
    • Crunchbase
    • Wikidata
    • Bing Places
    • Apple Maps Connect

    The plugin requires identical formatting (e.g., always "+65 6XXX XXXX" or always "+65-6XXX-XXXX" — pick one and never deviate).

Phase 2 — Content (Month 1)

Per entity-optimizer/SKILL.md Step 2 Category 4 (Content-Based Entity Signals):

  1. Rewrite /about as the canonical entity page (see Per-page recommendations § Page 2 below) — definitional H1, founder bio, UEN, registration date, MOM/MAS references, named insurance underwriter.
  2. Add a founder/leadership page at /about/team with a dedicated Person schema for each leader. Include LinkedIn sameAs. Per Step 2 Category 6 (AI-Specific Entity Signals — verifiable claims).
  3. Add a /news or /press section with at least 3 dated press mentions (Tech in Asia, e27, Channel News Asia, The Straits Times). If real press coverage doesn't exist, run a small PR push to seed it. Per Step 2 Category 5 (Third-Party Entity Signals).
  4. Disambiguation paragraph on /about: "Jod is the trade name of [legal entity], a Singapore-registered jobs platform. Not to be confused with 'jod' (the Hebrew letter) or other unrelated uses of the word."

Phase 3 — Authority (Months 2-3)

  1. Get Jod cited in third-party content:
    • Reach out to Tech in Asia / e27 / The Straits Times for an editorial feature
    • Get listed in "Best jobs apps in Singapore" listicles (existing ones — outreach to publishers)
    • Get reviews on Google Business Profile, Trustpilot, Glassdoor (employer reviews)
  2. Wikipedia article candidacy (only when notable enough — typically requires 3+ independent press features).
  3. Claim and verify Google Business Profile for the Singapore office address. This unlocks a Knowledge Panel candidate slot.
  4. Add sameAs links to all owned social, directory, and knowledge-base profiles in the canonical Organization schema.

Phase 4 — Monitoring (Ongoing)

  1. Re-run the AI Entity Resolution Test monthly. Record changes.
  2. Monitor Google Search Console for impressions on "jod", "jod singapore", "jod app", "what is jod" — CTR should rise as the entity layer strengthens.
  3. Monitor Google Knowledge Graph API for the Jod entity ID emergence.
  4. Watch for incorrect Knowledge Panel attributions (e.g., Jod confused with another company). Use Google's "Suggest an edit" feature on any Knowledge Panel that appears.

Expected timeline

PhaseExpected "jod" CTRWhat unlocks it
Baseline (today)2.6%Position 7 with no entity signals
Weeks 1-2 (foundation)2.6% (flat — re-crawl lag)Schema deployed, Wikidata seeded
Month 13.5-4%Homepage description matches intent, Wikidata signals reach Google
Months 2-35-7%Industry baseline for branded position 7 with full entity signals
Months 4-67-15%Knowledge Panel candidate — position 1 with KP typically 30%+ CTR

Global JSON-LD for app/root.jsx

Per build/schema-markup-generator/SKILL.md Step 1 (content-type mapping → Organization + WebSite for site root) and Step 2 (visible-content alignment).

This is the single highest-leverage code change. It enables Google's Sitelinks search box on the "jod" SERP and gives Google the entity definition for Jod.

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://jodapp.com/#organization",
"name": "Jod",
"legalName": "[fill in legal entity name]",
"alternateName": ["Jod Singapore", "Jod App", "Jodapp"],
"url": "https://jodapp.com",
"logo": {
"@type": "ImageObject",
"@id": "https://jodapp.com/#logo",
"url": "https://jodapp.com/logo.png",
"width": 512,
"height": 512,
"caption": "Jod"
},
"image": { "@id": "https://jodapp.com/#logo" },
"description": "Jod is a Singapore jobs app for blue-collar workers. F&B, retail, cleaning, security, logistics, and warehouse jobs with daily pay and free worker insurance underwritten by Etiqa.",
"slogan": "Work today, get paid tomorrow.",
"foundingDate": "[YYYY-MM-DD]",
"founder": {
"@type": "Person",
"name": "[founder name]",
"url": "https://jodapp.com/about"
},
"numberOfEmployees": { "@type": "QuantitativeValue", "value": "[n]" },
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "UEN",
"value": "[Singapore UEN]"
}
],
"knowsAbout": [
"blue-collar jobs Singapore",
"F&B jobs Singapore",
"retail jobs Singapore",
"cleaning jobs Singapore",
"warehouse jobs Singapore",
"worker insurance Singapore",
"MOM employment Singapore"
],
"address": {
"@type": "PostalAddress",
"streetAddress": "[fill in]",
"addressLocality": "Singapore",
"postalCode": "[fill in]",
"addressCountry": "SG"
},
"areaServed": { "@type": "Country", "name": "Singapore" },
"sameAs": [
"https://www.linkedin.com/company/jodapp",
"https://www.facebook.com/jodapp",
"https://www.instagram.com/jodapp",
"https://www.crunchbase.com/organization/jodapp",
"https://www.wikidata.org/wiki/[QID once created]"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+65-XXXX-XXXX",
"contactType": "customer support",
"areaServed": "SG",
"availableLanguage": ["English", "Bengali", "Tamil", "Bahasa Indonesia"]
}
},
{
"@type": "WebSite",
"@id": "https://jodapp.com/#website",
"url": "https://jodapp.com",
"name": "Jod",
"alternateName": "Jod Singapore",
"publisher": { "@id": "https://jodapp.com/#organization" },
"inLanguage": "en-SG",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://jodapp.com/jobs?query={search_term_string}"
},
"query-input": "required name=search_term_string"
}
},
{
"@type": "MobileApplication",
"@id": "https://jodapp.com/#app",
"name": "Jod",
"operatingSystem": "ANDROID, IOS",
"applicationCategory": "BusinessApplication",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "SGD" },
"publisher": { "@id": "https://jodapp.com/#organization" }
}
]
}

Validation step (per schema-markup-generator/SKILL.md Step 3): paste the rendered output into Schema.org Validator AND Google Rich Results Test before merging. Both must pass with zero errors.

Visible-content alignment: every claim in the JSON-LD must be visibly present on the page. The legalName, foundingDate, UEN, address, founder name must all appear in human-readable text on /about (or homepage trust strip) — otherwise Google may suppress the rich result.


Brand consistency decision required

Before any title rewrites land, Marketing must pick one canonical brand string and Engineering must apply it consistently. Today the codebase uses:

  • "Jod"
  • "Jod Board" (homepage, /jobs)
  • "JodCareers"
  • "JodGig"
  • "JodRewards"

Proposed canonical decision:

SurfaceCanonical string
Page titles (HTML <title>)Jod
Title suffix pattern`...
Brand programme namesJodRewards (one word, capitalised), Jod Campaigns (two words for /bonuses)
Marketing copyJod
Drop entirelyJod Board, JodCareers, JodGig (these dilute the brand entity per entity-optimizer/SKILL.md Step 2 Category 3 — NAP+E consistency)

Owner: Marketing Head sign-off. Effort: 30 minutes (decision) + ~2 engineering hours (find/replace across meta exports).


Per-page recommendations

Per build/seo-content-writer/SKILL.md 9-step workflow + build/meta-tags-optimizer/SKILL.md 6-step workflow + build/geo-content-optimizer/SKILL.md 5-step GEO workflow.

For each of the 13 pages: two title/meta options (one entity-anchored, one click-driven), a content audit with 3-7 changes, and JSON-LD recommendations. All titles re-checked for pixel width, not just character count (per meta-tags-optimizer/SKILL.md Step 2).

Page 1: Homepage /

Current: Title "Jod Board - Part-time, Gig & Blue Collar Jobs in Singapore". Description has grammar bug ("with find jobs"). H1 "Work today, get paid tomorrow.". No JSON-LD, no OG, no Twitter.

GSC: "jod" 167/6,463/pos 6.9/CTR 2.6% · "jod singapore" 32/172/pos 1.06/CTR 18.6% · "jod app" 18/214/pos 2.0/CTR 8.4%

Title and meta

Final A — entity-anchored (recommended primary)

  • Title: Jod Singapore — Daily Pay Jobs App for Blue-Collar Workers (58 chars, ~547px desktop, ~604px mobile)
  • Description: Jod is the Singapore jobs app for F&B, retail, cleaning, security, and warehouse workers. Apply in minutes. Daily pay. Free worker insurance. (148 chars)

Why: per entity-optimizer/SKILL.md Step 2 Category 4, the homepage must open with a definitional sentence so Google can resolve the brand entity. The current title lacks a definition. "Singapore" right after "Jod" matches the high-CTR query "jod singapore" (18.6% CTR).

Final B — click-driven

  • Title: Jod — Find F&B, Retail & Warehouse Jobs in Singapore (53 chars)
  • Description: Looking for a Singapore job? Jod connects you with verified employers hiring today. Daily pay, free insurance, MOM-licensed. Open the app and apply. (147 chars)

Why: question-led mobile descriptions lift CTR 8-15% on mobile (meta-tags-optimizer/SKILL.md reference). Use "MOM-licensed" only if Jod holds a real EA licence (CORE-EEAT R01 verifiability).

Content audit

  1. (P0) Fix grammar bug — "with find jobs" → "find jobs" in app/routes/home.jsx:19-27.
  2. GEO addition (per geo-content-optimizer/SKILL.md Step 3): add a 25-50-word standalone definition directly under H1: "Jod is a Singapore jobs app for blue-collar workers. Workers apply in minutes for F&B, retail, cleaning, security, logistics, and warehouse shifts. Every completed shift includes free Personal Accident and Public Liability insurance underwritten by Etiqa. Pay arrives the next working day." This block doubles as the AI-Overview citation answer for "what is jod".
  3. Trust strip above the fold with three concrete signals: "Insurance underwritten by Etiqa", "Singapore-registered (UEN: [fill in])", "Daily or next-working-day pay". Per entity-optimizer/SKILL.md Step 2 Category 5, naming the underwriter is the highest-weight trust signal.
  4. "Trusted by" partner-logo strip — NTUC FairPrice, McDonald's, Four Points (matches in-site search top intent).
  5. Standardise to "Jod" — drop "Jod Board" everywhere.
  6. Single H1: Jod — Singapore Jobs App for Blue-Collar Workers. The emotional line "Work today, get paid tomorrow." becomes a hero H2.

JSON-LD

See Global JSON-LD for app/root.jsx above. The homepage uses the global schema; no page-specific JSON-LD needed.

Plus: add og:title, og:description, og:image (1200x630), og:url, og:type=website, og:site_name=Jod, twitter:card=summary_large_image, twitter:title, twitter:description, twitter:image.


Page 2: /about

Current: Title "About Us — Jod". Description is generic mission boilerplate. H1 "Empowering your journey". Opening line is awkward.

GSC: 88+ trust-related impressions/month with zero clicks (see Why this matters § Trust-query gap).

Title and meta

Final A — entity definitional (recommended primary)

  • Title: What Is Jod? Singapore's Blue-Collar Jobs App | About (53 chars)
  • Description: Jod is a Singapore jobs app for blue-collar workers. MOM-licensed employers, free Etiqa insurance, daily pay. Trusted by NTUC, McDonald's, more. (146 chars)

Why: title literally answers the highest-impression unanswered query ("what is jod"). Three trust signals + named employers. Expected CTR lift on "what is jod" from 0% to 8-12%.

Final B — click-driven

  • Title: About Jod — Singapore Jobs App with Daily Pay & Insurance (57 chars)
  • Description: Jod connects Singapore's blue-collar workers with verified F&B, retail, cleaning, security, and warehouse employers. Daily pay. Free Etiqa insurance. (148 chars)

Content audit

  1. Replace H1What Is Jod? (per geo-content-optimizer/SKILL.md Step 3 — answer-first H1 wins AI Overviews).
  2. Replace opening line"Jod is a Singapore jobs app. We help blue-collar workers find work in F&B, retail, cleaning, security, logistics, and warehouse roles. Every job includes free worker insurance underwritten by Etiqa." (canonical 40-word standalone definition).
  3. Trust section directly under the definition — Singapore UEN, registered office address, MOM Employment Agency licence (if held), insurance underwriter (Etiqa), year founded.
  4. Numbers strip — workers registered, jobs completed, employers, insurance claims paid. Even rough numbers count (per geo-content-optimizer/SKILL.md Step 3 — specific data over vague claims).
  5. "What does Jod mean?" sub-section — wins the "jod meaning" tail and supports entity disambiguation. ("jod" is also a Hebrew letter and a Dutch word — must explicitly disambiguate.)
  6. Founder bio block — name, title, prior experience, LinkedIn link. Per entity-optimizer/SKILL.md Step 2 Category 6, the founder is a key entity signal. Apply PDPA care for Singapore residents.

JSON-LD

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "AboutPage",
"@id": "https://jodapp.com/about#webpage",
"url": "https://jodapp.com/about",
"name": "What Is Jod?",
"description": "Jod is a Singapore jobs app for blue-collar workers, with MOM-licensed employers, daily pay, and free Etiqa-underwritten worker insurance.",
"isPartOf": { "@id": "https://jodapp.com/#website" },
"mainEntity": { "@id": "https://jodapp.com/#organization" },
"primaryImageOfPage": { "@id": "https://jodapp.com/#logo" },
"datePublished": "[YYYY-MM-DD]",
"dateModified": "[YYYY-MM-DD]"
}
]
}

Plus a re-declared Organization block with address, founder, foundingDate matching the global schema (@id must match exactly per schema-markup-generator/SKILL.md Step 2).


Page 3: /contact

Current: Title "Contact Us | Jod". Description: "Get in touch with Jod via WhatsApp or Email. We are here to help!".

GSC: "jod" 8/926/pos 4.10/CTR 0.86% (second-largest CTR waste — 918 wasted impressions).

Title and meta

Final A — channel-explicit (recommended primary)

  • Title: Contact Jod Singapore — WhatsApp, Email & Phone Support (55 chars)
  • Description: Need help with the Jod app, your account, payouts, or insurance claims? Message Jod on WhatsApp, email support@jodapp.com, or call our Singapore team. (152 chars)

Final B — promise-driven

  • Title: Talk to Jod Support — Singapore Workers, Reply in Hours (55 chars)
  • Description: Stuck with an application, payout, or insurance claim? Jod's Singapore support team replies within 4 hours on WhatsApp and email. Open Mon–Sun. (146 chars)

Content audit

  1. Phone number above the fold — many Bangladeshi/Indian/Filipino workers prefer voice over text.
  2. Support hours visible — "Mon–Sun 8am–10pm SGT" or whatever the truth is.
  3. Singapore office address with Google Maps embed — major trust signal for migrant workers worried about scams.
  4. "What can we help with?" pre-filled WhatsApp links — one per intent (account, application, payout, insurance, employer inquiry).
  5. Multilingual WhatsApp pre-fills — Bengali, Tamil, Bahasa Indonesia (per geo-content-optimizer/SKILL.md Singapore-specific E-E-A-T).
  6. Add an FAQ section with the top 5 support questions — answers each get FAQPage schema. Recovers 918 wasted "jod" impressions.

JSON-LD

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "ContactPage",
"@id": "https://jodapp.com/contact#webpage",
"url": "https://jodapp.com/contact",
"name": "Contact Jod Singapore",
"isPartOf": { "@id": "https://jodapp.com/#website" },
"about": { "@id": "https://jodapp.com/#organization" }
},
{
"@type": "Organization",
"@id": "https://jodapp.com/#organization",
"address": {
"@type": "PostalAddress",
"streetAddress": "[fill in]",
"addressLocality": "Singapore",
"postalCode": "[fill in]",
"addressCountry": "SG"
},
"contactPoint": [
{
"@type": "ContactPoint",
"telephone": "+65-XXXX-XXXX",
"contactType": "customer support",
"email": "support@jodapp.com",
"areaServed": "SG",
"availableLanguage": ["English", "Bengali", "Tamil", "Bahasa Indonesia"],
"hoursAvailable": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
"opens": "08:00",
"closes": "22:00"
}
}
]
}
]
}

Use Organization (not LocalBusiness) since Jod is a software company without a public storefront — plugin clarification.


Page 4: /how-it-works

Current: Title "How Jod Works | Jod" (brand stutter). Body is a single YouTube iframe — no text content.

GSC: "jod" 7/1,212/pos 5.21/CTR 0.58% — biggest single-page CTR waste on the site (1,205 wasted impressions).

Title and meta

Final A — process-explicit (recommended primary)

  • Title: How Jod Works — Apply, Work, Get Paid in Singapore (50 chars)
  • Description: Sign up, browse Singapore jobs, apply in one tap, work, and get paid daily. Jod includes free Etiqa insurance. Watch the 2-min video. (133 chars)

Final B — onboarding hook

  • Title: Jod in 2 Minutes — How to Find Singapore Jobs & Get Paid (56 chars)
  • Description: New to Jod? Watch the 2-minute walkthrough and learn how to apply for F&B, retail, cleaning, and warehouse jobs in Singapore. Free to join. Daily pay. (149 chars)

Content audit

  1. (P0) Add 4-step text section above the video (each step gets 2 sentences):
    • Step 1 — Sign up. Free. Takes 2 minutes. Singapore phone number required.
    • Step 2 — Browse jobs. Filter by employer, role, or category. New jobs daily across F&B, retail, cleaning, security, logistics, and warehouse.
    • Step 3 — Apply in one tap. Most workers hear back within 24 hours.
    • Step 4 — Work and get paid. Pay arrives the next working day. Every shift includes free Etiqa worker insurance.
  2. Add a video transcript or summary below the embed — required for crawl indexing.
  3. "What you need to start" box — work-pass status (WP, SP, EP, PR, citizen), NRIC/FIN, Singapore phone, bank account.
  4. Cross-link to /help/faqs at the bottom.
  5. GEO addition: 3 dated FAQ items at the page foot — "How long does sign-up take?", "When do I get paid?", "Is Jod free to use?". Each with a 50-80 word answer.

JSON-LD

Triple-stack: HowTo + VideoObject + FAQPage.

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "HowTo",
"@id": "https://jodapp.com/how-it-works#howto",
"name": "How to find and apply for jobs on Jod",
"description": "A 4-step guide to signing up, applying, working, and getting paid on Jod, the Singapore blue-collar jobs app.",
"totalTime": "PT5M",
"estimatedCost": { "@type": "MonetaryAmount", "currency": "SGD", "value": "0" },
"supply": [
{ "@type": "HowToSupply", "name": "Singapore phone number" },
{ "@type": "HowToSupply", "name": "NRIC or FIN" },
{ "@type": "HowToSupply", "name": "Singapore bank account" }
],
"step": [
{ "@type": "HowToStep", "position": 1, "name": "Sign up free", "text": "Create your Jod account in 2 minutes using your Singapore phone number." },
{ "@type": "HowToStep", "position": 2, "name": "Browse jobs", "text": "Filter Singapore jobs by employer, role, or category — F&B, retail, cleaning, security, logistics, warehouse." },
{ "@type": "HowToStep", "position": 3, "name": "Apply in one tap", "text": "Tap apply on any job. Most workers hear back within 24 hours." },
{ "@type": "HowToStep", "position": 4, "name": "Work and get paid", "text": "Complete the shift. Pay arrives the next working day. Every shift includes free Etiqa worker insurance." }
]
},
{
"@type": "VideoObject",
"@id": "https://jodapp.com/how-it-works#video",
"name": "How Jod Works",
"description": "A 2-minute video showing how to find and apply for jobs on the Jod app in Singapore.",
"thumbnailUrl": "https://i.ytimg.com/vi/-lijla5rohg/maxresdefault.jpg",
"uploadDate": "[YYYY-MM-DD]",
"embedUrl": "https://www.youtube.com/embed/-lijla5rohg",
"publisher": { "@id": "https://jodapp.com/#organization" }
}
]
}

Critical: HowTo schema requires the steps to be visible on the page — schema without visible steps is a guideline violation. Ship the content fix and the schema together.


Page 5: /help/faqs

Current: Title "FAQs | Jod". 20 well-structured Q&As, no FAQPage schema.

GSC: "jod" 1/717/pos 2.91/CTR 0.14% — worst CTR on the site (page ranks position 3 but no one clicks).

Title and meta

Final A — section-explicit (recommended primary)

  • Title: Jod FAQs — Account, Insurance, Pay & Rewards Help (50 chars)
  • Description: Quick answers about your Jod account, free worker insurance, daily payouts, JodRewards points, and applying for Singapore jobs. (128 chars)

Final B — speed-promise

  • Title: Jod Help Centre — Get Answers in 30 Seconds (45 chars)
  • Description: New to Jod? Existing worker? Find quick answers about signing up, getting paid, claiming insurance, and earning JodRewards points. Updated weekly. (147 chars)

Content audit

  1. (P0) Add FAQPage schema — single highest-leverage schema change on the site. FAQ rich results frequently double or triple SERP CTR for support intent.
  2. Surface top 3 questions above the fold: "When do I get paid?", "Am I insured?", "How do I apply?".
  3. In-page search bar — 717 imp/month implies question-shaped queries.
  4. Collapsible sections with anchor links<h2 id="payouts">When do I get paid?</h2> lets Google index individual answers as Site Links.
  5. Cross-link from each answer to /insurance, /rewards, /contact.
  6. GEO addition: rewrite each answer to be standalone-citable. Open with a one-sentence direct answer. Follow with a sourced/dated detail. Avoid pronouns that need context.

JSON-LD

{
"@context": "https://schema.org",
"@type": "FAQPage",
"@id": "https://jodapp.com/help/faqs#faqpage",
"url": "https://jodapp.com/help/faqs",
"name": "Jod FAQs",
"inLanguage": "en-SG",
"isPartOf": { "@id": "https://jodapp.com/#website" },
"datePublished": "[YYYY-MM-DD]",
"dateModified": "[YYYY-MM-DD]",
"mainEntity": [
{
"@type": "Question",
"@id": "https://jodapp.com/help/faqs#payouts",
"name": "When do I get paid for a job on Jod?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Pay arrives the next working day after your shift ends. Payments are processed automatically by 09:00 SGT and typically clear into the Singapore bank account you registered on the Jod app by 17:00 SGT the same day."
}
},
{
"@type": "Question",
"@id": "https://jodapp.com/help/faqs#insurance",
"name": "Am I insured when I work a Jod gig?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Every worker registered on Jod is covered by Personal Accident and Public Liability insurance, underwritten by Etiqa Insurance Singapore, for every completed job. There is no extra cost to the worker."
}
},
{
"@type": "Question",
"@id": "https://jodapp.com/help/faqs#rewards",
"name": "What is JodRewards?",
"acceptedAnswer": {
"@type": "Answer",
"text": "JodRewards is the Jod loyalty programme. Workers earn points for every job they complete and can redeem them for cash bonuses, food vouchers, sponsored insurance top-ups, and exclusive employer-campaign payouts."
}
}
]
}

Add the full set of 20 Q&As when implementing. Per schema-markup-generator/SKILL.md Step 2: JSON-LD text must be identical to the visible answer wording, not a paraphrase.


Page 6: /sign-up

Current: Title "Sign up" (no brand). Description is leftover boilerplate from a different product ("dead simple appointment and scheduling app"). No H1.

GSC: "jod" 2/282/pos 1.5/CTR 0.71% — page ranks #1.5 for "jod" but converts at 0.71% because of the broken description. Single biggest leverage on the site.

Title and meta

Final A — branded sign-up (recommended primary)

  • Title: Sign Up for Jod — Free Singapore Blue-Collar Jobs App (53 chars)
  • Description: Create your free Jod account in 2 minutes. Apply for F&B, retail, cleaning, security, and warehouse jobs in Singapore. Daily pay. Free Etiqa insurance. (151 chars)

Final B — quantified offer

  • Title: Join Jod Free — Apply to Singapore Jobs in 2 Minutes (52 chars)
  • Description: Free to join. Free Etiqa worker insurance. Daily pay. Sign up for Jod and apply to F&B, retail, cleaning, security, and warehouse jobs in Singapore. (148 chars)

Expected CTR lift: 0.71% → 15%+ on a position-1.5 result.

Content audit

  1. (P0) Add an H1Sign Up for Jod — Free Singapore Jobs App.
  2. 3 trust bullets next to the form: "Free forever", "Etiqa worker insurance included", "Daily pay".
  3. Show the value proposition above the form.
  4. Social proof under the form — "Join [X]+ workers in Singapore" (only if real).
  5. "Already have an account? Log in" link prominently.
  6. GEO addition: 30-word standalone definition above the form for AI-Overview citation.

JSON-LD

WebPage + BreadcrumbList. The schema is light because the page inherits Organization and WebSite from root.


Page 7: /login

Current: Title "Sign In". Malformed <meta> tag: name="Login" (invalid) with content "Create your account today!" (sign-up copy on a login page). No H1.

GSC: "jod login" 8/47/pos 2.96/CTR 17% — already good, minor optimisation.

Title and meta

Final A — exact-match (recommended primary)

  • Title: Jod Login — Sign In to Your Singapore Jobs Account (50 chars)
  • Description: Log in to your Jod account to apply for jobs, track shifts, view payouts, claim worker insurance, and manage JodRewards in Singapore. (134 chars)

Final B — dual-sided

  • Title: Log In to Jod — Singapore Workers & Employers (46 chars)
  • Description: Sign in to your Jod account. Workers: track shifts and payouts. Employers: manage job posts and applicants. One Jod login, both sides. (134 chars)

Content audit

  1. (P0) Fix the malformed meta tagname="Login"name="description".
  2. (P0) Add an H1Log In to Jod.
  3. "Forgot password?" link prominent.
  4. "Don't have an account? Sign up free" link.
  5. Replace internal jargon — "Gig Partners" → "Workers"; "Careers" → "Employers".

Page 8: /rewards

Current: Title "Rewards" (no brand). H1 "Effortless benefits!".

GSC: "jod rewards" 6/10/pos 1.9/CTR 60% (already winning — preserve and slightly improve).

Title and meta

Final A — programme-named (recommended primary)

  • Title: JodRewards — Earn Points for Every Singapore Job (48 chars)
  • Description: Get points every time you complete a job on Jod. Redeem for cash bonuses, food vouchers, sponsored insurance, and exclusive employer campaigns. (143 chars)

Final B — rule-of-three

  • Title: JodRewards — Free Points, Bonuses & Insurance Top-Ups (53 chars)
  • Description: Every shift you complete on Jod earns you JodRewards points. Spend them on food vouchers, cash bonuses, and Etiqa insurance top-ups. Free for every Jod worker. (159 chars)

Content audit

  1. Replace H1JodRewards — Earn Points for Every Singapore Job.
  2. Points table above the fold: 1 job = X points; 100 points = $5 voucher.
  3. Named partners: NTUC, FairPrice, McDonald's vouchers; Etiqa insurance top-ups.
  4. "How to earn faster" section linking /bonuses campaigns.
  5. Standardise to "JodRewards" (one word) across the entire site.
  6. GEO addition: answer "What is JodRewards?" in 40-50 words above the points table.

JSON-LD

Use Service (well-supported) instead of LoyaltyProgram (not yet a confirmed rich-result type) — plugin verification.


Page 9: /bonuses

Current: Title "Bonuses - Campaigns & Challenges". Description uses internal acronym "FSC". Multiple H1s on page.

Title and meta

Final A — dollar-led (recommended primary)

  • Title: Jod Campaigns — Earn Up to $200 Bonuses Each Month (50 chars)
  • Description: Join Jod's monthly campaigns: refer-a-friend, first-month challenges, FairPrice and partner promotions. Earn up to $200 extra on top of your job pay. (151 chars)

Final B — short-and-sharp

  • Title: Earn $200 Extra on Jod — Bonuses & Refer-a-Friend (49 chars)
  • Description: Refer friends and earn cash. Complete your first month and unlock bonuses. Join FairPrice and partner campaigns. All on top of your daily Jod pay. (146 chars)

Content audit

  1. Fix multiple H1s — single H1: Jod Campaigns and Bonuses. Each campaign sub-section becomes H2.
  2. Move "$200 incentive" to the top.
  3. Spell out FSC — internal acronyms violate CORE-EEAT C09.
  4. End-date countdown for time-limited campaigns.
  5. 3-step "How does it work?" per campaign.

JSON-LD

Use ItemList of Event items for time-bound campaigns. (PromotionalOffer is not a top-level Schema.org type — plugin caught this v1 error.)


Page 10: /insurance

Current: Title "Worker Insurance | Jod". Description: bland, no underwriter named.

Title and meta

Final A — underwriter-named (recommended primary)

  • Title: Jod Worker Insurance — Free Etiqa Cover for SG Workers (54 chars)
  • Description: Every Jod worker is covered by free Personal Accident and Public Liability insurance, underwritten by Etiqa, for every completed shift in Singapore. (149 chars)

Final B — scenario-led

  • Title: Free Worker Insurance with Every Jod Shift in Singapore (54 chars)
  • Description: Work-injury claim? Public liability claim? Jod includes Personal Accident and Public Liability cover, free, underwritten by Etiqa, for every shift you complete. (159 chars)

Content audit

  1. Name Etiqa as the underwriter prominently — single highest-weight trust signal.
  2. Coverage amounts — Personal Accident: up to $X; Public Liability: up to $X.
  3. "How to claim" 3-step walkthrough.
  4. "What's not covered" — honest exclusions build trust faster than vague "comprehensive cover".
  5. Policy reference number / certificate — link to a downloadable summary if Etiqa issues one.
  6. MAS check — Etiqa is regulated by the Monetary Authority of Singapore. State this once for entity trust.

JSON-LD

Use Service with provider = Etiqa Insurance Singapore. Plugin clarification: InsuranceAgency is for brokers/sellers; if Jod is the policyholder of a master policy, the right model is Service offered by Jod, provided by Etiqa.


Page 11: /employers

Current: Title uses U+2011 non-breaking hyphens (P0 bug #4). No og:image, no canonical, no JSON-LD. Has Employer FAQs section without FAQPage schema.

GSC: "jod singapore" 6/109/pos 4.79 + lots of zero-click B2B impressions ("how to post jobs in singapore" 52 imp/0 clicks, "find workers" 9/0, "employer post job" 7/0).

Title and meta

Final A — query-targeted (recommended primary)

  • Title: Hire Blue-Collar Workers in Singapore — Post Jobs on Jod (56 chars, regular hyphens)
  • Description: Post full-time, part-time, and gig jobs in Singapore. Hire vetted F&B, retail, cleaning, security, logistics, and warehouse workers. Free to post. (149 chars)

Final B — speed-promise

  • Title: Post Jobs Free in Singapore — Hire in 48 Hours | Jod (51 chars)
  • Description: Need staff fast? Post your job on Jod and reach Singapore's blue-collar worker pool. F&B, retail, cleaning, security, logistics. First post free. (147 chars)

Content audit

  1. (P0) Replace U+2011 with regular U+002D hyphens.
  2. (P0) Add og:image (1200x630) — without it, every WhatsApp/LinkedIn share is broken.
  3. Add canonical tag.
  4. FAQPage schema for the existing Employer FAQs section.
  5. Numbers strip — workers in network, average time-to-hire, top employer brands.
  6. Add a "How to post jobs in Singapore" content section — 52 impressions/month with zero clicks today.
  7. GEO addition: 40-word definition at the top.

Page 12: /jobs (job listing index)

Current: Title "Job List | Jod Board". H1 "Jobs". Brand inconsistency. No ItemList schema.

Title and meta

Final A — category-explicit (recommended primary)

  • Title: Singapore Jobs — F&B, Retail, Cleaning, Warehouse | Jod (54 chars)
  • Description: Browse current jobs in Singapore on Jod. Filter by employer (NTUC, FairPrice, McDonald's), role (cleaner, driver, packer), or category. Apply free. (151 chars)

Final B — hiring-now

  • Title: Jobs in Singapore Hiring Now — Apply Today on Jod (49 chars)
  • Description: Hundreds of Singapore jobs hiring now: F&B, retail, cleaning, security, logistics, warehouse. Daily pay. Free Etiqa insurance. Apply in one tap. (148 chars)

Content audit

  1. Replace H1Singapore Jobs Hiring Now.
  2. Top filter bar visible above the fold — by employer, role, category (matches in-site search hierarchy).
  3. "Top Employers" strip linking to dedicated employer pages.
  4. Job count by category ("F&B (45 jobs)").
  5. Standardise to "Jod" — drop "Jod Board".
  6. GEO addition: 50-word definitional intro paragraph above the listings.

JSON-LD

CollectionPage + ItemList pointing to individual job detail pages. Each individual job detail page must carry the full JobPosting schema (Google for Jobs eligibility — high-leverage).


Page 13: /jobs/mcdonalds

Current: Title "McDonald's Jobs - Part-time & Gig Opportunities" — no Jod brand, no Singapore in title. Has og:* and twitter:* but missing twitter:card (P0 bug #5). No og:type, no og:url, no og:site_name. No JSON-LD.

Title and meta

Final A — query-matched (recommended primary)

  • Title: McDonald's Singapore Jobs — Apply on Jod (40 chars)
  • Description: Apply to McDonald's part-time, gig, and full-time jobs in Singapore on Jod. Daily pay. Free Etiqa worker insurance. Real McDonald's vacancies. (143 chars)

Final B — role-specific

  • Title: McDonald's Jobs in Singapore — Apply Today on Jod (49 chars)
  • Description: New McDonald's vacancies in Singapore: crew, kitchen, manager, part-time and gig shifts. Daily pay. Free Etiqa insurance. Apply in 2 minutes on Jod. (148 chars)

Content audit

  1. (P0) Add twitter:card=summary_large_image.
  2. (P0) Add og:type=website, og:url (canonical), og:site_name=Jod.
  3. (P0) Add JobPosting JSON-LD for each McDonald's role — Google for Jobs eligibility.
  4. Replace title — "Singapore" and "Jod" must both appear.
  5. McDonald's logo + "Verified Employer" badge — third-party brand co-citation is the strongest signal.
  6. GEO addition: 40-word definition at the top.

JSON-LD

CollectionPage + ItemList of JobPosting (one per active McDonald's role). Schema must mirror exactly the role title and description shown on the page (schema-markup-generator/SKILL.md Step 2). Replicate the structure for NTUC, FairPrice, and other top employer pages.


Plugin-specific contributions (v2 vs v1)

What the seo-geo-claude-skills plugin added beyond a generic SEO audit. This section is the verification mechanism — each item points to the exact plugin file path that contributed it.

From cross-cutting/entity-optimizer/SKILL.md

  1. Brand entity authority playbook — reframed the brand-CTR problem from a title-text problem to an entity-resolution problem. Wikidata, Knowledge Graph, NAP+E consistency.
  2. AI Entity Resolution Test — measurable input the previous audit lacked.
  3. 6 entity-signal categories (47 signals) — structured data, knowledge bases, NAP+E, content-based, third-party, AI-specific.
  4. @id consistency across schema blocks — single canonical @id reused across every page.
  5. PDPA awareness for founder profiles — lawful-basis check before publishing personal data.

From build/schema-markup-generator/SKILL.md

  1. Visible-content alignment rule — every claim in JSON-LD must be visibly present on the page in matching wording.
  2. MobileApplication schema added to homepage (new vs v1) — strengthens the "jod app" query.
  3. HowTo + VideoObject stack on /how-it-works (v1 had VideoObject only).
  4. Service schema for /insurance with Etiqa as provider — corrects v1's InsuranceAgency error.
  5. @graph wrapper standard on every multi-type page.
  6. dateModified discipline — must update on every save and match the visible "Last updated" date.
  7. inLanguage: "en-SG" on FAQPage and WebSite.
  8. Event (not PromotionalOffer) for time-bound campaignsPromotionalOffer is not a top-level Schema.org type; plugin caught this.

From build/meta-tags-optimizer/SKILL.md

  1. Pixel-width validation, not character counts — ~600px desktop / ~660px mobile for titles.
  2. Three-option generation, then narrow to two A/B variants.
  3. CORE-EEAT C01 Intent Alignment + C02 Direct Answer check on every meta.
  4. Verifiability check on numbers (CORE-EEAT R01) — every number in a meta description must be provable on the page. Removed v1's unverified "1,000+ jobs" and "50,000+ workers".
  5. Question-led mobile descriptions — 8-15% lift on mobile.

From build/geo-content-optimizer/SKILL.md

  1. 25-50 word standalone definitions as the first paragraph on every public page — citable, AI-Overview-ready paragraph.
  2. Quotable-content patterns — open with a one-sentence answer, follow with a sourced/dated detail.
  3. Specific-data discipline — replace vague benefit language with named providers (Etiqa), named regulators (MAS, MOM), named partners (NTUC, McDonald's), named numbers.
  4. Singapore-specific E-E-A-T signals — UEN, MOM EA licence, MAS regulator, multilingual support languages.
  5. Disambiguation for "Jod" — explicitly disambiguate from the Hebrew letter "jod" and the Dutch word "jod".
  6. Freshness signals on FAQ rich resultsdatePublished + dateModified per question.

From optimize/on-page-seo-auditor/SKILL.md

  1. CORE-EEAT 17-item on-page scan as the explicit cross-check on every page audit.

Gap analysis — additional considerations

Things either out of scope of the original action item #1 wording, or things we have not covered in prior conversations. Recommend folding most of these in.

  1. Brand defense / competitor SERP screenshot baseline — who else ranks for "jod" in Singapore? FastJobs, MyCareersFuture, JobStreet, Indeed could be bidding on our brand. Take a SERP screenshot today; re-take in 8 weeks for comparison.
  2. Multi-subdomain brand splitgig.jodapp.com is appearing in branded SERP with 853 imp / 0.35% CTR. Need to decide which subdomain owns the brand SERP and canonicalize. Per entity-optimizer/SKILL.md Step 2 Category 3 (NAP+E consistency), the canonical brand domain must be one.
  3. Knowledge Panel target — covered in Brand entity authority playbook above. Out-of-scope addition to the original action item.
  4. Sitelinks influence — internal linking from homepage shapes which sub-pages appear as Sitelinks. Audit and tighten internal navigation.
  5. Tracking baseline — without a before/after snapshot, we cannot prove the work moved the needle. See Success metrics & tracking below.
  6. CTR is a ranking signal — improving CTR may also improve position. Action item #1 has a self-reinforcing effect (better CTR → better position → more impressions → more clicks).
  7. Brand defense via Google Ads — bidding on own brand is often worth it when competitors bid on it. Worth a separate evaluation by Marketing.
  8. Mobile-first SERP testing — 73% of clicks are on mobile. Test new titles on a mobile-width SERP simulator (e.g. mangools.com SERP simulator).
  9. Schema validation pipeline — every JSON-LD change must be tested via Google Rich Results Test before merge. Consider adding a CI step that validates Organization, WebSite, FAQPage, JobPosting schemas on staging before deploy.
  10. Multi-language brand search — pull non-English brand variants from GSC: "joda", "jod kerja" (Malay), Chinese-script brand searches. Singapore audience is multilingual.
  11. Page Experience signals — Core Web Vitals (LCP/INP/CLS) affect SERP CTR. Hero <img> and AdSense issues on homepage should be fixed in parallel. (Tracked separately as action item #2 in the parent report.)
  12. Robots.txt missing Sitemap directive — already noted in the parent report. Adding the directive helps non-Googlebot crawlers discover the sitemap and is part of clean technical SEO hygiene.
  13. GSC URL-prefix property returns zero rows — recommend deprecating it to reduce confusion. Use only sc-domain:jodapp.com.
  14. /about scope expansion — formally adding /about rewrites to action item #1 because the trust-query data shows it is a high-leverage SERP page. Originally implicit; making it explicit.

Implementation plan (phased)

Week 1 — P0 bugs and schema foundation

  • Fix all 7 P0 bugs (Eng-Web, ~1 day total)
  • Marketing decides canonical brand string (~30 min decision)
  • Run AI Entity Resolution Test (Phase 0 of brand entity playbook) — Marketing, ~1 hour
  • Take baseline SERP screenshot for "jod" on Google.com.sg — Marketing, ~5 min
  • Snapshot current GSC numbers as the baseline metric set

Week 2 — Global JSON-LD + homepage rewrite

  • Deploy Organization + WebSite + MobileApplication schemas to app/root.jsx (Eng-Web)
  • Validate via Schema.org Validator + Google Rich Results Test (Eng-Web)
  • Rewrite homepage / title, description, OG tags, content (Marketing copy + Eng-Web)
  • Submit homepage to GSC for re-indexing

Weeks 3-4 — Trust pages

  • Rewrite /about (entity definitional content, founder bio, UEN, trust strip) — Marketing + Eng-Web
  • Rewrite /contact (channel-explicit copy, multilingual WhatsApp pre-fills, FAQPage stub) — Marketing + Eng-Web
  • Rewrite /how-it-works (4-step text, video transcript, HowTo + VideoObject schema) — Marketing + Eng-Web
  • Rewrite /help/faqs (top-3 above the fold, FAQPage schema) — Marketing + Eng-Web

Weeks 5-6 — Conversion pages + employer page

  • Rewrite /sign-up (title, H1, description, trust bullets) — Marketing + Eng-Web
  • Rewrite /login (title, fix malformed meta, H1) — Marketing + Eng-Web
  • Rewrite /employers (regular hyphens, og:image, FAQPage schema, "How to post jobs" section) — Marketing + Eng-Web
  • Rewrite /jobs index (Singapore in title, ItemList schema, top employers strip) — Marketing + Eng-Web

Weeks 7-8 — Content programme pages + replicate top-employer pattern

  • Rewrite /rewards and /bonuses (programme-named titles, points table, single H1, Service/ItemList schemas) — Marketing + Eng-Web
  • Rewrite /insurance (Etiqa named, MAS-regulated, Service schema, coverage amounts) — Marketing + Eng-Web
  • Rewrite /jobs/mcdonalds (twitter:card, JobPosting schema, "Verified Employer" badge) — Marketing + Eng-Web
  • Replicate /jobs/mcdonalds pattern for 3-5 other top employer pages (NTUC, FairPrice, Four Points, Mercuria, Seonggong) — Marketing + Eng-Web

Months 2-3 — Brand entity authority work

  • Create Wikidata entry for Jod (Marketing)
  • Submit to industry directories: CrunchBase, Tech in Asia, e27, etc. (Marketing)
  • Standardise NAP+E across all owned platforms (Marketing)
  • Add /about/team page with founder Person schema (Marketing + Eng-Web)
  • Press outreach for 3+ editorial features (Marketing)
  • Claim Google Business Profile for SG office (Marketing)
  • Re-run AI Entity Resolution Test monthly (Marketing)

Months 4-6 — Knowledge Panel candidate

  • Wikipedia article candidacy (only when 3+ press features in place) — Marketing
  • Glassdoor / Trustpilot review profile claim — Marketing
  • Monitor Google Knowledge Graph API for Jod entity ID emergence — Marketing

Success metrics & tracking

Take the baseline today. Track weekly. Review at 4-week, 8-week, 12-week, and 6-month checkpoints.

Baseline (2026-04-09 to 2026-05-04)

MetricBaseline valueSource
"jod" clicks (28d)179GSC
"jod" impressions (28d)7,657GSC
"jod" CTR2.34%GSC
"jod" avg position6.93GSC
"what is jod" clicks (28d)0GSC
"what is jod" impressions (28d)40GSC
Trust-query total impressions (28d)~88GSC
Trust-query total clicks (28d)0GSC
Pages with Organization schema0Code audit
Pages with FAQPage schema0Code audit
Pages with full OG tags1 of 13Code audit
AI Entity Resolution Test scorenot yet measuredPhase 0 task

Target trajectory

Checkpoint"jod" CTR target"jod" position targetNew milestones
4 weeks3.0%6.5Schemas live, homepage rewrite live, P0 bugs cleared
8 weeks4.0%6.0All trust + conversion pages rewritten, Wikidata entry live
12 weeks5-7%5.0Top-employer page pattern replicated, 3+ press features
6 months7-15%1-3Knowledge Panel candidate, Sitelinks search box live

Weekly tracking query

Run this gsccli command every Monday and log to a shared sheet:

gsccli query run -d query \
--filter 'query~jod' \
--start-date 7daysAgo --end-date today \
--site sc-domain:jodapp.com \
-f csv > weekly-jod-tracking-$(date +%F).csv

Regression alerts

  • If "jod" CTR drops below 2.0% at any point, investigate immediately.
  • If "jod" position drops below 8.0, investigate immediately.
  • Use GSC's "Performance" report email alerts as a backup signal.

Owners & responsibilities

RoleOwnerResponsibilities
Marketing copywritingMarketingAll title/description/OG copy. Brand consistency decision. Content rewrites for /about, /how-it-works, FAQ answers, etc.
Marketing — entity workMarketingWikidata entry, directory submissions, NAP+E consistency across platforms, Google Business Profile claim, press outreach, AI Entity Resolution Test monthly
Marketing — Google Ads adminMarketingBrand defence campaign evaluation (gap #7)
Marketing — trackingMarketing/BIWeekly GSC pull, baseline screenshot, regression alerts, monthly checkpoint reports
Engineering — Web (route changes)Eng-WebAll meta and links exports, HTML head changes, JSON-LD insertion, P0 bug fixes
Engineering — Web (schema validation)Eng-WebRun every JSON-LD through Schema.org Validator + Google Rich Results Test before merge. Optional: CI pipeline integration
Engineering — Web (content components)Eng-WebNew /about/team route, /news or /press section, content components for top-employer pages
SalesSalesIdentify employer partnerships willing to be featured in case studies (parallel to action item #15 in parent report)

References

Plugin skills used (cited inline above)

  • cross-cutting/entity-optimizer/SKILL.md — brand entity authority playbook, AI Entity Resolution Test, NAP+E consistency
  • build/schema-markup-generator/SKILL.md — JSON-LD content-type mapping, visible-content alignment, validation
  • build/meta-tags-optimizer/SKILL.md — pixel-width validation, three-option generation, CORE-EEAT verifiability
  • build/seo-content-writer/SKILL.md — 9-step content workflow, content briefs as input contracts
  • build/geo-content-optimizer/SKILL.md — Singapore-specific E-E-A-T signals, quotable-content patterns, standalone definitions
  • optimize/on-page-seo-auditor/SKILL.md — 11-step audit rubric, CORE-EEAT 17-item scan, single-H1 enforcement

Plugin location: /Users/alaay/.claude/plugins/marketplaces/aaron-seo-geo/

Prior reports

Code references

  • app/root.jsx — global meta + JSON-LD location
  • app/routes/home.jsx:19-27 — homepage meta export (P0 bug #3)
  • app/routes/about-page.jsx:8-11 — about page meta export
  • app/routes/contact-page.jsx:16-17 — contact meta export
  • app/routes/how-it-works-page.jsx:9-10 — how-it-works meta export (P0 bug #6)
  • app/routes/help/help-faqs-page.jsx:11-12 — FAQs meta export
  • app/routes/identities-user/identities-user-sign-up-page.jsx:14-17 — sign-up meta export (P0 bugs #1 + #7)
  • app/routes/login-page.jsx:14-19 — login meta export (P0 bug #2)
  • app/routes/rewards-page.jsx:10-13 — rewards meta export
  • app/routes/bonuses-page.jsx:7-10 — bonuses meta export
  • app/routes/insurance-page.jsx:9-10 — insurance meta export
  • app/routes/org/org-home-page.jsx:5-15 — employers meta export (P0 bug #4)
  • app/routes/jobs/job-list-page.jsx:24-27 — jobs index meta export
  • app/routes/jobs/jobs-mcdonald-page.jsx:19-81 — McDonald's landing meta export (P0 bug #5)
  • app/domains/listings-job/listings-job-service.js:32 — only existing JSON-LD location (job detail pages)

External validation tools


Document compiled 2026-05-07 by Senior PM (LLM agent) using GA4 + GSC data, live HTML inspection, jodapp-web codebase audit, and the seo-geo-claude-skills plugin (v2 audit with explicit plugin citations). Implements item #1 of the parent web-seo-report's prioritised backlog.