Article · 21 minutes

Build Systems, Set Goals: A Goal-Oriented Approach to AI in SEO and Product Work

A practical approach to AI systems: goals, context, task files, agent loops, verification, and the limits of delegation.

A specialist works beside a verified workflow built from Goal, Input, Context, Verify, and Output stages.

Most conversations about artificial intelligence begin with model selection: which one is smarter, which is cheaper, which writes better code, or which handles more context. I suggest starting with a different question: what system are we building, and what result should it produce?

This article is based on my talk at the WebPromo Experts AI SEO Day conference on August 19, 2026.

Opening slide: Build systems, set goals - a goal-oriented approach to AI in SEO and product work.
The title slide introduces the governing idea of the talk: begin with an explicit goal and a complete system, then choose the models and tools that serve it.

The opening slide places the goal before the model. The talk is not a catalogue of AI products; it is a method for designing work in which inputs, rules, verification, feedback, and ownership all serve a measurable result.

Speaker profile: Vlad Morgun, an SEO specialist with 16+ years of experience across more than 50 markets.
The profile slide establishes the practical background for the systems described in the article: large international sites, analytical work, and specialization in programmatic and product SEO.

This background explains the emphasis on systems. On large multilingual sites, recurring work appears quickly, and a fragile one-off prompt cannot reliably govern audits, translations, technical checks, or decisions repeated across many markets.

The talk roadmap: virtual teams, choosing models by task, useful and dangerous SEO applications, and delegation.
The presentation moves from designing a virtual team and choosing an LLM for a specific job to deciding where AI is useful, where it is risky, and how work can be delegated without losing professional control.

I work in programmatic SEO and deal with large multilingual websites containing millions or tens of millions of pages. Repetitive work appears very quickly at that scale: audits, translations, collecting and reconciling data, finding technical problems, and preparing similar decisions again and again. If a recurring task consumes time several times a week - or even every day - it is worth turning into a system.

That system does not have to be complicated. Sometimes a script, a few files containing rules, and a clear way to verify the result are enough. What matters is that the system frees up time for work that genuinely requires a person: strategy, hypothesis testing, product understanding, and decision-making.

Below is my practical approach to building such systems, from goals and context to agent workflows, translation, and SEO analysis.

A System Starts with a Goal, Not a Model

A system is not a collection of fashionable tools, nor is it a group of agents with impressive role names. It is a set of interconnected elements organized to achieve a shared goal.

A system defined as interconnected elements organized around a shared goal.
The key word is not tool but relationship: inputs, transformations, checks, and feedback become a system only when they are organized to reach the same explicit goal.

Systems thinking focuses on relationships, feedback loops, and long-term consequences rather than isolated tasks.
The slide reframes AI work from choosing separate tools to understanding how decisions, components, feedback, and delayed effects influence the whole process.

Even the simplest working system has several essential parts:

  1. a goal;
  2. input data;
  3. a transformation process;
  4. verification;
  5. an output;
  6. feedback.

We first need to understand what we want to produce. Then we can decide what goes in, what happens inside the process, how the output will be checked, and what should change in the next cycle if the result is unsatisfactory.

A system template: goal, inputs, process, verification, output, and feedback.
The slide presents a reusable system template: define the goal, provide inputs, run a transformation process, verify the output, and feed the result back into the next iteration. Tools and models sit inside this loop; they are replaceable components rather than the purpose of the system.

A Good Goal Is Small Enough to Verify

I prefer goals that can be implemented in about a week. A small release is easier to launch quickly, test against real data, and either expand or discard without regret.

The SMART goal criteria: specific, measurable, achievable, relevant, and time-bound.
A useful system goal must be concrete enough to measure and small enough to test. SMART criteria turn an abstract wish to automate into a result with a scope and deadline.

In that sense, SMART is more than a diagram from a management textbook. A goal should be specific, measurable, achievable, relevant, and time-bound. “Automate content operations” tells us almost nothing. “Generate X in revenue from content within Y time at a defined publishing volume” already forces us to design an actual process.

Until the goal is clear, we cannot answer even the basic questions:

  • What output must the system produce?
  • Which sources are canonical?
  • What should be done in code, and what should be done by an LLM?
  • How will the output be verified?
  • What happens when the system is uncertain?
  • Who makes the final decision?

Seven questions for evaluating a system: goal, output, canonical sources, code versus LLM, verification, uncertainty, and final ownership.
These questions expose whether a workflow is actually designed: what it is for, which sources it trusts, what must stay deterministic, how uncertainty is handled, and who accepts the result.

The System Does Not Have to Be Complex

One of my personal experiments began with a simple thought: if I am going to spend time on my hobbies anyway, can at least some of that time pay for itself?

Once a week, my friends and I play an online game. I record those sessions, and a local system detects active moments from the audio and video, cuts short clips, converts them into the required format, and sends them to the Gemini API. The model evaluates each clip and suggests a description and title. After an automated internal check, suitable clips are published as YouTube Shorts. Once enough of them accumulate, the system assembles a longer video and uploads that to the channel as well.

The channel now receives thousands of views per day, and the monetization offsets time I would have spent playing anyway.

A content system that turns long videos into selected clips, scores them, and publishes high-quality results through an API.
The example starts with a measurable monetization goal and links each stage: detect sharp moments, cut clips automatically, evaluate them with AI, retain only high scores, and publish through the YouTube API.

The LLM is only one component. FFmpeg handles clipping and transcoding, selection criteria are defined separately, and publishing is another distinct stage. There is an input, a process, a check, and a measurable output. That is what makes it a system rather than a successful prompt.

You Need Domain Expertise to Build a System

AI quickly creates the illusion that we can automate a field we do not understand ourselves. In practice, that is one of the shortest routes to a poor result.

Suppose I want to create my own comic. A plot and the instruction “generate a page for me” are only the beginning. I need to understand what a comic consists of: how the story is structured, what the visual style should be, what the characters look like, which details must stay consistent across scenes, and what context the model needs when generating the next page. Without that knowledge, I will get a collection of random pictures, not a system.

A comic-production domain broken into plot, visual style, and character consistency.
The diagram shows the expertise hidden behind a simple request: series structure and story turns, image style and palette, framing, character references, persistent distinctions, and family resemblance all need explicit control.

SEO is no different. If you do not understand what should happen to a site and why, you cannot give the model the right task, notice an error, or verify the result.

There is a telling example from my consulting work. A manager gained access to an agent tool and asked it to assess the position of a large online store. The tool began collecting data and drawing persuasive charts suggesting that things were going badly, even though actual revenue showed the opposite.

It turned out that instead of using the full dataset, the model had taken roughly one thousand products and extrapolated the result to the rest of the catalog. Nobody knew why those particular products had entered the sample. The model tried to reduce the amount of work and produced a plausible answer, but did not disclose the critical assumption behind it.

The right stance is not “I am replacing myself with a model,” but “I am becoming an LLM operator within my own field of expertise.” The model adds speed and helps me stay attentive. Responsibility for the goal, method, and verification remains with the specialist.

The specialist remains the LLM operator, coordinating researcher, analyst, critic, and executor roles.
The slide puts the domain expert above the AI roles: models can research, analyze, critique, and execute, but a person integrates their outputs and makes the final decision.

Design the System So Its Components Can Change

No system remains optimal forever. Models, services, prices, and constraints all change, so components should be replaceable.

For example, I built a personal process for learning a new subject. I first select books, then use an LLM to create a short summary and decide whether I actually need each source. Because reading on a screen is not always convenient for me, the selected material is converted into audio. I originally built that stage myself, but the quality was mediocre. When ElevenReader appeared, I replaced one component while leaving the rest of the system intact.

A learning system with replaceable components, where one text-to-speech stage is swapped for ElevenReader.
The process keeps the same goal and sequence - choose books, summarize, listen, take notes, and apply knowledge - while an underperforming audio component is replaced without rebuilding the entire system.

This principle matters in SEO automation as well. If the entire process depends on one particular chat, changing the model forces you to rebuild the work from scratch. If the goal, inputs, rules, checks, and output format are documented separately, the model remains a replaceable executor.

Forget Magic Prompts: Context Is What Matters

A few years ago, prompt engineering was treated as the central skill: how to phrase the request, which words to add, and how to make the model reason “correctly.” Strong models now understand ordinary language well enough that you can simply dictate a request.

The important question has moved elsewhere: what can the model actually see?

Results depend less on a magic phrase and more on sources, boundaries, rules, and the history of past decisions. That is why I prefer to talk about context engineering rather than prompt engineering.

Prompt engineering compared with context engineering: from magic wording to sources, constraints, rules, and decision history.
The slide contrasts prompt engineering - optimizing the wording of a request - with context engineering - controlling what the model can see. The second approach supplies trusted sources, constraints, rules, examples, and decision history, making quality less dependent on a supposedly perfect prompt.

In an earlier AI SEO Day talk, I showed how to collect project knowledge and data for individual SEO tasks. The next step is to turn that accumulated context into a system that survives changes in chats and models.

Project knowledge combined with analytics data as the foundation of data-driven decisions.
This slide carries the previous talk forward: documentation and decision history provide project meaning, while analytics systems provide measurable evidence. A reusable AI system needs both.

Where Working Context Comes From

An SEO specialist’s context usually already exists; it is simply scattered across different places:

  • a knowledge base or Confluence contains audits, hypotheses, tests, and - most importantly - conclusions about what worked and what did not;
  • Jira or another task tracker contains the task description, the reason it exists, discussions, and links to the implementation;
  • saved conversations preserve decisions that never reached formal documentation;
  • call transcripts contain things the team discussed but never recorded anywhere else.

A table of working context sources and the knowledge each contributes.
A knowledge base stores hypotheses and conclusions, a task tracker records purpose and implementation links, saved conversations preserve undocumented decisions, and call transcripts capture what was said but never written down.

The outcome matters more than the fact that the work happened. If we translated one hundred thousand descriptions, the context should not end with “translation complete.” It should record how many pages were reindexed, what happened to rankings and traffic, which errors were found, and which rules changed after verification.

Documentation is no longer bureaucracy in this approach. It becomes the system’s memory and directly improves the quality of the next task.

Format matters too. LLMs work well with lightweight text formats: Markdown for documents, CSV for tables, and JSONL for bulk operations. These formats are easy for people to read, easy to version, and easy to move between tools.

Why Global Memory Does Not Work for Everyone

Global memory crossed out as a universal solution.
A single global memory is unsafe for multi-project work: client facts can leak across contexts, old assumptions remain invisible, and the model's remembered state is difficult to audit.

Built-in memory is convenient when you have one product and a stable context. An SEO specialist or agency, however, may work with dozens of websites at once. Facts, rules, and constraints from different projects then begin to bleed into each other. Outdated information remains in memory, while it is difficult to inspect and verify everything the model believes it knows.

I prefer an explicit folder structure and a cascade of rule files. General working principles live at the top. Below them are separate folders for personal and professional areas, companies, websites, projects, and tasks. Each level adds only its own rules.

This approach has three benefits:

  • context is isolated instead of leaking between sites;
  • rules are visible and can be opened and checked;
  • changes are versioned with the project.

Before starting a task, I deliberately choose the scope: give the agent access to the entire working folder, one website, or only the directory for a specific task. The narrower the task, the less irrelevant context it receives and the lower the risk of mixing data.

A context hierarchy: shared rules, personal and work areas, websites, projects, and individual tasks.
The hierarchy starts with shared working rules and then narrows through personal or company areas, individual websites, projects, and tasks. Each level inherits the rules above it and adds only local knowledge, which prevents facts and constraints from one client or site from leaking into another.

Task State Should Live in Files, Not in Chat

A regular chat is a poor place for long-running work. The history grows, is eventually compressed, and loses detail. A few weeks later, it becomes difficult to understand why a particular decision was made. A new chat starts from zero.

That is why I use four files for each task:

FileWhat it containsLifecycle
TASK.mdThe contract: goal, inputs, and definition of doneWritten once and rarely changed
PLAN.mdThe execution checklist: done, remaining, and blocked workUpdated throughout the task
KNOWLEDGE.mdDiscovered constraints, access details, errors, decisions, and reasonsAppended over time
RESULT.mdWhat was delivered, how it was verified, and which limitations remainCreated at the end

The four task-state files and their lifecycles: contract, plan, accumulated knowledge, and final result.
TASK.md changes rarely, PLAN.md tracks live execution, KNOWLEDGE.md accumulates durable discoveries, and RESULT.md is written only after delivery. Together they preserve state outside the chat.

TASK.md lets me verify immediately whether the model understood the request. PLAN.md shows whether it is about to do something unreasonable, such as calculate financial metrics without access to the source data. KNOWLEDGE.md preserves the traps: a connection method that failed, an API quirk, a problem in the data, or the reason one solution was chosen over another. RESULT.md records not the model’s promise, but the result that was actually produced and verified.

Indexes Make Every New Task Cheaper

Once there are many tasks, folders alone are not enough. After a task is completed, add a short summary to an index - for example, a CSV table. When new work begins, the agent first searches for similar tasks, then loads their results and accumulated knowledge.

Indexes as the entry point for finding and reusing completed work.
A compact index lets the next task locate relevant prior results before loading full folders, reducing repeated discovery and keeping old work useful after the original chat is gone.

This keeps experience from disappearing into old chats. The first task may require a great deal of manually supplied context. The next task reuses the solutions already found, and after several iterations much of the process becomes reproducible.

Ideally, a task should make sense from a cold start: a different model, a different machine, and no memory of the conversation, yet the files still show why the work began, where it stopped, and how to verify the result.

An Agent Is a Loop; an Orchestrator Runs It

There is a fundamental difference between a chat and an agent. In a chat, a person asks a question, receives an answer, and repeats the cycle manually. An agent receives a goal, plan, data, and tools, then performs steps, checks intermediate results, and repeats individual actions when necessary.

The goal command as the starting point for autonomous, bounded execution.
A goal is not a decorative prompt: it defines the outcome an agent must plan toward, check, and eventually report as complete or blocked.

Agentic work adds another layer of risk: the orchestrator. This is the program between the user and the model. It decides which tools to call, which context to pass, when to compress the conversation, how to launch a subagent, and what to do after an error.

Agent behavior as a loop, with the orchestrator responsible for running that loop.
The model produces individual steps, but the orchestrator manages the repeating cycle: assemble context, call tools, observe results, decide what happens next, and stop only at a verified outcome.

That means a decline in output quality does not always mean that “the model got dumber.” The orchestrator, its settings, the way it assembles context, or its supporting models may have changed. We need visibility not only into the final answer, but also into the steps that ran, the instructions a subagent received, and exactly what it returned.

The factors that determine agent behavior and output quality.
Quality depends on more than the main model: the orchestrator, subagent models, context quality and window size, goal clarity, tool access, rules, compression, checks, and definition of done all affect the final result.

Long conversations covering unrelated subjects also hurt quality: sooner or later, the history is compressed into an unpredictable summary. It is better to separate projects and open a new task for each distinct goal, while keeping state in files.

A coding-agent interface as the visible surface of a larger orchestration system.
The interface is only the front end. Behind it, an agentic environment chooses context, tools, rules, and execution loops - the layers that must be inspected when behavior changes.

Chat compared with an agent: a person repeats the chat loop, while an agent plans, acts, and verifies.
On the chat side, a person repeatedly provides the next instruction and evaluates each answer. On the agent side, the system receives a goal, plan, data, and tools, performs the steps, checks intermediate results, and retries when necessary. The defining difference is this autonomous, verifiable execution loop - not the visual interface.

Turn Repeated Work into a Runbook

Once the same task has been completed several times, its history can become a runbook: a reproducible description of the process.

A good runbook includes:

  • the goal and boundaries;
  • input data and the expected output format;
  • the sequence of steps;
  • tools used;
  • conditions and branches;
  • checks;
  • error handling;
  • the definition of done.

Suppose you regularly build keyword sets. Instead of opening a new chat every time, preserve the working sequence, file formats, and scripts from previous runs. The input topic changes; the proven framework stays.

A request or trigger starts the runbook. The system gathers the required context and data, executes the steps, calls the tools, verifies the output, and only then hands the result to a person.

The components and execution loop of a runbook: goal, input, tools, checks, error handling, and definition of done.
The runbook turns repeated work into an explicit execution loop: a trigger starts the process, the system gathers context and inputs, follows defined steps with specified tools, handles expected errors, and verifies the definition of done. Only a checked result is handed back to a person.

Case Study: Bulk Translation Without Thinking

One practical example is translating a large catalog. The initial input contained 408,418 descriptions. Filtering reduced the set to 160,551 products, and deduplication brought it down to approximately 125,600 unique texts.

The naive approach is to prepare a table, send it through batch inference, and collect the responses. That still leaves a large amount of manual work in file preparation and transfer - and, more importantly, provides no proper quality control during the process.

In the working system, responsibilities are separated:

  1. code exports the catalog, filters records, and deduplicates texts;
  2. DeepSeek translates the unique texts with thinking disabled;
  3. results are cached in JSONL together with the prompt version;
  4. deterministic checks identify formal errors;
  5. simple problems are fixed automatically;
  6. ambiguous texts enter a manual-review queue;
  7. native speakers also review a random sample;
  8. a systemic error leads to a rule change and a rerun of the affected records.

A bulk-translation pipeline from source preparation through translation, deterministic quality control, and manual review.
The workflow separates preparation, translation, and validation: code filters and deduplicates inputs, the model transforms unique texts, automated checks catch formal errors, and uncertain cases go to a human queue.

Why Thinking Made the Result Worse

Translation does not require multi-step reasoning. It requires precise rules, domain information, a good glossary, and fidelity to the source meaning. The thinking model spent tokens on reasoning, tried to improve the style, and introduced extra interpretation where careful transformation was needed.

After thinking was disabled in this case:

  • tokens per call fell by 80.7%;
  • the cost per translated word became 3.5 times lower;
  • the native-speaker quality score improved by 3.2%;
  • the complete run became approximately 35 times faster.

Bulk-translation results: fewer tokens, lower cost, a higher quality score, and a faster complete run.
The slide compares the same bulk-translation workflow with reasoning enabled and disabled. Disabling reasoning reduced tokens per call by 80.7%, made each translated word 3.5 times cheaper, improved the native-speaker quality score by 3.2%, and made the complete run about 35 times faster - evidence that a simpler mode can be better for precise, repeatable transformation.

This is a good example of why there is no universally “best model.” For a particular task, what matters is sufficient quality, speed, cost, and controllability. A more expensive reasoning mode can perform worse than a simpler one when the system needs exact, repeatable transformation rather than inference.

Case Study: Reviewing a Site with Logs, Crawls, and Business Data

Another typical scenario is determining where a large website has real SEO problems and in which order they should be fixed.

Several sources can be combined in one process:

  • server logs;
  • Google Search Console data from BigQuery;
  • site crawl results;
  • a target model or set of SEO rules;
  • sales data and other business priorities, when needed.

Logs and Search Console data can be stored in ClickHouse, while Screaming Frog results can be exported to tables. Local Python scripts then join everything by URL. For each page, the process compares Googlebot’s actual behavior, traffic, current page status, and target state.

Instead of an abstract request to “analyze my site,” the output contains three verifiable results:

  1. a map of differences between the actual and target states;
  2. priorities that show what should be fixed first;
  3. concrete tasks for the website.

A site-review system combining ClickHouse, crawl data, a target model, and business priorities.
The process joins Googlebot logs and Search Console data with crawl results and project rules, compares current and target states by URL, and produces prioritized fixes rather than a generic AI opinion.

For example, the logs may reveal parameterized pages that were never excluded from indexing. The conclusion does not come from the model’s free-form reasoning; it comes from matching sources in a process where every step can be reproduced.

Code Should Calculate, Not the Language Model

My rules state this explicitly: even small calculations should be performed in code. An LLM can write a Python script, explain the output, and help find a logic error. The numbers themselves should come from a reproducible process.

The reason is simple: you can return to code. You can inspect the formula, input data, and intermediate values, then repeat the calculation. If a model merely says it calculated something “on its side,” the process is far more difficult to verify.

It is important to distinguish calculation from interpretation:

  • code calculates, filters, joins, and checks formal conditions;
  • the model helps write the code, explains the result, and suggests possible causes;
  • the specialist decides whether the conclusion matches reality and can support action.

The source of data should also be a database, analytics system, or another canonical source - not a ChatGPT response. In one case I know, a company was preparing for an investment round and collected data from its managers. During the presentation, the team discovered that some of the metrics did not reconcile. One participant simply asked ChatGPT for the required percentages, and the model invented them. A convincing number does not become a fact just because it looks good on a slide.

Three Rules That Prevent Most Problems

Three practical rules: calculate in code, start from a plan, and verify with a separate critic.
The slide summarizes the control layer around AI: keep calculations inspectable in code, make progress visible in a plan, and use a fresh critic to search for omissions and unsupported assumptions.

1. Always Start with a Plan

An API can fail, a tool can skip part of the workflow, and the model may still report that the task is complete. A plan lets you check the actual completion of each step instead of trusting the confidence of the answer.

Pay particular attention to whether files exist, whether the data is complete, and whether the checks actually ran. The word “done” proves nothing on its own.

2. Use a Separate Critic

After a complex task is completed, it is useful to open a separate context and ask a critic to review the result against the original plan: what was missed, which assumptions remain unsupported, and where verification is absent.

A critic does not remove responsibility from the person, but it helps search for a different class of errors. The final decision must still be made by someone who understands the domain and owns the consequences.

3. Limit Context to Match the Task

The model does not need the entire history of your life and every project. It needs the specific tables, documents, and rules required for the current result. Narrow context is easier to verify, cheaper to process, and harder to mix accidentally with data from another site.

Do Not Delegate Your Intelligence

A warning against delegating judgment: expertise, bounded context, and questions remain human responsibilities.
The closing slide states the boundary clearly: do not outsource professional judgment; knowledge is not experience; scope context to the task; understand the field; and choose models by the job rather than searching for one universal best model.

A model may possess more knowledge than any single person, but knowledge and experience are not the same. Experience means understanding the specific project: why a decision was made, which constraints are hidden in the data, where an impressive result conflicts with reality, and which questions must be asked before launch.

AI can handle data collection and transformation, code generation, first drafts, bulk translation, and risk discovery. What cannot be delegated is ownership of the goal, the choice of a source of truth, professional judgment, or final acceptance of the result.

The most useful AI system is not the one with the largest number of agents, models, and integrations. It is a system in which a person can clearly describe the desired outcome, understands the process, can verify every important step, and can replace any component without losing accumulated experience.

Start with one recurring task. Record its goal, inputs, steps, and definition of done. Preserve the result and the errors you found so that the next run becomes cheaper and more reliable. Add an LLM only where it genuinely strengthens the process.

The model may change. Your system remains yours.

Closing slide with Vlad Morgun’s contact details.
The closing slide marks the final handoff: the system can automate execution and verification, but a named specialist still owns the goal, the public explanation, and the consequences.

That final slide is also part of the system’s logic. A process is not complete when a model stops producing output; it is complete when a responsible person can receive the result, answer for it, and decide the next action.