Building an AI Content Engine for a Gov Contracting Platform
A complete AI-powered blog and content system — from research to generation to multi-channel publishing. Here's why I built it and how it all fits together.
Why a Gov Contracting Platform Needs a Content Engine
GovChime helps companies discover government funding opportunities. The problem is that government contracting is confusing, jargon-heavy, and constantly changing. Our users need to understand things like NAICS codes, SAM registration, set-aside programs, and procurement timelines — and most existing content about this stuff is either buried in government PDFs or locked behind enterprise paywalls.
I analyzed over 20 competitors — GovTribe, Deltek, BGOV, Govly, HigherGov, GovDash, and others — to understand what content they produce and where the gaps are. Most of them treat content as an afterthought: generic blog posts, recycled press releases, and thin SEO pages.
The Architecture
The system has four main layers:
AI Generation
Claude API powers the content creation. But it's not just "generate a blog post." There's a research agent that gathers context — current contract opportunities, regulatory changes, industry trends — and feeds it into Jinja2 prompt templates. Each piece of content gets scored against 10 quality rubrics before it enters the approval queue. The whole pipeline runs on Celery/arq async jobs so it doesn't block the main application.
Content Management
Full admin CRUD with an approval queue. Every AI-generated piece gets reviewed before it goes anywhere. The post editor supports rich content, and there's a history system so you can see how a piece evolved.
Frontend & SEO
Next.js with ISR for the public blog, mobile-first design, RSS feed, and a proper sitemap. On the SEO side: JSON-LD structured data, FAQ schema markup, and a keyword strategy targeted at the long-tail queries people actually search for when trying to understand government contracting.
What I Actually Learned
The hardest part wasn't any single component — it was making them work together cleanly. An AI content system is deceptively complex because every piece touches every other piece. The rubrics affect what gets generated, the NAICS segmentation affects distribution, the SEO requirements constrain the content format, and the approval queue has to sit in the middle of all of it.
What's Next
This PR was the architecture and first implementation. The next phases are about tuning — improving rubric accuracy, expanding the prompt templates, building out the email campaign analytics, and getting real user feedback on what content actually helps them win contracts.
The bet is simple: if we can consistently produce content that helps small businesses navigate government contracting, they'll trust us with the rest of their workflow too.

Oleksandr Yusypenko
Senior Full-Stack + AI Engineer. Building in public — AI agents, LangGraph, production systems.
Related Posts
Jul 13, 2026
Claude Code config is a team asset, not a personal file
On the robbed monorepo I set up Claude Code the way you'd set up CI or CODEOWNERS: a shared, version-controlled, enforced config so every engineer and every AI agent inherits the same conventions, ownership boundaries, and guardrails.
Jul 8, 2026
We Gave Our Agent a Third Tool. Then We Deleted It.
Melio's meal-plan agent runs on exactly two tools. We eval-tested a third — a deterministic self-check — and it tripled cost per plan and made accuracy worse. Here's the data that got it deleted.
Jul 8, 2026
The Prompt Cache That Silently Did Nothing
We shipped Anthropic prompt caching with green unit tests — and it did nothing in production. The culprit: model-specific cache floors and per-day content ahead of the breakpoint. Here's the diagnosis and the fix.
PostgreSQL + ClickHouse: The Dual-Database Pattern That Made 90M-Row Dashboards Instant
NextHow I Redesigned a Meal Planning App UX: From Panel to Modern Food-First Design