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 5, 2026
Query-based CDC over WAL: keeping a CQRS Postgres → ClickHouse read model fresh
Query-based CDC vs log-based (WAL) for a CQRS Postgres→ClickHouse read model: watermark polling, ReplacingMergeTree, reconcile-by-key-diff, and freshness-lag alerts.
Jul 3, 2026
Two planes of quality: making meal-plan generation both evaluable and observable
How Melio's meal-plan pipeline splits quality into two planes — online validation and offline evaluation — plus the observability layer that makes them measure the same things, and the reasoning behind which metrics are allowed to block a deploy.
Jun 14, 2026
Hiding an Internal API the Right Way: Why a Proxy Isn't Security
Putting your API behind a proxy feels secure. It isn't — until the origin literally can't be reached any other way. A walk through the Cloudflare Tunnel + Access token + BFF pattern, and why "hiding the URL" is the part everyone gets wrong.
Agent Builders Are Changing How I Ship Code — Here's My Actual Workflow
NextHow I Redesigned a Meal Planning App UX: From Panel to Modern Food-First Design