Engines

Engines are the named AI marketing systems Hendry Soong built and ran, and this section is the raw record of each one. Seven appear. Create-Articles and Create-Images are stable, at v8.3.0 and v4.8.0. Create-Compiler is retired. Listen-Competitors and Create-Social are dormant. Two replication engines carry the same architecture to other brands, one in production and one validated. Entry counts run from 1 to 68. Each engine holds its own context window, validation system and version history, which is why the entries record what changed, what broke and what was learned rather than a finished method. The three content engines are not independent products either. They hand work to each other in a fixed order, and the record is written from inside that pipeline.

These logs capture the real work of operating the AI Marketing Framework. Not polished thought leadership. Timestamped entries showing iterations, failures, and extracted principles from running production systems. The Foundation entries (v0.1 to v0.3) show context engineering in action: designing the brand voice, ICP, and positioning that shape every AI output.

Engine

Purpose

Entries

Status

Create-Articles

Content generation with 3-tier validation

68

Stable (v8.3.0)

Create-Images

SVG diagrams and hero images with 10 perception rules and 9-check exit gate

26

Stable (v4.8.0)

Create-Compiler

Field validation with 22 checks, review agent, and closed-loop feedback

6

Retired — tools/validate is authoritative

Listen-Competitors

Competitive intelligence with synthesis

12

Dormant — no outputs since February 2026

Create-Social

LinkedIn carousel generation

1

Dormant — spec frozen March 2026

Create-Articles-Replicate

Portable content engine tested on 3 brands

9

Production

Listen-Competitors-Replicate

Portable competitive intel for other brands

1

Validated

Scope: These seven engines hold 123 of the 721 entries. A further 591 are in the track logs, filed by engineering concern rather than by engine: Data, GTM, Signal, Orchestrate, Governance and System Architecture. The remaining 7 are the deep dives.

The Pipeline: Articles flow through three engines: Create-Articles generates structured JSON with visual insertion points (0 SVGs). Create-Images generates SVG diagrams and hero images through a 9-check exit gate. Create-Compiler validates fields with 22 checks plus a 7-question review agent, classifies issues through a 4-tier router, and sends reverse manifests back to upstream engines. Output publishes to a headless CMS (Neon + Payload + Vercel) via publishing SDK. Closed-loop feedback. Each engine has its own context window, validation system, and version history.

Deep Dives

Deep dives are the long-form counterpart to the log entries. Each one is a full retrospective on a learning that turned out to matter. A log entry records what changed and what broke. A deep dive returns to that change with the complete methodology behind it. It includes the code, and it closes with the principles pulled out afterward. The difference is depth rather than subject. Everything here has already appeared in a log somewhere, compressed into a line. The retrospective exists because that line was carrying more than it could hold. 7 published so far. Read a log when you want to know what happened. Read a deep dive when you want to know why it worked and which part of it transfers.

01Build Log #1: Content System
The full narrative field report. 3 content engines, headless CMS, substrate architecture. $366K traditional function augmented by 1 operator plus AI agents to $162K AI-native. 30 to 35 percent realistic savings, 56 percent solo ceiling.
An asset deploys once and redeploys across a portfolio. Bespoke projects restart with every client.
System Architecture
02Why Your AI Marketing System Should Be Model-Agnostic
Platform dependency always ends the same way. Five category-level truths about LLMs that hold regardless of which model you use, and five practices to build portable AI marketing systems.
System Architecture
03The Missing Layer Between Your AI Systems and Your Website
Eight CMS platforms evaluated for agentic marketing: structured content, full API access, and data ownership. Why most fall short when AI systems need to read, write, and assemble content programmatically.
Create-Articles
04The Engine Split: Context Window Survival at 84K Tokens
How a monolithic 84K-token engine was split into three modular engines (Create-Articles, Create-Images, Create-Compiler) connected by 6 integration contracts and a closed-loop feedback system. Token budget analysis, integration contract design, and 5 extracted principles.
Create-Articles
05LLMs Lie About Validation: How I Rebuilt Content Quality Checks
Discovered that LLMs pattern-match validation instructions to expected outputs without doing the work. Rebuilt the entire quality system with a 3-tier architecture: pattern checks, structural evidence, and semantic advisory.
Create-Articles
0623 Iterations in 32 Days: How I Built a Production AI Content System
The complete journey from folder structure to production engine. Gen 1 got to stable output. Gen 2 rebuilt validation after discovering LLMs lie about quality checks.
Create-Articles
07Video: Building a context-aware content system for marketing teams
23-minute walkthrough of the Gen 1 content engine. File structure, validation workflow, CMS integration, and the lessons from 25 versions before the Gen 2 rebuild.
Create-Articles

System Architecture

System Architecture is the operator log for the substrate: cross-engine architecture, contracts, and the website build. It holds 81 records, dated February 2026 to July 2026. The mix leans toward design work, with 29 architecture records and 20 fixes, then 14 learnings, 9 decisions, 6 features, 2 releases and 1 failure. Each record names what changed, what broke when something broke, and the principle taken from it. Every one traces to a dated source in the repository it came from, so the claims here can be checked instead of trusted. This is one section of the AI Marketing Operator Logs, which cover production AI marketing engines across hendry.ai, growthsetting and enterprise work.

Read the full System architecture log (81 records).

Governance

Governance is the operator log for authorisation: how each change was approved, what it granted, and what it refused. It holds 56 records, all dated August 2026. Exactly half are decisions, 28 of them, followed by 8 fixes, 6 releases, 5 learnings, 4 architecture records, 3 failures and 2 features. That shape is the point. A governance log is mostly rulings, not repairs. Each record names what changed, what broke when something broke, and the principle taken from it, and each traces to a dated source in the repository it came from. This is one section of the AI Marketing Operator Logs, covering production engines across hendry.ai, growthsetting and enterprise work.

Read the full Governance log (56 records).

Orchestrate

Orchestrate is the operator log for the control plane, the layer that runs the other engines and records what it did. It holds 83 records, dated July 2026 to August 2026. The mix is close to even: 20 learnings, 18 decisions, 17 fixes, 14 architecture records, 6 failures, 5 releases, 3 features. A layer that touches everything leaves a wide trail. Each record names what changed, what broke when something broke, and the principle taken from it, and every one traces to a dated source in the repository it came from. This is one section of the AI Marketing Operator Logs, which cover production AI marketing engines across hendry.ai, growthsetting and enterprise work.

Read the full Orchestrate log (83 records).

Data

Data is the operator log for making inputs usable and proving where each one came from. It holds 21 records, dated July 2026 to August 2026. Failures and architecture tie at 6 each, ahead of 5 learnings and 4 decisions. Each record names what changed, what broke when something broke, and the principle taken from it. Every one traces to a dated source in the repository it came from, so any claim here can be checked rather than taken on trust. Records are ordered newest first. This is one section of the AI Marketing Operator Logs, which cover production AI marketing engines across hendry.ai, growthsetting and enterprise work.

This engine runs across 3 pages: Data verification (70 records), Data measurement (58 records) and Data pipelines and sources (71 records).

Signal

Signal is the operator log for holding and scoring what matters, with extraction kept structurally separate from judgement. It holds 48 records, dated July 2026 to August 2026. Learnings dominate at 20, then 10 decisions, 9 failures, 4 architecture records, 4 fixes and 1 feature. A section that is mostly learnings is a section still being figured out. Each record names what changed, what broke when something broke, and the principle taken from it, and every one traces to a dated source in the repository it came from. This is one section of the AI Marketing Operator Logs, which cover production engines across hendry.ai, growthsetting and enterprise work.

Read the full Signal log (48 records).

GTM

GTM is the operator log for sequencing the engines that go to market and the contracts between them. It holds 17 records, dated July 2026 to August 2026. Architecture leads with 5, then 4 failures, 3 learnings, 3 features, 1 decision and 1 fix. Close to a quarter of the entries are failures, which is what sequencing work looks like while the contracts between engines are still being settled. Each record names what changed, what broke when something broke, and the principle taken from it. Every one traces to a dated source in the repository it came from. This is one section of the AI Marketing Operator Logs, covering production engines across hendry.ai, growthsetting and enterprise work.

This engine runs across 2 pages: GTM measurement (55 records) and GTM verification and sources (69 records).

Create-Articles Logs

Create-Articles is the operator log for the content generation engine and its three tiers of validation. It holds 68 records, dated December 2025 to August 2026. By type: 14 architecture, 13 features, 13 releases, 9 fixes, 9 failures, 6 decisions, 4 learnings. Features and releases together outnumber every other category, which is what a shipping engine's log looks like. Each record names what changed, what broke when something broke, and the principle taken from it. Every one traces to a dated source in the repository it came from, so any claim here can be checked rather than taken on trust. This is one section of the AI Marketing Operator Logs, covering production engines across hendry.ai, growthsetting and enterprise work.

Read the full Create-Articles log (68 records).

Create-Images Logs

Create-Images is the operator log for SVG diagram and hero generation, its perception rules and its exit gates. It holds 26 records, running through August 2026. Architecture accounts for 10 of them, then 5 fixes, 4 releases, 3 decisions, 3 features and 1 learning. Almost no learnings and a heavy architecture share point to an engine solved by design rather than by iteration. Each record names what changed, what broke when something broke, and the principle taken from it. Every one traces to a dated source in the repository it came from, so any claim here can be checked rather than taken on trust. This is one section of the AI Marketing Operator Logs, covering production engines across hendry.ai, growthsetting and enterprise work.

Read the full Create-Images log (26 records).

Create-Compiler Logs

Create-Compiler sits at the end of the content pipeline as its assembler. It merges finished articles with finished images into one publishable unit. That position makes it the last thing to run and the first to notice when something upstream went wrong. Before anything ships, it runs a 14-check quality gate. Failures do not simply stop the build. The compiler classifies what failed and routes that classification back to the upstream engines. The defect then gets fixed at its source instead of patched at assembly. That return path is what separates it from a packaging step. The count now stands at 7+ versions. The logs below trace how the checks accumulated and how the feedback loop closed.

01Validator, Not Assembler: 22 Field-Based Checks
Major version upgrade. Role changed from HTML page assembler to field validator and enricher. Input via headless CMS API instead of HTML file reads. Old CV-xxx (CSS checks) and RA-xxx (render checks) replaced with FC-xxx (8 field completeness), CE-xxx (6 cross-engine consistency), CQ-xxx (8 content quality) = 22 total checks. Auto-fix via API for correctable issues. New enrichment step: wordCount and proficiencyLevel computed and written back to article. VIP matching deleted (handled by CMS field relationships). Post-compile-checks deleted (all checks now in compile validator). Reverse manifest system preserved for upstream feedback.
Moving from assembler to validator simplified the engine by removing an entire responsibility. The CMS handles assembly now — the compiler just checks the result.
Create-Compiler
02Rule Health Check + Boundary Alignment
v1.3.3 Rule Health Check: cross-engine pipeline version sync. README corrected (CV count to 14, was reporting 11). Folder structure updated to v1.3.3. Paired engine versions updated. 06-MEMORY/README.md CV count corrected (was 9). Intentional redundancy documented: CV-012/STR-023 (domain frequency at compile vs generation), CV-013/SEM-002 (citation quality), CV-014/PAT checks (voice at compile vs generation) — same concern checked at different pipeline stages, by design. v1.3.4 Boundary Alignment: 25 discrepancies found and fixed across Images-to-Compiler boundary. 10 cross-boundary example fixes (viewBox 600→700, data-vip-id added, dead inline SVG refs removed). Post-compile-checks.md deprecated (zero unique checks remaining). Verification manifest synced.
Intentional redundancy is a feature: checking the same rule at generation and compile is a safety net, not duplication.
Create-Compiler
03Episodic Memory + Voice Pattern Gate
Two versions expanding the Compiler from structural validation into voice awareness. Validator Expansion (v1.3.1): CV-012 (domain frequency, no domain more than twice) and CV-013 (citation specificity, link text must contain year, report name, or named document). Triggered by martinfowler.com appearing 4 times in the first production compile. Compile Validator at 13 checks. Voice Pattern Gate (v1.3.2, CV-014): deterministic PAT checks against all visible prose in compiled HTML. Runs PAT-001 (em dashes), PAT-002 (en dash ranges), PAT-004 (banned words), PAT-013 (filler words), and PAT-014 (opposite-line patterns, 7 sub-checks). The Compiler is the only gate where all visible text from all engines exists in one file. Compile Validator at 14 checks.
Memory is infrastructure. Without structured review logs and retrieval conventions, the system cannot learn from its own history.
Create-Compiler
04The Feedback Loop: From Issue Detection to Closed-Loop Remediation
Two versions transforming the Compiler from a passive assembler into an active quality system. Issue Router (v1.2.0): 4-tier classification for all Compiler-discovered issues. Tier 0 (preventable: add rule to prevent recurrence), Tier 1 (auto-patch: deterministic fix to source and compiled), Tier 2 (scoped re-gen: fix request routed upstream), Tier 3 (structural: escalate to operator). Fix-forward-only officially banned as an anti-pattern. Reverse Manifest (v1.3.0): closed-loop feedback to upstream engines. 5-step Commit-Back Cycle generates structured manifests. Entry lifecycle: OPEN to RESOLVED to VERIFIED to CLOSED.
Fix-forward-only creates drift between source and compiled. Every fix must flow back to the source.
Create-Compiler
05Quality Gate: Compile Validator + Review Agent + Episodic Memory
When three engines assemble one article, cross-boundary errors emerge that no single engine can catch. Built a two-layer quality gate. The Compile Validator runs 9 deterministic checks (schema wordCount post-assembly, TOC anchor resolution, FAQ schema-to-content match, CSS class integrity, date consistency). All blocking. The Review Agent asks 7 fresh-eyes questions (opening quality, citation specificity, voice compliance, content citability) with context isolation: it receives only the compiled HTML, brief, and voice rules. No generation history. Advisory only. Every compile generates a review report saved as episodic memory.
Validation-as-data. Review logs let the system prune its own rules with evidence, not guesswork.
Create-Compiler
06Article Assembly Pipeline
The engine split created a handoff problem: Create-Articles outputs HTML with VIP markers, Create-Images outputs SVG figures. Something needs to merge them. Create-Compiler matches VIP blocks to generated figures by data-vip-id attribute (deterministic), runs post-compile validation (PAT-015 SVG quality, PAT-016 viewBox, structural integrity), and outputs a compile report documenting what was merged and validated.
Multi-engine pipelines need an explicit assembly step. Don’t leave integration to chance.
Create-Compiler

Create-Social Logs

Create-Social is the engine that generates LinkedIn carousels. Its log is the quietest in this collection, and the quiet is the finding. The version number stopped at v1.0.2 in January 2026 and has not moved since. That is unusual in a system where most components keep getting rebuilt. Stability here is not neglect. A carousel has a narrow job and a fixed output shape, so once the generation logic was right there was little left to tune. Adding versions would have meant adding changes nobody needed. The entries below cover how it reached that state rather than what has happened after, because the honest answer is nothing. A log that stops is a result, not a gap.

01LinkedIn Carousel Generation
Built carousel generation for LinkedIn from article content. Three versions refined slide count, visual consistency, and CTA placement. Stable since initial build. No significant iterations required. The engine consumes article HTML and produces slide decks formatted for LinkedIn’s carousel spec.
Create-Social

Listen-Competitors Logs

Listen-Competitors began as monitoring and ended as competitive intelligence. The early versions did what most competitor tracking does today. They watched what rivals published and reported the changes back. That produces a feed. A feed tells you something happened without telling you whether it matters. The later versions moved to synthesis, which is a different job entirely. The engine now reads across what it collects and returns a position rather than a list. Collecting became concluding. 7 versions cover the distance between those endpoints, and the arc matters more here than any single release. The entries below show where the shift happened and what each version added on the way there.

01Two-Stage Review: The 17-Point Error I Almost Shipped
A subagent produced a confident metric for a prospect dashboard. A second agent, fresh, checked it against the spec and then the data. The regex behind the number had matched substrings inside unrelated words. It overcounted by 17 points. A second pass caught a recognition stat stated three times when the source said four. Both would have been live in front of a reader. Single-pass self-review missed both.
Single-pass self-review ships confident errors. A fresh second agent, checking against the spec and then the data, is where defects surface. Collection is not synthesis.
Listen-Competitors
02Zero Setup, Any Target, One ZIP
Version 3.0 of the competitor-listening engine dropped setup entirely. Point it at any target and run. Deployment is a ZIP, so there is no install step and no config file to fill in first. The path there was LP-04: build the specific version, learn what the workflow needs, then generalise. The pre-defined-target build from v2.0 was the specific version.
Build the specific version first, then generalise once you know what it needs.
Listen-Competitors
03A Config of Pre-Defined Targets, Abandoned the Same Day
v2.0 shipped a config-driven build with pre-defined research targets, and it was deprioritised the same day v3.0 landed. The generic zero-setup workflow covered every target the config file listed, so maintaining the list bought nothing. The v2.0 work still paid. Writing out the specific targets showed which parts of the workflow were general. It stays in the changelog as an abandoned branch.
Record the abandoned version. It explains why the surviving one has that shape.
Listen-Competitors
04Two-Layer Output
Generated 5 files and 3,000 words of competitive intelligence. The actionable insight was one sentence buried on page 4. Comprehensive collection but unusable output. Added synthesis phase with two-layer output: Brief (200 words, covering verdict, threat level, top 3 insights, one action) and Full Report (2,000+ words with all evidence).
Comprehensive collection serves different purpose than decisive output. Separate them.
Listen-Competitors
05Every Claim Must Have Source URL
Found myself writing intelligence briefs with claims I couldn’t trace back to source. Signal said “competitor claims 40% improvement” but couldn’t find where that came from. Added citation requirement: every claim must have a source URL. If you can’t cite it, don’t include it.
Uncited claims are hallucination risks. Forced citation eliminates fabricated intelligence.
Listen-Competitors
06Authoritative Source Queries
LLMs are trained on and heavily cite certain sources. Missing these meant missing how the market talks about a competitor. Added required queries for every target: Reddit (practitioner discussion), Wikipedia (notability signal), YouTube (long-form content), LinkedIn articles, Medium posts. Search where LLMs train.
Search where LLMs train. These sources shape how AI represents the market.
Listen-Competitors
07Counter-Position Scoring
Had 15 signals with no actionability indicator. Some were well-defended positions I shouldn’t challenge. Others were weak claims I could counter. Added counter-position score (1 to 5): 5 = they’re wrong (create counter-content), 3 = complementary (create complement), 1 = well-defended (learn from them).
Score before prioritizing. Not all signals deserve response.
Listen-Competitors
08Weakness Probe
Intelligence reports read like competitor marketing pages. All positioning, no criticism. No failures. No gaps. Not useful for counter-positioning. Added dedicated weakness probe phase with explicit queries for problems, limitations, and debates. Found criticisms of a well-known framework that would never appear in the author’s own content.
Weaknesses are strategic gold. Actively search for problems, not just positions.
Listen-Competitors
09LinkedIn Manual Paste
LinkedIn posts can’t be automatically scraped. Attempted workarounds failed or were fragile. Accepted the constraint. System prompts user to paste relevant posts manually. The manual step became a feature: human selection of “most relevant posts” is better than automated scraping of “all posts.”
Design around constraints. Sometimes manual steps improve outcomes.
Listen-Competitors
10Early Synthesis Creates Confirmation Bias
Formed verdicts while still collecting signals. Subsequent searches confirmed initial impressions. Counter-evidence got downweighted. The “intelligence” was just my initial hunch dressed up with selective evidence. Fixed with strict phase separation: collection (Phases 1 to 4) must complete before synthesis (Phase 5).
Early synthesis creates confirmation bias. Collect comprehensively, then conclude. Not the reverse.
Listen-Competitors
11Two-Phase Search
Searched “[competitor name] AI marketing” and got results for other people with the same name. Searched “AI marketing framework” and got generic content. Problem: searching in MY vocabulary, not THEIRS. Thought leaders brand their ideas with unique terms. Added Phase 1 (learn their vocabulary) before Phase 2 (search in their language).
Search in their language, not yours. Generic queries return generic results.
Listen-Competitors
12HUNT/MONITOR Dual-Mode Architecture
Built Listen-Competitors as dual-mode signal detection: HUNT (outbound intelligence covering ICP watering holes, pain point mining, competitor content) and MONITOR (inbound signals covering brand mentions, AIO citations, intent data). Weight ratio shifts as brand matures: Cold Start 80/20, Growth 50/50, Scale 20/80.
Detection and Generation are fundamentally different systems. Listen-Competitors uses monitors and scoring thresholds, not templates and validation rules.
Listen-Competitors

Replicate Logs

Replicate exists to answer one question: do these engines work for anyone other than the person who built them? A system tuned to its own author is a workflow. A system that survives transplant into someone else's brand is an architecture. The difference only resolves by attempting it. The engines were rebuilt inside other brands and run there under real conditions. 48+ versions across 3 brand implementations came out of that work. The answer held. The architecture is portable rather than Hendry-specific, which is the finding this whole track was built to test. The logs below record each implementation in order. They include what broke on arrival and what had to be rebuilt before the engine ran clean.

The Replication Journey: Started with the Hendry Content System (25 versions), then tested on three external brands. Each test compressed: Brand A took 2 weeks and 15+ versions. Brand B took 3 days and 5 versions. Brand C took 2 days and 5 versions. The pattern became formulaic.

01Portable Doctrine: A Second Engine in One Session
I ported the core of my content system into a separate production engine in a single session. The slot-based JSON, the assembler, the named voice anti-patterns, the visual-boundary and context-absorption gates all moved across. I dropped the CMS-specific layers, the rich-text AST and the publishing contract, because the new engine ships shell-wrapped HTML instead. The doctrine moved across. The plumbing stayed behind.
A well-built content system separates a portable doctrine from a brand and CMS-specific layer. The doctrine is the asset. The plumbing is replaceable.
Replicate
02Agents Interpret "Copy" as "Recreate Similar"
Workflow said “copy template to output folder.” Agent rebuilt the template from memory instead of copying the file. Output had wrong CSS, missing elements, HTML comments rendered as visible text. Changed instruction to explicit bash command: cp template.html output.html followed by str_replace for content slots only.
Force literal file operations. “Copy” means “recreate similar” to an LLM.
Replicate
03Slot-Based JSON Architecture (97% Output Reduction)
Full HTML output was ~150KB. Every generation risked CSS corruption. Switched to slot-based architecture: agent outputs only JSON content (~5KB), assembly script merges with locked template. 97% reduction in agent output. Zero CSS drift since implementation.
Slot-based architectures eliminate CSS drift. Agents write content, not markup.
Replicate
04Self-Contained Templates with Embedded Assets
Demo failed because external font CDN was blocked. Embedded Inter font as base64 directly in template (~1.3MB but works offline). Also embedded founder photos. Template is now completely self-contained with zero external dependencies.
Self-contained templates eliminate external dependencies. Demos must work offline.
Replicate
05Shell Compliance Validation
Agent changed hyperlink color from brand red to default blue. Footer SVG stroke-width changed from 1.5 to 2. Small deviations that made output look “off.” Added explicit shell compliance checks: “Footer VERBATIM” and “Hyperlinks [COLOR]” in validation checklist.
Agents deviate from templates. Add explicit compliance checks for visual elements.
Replicate
06Color Assumption Error
Built system using teal (#00A9A5) as primary color based on memory. Production website uses purple (#6f2791). Founder immediately spotted the error. Extract colors from production CSS, never assume from memory or screenshots.
Don’t assume colors. Extract from actual site CSS.
Replicate
07Sites Use Multiple Font Families
Assumed one font family. Production site used four: Nunito (body), Cabin (nav), Roboto (labels), Montserrat (buttons). Each serves a different purpose. Typography extraction now includes font-by-purpose mapping, not just “the font.”
Verify fonts against production CSS. Sites use multiple families for different purposes.
Replicate
08Brand-Agnostic Base System
After three brand tests, extracted the portable core. Universal system = 80% (workflows, validation, templates, CRITICAL-RULES.md). Brand-specific = 20% (voice, design tokens, ICP, shell HTML). New brand setup now takes ~40 minutes: 15 min brand research, 10 min CSS extraction, 10 min shell creation, 5 min assembly.
Build universal systems with brand-specific configuration. Architecture should transfer; only context changes.
Replicate
09CSS Extraction is the Human Bottleneck
Attempted to automate design token extraction. Claude Cowork can’t use browser dev tools. Automated CSS parsing misses computed styles, pseudo-selectors, and platform-specific patterns (Framer loads CSS dynamically, HubSpot uses module CSS). Human extraction remains at ~10 to 15 minutes per brand. This is the irreducible manual step.
CSS extraction is the human bottleneck. Some steps cannot be automated.
Replicate
10Configurable Comparison Entity
Original Listen-Competitors had comparison logic hardcoded. But the system could compare any target to any brand. Created Listen-Competitors-Replicate as separate fork with configurable comparison entity. User fills /01-brand/ folder (company, positioning, ICP, competitors). Phase 0 loads brand context before running. Same engine, different lens.
Build the specific version first, then generalize. Don’t over-architect early.
Replicate

Key Principles

81 principles have been extracted so far, drawn from 721 curated iterations across every engine. None were written in advance. A principle earns its place by recurring, usually after something broke in a way that trying harder would not fix. Each is tagged with the engine version that produced it, so a rule can be read next to the failure that generated it. The set keeps growing, which is the expected behaviour of a system that logs its own mistakes rather than its own wins. Read this way it is less a philosophy than a maintenance record: the same problems kept arriving, and these are the sentences that stopped them arriving again.

Top 10:

  1. The agent is disposable. The orchestration layer is permanent.

  2. The LLM generates numbers. The human sees shapes.

  3. Evidence-based validation defeats hallucination.

  4. Agents improvise unless explicitly forbidden.

  5. Context engineering is not prompt engineering. It's designing the information layer.

  6. One example beats 89 lines of instructions.

  7. Context window is a finite resource. Separate what from how.

  8. The problems come first, then the principles, then the product.

  9. Cross-session memory turns isolated agents into a learning system.

  10. Memory is infrastructure. Without it, the system cannot learn from its own history.

81 Principles

Source

One example beats 89 lines of instructions

Create-Articles v3.8

Evidence-based validation defeats hallucination

Create-Articles v7.0

Match automation level to confidence level

Create-Articles v7.0

Measured values must come from output, not input

Create-Articles v7.0.2

Validation checks parts. Pre-output checks the whole.

Create-Articles v7.0.2

Advisory rules get skipped. Make requirements structural.

Create-Articles v7.0.2

Agents improvise unless explicitly forbidden

Create-Articles v6.9.5

Design for integration, not standalone

Create-Articles v6.8

Match the environment. Extract values from destination.

Create-Articles v6.9.9.7

One source of truth. Name files so canonical source is obvious.

Create-Articles v6.5

Context window is a finite resource. Separate what from how.

Create-Articles v7.9.2

Rules without examples get ignored. Templates without rules sit unused.

Create-Articles v7.9.1

Route to files, not directories. Agents treat options as a buffet.

Create-Articles v7.9.14

Generation-time self-checks prevent problems before validation catches them.

Create-Articles v7.9.17

Classify quality during collection, not after. Left-shift the gate.

Create-Articles v7.9.19

Cross-session memory turns isolated agents into a learning system.

Create-Articles v7.9.20

System files are training data. They must follow the same rules they enforce.

Create-Articles v7.9.22

Centralise messaging. When pillars live in 4 files, they drift in 4 directions.

Create-Articles v7.9.26

When writing about specs, the spec is the source of truth.

AI-SEO v7.2

"Loaded" is not "read." Gates must prove comprehension, not just access.

Create-Articles v7.9.30

Downstream quality gates are only useful if they can talk back.

Create-Articles v7.9.28

Undocumented patterns become invisible violations.

Create-Articles v7.9.32

The LLM generates numbers. The human sees shapes.

Create-Images v2.0.11

Focused engines that do one thing well.

Create-Images v2.0.0

When you iterate 12 times on the same type, extract the pattern.

Create-Images v2.0.17

Exit gates catch what generation-time rules miss.

Create-Images v2.0.20

Explicit status checks prevent implicit assumptions.

Create-Images v2.0.19

Every engine that receives feedback becomes self-improving.

Create-Images v2.0.22

Fix-forward-only creates drift. Every fix must flow back to source.

Create-Compiler v1.2.0

The agent is disposable. The orchestration layer is permanent.

System Architecture

The problems come first, then the principles, then the product.

System Architecture

Audit the audit trail. Documentation debt compounds silently.

System Architecture

Separate strategy from execution. Different tools for different thinking modes.

System Architecture

Audit across engines, not within them. Cross-boundary drift is invisible from inside.

System Architecture

Voice isn't vibe. It's enforceable rules.

Create-Articles v0.1 (DEFINE)

ICP precision forces content precision.

Create-Articles v0.2 (UNDERSTAND)

Positioning is a filter that kills generic content.

Create-Articles v0.3 (POSITION)

Search in their language, not yours

Listen-Competitors v3.1

Uncited claims are hallucination risks

Listen-Competitors v3.3

Search where LLMs train

Listen-Competitors v3.3

Early synthesis creates confirmation bias

Listen-Competitors v3.1

Weaknesses are strategic gold

Listen-Competitors v3.2

Design around constraints

Listen-Competitors v3.1

Agents interpret "copy" as "recreate similar"

Replicate Brand A v2.16

Slot-based architectures eliminate CSS drift

Replicate Brand A v3.0.1

Self-contained templates eliminate external dependencies

Replicate Brand B v3.0

Don't assume colors. Extract from actual site.

Replicate Brand C v1.1

CSS extraction is the human bottleneck

Replicate v3.0

Schema serves two masters: Google and LLMs

AI-SEO v7.1

Context engineering is not prompt engineering. It's designing the information layer.

AI-SEO v7.1.1

Contracts between engines need explicit, machine-enforceable rules.

Create-Images v2.0.25

Memory is infrastructure. Without it, the system cannot learn from its own history.

Create-Compiler v1.3.2

Version propagation across engines is the most common drift vector.

System Architecture

Production compiles are the real test suite for upstream engines. Every compile run reveals gaps the generator missed.

Create-Articles v7.9.33

LLMs quantify experience to signal authority. The count itself is the tell — real operators describe what happened, not how many times.

Create-Articles v7.9.36

Changing the output format tests whether your validation rules are coupled to structure or to quality. Ours survived because they check content, not markup.

Create-Articles v8.0.1

Force the agent to show its math. Arithmetic comments before placement catch errors that visual inspection misses.

Create-Images v2.0.26

When the I/O format changes but the generation rules don't, you know the rules were well-abstracted.

Create-Images v3.0.1

Removing tool routing didn’t remove capability — it removed decision fatigue. One tool, two modes, zero routing logic.

Create-Images v4.0.0

Design for the render width, not the viewBox. 1200px SVGs that render at 760px need their minimums tuned for 0.633x.

Create-Images v4.1.0

Intentional redundancy is a feature: checking the same rule at generation and compile is a safety net, not duplication.

Create-Compiler v1.3.3

Moving from assembler to validator simplified the engine by removing an entire responsibility. The CMS handles assembly now — the compiler just checks the result.

Create-Compiler v2.0.1

Version bumps are cross-engine operations. Grep all repos after every bump, not just the changed engine.

System Architecture

Shared context files need one canonical location. Per-engine copies drift with every version bump.

System Architecture

Centralise context once. When the same file lives in 3 engines, it diverges in 3 directions.

System Architecture

Migrate real content early. Speculative schema design misses every edge case that actual articles expose.

System Architecture

Article templates needed 3 iterations because each was driven by migrating real content, not by speculative design.

System Architecture

Launch preparation is a compression event — it surfaces every issue the development phase deferred.

System Architecture

Automated security review finds real issues but can't assess business risk. The operator's job is triage.

System Architecture

Moving to headless didn't just change the output format. It changed what each engine is responsible for.

System Architecture

Document the pipeline before automating it. Cross-repo flows need a single spec both sides can reference.

System Architecture

The first automated pipeline run reveals every assumption the manual process hid. Ship the pipeline, then fix what it exposes.

System Architecture

Time-to-live depends on content complexity, not stack complexity.

System Architecture

Conversation history is not version control. When three chat windows carry the system state, every session starts with a manual sync that drifts silently.

System Architecture

The first engine built on new infrastructure validates the infrastructure more than itself.

System Architecture

Verify the rendered artifact, not the generator self-report.

System Architecture

Curation beats capture. The artifacts are the product.

System Architecture

Ban absolute certainties. One counter-example discredits an absolute.

Create-Articles v8.0

Adopt the shape, do not re-document it. Reconcile, do not blind-adopt.

System Architecture

Observed policy beats stated policy. Read the git history.

System Architecture

Numbers are human-typed, never agent-transcribed.

System Architecture

Frequently Asked Questions
What are AI Marketing Operator Logs?
AI Marketing Operator Logs are Hendry Soong's public documentation of building AI marketing engines. Published at hendry.ai, each entry captures what changed, what broke, and what was learned. It's proof of iteration, not theory.
What engines are documented?
Seven engines are documented: Create-Articles (content generation, 68 entries), Create-Images (SVG diagram and hero image generation, 26 entries), Create-Compiler (field validation with 22 checks, review agent, and closed-loop feedback, 6 entries), Listen-Competitors (competitive intelligence, 12 entries), Create-Social (LinkedIn carousels, 1 entry), Create-Articles-Replicate (portable content engine tested on 3 brands, 9 entries), and Listen-Competitors-Replicate (portable competitive intel, 1 entry). Two are stable, one is retired, and two are dormant.
What is the multi-engine pipeline?
Articles flow through a three-engine pipeline: Create-Articles generates structured JSON with visual insertion points (0 SVGs), Create-Images generates SVG diagrams and hero images through a 9-check exit gate, and Create-Compiler validates fields with 22 checks, a 7-question review agent, 4-tier issue router, and closed-loop reverse manifests. Output publishes to a headless CMS via publishing SDK. Each engine has its own context window, own validation, and own versioning.
Why do the Create-Articles logs start at v0.1?
Because content generation doesn't start with templates. It starts with Foundation: brand voice (DEFINE), audience profiles (UNDERSTAND), and positioning (POSITION). The v0.x entries document this pre-flight work that makes the content engine useful.
How often are logs updated?
Bi-weekly. New entries are added as development continues. This page maintains the complete history.
Can I use these systems?
The logs share logic and principles, not full proprietary systems. For implementation support, contact Hendry directly.
What is the AI Marketing Framework?
The AI Marketing Framework is an eight-engine system for AI-powered marketing operations covering listening, creating, positioning, and measuring. The AI Marketing Operator Logs document practical implementation across 721 curated iterations.
Why document failures publicly?
Failures contain the most valuable learnings. Documenting what broke and how it was fixed demonstrates real operational experience.
What does Create-Articles-Replicate prove?
Create-Articles-Replicate proves the content engine architecture is portable, not Hendry-specific. Tested across 3 brand implementations, the pattern became formulaic: 80% universal system, 20% brand-specific configuration. New brand setup now takes approximately 40 minutes.
Published
###