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. There's a real opportunity to build content that actually helps people navigate the system.
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. I built this on top of the same Pydantic-to-JSON-Schema-to-TypeScript pattern we use in Melio — type safety from the database all the way to the frontend. Distribution. This is where it gets interesting. Content doesn't just go to a blog page. There are personalized email digests segmented by NAICS code — a construction company gets different content than an IT services firm. The Twitter bot we already had gets new templates for content promotion, and we added LinkedIn publishing. Each channel has its own formatting and scheduling logic. 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.The Infrastructure Side
This wasn't just application code. I added a dedicated govchime-ai Docker service with its own Dockerfile, production and staging compose files through Komodo, and a Redis container for the job queue. The CI pipeline got Python linting with ruff added to the pre-commit hook. The test plan covers 200+ test cases across pytest, Mocha, and Playwright.
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.
I also wrote a specialized Claude agent configuration (content-system.md) to handle all the GOV-92 implementation work going forward. Having an agent that understands the full architecture makes the next phases dramatically easier.
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
Mar 10, 2026
Day Detail UX Overhaul: PDF Export, Shopping Lists, and Killing Duplicate Components
How I unified three duplicate meal card implementations, built a full PDF export pipeline with clickable table of contents, and added shopping lists to the MealPlan AI day detail view.
Mar 9, 2026
Why I Moved AI Out of NestJS and Into a Dedicated Python LangGraph Service
Our NestJS AI chain hit a wall — unreliable outputs, no observability, zero crash recovery. Here's how I replaced it with a 5-node LangGraph StateGraph in Python FastAPI, and why splitting AI into its own service was the right architectural call.
Mar 9, 2026
Agent Builders Are Changing How I Ship Code — Here's My Actual Workflow
I've been shipping production features as a solo engineer on a complex multi-service codebase. The secret isn't working harder — it's building custom AI agents that know my architecture. Here's the exact setup I use with Claude Code.
Rebranding a Live Product to Melio: 250 String Replacements, Zero Downtime