The Rejection Email
After months of building PriceGuess Israel, I decided to monetize with Google AdSense. I added the script tag, submitted my application, and waited. Two days later: "Low value content." That's it. No specifics about which pages were lacking, no guidance on what to fix. Just a vague rejection.
Having been through this process, I want to share exactly what I did to improve my sites and what I learned about what Google actually looks for.
What "Low Value Content" Actually Means
After researching extensively, I discovered that Google's "low value content" rejection usually means one or more of these issues:
- Not enough original content - Your site has too few pages, or the pages that exist are thin (short, generic, or duplicative).
- No blog or editorial content - If your site is primarily an app/tool, Google wants to see supplementary content that demonstrates expertise.
- Missing legal pages - Privacy policy, terms of service, and disclaimer are considered baseline requirements.
- Poor SEO fundamentals - No sitemap, no robots.txt, no structured data, no canonical URLs.
- No clear author/identity - Google wants to know who's behind the content (E-E-A-T: Experience, Expertise, Authoritativeness, Trustworthiness).
My Systematic Approach to Fixing It
Instead of randomly adding content, I treated this like a development project with clear requirements. Here's what I did across both my sites (portfolio at www.etiel.dev and PriceGuess at price.etiel.dev):
1. Content Depth: From 4 to 10 Blog Posts
PriceGuess had only the game itself - no blog, no editorial content. I added 10 substantial blog posts in Hebrew, each covering a different angle:
- Technical deep-dives - How the scraper works, how 1v1 multiplayer is built with Durable Objects
- Data analysis - Why Israelis are bad at guessing prices (based on actual game data)
- Consumer education - Price psychology, shopping tips, supermarket price guides
- Personal narrative - The story of building PriceGuess from idea to launch
Each post is 800-1500 words with original insights from my personal experience, not generic advice you'd find elsewhere.
2. SEO Infrastructure
I added all the technical SEO elements that signal a legitimate, well-maintained site:
- sitemap.xml - Both sites now have comprehensive sitemaps listing every page with last-modified dates and priority levels.
- robots.txt - Simple but present, pointing to the sitemap.
- Canonical URLs - Every page has a
<link rel="canonical">tag to prevent duplicate content issues. - Open Graph & Twitter meta tags - Proper social sharing previews.
- JSON-LD structured data - Schema.org markup for WebSite, Person, and BlogPosting types.
3. Legal Pages
PriceGuess already had privacy and terms pages, but I added a comprehensive disclaimer page. This is especially important for a game that displays real product prices - there needs to be a clear statement that prices are informational and may not reflect current store prices.
4. Content Differentiation
The key insight from the AdSense rejection research was this: Google doesn't just want content - they want original content that provides value you can't get elsewhere. For PriceGuess, that means:
- Analysis based on the game's own guess data that nobody else has
- First-person developer narratives with specific technical lessons learned
- Israeli supermarket price knowledge from scraping and cleaning real product listings
- Honest "what went wrong" stories, not just success narratives
What I Would Do Differently
If I could start over, I would:
- Build the blog from day one - Adding content retroactively is harder than building it alongside the product.
- Write about what I know uniquely - Generic "how to use React" posts don't help. Posts about my specific data, architecture decisions, and mistakes do.
- Set up SEO infrastructure before applying - Sitemaps, structured data, and canonical URLs should be part of the initial deployment checklist.
- Wait until I have 10+ substantial pages - Applying with a 5-page site is risky. Having 15-20 quality pages makes approval much more likely.
The Technical Implementation
For the portfolio (static HTML), adding a blog was straightforward - each post is a standalone HTML file with shared CSS. For PriceGuess (Astro SSR), I created blog posts as Astro pages that use the existing BaseLayout, keeping the same header, footer, and theme system.
The sitemap for PriceGuess is a static XML file in the public/ directory. For a more dynamic approach, you could generate it at build time using Astro's static generation, but since blog posts are added manually, a static sitemap works fine.
Key Takeaways
AdSense approval is not about gaming the system. It's about building a site that genuinely provides value. If your content is thin, the fix isn't to add filler - it's to add depth.
- Quality over quantity - 10 deep, original posts beat 50 shallow ones.
- Personal experience is your moat - Nobody else has your exact data, mistakes, and lessons.
- Technical SEO is table stakes - Sitemaps, structured data, and meta tags are expected, not optional.
- Legal pages matter - Privacy, terms, and disclaimer pages signal legitimacy.