블로그로 돌아가기

I let AI agents run my portfolio site for 30 days

2026년 9월 15일

TL;DR

For 30 days, every deploy, blog post and infrastructure decision on this site was executed by AI agents. I approved. That’s it. The site hit 100/100 Lighthouse on desktop, 97 on mobile, zero downtime, and the blog grew by thousands of words of real field notes. Here’s the honest ledger — including what broke.

The setup

This site is a SvelteKit static build behind nginx in Docker. Around it runs a small crew of scheduled agents:

  1. The daily writer — picks an underserved long-tail topic, verifies real search demand, writes a post meeting a strict SEO contract, checks it, deploys it, cross-posts it.
  2. The ops layer — GitOps pull-deploys, IndexNow pings, a brand scorecard every Sunday pulling analytics from three sources.
  3. The watchers — job boards and founder-question feeds matched against my profile, pinged to my phone within hours of posting.

Nothing exotic: no vector databases, no fine-tuning. Just a competent model, tight written contracts, and cron.

The numbers

MetricResult
Lighthouse desktop100 / 100 / 100 / 100
Lighthouse mobile97 (perf — throttle floor), rest 100
Accessibility violations0 across every page
Deploys in 30 days30+, zero rollbacks
Human touches per week~2 (approvals + topic nudges)

What broke (and what that taught me)

1. Perfect metrics are a design decision, not a tweak

A 0.43 CLS wasn’t fixed by asking harder — it was fixed by deleting the code that animated content into existence. Render everything, animate opacity only. Agents are good at following that law, humans are bad at remembering it.

2. ‘Deploy by merge’ needs a protocol, not a button

The CI pipeline bumps the image tag seconds after the build reports green. The first agent that deployed blind lost a race. Now every deploy is: pull → sync → verify the live SHA. Boring, written down, never wrong.

3. Draft-by-default is the killer feature

Every outbound email, social post and campaign batch renders as a draft until a human passes one word of approval. Zero embarrassing sends in 30 days. The approval loop costs minutes a week and buys everything.

Would I do it again?

Already doing it. The next stage is the same crew running outreach (with the same draft-by-default law), an inbound email parser, and a public release of the agent tooling itself. If you’re hiring for infra or full-stack, the hire page is itself the proof — built and maintained the way this post describes.

The honest caveat

Agents wrote this post’s first draft too. I read it, checked every number, and shipped it. That’s not a disclosure as much as the whole point: the machine does the work, the human owns the judgement. Keep those roles straight and this stack is genuinely a force multiplier.

— mrsaynothing

— mrsaynothing

인시던트 로그 실황 — AI, Linux, 셀프 호스팅.

다음 필드 노트를 이메일로 받아보세요

포스트당 한 통. 인시던트 로그에서 바로.

self-hosted · 제3자 없음 · 원클릭 구독 해지

이게 뭔가요?

git revert vs reset: 히스토리를 구하는 건 어느 쪽인가

글이 마음에 드셨나요? 제 본업이 바로 이런 일입니다. 저를 고용하세요