[ EXECUTIVE TEARDOWN // TL;DR ]
- The pipeline's entire stack is a Git repository: topics.txt is the queue, the Git history is the database, a push is the deploy hook.
- The script — not the model — owns slugs, dates, and frontmatter, so a malformed LLM response can never corrupt the typed build.
- Static export + free-tier Actions minutes make the steady-state cost exactly $0.
- The transferable judgment: knowing when the correct amount of infrastructure is none.
The blog you are reading is partly written by an employee who costs me nothing. Twice a week, on a cron schedule, a pipeline wakes up inside this site's own repository: it pulls the next topic from a plain text queue, drafts a technical article with Gemini, writes it as an MDX file, commits it, and lets the deploy workflow publish the static site. No CMS. No database. No server. The steady-state bill is exactly $0 — and it has never missed a deadline.
How does a blog run with zero infrastructure?
The design bet was to refuse infrastructure. The content queue is scripts/topics.txt — one topic per line, consumed top-down, editable with a normal commit. The "database" is the Git history. The "deploy hook" is a push to main. The writer is a small Python script using the google-genai SDK against gemini-2.5-flash, and — crucially — the script, not the model, owns the slug, the date, and the frontmatter, so a malformed response can never corrupt the typed build. Every article is a commit I can diff, revert, or edit by hand.
Discipline is what makes it free
- Static export: Next.js compiles the entire site to plain HTML at build time — GitHub Pages serves it for free, with no runtime to secure or scale.
- Free compute at the edges: GitHub Actions runs both the writer and the deploy inside free-tier minutes, because the jobs are minutes long by design.
- Model as contractor, script as employer: the LLM is invoked for prose only; structure, validation, and publishing remain deterministic code. That boundary is why the pipeline is trustable enough to run unattended.
Everyone building with AI eventually learns the same lesson: the model is the cheap part. What you pay for — in money and in incidents — is the infrastructure you wrap around it. So I wrapped it in nothing.
Why a hiring manager should care
This little system demonstrates the judgment that expensive cloud architectures often lack: knowing when the correct amount of infrastructure is none. The same instinct scales up. Before I reach for a queue service, a serverless fleet, or a vector database with a monthly invoice, I ask what the Git-history version of the solution looks like — and a surprising fraction of the time, it is good enough to ship and cheap enough to forget.
An SEO-ready technical blog that grows itself is a real business asset — content compounds into search traffic, authority, and inbound interest. Mine costs zero and runs on rails I built in days. The full teardown, including the workflow YAML and the writer script, is on the product page.
~/keep-reading
- 6 min readMy Networking Runs Itself: The LinkedIn Pipeline That Grew My Reach While I SleptHow I engineered consistency: an autonomous GitHub Actions pipeline that turns real work into scheduled LinkedIn posts, tracks state in Git, costs $0 to run — and what the same pattern automates inside a company.
- 6 min readI Shipped 5 Products in 12 Months — Solo, Unfunded, and Faster Than Most Teams Ship OneFive production systems — a realtime telemetry cockpit, a workflow engine, a local-first AI finance agent, and two autonomous pipelines — designed, built, and shipped by one engineer. Here's the operating model.
- 7 min readI Built an AI Money Agent That's Structurally Incapable of Touching the MoneySable is a local-first AI financial agent: all data in on-device SQLite, no cloud backend, and a Review & Confirm boundary where the model proposes but only a human commits. The trust architecture, explained.
YK
Yaseen Khatib · MERN + AI Architect
Ships autonomous AI products solo — five in the last twelve months. More about Yaseen →
Need an engineer who can build this?
I'm Yaseen Khatib — a Senior Full-Stack AI Engineer (MERN + TypeScript) who ships production AI systems solo. Open to senior and lead roles, remote or on-site.
Get in touch →See what I've shipped
Originally published at yaseenkhatib.streamerosai.com/blog/zero-dollar-content-engine/.
Top comments (1)
The "script owns the frontmatter, model owns the prose" boundary is the right call — we run cron-driven publishing pipelines and the day the LLM got to write dates and slugs directly is the day we shipped a duplicate-with-wrong-year post. Treating the model as a contractor with a typed interface, not as the pipeline, is the part most writeups skip.
One failure mode we kept hitting at this cadence: silent degradation rather than hard errors — the queue drains without anyone noticing, or output drifts quietly and nothing "fails". Do you gate the commit with any assertions (queue non-empty, word-count bounds, frontmatter schema), and does every post get a human read before the push to main, or is publish fully unattended?