Honestly, revenue is a big reason I keep working on this project. The sense of accomplishment is there too, but when you're carving out personal time to build something consistently, the prospect of earning money from it becomes the strongest motivator. Paid subscriptions or in-app purchases didn't seem like the right fit for a psychology test and mini-game service, and I concluded that advertising was the only realistic monetization option. So I decided to apply for Google AdSense.
Submitting the Application
Since this was a financial application, I had to fill in personal information, bank account details, and so on. Some fields were confusing, so I went through them one by one with Gemini's help — taking screenshots and asking "Should I fill this in like this?" It was the same approach I used when first deploying to Cloudflare.
The First Rejection
A rejection email arrived not long after I applied. There were two reasons listed: "screens with no content or low-value content," and "screens showing under-construction notices, redirects, or other action-focused pages." Just reading the email, I couldn't tell which pages were the problem or what exactly needed to be fixed.
Fixing Things One by One
I showed the rejection reasons to Gemini and asked what needed to be fixed. Then I worked through the issues it pointed out one by one.
- Adding prerendering: With a React SPA, pre-generating each page as HTML at build time lets bots read the content. Since content was already registered in `src/data/`, attaching prerendering wasn't difficult in itself.
- Generating a sitemap: Set up automatic generation of `sitemap.xml` so search engines can discover all pages.
- Adding a Privacy Policy & Terms of Service: These were required under AdSense policy. Gemini drafted them, and I adjusted them to fit the service.
- Buying a domain: Instead of the `.pages.dev` development URL provided by Cloudflare Pages, I purchased and connected `qfitlab.com`. A custom domain is practically required for AdSense.
After finishing these improvements, I reapplied. This time I thought it might go through.
The Second Rejection
Rejected again. This time I looked more closely into why. Google AdSense fundamentally favors text-heavy content like blogs and articles. The idea is that sites with readable text content that search traffic lands on are more suitable for advertising. Q-Fit is a service centered around images, games, and questionnaires — it's structurally short on text content.
Still Working on It
The direction I'm thinking now is to avoid forcing text into the main service and instead create separate text-centered content alongside it — something like an about page or a blog. If I provide readable articles about the games and tests, they can satisfy the text requirements without touching the experience of the main service.
I've been rejected twice and haven't resolved it yet. But I figure it'll work out eventually one way or another, so I'm not particularly discouraged. I have a direction I want to go, and I'm moving toward it bit by bit — that's where things stand right now.