Case study: Kerala PSC Prep, and what Google’s scaled-content update taught me
A bilingual exam-prep site for Kerala Public Service Commission candidates. English and Malayalam. Built from April 2026, run entirely on scheduled tasks, edited by one non-technical person through a folder of batch files. This is the site that got penalised, and the one I learned the most from.
What was built
- Content. A deduplicated bank of 20,500 unique questions, assembled into 12,000 English and 12,000 Malayalam mock files. Daily current-affairs pieces in both languages. Notes, previous-year papers, notifications.
- Video. About 4,800 YouTube uploads in six months, roughly 26 a day: Malayalam Shorts, notes Shorts, long notes videos, daily quizzes. Synthetic Malayalam narration, one voice, acronyms spelled out. Every video uploads private first and a person makes it public.
- Automation. About 50 recurring Windows tasks. Current-affairs generation, a ten-role audit across models, Malayalam translation, publish every 15 minutes with commit, push, Telegram post and IndexNow ping. Nightly generation, slicing, clustering, SEO metadata, backups.
- Routing. Ten model providers behind one router, free tier first, fallback on rate limits and errors, per-provider daily quotas. Ensemble panels across model families for accuracy audits. 89,700 logged model calls between May and October.
- Gates. A spend alert above ₹100 a day. Pipeline failure alerts. A Telegram gate that checks the live YouTube privacy status before posting a link, added after a leak. Dry-run modes and kill switches on every task that can publish.
What it cost
Roughly $20 to $25 in paid model calls over five months for everything above. Free tiers carried the rest. The two spend incidents are more instructive than the total: ₹2,335 in two days from one Gemini overrun in May, which is why free-tier-first routing got locked in, and about ₹500 in October from an autofix pass calling Gemini directly around the router, which is why that pass is now disabled.
What broke
Google. Organic clicks fell 96 percent from April to September. The sitemap had 25,000 URLs. 97 percent of them were near-identical templated quiz pages. Only about 97 URLs earned an impression in 28 days. The site had zero backlinks. Google did what it says it does to scaled content, and it was right.
The quieter failures.
- A truncated block in one model-written file blocked every deploy for two days in September.
- A byte-order mark written by a shell script broke both deploy workflows for a day in October. The site served stale content and nothing alerted.
- A nightly task failed every night for weeks because its wrapper file didn’t exist. Task Scheduler showed it as fine.
- The ten-role audit counted a provider that errored as “zero problems found”. On one day it passed with three of ten roles actually running.
- Provider billing lapsed twice. On 1 October every current-affairs piece stopped because four providers returned out-of-credit or rate-limit errors at once.
- The build grew to 25,000 files and 100-plus minutes, blowing through the free CI tier. A cancelled run still billed 250 minutes and deployed nothing.
What I changed
- Cut the sitemap from 25,287 URLs to 1,404. Kept only the quiz pages with demonstrated demand, chosen from 16 months of Search Console data. Did not noindex the rest, to keep Bing and AI-assistant visibility.
- Built pages for the demand that existed. Cadre pages and exam-level pages that Search Console showed people searching for and the site didn’t have.
- Fixed the plumbing. Broken hreflang, lastmod coverage from 232 to 1,194 URLs, IndexNow priority widened, a 3.8 MB page turned into lazy-loaded JSON.
- Made the audits honest. Errored providers no longer count as passes. The Telegram gate checks live state. Scripts that bypass the router are gone or disabled.
- Stopped the CI bleed. Quiz content no longer triggers the expensive build matrix.
Where it stands
Sessions are up 49 percent week over week in October, led by Bing and ChatGPT referrals. Google is still at two sessions a week. Recovery from a scaled-content penalty takes months, and with no backlinks it may not come at all for this domain. I’m telling you that because a consultant who only shows the recoveries is hiding the base rate.
What transfers to your business
- Volume is not a strategy. Demand-matched pages are.
- Every gate must check the real state, not the pipeline’s own log.
- Lock spend to the cheapest capable model and alert on the cap, not the invoice.
- Treat a silent task, an expired token, or a stray byte-order mark as an incident with a dated note.
- Wire Search Console and analytics before the first publish, so you can tell what happened.