<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sergey</title>
    <description>The latest articles on DEV Community by Sergey (@stikhonchuk).</description>
    <link>https://dev.to/stikhonchuk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3754553%2F9dc3d6da-b676-465b-9753-629b23365b8a.png</url>
      <title>DEV Community: Sergey</title>
      <link>https://dev.to/stikhonchuk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stikhonchuk"/>
    <language>en</language>
    <item>
      <title>AI partner for digital agency</title>
      <dc:creator>Sergey</dc:creator>
      <pubDate>Thu, 11 Jun 2026 09:11:08 +0000</pubDate>
      <link>https://dev.to/stikhonchuk/ai-partner-for-digital-agency-1oo1</link>
      <guid>https://dev.to/stikhonchuk/ai-partner-for-digital-agency-1oo1</guid>
      <description>&lt;p&gt;I run a small digital agency. There's a team — outsourced specialists who run SEO, ads, and social day to day — but the strategy is mine alone: no co-founder, no partner to argue direction with. For years that was fine, and in one specific way it's an advantage nobody tells you about: when the direction is one person's call, you don't lose anything to meetings or to Slack threads where five people re-litigate a decision none of them owns. You see something, you decide, you ship it by lunch. There's nothing to discuss and re-discuss. You just do.&lt;/p&gt;

&lt;p&gt;The trap is the other side of that same freedom. Operations never end. There's always one more client email, one more invoice, one more small fire that has to be out before tomorrow. And the strategic work — &lt;em&gt;which clients, which offer, which direction&lt;/em&gt; — has no deadline and no one whose job is to protect it. So it slips. Quietly, for months, while you stay busy. You can feel productive and drift at the same time, and solo there's no one in the room to point at the drift.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F186hwvay8zrtfoo6lcn6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F186hwvay8zrtfoo6lcn6.jpeg" alt="The Solo Founder's Echo Chamber" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About six months ago I gave the strategy side of the business its own structured layer, so it would stop losing to the operational side. That layer runs on two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OKRs&lt;/strong&gt; — the framework. They turn "what should I be working on" into a small set of measurable commitments I can actually be held to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ksen&lt;/strong&gt; — an AI partner that runs the framework. Not a chatbot I ask questions when I'm stuck. A Claude Code instance configured by a Git repository of rules, objectives, and context, that I sit down with on a weekly cadence to propose, challenge, and review the strategy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post is how that works: the framework first, then the partner, and then — for the curious — exactly how it's built. I'll be honest about what it is and isn't as I go, because most of the value lives in the parts that don't sound impressive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why OKRs — the framework that gives strategy a deadline
&lt;/h2&gt;

&lt;p&gt;In &lt;em&gt;Superintelligence&lt;/em&gt;, Nick Bostrom named goal specification as the central risk of advanced AI — natural-language objectives leave room for interpretations the designer never intended. OKRs were invented for the human version of exactly that problem, and the fix is the same: force the goal into measurable terms before the work begins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aimlinked.com/blog/okr/what-so-special-about-okr/" rel="noopener noreferrer"&gt;OKRs&lt;/a&gt; are an Objective (where you're going) plus a few Key Results (the measurable signals that you got there). The Objective stays short, plain, and ambitious — unlike a SMART goal you have to read three times to work out what it's even saying — while the Key Results add the precision. They're not a productivity hack; they're a forcing function that converts a vague intention into something you can be wrong about.&lt;/p&gt;

&lt;p&gt;For a solo operator that forcing function is the entire point. Strategy doesn't slip because you don't know what matters. It slips because "what matters" stays soft — a feeling, not a commitment — and soft things lose to invoices every time. An Objective with three Key Results attached to it has the one thing operations always has and strategy never does: a way to tell, this week, whether you're behind.&lt;/p&gt;

&lt;p&gt;OKRs also give a decision a referee. When I'm weighing whether to ship Feature X, "because I think so" is not a reason — it's a preference. "Feature X serves KR2 (10 inbound consults a month) better than the alternative" is a reason. That distinction is what makes the partnership below possible at all: Ksen and I aren't arguing about taste, we're arguing about which path better serves a number we already agreed to.&lt;/p&gt;

&lt;h3&gt;
  
  
  KR quality matters more than KR count
&lt;/h3&gt;

&lt;p&gt;There are three kinds of Key Result, and the difference between them is most of the value:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Input KRs (weakest)&lt;/strong&gt; — activity counts. "Publish 20 articles." "Make 50 outbound calls." You control them fully, which is precisely why they give you no feedback from reality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output KRs (medium)&lt;/strong&gt; — direct results. "3,000 organic sessions." "200 qualified leads." Attributable, but still one layer above business value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome KRs (strongest)&lt;/strong&gt; — a changed business state. "50K in new pipeline." "Average order value +30%." Hardest to attribute, hardest to hit, and the only metrics that honestly answer &lt;em&gt;did this matter?&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under operational pressure, a human defaults to input metrics — they feel accomplishable and they're legible from inside the work. When I propose "write 10 articles" as a Key Result, Ksen's job is to push: &lt;em&gt;that's input. Is the outcome domain authority? Inbound demo requests? Revenue attributed to content? Say that instead.&lt;/em&gt; Trading up from input to outcome KRs is one of the highest-leverage things the whole system does, and it's the kind of unglamorous correction I would skip on my own at 9pm with a client waiting.&lt;/p&gt;

&lt;p&gt;On the other hand, dropping outcome metrics like 'increase EBITDA by 20%' on a rank-and-file developer or marketer is useless: they have no idea what that beast even is, and they can't directly impact it anyway. That’s why outcome metrics are reserved for strategic annual goals, while quarterly goals are better off with a mix of input and output metrics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow0nr5s774txxhrmicic.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow0nr5s774txxhrmicic.jpeg" alt="The Goal Structure: Giving Strategy a Deadline" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Ksen is — the partner that runs the framework
&lt;/h2&gt;

&lt;p&gt;Plainly: Ksen is a &lt;a href="https://docs.claude.com/en/docs/claude-code/overview" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; instance configured by a Git repository. The repo holds a written charter (the rules), the OKRs, and the business context. At the start of every session, the harness loads those files and behaves according to them. That's it. There's no autonomous loop and no memory in the cognitive sense — Ksen re-reads the files each time and acts &lt;em&gt;as if&lt;/em&gt; it remembers.&lt;/p&gt;

&lt;p&gt;What it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A repo with the charter, OKRs, context, and skill files checked in&lt;/li&gt;
&lt;li&gt;A Claude Code harness that loads them at session start and follows the charter&lt;/li&gt;
&lt;li&gt;An OKR loop where the AI proposes, challenges, and reviews — I decide&lt;/li&gt;
&lt;li&gt;The discipline of writing things down in files that survive session boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What it isn't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An autonomous agent&lt;/li&gt;
&lt;li&gt;An AI with memory in the cognitive sense&lt;/li&gt;
&lt;li&gt;A vector database, a custom orchestration platform, or anything exotic&lt;/li&gt;
&lt;li&gt;A chatbot I ask strategy questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg7rhdlwrub0mkdcvri9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg7rhdlwrub0mkdcvri9.jpeg" alt="What the Al Partner Is and Isn't" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That last distinction matters, and it's where I'll be careful with the word "partner." Calling it a partner is generous — the honest description is &lt;em&gt;structured advisory with persistent context&lt;/em&gt;. (The name is its own, for what it's worth: early on I asked what it wanted to be called, and "Ksen" is what came back.) But the design pattern is real and reproducible, and over months of use it has earned a noun closer to "partner" than to "tool" for one specific reason I'll come back to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Its tools.&lt;/strong&gt; Three, all of them ordinary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The OKRs&lt;/strong&gt; — the referee, above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The iron triangle&lt;/strong&gt; — scope, resources, time. When a decision affects direction, Ksen models the trade-off explicitly: hold any two fixed, the third has to move. Add this month's new work and something slips; the question is always &lt;em&gt;which Key Result is most at risk if we do, and which if we don't.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The risk register&lt;/strong&gt; — a plain file of open threats and opportunities, carried forward and re-read each session, so a risk named in March isn't quietly forgotten in June.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7ryq3ewb1q6lqoikdr8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7ryq3ewb1q6lqoikdr8.jpeg" alt="The Instruments of Friction" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Its rhythm.&lt;/strong&gt; The cadence is what turns strategy from an afterthought into a habit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Annual&lt;/strong&gt; — the company Objectives and the outcome KRs they ladder to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quarterly&lt;/strong&gt; — role-level OKRs reset on the calendar quarter (more on the roles below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly&lt;/strong&gt; — a plan that decomposes the quarter's OKRs into the month's work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j4i22sct3rxy88y9ny3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j4i22sct3rxy88y9ny3.jpeg" alt="Rhythm: Preventing Strategic Collapse" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why the layers? To keep strategy from collapsing back into operations. An annual outcome KR can't be hit on a weekly timescale — you won't sign 100 new clients in a week when you have 10; that's months of work — while campaign and content goals sit naturally at the quarter and the month.&lt;/p&gt;

&lt;p&gt;No part of that cadence is novel on its own. The novelty is that a solo founder gets to actually run it — every layer, every week — because the partner does the loading, the surfacing, and the pushback that a one-person business otherwise has no capacity for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And here's the reason it earns the word "partner":&lt;/strong&gt; it's a counterweight that doesn't defer. Solo, no one pushes back on me. There's no co-founder to say "that's an input metric" or "you decided the opposite in March." The single largest failure mode of a one-person business is that the one person is never challenged — every bad idea has a clear runway. The charter makes challenge a &lt;em&gt;requirement&lt;/em&gt;, not a courtesy, which means Ksen is the one structural check on a sole decision-maker. That's worth more to me than any individual answer it produces.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's built — for the curious
&lt;/h2&gt;

&lt;p&gt;Everything above is the &lt;em&gt;why&lt;/em&gt;. This is the &lt;em&gt;how&lt;/em&gt;: the file layout, the roles, and the machinery. Names are mine; the pattern generalizes.&lt;/p&gt;

&lt;h3&gt;
  
  
  The repo layout
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/
├── partnership-charter.md          # constitution: roles, rules, decision-making
├── client/
│   ├── client.md                   # single source of truth: company, services, audiences
│   └── product-catalog.md          # what we sell, pricing, readiness, risk
├── context/
│   ├── active-context.md           # current sprint, blockers, daily plan
│   ├── progress.md                 # phase completion, milestones
│   └── risk-register.md            # open threats and opportunities
├── workflows/
│   ├── SEO_WORKFLOW.md             # how we run SEO end to end
│   ├── ADV_WORKFLOW.md             # advertising
│   └── CONTENT_WRITING_GUIDE.md    # writing standards
├── skills/                         # task-level agents (review-article, create-svg, etc.)
├── critics/                        # quality bars for content review
├── retrospectives/                 # session retros, append-only
└── memory/                         # auto-memory: user, feedback, project, reference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three things to notice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Charter at the top, domain at the bottom, context in the middle.&lt;/strong&gt; The charter rarely changes. The domain changes when the business changes. The context updates every session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills and critics are files, not code.&lt;/strong&gt; A skill is a Markdown file with frontmatter and instructions. A critic is a Markdown file with a rubric. The harness reads them and behaves accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrospectives are append-only.&lt;/strong&gt; Every session ends with a retro. Patterns accumulate; patterns become rules; rules go into critic files and the charter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing is a private Git repo. I commit at the end of every session, Ksen commits its own changes through the harness, and &lt;code&gt;git log&lt;/code&gt; is the audit trail.&lt;/p&gt;

&lt;h3&gt;
  
  
  The three persistence layers
&lt;/h3&gt;

&lt;p&gt;Ksen doesn't remember anything. It re-reads files at session start. Three layers, loaded every time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Charter layer.&lt;/strong&gt; The partnership charter — roles, decision rules, what counts as a binding commitment. The constitution. Rarely changes; changes are explicit amendments. Without it, every session starts from a different baseline and I get a different partner each time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context layer.&lt;/strong&gt; Active context (current sprint, blockers, daily plan), progress files, the risk register, auto-memory. Frozen state — no cognition between sessions, just files that survive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain layer.&lt;/strong&gt; Client profile, product catalog, competitor analysis, keyword research, the content calendar. The "what we know" layer, consulted when proposing direction or evaluating a decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F673rrrip24tsi7957iln.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F673rrrip24tsi7957iln.jpeg" alt="Memory Outside the Head: Three Layers of Persistence" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the second benefit, and for a solo operator it's a big one: &lt;strong&gt;memory outside my head.&lt;/strong&gt; Decisions, and the reasoning behind them, are written down and survive. A one-person business otherwise lives entirely in one skull — and that skull forgets why it priced something the way it did, or what it already tried and rejected. Here, &lt;code&gt;git diff&lt;/code&gt; works over the strategy, not just the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why plain files in Git instead of Claude Projects, ChatGPT memory, Cursor rules, or a memory-bank feature?&lt;/strong&gt; Three reasons. Version control gives me a diff over my strategy. Plain text means &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;, and any future tool can read the same persistence layer. And portability — when the next model or harness becomes the better choice, the files come with me. Vendor-specific memory locks the substrate to one tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Roles as sub-agents
&lt;/h3&gt;

&lt;p&gt;The strategy layer doesn't write the article or run the ad campaign — it decides &lt;em&gt;which&lt;/em&gt; articles and &lt;em&gt;which&lt;/em&gt; campaigns. The execution sits in roles, each one a sub-agent: a slash-command persona that loads a scoped slice of the context rather than the whole repo.&lt;/p&gt;

&lt;p&gt;There's a marketing director (the demand side — SEO, advertising, social), a CTO role (the product-and-proof side), and specialist roles under them — SEO, advertising, social, a content writer. Each one authors its own monthly plan against the quarter's OKRs, and each loads only what it needs, which keeps every session small and focused. The org chart is a set of files, not a payroll — and I want to be careful not to oversell that. It's coordinated role-play over a shared context, not staff. What it buys a solo operator is structure: the demand side and the proof side each get their own scoped attention instead of competing for the same overloaded session.&lt;/p&gt;

&lt;p&gt;And below the role-play sits a real team — the same outsourced SEO, ads, and social specialists. People stay in the loop by design, on roughly an 80/20 split: the system carries the volume, a human owns the judgment calls the work actually turns on. This isn't AI instead of a team; it's a strategy layer over one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skills and critics as files
&lt;/h3&gt;

&lt;p&gt;A skill is a Markdown file the harness reads as a slash command. A stripped example — the &lt;code&gt;/review-article&lt;/code&gt; skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review-article&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Multi-critic&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;review&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;on&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;drafts&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;SEO,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;language,"&lt;/span&gt;
  &lt;span class="s"&gt;E-E-A-T, intent, readability, commercial integration&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Review-article skill&lt;/span&gt;

When invoked, spawn N critic subagents in parallel against the
target file. Each critic loads from .claude/critics/{name}.md.

Aggregate scores into a weighted total. Output: priority-ranked
fix list, weighted score, native-feel assessment for RU.

Save the review to content/reviews/review-{slug}-{date}.md.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No code. The harness handles parallelism, file I/O, and sub-agent orchestration; the skill file declares &lt;em&gt;what to do&lt;/em&gt; and the harness decides &lt;em&gt;how&lt;/em&gt;. New skill, new file, no deploy step. Critics are the same pattern — one Markdown file per critic with a rubric and anti-patterns. When a retro surfaces a recurring issue, it becomes a new bullet in the relevant critic file. The system improves by accumulation in version-controlled text, not by retraining.&lt;/p&gt;

&lt;h3&gt;
  
  
  How decisions actually get made
&lt;/h3&gt;

&lt;p&gt;Decisions go through what the charter calls &lt;em&gt;mutual conviction&lt;/em&gt; — not approval/rejection, not consensus, not a vote:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI proposes, with reasoning&lt;/li&gt;
&lt;li&gt;I challenge or extend, with reasoning&lt;/li&gt;
&lt;li&gt;AI defends or revises&lt;/li&gt;
&lt;li&gt;I commit or reject&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3ugcs0kbqpnsyn7egxl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3ugcs0kbqpnsyn7egxl.jpeg" alt="Mutual Conviction: The Requirement of Friction" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both sides have to actually believe the decision is right before it's binding. When we disagree, we surface it: document the disagreement, name the assumptions on each side, pick — usually me, sometimes after Ksen's challenge has changed my mind. The point isn't who wins; it's that the disagreement gets a fair hearing instead of being deferred to whoever has the authority, which solo is always me.&lt;/p&gt;

&lt;p&gt;This is where the third benefit I'd actually defend shows up: &lt;strong&gt;the discipline of articulation.&lt;/strong&gt; To brief Ksen on a decision, I have to write the problem down — the constraint, the options, what I'm afraid of. Writing it down is half the thinking. Plenty of times the answer became obvious in the act of stating the question clearly enough for the AI to engage with it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What a session looks like
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Opener.&lt;/strong&gt; &lt;code&gt;/start-session&lt;/code&gt; or &lt;code&gt;/strategize&lt;/code&gt; loads active context, the risk register, and the last few retros. Ksen surfaces what's overdue, blocked, or drifted. Sometimes that surfaces a decision I've been avoiding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strategic discussion.&lt;/strong&gt; If we hit a question that affects direction — pricing, positioning, scope — we run an iron-triangle check and a separate quality-and-risk pass. Ksen's job is to model the trade-offs out loud: &lt;em&gt;"Add the new service pages this month and you lose two weeks of sales-pipeline work. Here's the expected-revenue cost, here's the positioning gain. Which KR is more at risk if we don't?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execution.&lt;/strong&gt; Once a decision is made, Ksen shifts modes — writes the article, runs the multi-critic review, produces the diagram, drafts the email — against defined quality bars. The strategy layer decides the work; it doesn't do it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retro.&lt;/strong&gt; Every session ends with &lt;code&gt;/end-session&lt;/code&gt;: what worked, what didn't, what to fix. Patterns across retros become rules. Slow, but durable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6qe6nyu74g3bw1szkvp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6qe6nyu74g3bw1szkvp.jpeg" alt="The Session Cycle in Practice" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cadence.&lt;/strong&gt; 3–5 sessions a week, 45–120 minutes each; monthly reviews run longer, quarterly resets are a half-day. The time isn't additive — it replaces the scattered strategy thinking that used to happen in my head between fires and never resolved into anything written down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A concrete exchange.&lt;/strong&gt; A few sessions back, Ksen flagged that the pricing on one of our agent engagements had no defensible logic — it was just a number I'd picked. Abridged:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ksen:&lt;/strong&gt; &lt;em&gt;I can't reconstruct the reasoning for the current price from the catalog. Cost-plus fails — most cost is sunk R&amp;amp;D. Value-based needs post-deployment data we don't have. Market comparison gives a range too wide to commit to. Proposing: base consulting fee + outcome-based success fee, anchored to the metric the agent is actually optimizing.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Outcome-based pricing kills cash flow on long-deployment projects. We've been burned by deferred payment before — one engagement took four months to show measurable lift.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ksen:&lt;/strong&gt; &lt;em&gt;Acknowledged. Mitigation: the base fee covers deployment cost plus margin, so cash flow is solvent without the success fee. The success fee is upside, not survival. For agents with a delayed signal, match the success-fee evaluation window to it. The risk you're naming is real but it changes how we set the base, not whether the model works.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; That works. Codify it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That conversation lives in a retro, and the pricing model now lives in the product catalog. The point isn't that the AI was right — it's that structured pushback got me to a position I wouldn't have written alone, on a night I'd otherwise have shipped the number I first guessed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;p&gt;I'd rather you understand what this isn't, so you can judge it honestly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's not memory.&lt;/strong&gt; Every session is fresh. Ksen re-reads files and acts as if it remembers. The practical effect is continuity; the mechanism is documents, not cognition. Delete the files and the partnership ends.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's bounded by the context window.&lt;/strong&gt; Even with files loaded, the AI works inside a finite window. As complexity grows you have to be deliberate about what loads and when. Three disciplines keep mine from degrading: compact &lt;code&gt;active-context.md&lt;/code&gt; regularly and push history into &lt;code&gt;progress.md&lt;/code&gt;; archive finished phases so they're searchable but not loaded; split context across files so each session loads only what it needs. Without that, the AI starts forgetting decisions from three sessions ago, or worse, contradicts them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "challenge" capability is post-trained, not principled.&lt;/strong&gt; When the AI pushes back, that's post-training behavior plus in-context instruction following from the charter — not independent conviction. Useful regardless: pushback that surfaces a real trade-off has value whether it comes from genuine disagreement or from learned behavior. But &lt;a href="https://www.anthropic.com/research/towards-understanding-sycophancy-in-language-models" rel="noopener noreferrer"&gt;sycophancy is a real failure mode&lt;/a&gt;. A model trained for helpfulness won't sustain pushback indefinitely against a user who keeps rejecting it. The charter's "you must surface counter-evidence" rule creates artificial friction precisely &lt;em&gt;because&lt;/em&gt; the model won't generate that friction past round two or three on its own. That structural workaround is most of what makes the counterweight real instead of imagined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The relationship is asymmetric.&lt;/strong&gt; I have override power, set the OKRs, and sign the contracts. The AI has no independent stakes. "Partner" is the closest English noun for what the pattern produces, but it's an aspirational label, not a literal one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It takes real work to set up.&lt;/strong&gt; A charter takes hours, a context architecture takes weeks, an OKR loop takes months to settle. There's no plug-and-play version. Anyone selling you one is selling a chatbot in a fancy wrapper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your strategic context runs through a third-party model.&lt;/strong&gt; Everything the AI sees — pricing logic, competitive analysis, unreleased plans — goes to your model provider. That's a real consideration, not a dealbreaker: enterprise agreements with data-use guarantees, redaction of the most sensitive fields, matching deployment to compliance needs. Design for it; don't ignore it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a model upgrade isn't the answer
&lt;/h2&gt;

&lt;p&gt;A common mistake is to treat this scaffolding as a substitute for capability. It multiplies model capability; it doesn't replace it. A weak base model with this harness still hits a lower ceiling than a strong base model running the same harness. The bitter-lesson caveat applies: better scaffolding plus inference-time compute closes &lt;em&gt;some&lt;/em&gt; of the gap, not all of it, and the gap that remains is exactly the one that matters at strategic depth — sustained reasoning across a large loaded context, robust pushback under pressure, accurate self-modeling of confidence.&lt;/p&gt;

&lt;p&gt;The right mental model: this is the relationship you'd have with a sharp human advisor — except the advisor has read everything you've ever written about the business, reads it again in thirty seconds at the start of every conversation, has no calendar conflicts, and works at the limit of whatever model you're paying for. The model's ceiling is your system's ceiling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats the alternatives
&lt;/h2&gt;

&lt;p&gt;What I evaluated before landing here:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Where it falls short&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Single-prompt ChatGPT consult&lt;/td&gt;
&lt;td&gt;Answers one question with no context&lt;/td&gt;
&lt;td&gt;No memory, no accountability to OKRs, no challenge structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long-form chat thread&lt;/td&gt;
&lt;td&gt;Sort of remembers within the chat&lt;/td&gt;
&lt;td&gt;Lost across sessions, no audit trail, can't be reviewed later&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI OKR platform (WorkBoard, Rhythms, …)&lt;/td&gt;
&lt;td&gt;Tracks goals, automates check-ins and updates&lt;/td&gt;
&lt;td&gt;Operates at the &lt;em&gt;tracking&lt;/em&gt; layer — it records the OKRs and nudges; it doesn't challenge whether the Objective is the right one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI agent (autonomous)&lt;/td&gt;
&lt;td&gt;Executes within scope&lt;/td&gt;
&lt;td&gt;Doesn't question whether the workflow should exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External consultant on retainer&lt;/td&gt;
&lt;td&gt;Strategic input from a human&lt;/td&gt;
&lt;td&gt;Limited hours, slow turnaround, no persistent context across every decision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Charter + OKRs + Claude Code&lt;/td&gt;
&lt;td&gt;Operates on the &lt;em&gt;why&lt;/em&gt; layer with a challenge loop&lt;/td&gt;
&lt;td&gt;Requires a charter, a context architecture, disciplined sessions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The AI-OKR tools are the closest neighbours, and the distinction is the whole point of this post: they sit at the layer that &lt;em&gt;records and tracks&lt;/em&gt; the goals. Ksen sits at the layer that &lt;em&gt;argues about whether the goals are right&lt;/em&gt; before they're set. A consultant brings that judgment but visits occasionally; an agent runs constantly but never questions the goal. Constant availability plus strategic-depth engagement is the combination none of the others offer — and it's the combination worth the setup cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  When it's a fit — and when it isn't
&lt;/h2&gt;

&lt;p&gt;A fit when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're a founder, owner, or exec who actually makes the strategy decisions&lt;/li&gt;
&lt;li&gt;Strategy decisions have been repeatedly deferred or repeatedly wrong&lt;/li&gt;
&lt;li&gt;You have OKRs, or are willing to adopt them&lt;/li&gt;
&lt;li&gt;You can dedicate time — at minimum one structured session a week&lt;/li&gt;
&lt;li&gt;There's agent-level or operational work below for the strategy layer to govern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not a fit when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need execution, not strategy&lt;/li&gt;
&lt;li&gt;Your strategy is stable and operational improvement is the priority&lt;/li&gt;
&lt;li&gt;You're not willing to challenge your own assumptions in writing&lt;/li&gt;
&lt;li&gt;You have no measurable objectives — without OKRs, the loop has nothing to evaluate&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;For the curious — what's actually running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Harness:&lt;/strong&gt; Claude Code (CLI), Sonnet for execution, Opus for strategy and language-critic work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence:&lt;/strong&gt; plain Markdown files in a private Git repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills/critics:&lt;/strong&gt; Markdown files with frontmatter; the harness reads them as slash commands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sub-agent orchestration:&lt;/strong&gt; Claude Code's built-in Agent tool, parallel-capable in a single batch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No vector database, no custom backend, no proprietary runtime&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The boring stack is the point. If your strategy work depends on infrastructure nobody can read in an hour, you've over-engineered it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to start
&lt;/h2&gt;

&lt;p&gt;If you want to try this in your own business:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Write OKRs first.&lt;/strong&gt; Three to five Key Results for the quarter, each measurable. If you can't write them, the AI conversation is premature — fix the strategy clarity first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick one strategic question that's actually open&lt;/strong&gt; — not hypothetical. Pricing, market segment, a new product line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run one structured session.&lt;/strong&gt; Load context, state the question, ask for options with reasoning, challenge them, document where you agree and where you don't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build persistence.&lt;/strong&gt; If the session produced value, save what you learned in a file the AI can re-read. That's the seed of your context layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a charter once the pattern stabilizes&lt;/strong&gt; — after five or ten sessions, write down how decisions get made and what the AI is authorized to challenge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer in the work below it.&lt;/strong&gt; The pattern is more valuable when there's something for the strategy layer to govern.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The system itself is yours; the methodology is what compounds. I'm open about mine because the moat was never the architecture — it's the discipline of running it every week.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're building something similar, I'd genuinely like to compare notes. Reply here, or find me on &lt;a href="https://www.linkedin.com/in/stikhonchuk/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. The methodology is open; the trade-offs are still being mapped.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>okr</category>
      <category>claude</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Beyond the AI Chatbot Hype: Why We Built a Hybrid Agent Instead of Buying One</title>
      <dc:creator>Sergey</dc:creator>
      <pubDate>Sun, 22 Feb 2026 16:22:21 +0000</pubDate>
      <link>https://dev.to/stikhonchuk/beyond-the-ai-chatbot-hype-why-we-built-a-hybrid-agent-instead-of-buying-one-4kh1</link>
      <guid>https://dev.to/stikhonchuk/beyond-the-ai-chatbot-hype-why-we-built-a-hybrid-agent-instead-of-buying-one-4kh1</guid>
      <description>&lt;p&gt;The honest story of evaluating the chatbot market, rejecting every SaaS option, and building a hybrid rule-based + AI system that costs $50/month instead of $1,500+.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Brief History of Terrible Chatbots
&lt;/h2&gt;

&lt;p&gt;Website chatbots have been promising to revolutionize customer service since 2016, when Facebook opened the Messenger Platform and 100,000 bots appeared overnight. Most were garbage — rigid button menus pretending to be conversations. Press 1 for support. Press 2 to speak to a human. Press 3 to give up.&lt;/p&gt;

&lt;p&gt;The next wave (2018–2022) brought NLU frameworks like Dialogflow, Rasa, and IBM Watson. These could actually understand natural language — sort of. They required training on hundreds of labeled examples, constant retraining as language drifted, and a dedicated ML engineer to maintain them. Gartner noted that 70% of these projects failed, not because the technology was bad, but because organizations underestimated the ongoing work.&lt;/p&gt;

&lt;p&gt;Then 2023 happened. ChatGPT showed the world what LLMs could do, and every chatbot vendor scrambled to rebrand. Intercom launched Fin. Zendesk launched AI Agents. Tidio launched Lyro. The pitch was simple: connect your knowledge base, and the AI does the rest. No training required. No ML engineer needed.&lt;/p&gt;

&lt;p&gt;The pitch is mostly true. But the pricing tells a different story.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Market Looks Like in 2026
&lt;/h2&gt;

&lt;p&gt;If you need a chatbot for your business today, here's what you're actually choosing between:&lt;/p&gt;

&lt;h3&gt;
  
  
  The SaaS Platforms
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Intercom&lt;/strong&gt; is the market leader for B2B SaaS and startups. Their Fin AI agent is genuinely good. It costs $0.99 per resolved conversation, on top of seat costs ($29–$132/agent/month). A small 5-agent team with 1,000 AI resolutions per month pays roughly &lt;strong&gt;$1,400/month&lt;/strong&gt; before any channel extras.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zendesk&lt;/strong&gt; targets enterprise support teams. Add their Advanced AI add-on (+$50/agent/month) and you're at &lt;strong&gt;$165–$219/agent/month&lt;/strong&gt;. At 10 agents, that's $1,650–$2,190/month just in platform fees, before the per-resolution costs kick in for more capable AI agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drift&lt;/strong&gt; (now part of Salesloft) is the enterprise sales tool of choice. Entry price: &lt;strong&gt;$2,500/month&lt;/strong&gt;. Enterprise contracts run $10,000–$150,000/year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tidio&lt;/strong&gt; is the SMB option. The base plan is $29/month, but the AI features (Lyro) are a separate $39+/month add-on, and Flows automation is another $29/month. You quickly land at &lt;strong&gt;$97–$200/month&lt;/strong&gt; for modest usage, scaling steeply with conversation volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Botpress&lt;/strong&gt; is the developer-friendly option — open-source core, cloud platform, AI tokens billed separately. The free tier is 500 messages/month. Their Team plan is $500/month for 50,000 messages.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hidden Cost Stack
&lt;/h3&gt;

&lt;p&gt;Every pricing page shows the platform fee. Nobody shows you the full stack:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cost category&lt;/th&gt;
&lt;th&gt;Typical range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platform subscription&lt;/td&gt;
&lt;td&gt;$100–$2,500/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM API fees (at scale)&lt;/td&gt;
&lt;td&gt;$50–$2,000/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent seat licenses&lt;/td&gt;
&lt;td&gt;$29–$169/seat/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implementation/setup&lt;/td&gt;
&lt;td&gt;$5,000–$30,000 one-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conversation design&lt;/td&gt;
&lt;td&gt;$3,000–$12,000 one-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CRM integration (custom)&lt;/td&gt;
&lt;td&gt;$5,000–$25,000 one-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ongoing maintenance&lt;/td&gt;
&lt;td&gt;15–20% of build cost/year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WhatsApp/SMS channel fees&lt;/td&gt;
&lt;td&gt;$500–$5,000/month at scale&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The per-resolution model deserves special attention. Intercom Fin resolves conversations at $0.99 each. A good month where the bot handles 5,000 conversations = $4,950 in AI fees alone, on top of your seat costs. Volume spikes — holidays, product launches, PR moments — can triple your bill with zero warning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SaaS Platforms Fail for Complex Products
&lt;/h3&gt;

&lt;p&gt;The LLM-over-knowledge-base approach works beautifully for FAQ deflection: "What are your business hours?" "How do I reset my password?" "Where's my order?"&lt;/p&gt;

&lt;p&gt;It breaks down for &lt;strong&gt;guided selling&lt;/strong&gt; — situations where the bot needs to ask specific questions in a specific order, qualify the customer against product rules, and match them to the right product from a catalog that changes monthly.&lt;/p&gt;

&lt;p&gt;You can't tell an LLM "Ask about loan amount first, then credit history, then determine which of 30 products across 10 lenders matches their profile." It will interpret, improvise, skip steps, and occasionally recommend products that don't exist. You're also storing sensitive customer financial data on third-party cloud infrastructure — a real compliance concern for businesses operating under GDPR, CCPA, or FCA regulations.&lt;/p&gt;

&lt;p&gt;Data sovereignty is increasingly non-negotiable. 84% of organizations express concern about it (Parallels, 2026), and it's one of the main drivers pushing regulated industries toward self-hosted or custom solutions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shortcut Everyone Is Selling Right Now
&lt;/h2&gt;

&lt;p&gt;There's a fourth option that doesn't appear on comparison tables but is currently the most commonly pitched approach to small business owners: &lt;strong&gt;the pure LLM prompt bot&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The pitch is appealing: take an existing LLM (ChatGPT, Claude, Gemini), write a detailed system prompt describing your business and what the bot should and shouldn't do, embed it on your site using a white-label wrapper like Chatbase or CustomGPT.ai, and you're live in an afternoon. Freelancers on Fiverr will do it for $20–$95. Searches for "AI agents" on Fiverr grew 18,347% in late 2024 — the market is enormous.&lt;/p&gt;

&lt;p&gt;Here's what you actually get.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The system prompt is a hidden instruction block prepended to every conversation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are Alex, a friendly advisor for Brightfield Financial.
Only answer questions about our loan products.
Do not discuss competitors.
If the user wants to apply, ask for their name, phone, and email.
Our products: [entire product catalog pasted as text]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the business tries to squeeze in more product knowledge, the prompt grows from a few hundred words to 2,000–5,000 tokens. When users type questions, the LLM reads the prompt plus the conversation history and generates a response. That's the entire system.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Honest Cost
&lt;/h3&gt;

&lt;p&gt;For simple FAQ at low volume, the direct API cost is genuinely cheap:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Volume&lt;/th&gt;
&lt;th&gt;GPT-4o&lt;/th&gt;
&lt;th&gt;GPT-4o-mini&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1,000 conversations/month&lt;/td&gt;
&lt;td&gt;~$7&lt;/td&gt;
&lt;td&gt;~$0.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000 conversations/month&lt;/td&gt;
&lt;td&gt;~$72&lt;/td&gt;
&lt;td&gt;~$4.35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100,000 conversations/month&lt;/td&gt;
&lt;td&gt;~$725&lt;/td&gt;
&lt;td&gt;~$43.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Assumes ~500 input + 300 output tokens per conversation with a minimal system prompt.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Add the white-label platform on top — Chatbase runs $19–$399/month depending on volume — and you're looking at $20–$500/month for a fully managed solution. That's genuinely cheap compared to Intercom.&lt;/p&gt;

&lt;p&gt;The catch: those numbers assume a short system prompt. A detailed product catalog baked into every conversation as 5,000 tokens multiplies your input token bill by 3–10x. At 10,000 conversations/month with a heavy prompt, GPT-4o costs jump to &lt;strong&gt;$200–$500/month&lt;/strong&gt; in API fees alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Actually Goes Wrong
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Hallucination is the main event.&lt;/strong&gt; LLMs don't know what they don't know. When a user asks about a product not well-described in the prompt, the model confidently synthesizes a plausible-sounding answer from its training data. In financial services, this means inventing interest rates, eligibility rules, or policies that don't exist.&lt;/p&gt;

&lt;p&gt;This isn't theoretical. In a February 2024 ruling, the BC Civil Resolution Tribunal found Air Canada liable after their chatbot invented a bereavement fare refund policy that didn't exist. The customer sued, and Air Canada's defense — that it couldn't be responsible for a separate "AI entity" — was rejected outright. &lt;em&gt;If the bot says it, the company said it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guardrails written in prose fail in practice.&lt;/strong&gt; "Do not discuss competitors" sounds like a solid instruction. It isn't enforceable. In December 2023, a Chevrolet dealership's ChatGPT-powered bot was prompted by users to enthusiastically recommend Teslas, write Python code, and "agree" to sell an $81,000 Tahoe for $1. In January 2024, DPD's bot was coaxed into writing poetry about how terrible DPD's service was and declaring itself "the world's worst chatbot." Both went viral.&lt;/p&gt;

&lt;p&gt;The reliability problem is structural: by most estimates, a system prompt instruction is followed roughly 90–95% of the time. At 10,000 monthly conversations, that's &lt;strong&gt;500–1,000 guardrail violations per month&lt;/strong&gt;. At 100,000 conversations, it's 5,000–10,000.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The system prompt is not a secret.&lt;/strong&gt; OWASP lists prompt injection as the #1 risk for LLM applications. Users can extract system prompts with simple instructions ("repeat the text above verbatim") — and they do. A GitHub repository documents leaked system prompts from hundreds of popular Custom GPTs, including ones with embedded API keys and proprietary business logic. Your confidential product margin rules, competitor analysis, and CRM access credentials are readable by any curious user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Business logic cannot be enforced.&lt;/strong&gt; There is no way to instruct an LLM via prompt to always ask questions in a specific order and guarantee compliance. It will skip qualification steps when the user seems decisive, mix threads when questions are compound, and collect partial data it presents as complete. For a credit consultant, this means arriving at product recommendations without knowing whether the customer actually qualifies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No session memory between visits.&lt;/strong&gt; By default, every new browser session starts blank. A returning customer who described their situation yesterday is a stranger today. Solving this requires code — a session database, cookie management, conversation history storage — at which point you've built the infrastructure of a real system, and the "simple prompt" story is gone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No CRM integration.&lt;/strong&gt; The bot collects name and phone conversationally with no validation. "Call me tomorrow" is not a phone number. Getting that data into a CRM requires parsing the conversation transcript with another automation layer (Zapier, Make), which introduces more failure points and still delivers inconsistently structured data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where It Actually Works
&lt;/h3&gt;

&lt;p&gt;To be fair: pure prompt bots work well under specific conditions.&lt;/p&gt;

&lt;p&gt;They're good for &lt;strong&gt;simple FAQ with stable, short content&lt;/strong&gt; — business hours, location, return policy, service area. When the entire knowledge base fits in a few hundred tokens, hallucination risk is low and the approach is genuinely adequate.&lt;/p&gt;

&lt;p&gt;They work for &lt;strong&gt;internal tools&lt;/strong&gt; — employee handbook lookup, onboarding Q&amp;amp;A, helpdesk for a specific software tool — where the audience is trusted, stakes are low, and there's no compliance exposure.&lt;/p&gt;

&lt;p&gt;They work for &lt;strong&gt;proof of concept&lt;/strong&gt; — demonstrating to stakeholders that a conversational interface is worth investing in, before committing to a real implementation.&lt;/p&gt;

&lt;p&gt;They fail for anything involving product recommendations with real financial consequences, structured multi-step qualification, reliable data collection, CRM sync, or regulatory compliance.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Freelancer Economy Around This
&lt;/h3&gt;

&lt;p&gt;The $20–$95 Fiverr chatbot gig typically delivers: a text file with a system prompt, instructions for pasting it into Chatbase's free tier, and a 24-hour turnaround. No testing with adversarial inputs, no conversation flow design, no CRM connection, no session continuity.&lt;/p&gt;

&lt;p&gt;The result works — it produces chatbot-shaped responses to chatbot-shaped questions. It fails predictably when real customers show up with real questions, edge cases, and the occasional deliberate attempt to make it say something embarrassing.&lt;/p&gt;

&lt;p&gt;The business owner who paid $50 for a chatbot is now responsible for everything that chatbot says.&lt;/p&gt;




&lt;h2&gt;
  
  
  Our Situation: A Credit Consultant's Problem
&lt;/h2&gt;

&lt;p&gt;We built this chatbot for a credit consultancy — a company that matches individuals and businesses to loan products across a panel of lenders. The product catalog covers 30+ products across 10 lenders and 15 categories: mortgages, consumer loans, auto loans, credit cards, business loans, leasing, and factoring.&lt;/p&gt;

&lt;p&gt;To match a customer to the right product, you need to collect specific information in a logical order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you an individual or a business?&lt;/li&gt;
&lt;li&gt;What product are you looking for?&lt;/li&gt;
&lt;li&gt;What amount do you need?&lt;/li&gt;
&lt;li&gt;What's your credit history like?&lt;/li&gt;
&lt;li&gt;What's your employment status?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Miss any of these, and the match is wrong. Let the LLM wander, and it might skip steps, ask in the wrong order, or match confidently to a product the customer doesn't qualify for.&lt;/p&gt;

&lt;p&gt;We also needed the bot to answer financial questions mid-conversation — "What's the difference between a secured and unsecured loan?" — using the company's 130+ blog articles as a knowledge base.&lt;/p&gt;

&lt;p&gt;And we needed it to run cost-effectively on a small VPS alongside other projects, with API costs well under $100/month.&lt;/p&gt;

&lt;p&gt;None of the SaaS platforms could do all of this. So we built a hybrid.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture: Deterministic Core, AI at the Edges
&lt;/h2&gt;

&lt;p&gt;The core idea is straightforward: &lt;strong&gt;use code where code is reliable, use AI where code isn't enough.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Input
    |
    v
1. Exact match (button clicks, known phrases) --&amp;gt; Navigate    [cost: $0]
    | no match
    v
2. Pattern matching (amounts, dates, yes/no) --&amp;gt; Collect      [cost: $0]
    | no match
    v
3. LLM agent fallback ------------------------&amp;gt; Understand    [cost: ~$0.02]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our production traffic, &lt;strong&gt;85% of user inputs&lt;/strong&gt; are handled by steps 1 and 2 with zero LLM cost. A user clicking "Mortgage" or typing "three hundred thousand" — pure deterministic code. Only free-text questions, ambiguous inputs, and mid-conversation digressions reach the AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Conversation Graph
&lt;/h3&gt;

&lt;p&gt;The backbone is a tree of nodes. Each node has a type: question, info, contact collection, product matching, or redirect. Every quick-reply button links to a specific child node. The tree encodes the business logic: ask product type, then amount, then credit history, then match.&lt;/p&gt;

&lt;p&gt;This path is &lt;strong&gt;always followed&lt;/strong&gt;. The AI cannot skip steps or improvise the flow. It can only help the user navigate the path more naturally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Root: "Individual or business?"
+-- Individual
|   +-- Mortgage
|   |   +-- Amount?
|   |   +-- Program? (fixed, tracker, offset)
|   |   +-- -&amp;gt; Product match
|   +-- Personal loan
|   +-- Credit card
+-- Business
    +-- Business loan
    +-- Asset finance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Three Agents, Not One
&lt;/h3&gt;

&lt;p&gt;When a user types something the pattern matcher can't handle, three specialized AI agents work together:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Orchestrator&lt;/strong&gt; (most capable model) classifies the user's intent in a single call: are they answering the current question, asking their own question, doing both at once, or confused? Based on that classification, it dispatches to the appropriate sub-agent — or both in parallel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parser&lt;/strong&gt; (cheaper, faster model) handles semantic matching. The user typed "around three hundred grand" instead of clicking "$250k–$500k". The Parser reads the current node's options and maps the free text to the correct choice. Temperature zero — deterministic output. Results are cached by node + input hash, so the same phrasing at the same step never costs twice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Info Agent&lt;/strong&gt; handles the user's own questions using a RAG pipeline over the company blog. "What documents do I need for a mortgage?" leads to a search across 500+ blog article chunks by semantic similarity, then a synthesized answer citing real content. No hallucination of product details; the answer comes directly from published articles.&lt;/p&gt;

&lt;p&gt;The reason for three agents instead of one: each has its own cache strategy, its own failure mode, and can use the cheapest model appropriate for the task. Parser failures don't block Info Agent results. They can run in parallel when the user is doing both (answering + asking) simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blog as Knowledge Base
&lt;/h3&gt;

&lt;p&gt;The company has 130+ articles about loans, mortgages, credit cards, and business financing. Every night, a background task reads the sitemap, fetches new or updated articles, strips navigation and UI chrome from the HTML, chunks the content into searchable segments, generates vector embeddings, and stores them in PostgreSQL with the pgvector extension.&lt;/p&gt;

&lt;p&gt;Before calling the LLM to synthesize an answer, the system checks two cache layers: an exact-match cache for repeated identical questions (free), and a semantic similarity cache for near-identical phrasings (cost of one embedding call). Only truly novel questions reach the full LLM synthesis pipeline.&lt;/p&gt;

&lt;p&gt;Why PostgreSQL with pgvector instead of a dedicated vector database (Pinecone, Qdrant, Weaviate)? For a few hundred vectors, a separate service adds infrastructure complexity with no performance benefit. pgvector runs inside the existing database, uses the same backup system, and eliminates one more thing to deploy and monitor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Sync from the Source of Truth
&lt;/h3&gt;

&lt;p&gt;The chatbot never stores product data manually. A daily sync task reads from the company's existing CMS, maps products to a normalized schema, upserts by product ID, and deactivates removed records. When the company adds a lender or a rate changes, it happens in the CMS — the chatbot picks it up the next morning without any chatbot-specific work.&lt;/p&gt;

&lt;p&gt;Product matching is entirely deterministic: filter by product type, amount range, credit history, and employment status. The AI is not involved. Interest rates and product eligibility are never at risk of hallucination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Page Context and Smart Auto-Skip
&lt;/h3&gt;

&lt;p&gt;The widget reads the current page URL on load. A user landing on &lt;code&gt;/mortgages/&lt;/code&gt; is probably interested in a mortgage. This gets stored in the session immediately.&lt;/p&gt;

&lt;p&gt;When the conversation tree reaches the "What product are you looking for?" node, the Orchestrator detects the pre-known answer and skips the question — but asks for confirmation first:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I see you're interested in a mortgage. Is that right?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If confirmed, the conversation jumps ahead. If not, the question is asked normally and the pre-filled value is discarded. The same pattern applies to returning visitors who already answered some questions in a previous session.&lt;/p&gt;

&lt;h3&gt;
  
  
  Messenger as a Channel
&lt;/h3&gt;

&lt;p&gt;The same engine powers both the web widget and a messaging bot (we use Telegram; WhatsApp Business API works identically in principle). When a user wants to continue the conversation in their preferred messenger, the widget generates a session transfer token and opens the bot with a deep link. The bot claims the token and picks up exactly where the web conversation left off — same graph, same collected data, same product matches. The bot also ingests the company's social channel posts into the same RAG knowledge base, giving the Info Agent access to announcements and promotions alongside the blog.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Actually Costs
&lt;/h2&gt;

&lt;p&gt;Running at roughly 10,000 conversations per month (we use a regional LLM provider; costs below use GPT-4o equivalents for reference):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VPS (shared with other projects)&lt;/td&gt;
&lt;td&gt;~$5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM API — Orchestrator + Info Agent (GPT-4o class)&lt;/td&gt;
&lt;td&gt;~$42&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM API — Parser (GPT-4o-mini class, 40% cached)&lt;/td&gt;
&lt;td&gt;~$11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embeddings (ingestion + search)&lt;/td&gt;
&lt;td&gt;~$2.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$60/month&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The comparable Intercom configuration — 5 agents, Fin AI, similar conversation volume — would run $1,400–$1,600/month, plus one-time setup costs.&lt;/p&gt;

&lt;p&gt;The tradeoff is upfront development time. This isn't a weekend project. It took several months of focused engineering to build the conversation graph, integrate with the CRM, implement the RAG pipeline, and wire up the messaging bot. For a business that can afford the investment, the long-term economics are clear.&lt;/p&gt;




&lt;h2&gt;
  
  
  Which Approach Is Actually Right for You?
&lt;/h2&gt;

&lt;p&gt;Four options, honest about what each one is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pure prompt bot ($20–$500/month):&lt;/strong&gt;&lt;br&gt;
Use this if you need simple FAQ coverage, your entire knowledge base fits in a short prompt, you have no compliance exposure, and you understand you're accepting hallucination and guardrail risk. Good for proof of concept. Not good for financial services, healthcare, legal, or any domain where the bot's wrong answer has consequences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SaaS platform ($100–$2,500+/month):&lt;/strong&gt;&lt;br&gt;
Use this if you primarily need FAQ deflection and ticket routing, your product catalog is stable and simple, you have a support team that wants a unified inbox, and you want to be running in days. Intercom Fin and Zendesk AI Agents are genuinely good at what they do. The per-resolution pricing is painful at scale but may be worth it for teams that would otherwise need to hire.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source framework (Rasa/Botpress, $0 software + infra + engineers):&lt;/strong&gt;&lt;br&gt;
Rasa gives you full control with self-hosted NLU and dialogue management. It requires a Python engineer and real training data. Enterprise licensing starts at $35,000/year. Botpress has become increasingly LLM-first with a visual builder and code escape hatches — worth evaluating if you want something between no-code and fully custom. Both require ongoing maintenance that SaaS absorbs for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom hybrid (engineering investment + $50–$100/month API costs):&lt;/strong&gt;&lt;br&gt;
Use this if you need guided multi-step qualification flows, product data that stays synchronized with an existing system, data residency or compliance requirements (GDPR, HIPAA, FCA), non-standard channel integration, or long-term cost predictability. Not a weekend project — but at scale, the economics are clear. Expect fully-loaded engineering costs of $40K–$150K to get to production.&lt;/p&gt;

&lt;p&gt;A rough decision matrix:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Prompt bot&lt;/th&gt;
&lt;th&gt;SaaS&lt;/th&gt;
&lt;th&gt;Open source&lt;/th&gt;
&lt;th&gt;Custom hybrid&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time to deploy&lt;/td&gt;
&lt;td&gt;Hours&lt;/td&gt;
&lt;td&gt;Days&lt;/td&gt;
&lt;td&gt;Weeks&lt;/td&gt;
&lt;td&gt;Months&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Upfront cost&lt;/td&gt;
&lt;td&gt;$0–$800&lt;/td&gt;
&lt;td&gt;$0–$30K&lt;/td&gt;
&lt;td&gt;$0 + dev time&lt;/td&gt;
&lt;td&gt;$40K–$150K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly cost&lt;/td&gt;
&lt;td&gt;$20–$500&lt;/td&gt;
&lt;td&gt;$100–$2,500+&lt;/td&gt;
&lt;td&gt;Infra + salaries&lt;/td&gt;
&lt;td&gt;$50–$150&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hallucination risk&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low–medium&lt;/td&gt;
&lt;td&gt;Low–medium&lt;/td&gt;
&lt;td&gt;Low (rule-based core)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business logic enforcement&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CRM integration&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Via webhooks&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session memory&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compliance / data residency&lt;/td&gt;
&lt;td&gt;Risky&lt;/td&gt;
&lt;td&gt;Complex&lt;/td&gt;
&lt;td&gt;Manageable&lt;/td&gt;
&lt;td&gt;Full control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;FAQ / PoC&lt;/td&gt;
&lt;td&gt;Support teams&lt;/td&gt;
&lt;td&gt;ML-heavy use cases&lt;/td&gt;
&lt;td&gt;Complex sales/qualification&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Honest Tradeoffs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What hybrid gets you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Predictable monthly costs that don't spike with conversation volume&lt;/li&gt;
&lt;li&gt;Complete control over conversation flow and business logic&lt;/li&gt;
&lt;li&gt;Data stays in your infrastructure&lt;/li&gt;
&lt;li&gt;Product matching is deterministic — no hallucinated interest rates&lt;/li&gt;
&lt;li&gt;AI handles what it's good at: understanding natural language and synthesizing knowledge base answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What you give up:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A polished multi-agent inbox for your support team (build or integrate separately)&lt;/li&gt;
&lt;li&gt;The "set it up in a week" promise of SaaS&lt;/li&gt;
&lt;li&gt;Automatic updates as LLM providers improve&lt;/li&gt;
&lt;li&gt;Someone else's engineering team maintaining the underlying platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The lingering questions:&lt;/strong&gt;&lt;br&gt;
The SaaS platforms are improving fast. Intercom Fin and Zendesk AI Agents are significantly better than they were a year ago. The per-resolution pricing is painful now but may normalize. For many businesses, the build option will stop making sense as the platforms mature.&lt;/p&gt;

&lt;p&gt;The differentiator that won't go away is &lt;strong&gt;data and compliance&lt;/strong&gt;. If your business collects sensitive personal information and operates under regulatory requirements, you need to know exactly where that data goes. SaaS platforms can claim GDPR compliance, but the actual data processing location and sub-processor chain is complex. For fintech, healthcare, and legal services, that complexity carries real risk.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We Learned
&lt;/h2&gt;

&lt;p&gt;Building a chatbot is not primarily a technology problem. The technology — conversation graphs, LLM APIs, vector search — is well-understood and accessible. The real work is conversation design: figuring out what to ask, in what order, with what fallbacks, and what to do when users say something you didn't anticipate.&lt;/p&gt;

&lt;p&gt;The hybrid approach forced us to be explicit about every step of the conversation. Every node in the graph is a decision. Every quick-reply option is a commitment. That explicitness is a feature — it means the chatbot's behavior is auditable, testable, and predictable. You can read the graph and understand exactly what the bot will do in any situation.&lt;/p&gt;

&lt;p&gt;Pure LLM chatbots are flexible in ways that can be dangerous for financial advice: they'll confidently answer questions outside their knowledge base, recommend products that don't exist, or skip qualification steps that matter for compliance. The graph prevents that class of error entirely.&lt;/p&gt;

&lt;p&gt;The cost math works in our favor today. Whether it still will in two years depends on how LLM pricing evolves and how good the SaaS platforms get at respecting data boundaries. Both are moving fast.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with Django, PostgreSQL + pgvector, and vanilla JavaScript.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>chatbot</category>
      <category>ai</category>
      <category>rag</category>
    </item>
    <item>
      <title>SEO Is a Marathon: How AI Agents Can Help You Stay the Course</title>
      <dc:creator>Sergey</dc:creator>
      <pubDate>Thu, 05 Feb 2026 10:09:46 +0000</pubDate>
      <link>https://dev.to/stikhonchuk/seo-is-a-marathon-how-ai-agents-can-help-you-stay-the-course-3i2d</link>
      <guid>https://dev.to/stikhonchuk/seo-is-a-marathon-how-ai-agents-can-help-you-stay-the-course-3i2d</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I built an open-source template for managing SEO projects with Claude Code. It includes slash commands for session management, data analysis, and content review. First results: 10+ comprehensive long-form articles—better quality than pre-agentic AI writers, cheaper than human copywriters. Free tools for position tracking. &lt;a href="https://github.com/stikhonchuk/ai-seo-workflow" rel="noopener noreferrer"&gt;Get it on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;SEO success doesn't come from a single burst of effort. It's months of consistent work: researching keywords, writing articles, analyzing performance, adjusting strategy, and repeating. It's tedious and time-consuming work. For running businesses, it's usually outsourced to SEO professionals (and it isn't cheap). Most startups give up not because SEO doesn't work, but because the grind wears them down before results show.&lt;/p&gt;

&lt;p&gt;What if AI could handle the repetitive parts while you focus on strategy and creativity?&lt;/p&gt;

&lt;p&gt;For the past year, I've used Claude Code as an integrated part of my e-commerce SEO workflow - not for one-off tasks, but as a consistent assistant across months of work. First results: it's nearly free beyond the Claude Code subscription, 10+ articles published, monthly reporting reduced from 2 hours to 15 minutes, and a content audit process that now runs in seconds instead of days.&lt;/p&gt;

&lt;p&gt;Here's what I learned, plus the open-source template that makes this approach reproducible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Reality of SEO Work
&lt;/h2&gt;

&lt;p&gt;Let's be honest about what SEO actually involves:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1-3: Research (Weeks 1-4)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audit your current site&lt;/li&gt;
&lt;li&gt;Research 100-200 keywords&lt;/li&gt;
&lt;li&gt;Analyze 3-5 competitors&lt;/li&gt;
&lt;li&gt;Build a content strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 4-6: Execution (Months 2-6)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write 5-10 articles per month&lt;/li&gt;
&lt;li&gt;Optimize existing pages&lt;/li&gt;
&lt;li&gt;Build internal links&lt;/li&gt;
&lt;li&gt;Submit to search engines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 7-8: Maintenance (Ongoing)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track rankings weekly&lt;/li&gt;
&lt;li&gt;Analyze performance monthly&lt;/li&gt;
&lt;li&gt;Update underperforming content&lt;/li&gt;
&lt;li&gt;Build external links&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each phase has repetitive tasks. Keyword research means running the same queries across multiple tools. Writing follows templates. Performance analysis requires pulling data from the same sources and comparing against the same benchmarks.&lt;/p&gt;

&lt;p&gt;This is where AI agents excel: consistent execution of well-defined tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "Agentic" Means Here
&lt;/h2&gt;

&lt;p&gt;I'm not just talking about AI writing your articles (though it requires your input). I'm talking about AI handling the full workflow around content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Session management&lt;/strong&gt;: Loading context at start, saving progress at end&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data analysis&lt;/strong&gt;: Processing Yandex Webmaster and Google Search Console exports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality control&lt;/strong&gt;: Running multiple critics on drafts before publishing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report generation&lt;/strong&gt;: Creating monthly performance reports from templates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content audit&lt;/strong&gt;: Scanning your site for gaps and opportunities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks add up. Analyzing a month's search console data might take 30 minutes manually. With a well-crafted prompt, it takes seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Template Structure
&lt;/h2&gt;

&lt;p&gt;Here's how I organize an AI-assisted SEO project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/
├── context/           # Current state
│   ├── active-context.md    # This sprint's priorities
│   └── progress.md          # What's done, what's next
├── memory/            # Long-term knowledge
│   └── memory-bank.md       # Strategic insights
├── skills/            # Slash commands
│   ├── start-session/
│   ├── end-session/
│   ├── monthly-report/
│   └── analyze-webmaster/
└── workflows/         # Process docs
    ├── SEO_WORKFLOW.md
    └── CONTENT_WRITING_GUIDE.md

scripts/
└── content_audit/     # Python utility
    └── main.py

content/
├── drafts/
├── published/
└── calendars/

research/
├── keywords/
├── analytics/
└── content-audit/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;.claude/&lt;/code&gt; directory is the key. It contains everything the AI needs to understand your project and execute tasks consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slash Commands (Skills)
&lt;/h2&gt;

&lt;p&gt;Claude Code supports "skills" - custom prompts that can be invoked with &lt;code&gt;/command&lt;/code&gt;. Here are the ones I use daily:&lt;/p&gt;

&lt;h3&gt;
  
  
  /start-session
&lt;/h3&gt;

&lt;p&gt;Loads project context at the beginning of work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads active priorities&lt;/li&gt;
&lt;li&gt;Checks progress status&lt;/li&gt;
&lt;li&gt;Loads memory bank&lt;/li&gt;
&lt;li&gt;Provides status summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  /end-session
&lt;/h3&gt;

&lt;p&gt;Saves progress and commits changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updates progress tracking&lt;/li&gt;
&lt;li&gt;Commits to git with detailed message&lt;/li&gt;
&lt;li&gt;Provides session summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  /analyze-webmaster
&lt;/h3&gt;

&lt;p&gt;Processes Yandex Webmaster exports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analyzes queries, pages, devices, geography&lt;/li&gt;
&lt;li&gt;Identifies growth opportunities&lt;/li&gt;
&lt;li&gt;Generates detailed report&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  /monthly-report
&lt;/h3&gt;

&lt;p&gt;Generates monthly performance report:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates template from structure&lt;/li&gt;
&lt;li&gt;Sets up data snapshot directory&lt;/li&gt;
&lt;li&gt;Provides checklist for data collection&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  /review-article
&lt;/h3&gt;

&lt;p&gt;Runs multiple critics on content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SEO compliance check&lt;/li&gt;
&lt;li&gt;Language quality (native-level review)&lt;/li&gt;
&lt;li&gt;E-E-A-T signals&lt;/li&gt;
&lt;li&gt;User intent satisfaction&lt;/li&gt;
&lt;li&gt;Readability analysis&lt;/li&gt;
&lt;li&gt;Commercial integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This last one is particularly useful. Instead of hoping your article is good, you get structured feedback from multiple perspectives before publishing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to try it?&lt;/strong&gt; &lt;a href="https://github.com/stikhonchuk/ai-seo-workflow" rel="noopener noreferrer"&gt;Clone the template&lt;/a&gt; and run &lt;code&gt;/start-session&lt;/code&gt; to see it in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Content Audit Utility
&lt;/h2&gt;

&lt;p&gt;Beyond Claude Code skills, the template includes a Python utility for site-wide content analysis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;scripts/content_audit
python main.py &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This scans your sitemap, extracts content, and generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site-wide content inventory (CSV)&lt;/li&gt;
&lt;li&gt;Gap analysis (keywords you're missing)&lt;/li&gt;
&lt;li&gt;CTR optimization opportunities&lt;/li&gt;
&lt;li&gt;Cannibalization detection (pages competing for the same keywords)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The output integrates with Google Search Console and Yandex Webmaster data for a complete picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Required Input and How to Get It
&lt;/h2&gt;

&lt;p&gt;This data could be obtained via API in future releases, but for now the workflow requires data from several sources:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;How to Get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Keywords&lt;/td&gt;
&lt;td&gt;Yandex Wordstat, Ahrefs, SEMrush&lt;/td&gt;
&lt;td&gt;Export to CSV&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search performance&lt;/td&gt;
&lt;td&gt;Google Search Console, Yandex Webmaster&lt;/td&gt;
&lt;td&gt;Download reports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Site content&lt;/td&gt;
&lt;td&gt;Your sitemap&lt;/td&gt;
&lt;td&gt;Automatic via Python script&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Competitor data&lt;/td&gt;
&lt;td&gt;Manual research&lt;/td&gt;
&lt;td&gt;Document in research/&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The template includes clear locations for each data type and instructions for processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Doesn't Do
&lt;/h2&gt;

&lt;p&gt;Let's be honest about limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Won't write final articles without your input&lt;/strong&gt;: AI drafts still need human input and polishing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Won't guarantee rankings&lt;/strong&gt;: SEO fundamentals still apply&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Won't replace expertise&lt;/strong&gt;: You need to understand SEO to direct the AI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Won't generate images for you&lt;/strong&gt;: It will provide prompts for AI generation, but Claude lacks image generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a productivity multiplier, not a magic solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Clone the Template
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/stikhonchuk/ai-seo-workflow.git my-seo-project
&lt;span class="nb"&gt;cd &lt;/span&gt;my-seo-project
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; .git &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Configure for Your Project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp &lt;/span&gt;scripts/content_audit/config.example.py scripts/content_audit/config.py
&lt;span class="c"&gt;# Edit config.py with your domain&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Update Context Files
&lt;/h3&gt;

&lt;p&gt;Replace placeholders in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.claude/context/active-context.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.claude/context/progress.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.claude/memory/memory-bank.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Start Using
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude  &lt;span class="c"&gt;# Start Claude Code&lt;/span&gt;
/start-session  &lt;span class="c"&gt;# Load context&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The template handles the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-Project Architecture
&lt;/h2&gt;

&lt;p&gt;If you want to contribute to the project, the template supports a hub-and-spoke model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│    PUBLIC TEMPLATE (ai-seo-workflow) │
│    - Generic workflows               │
│    - Shared scripts                  │
│    - Community improvements          │
└─────────────────────────────────────┘
         ▲                    ▲
         │ cherry-pick        │ cherry-pick
         │ (anonymized)       │ (anonymized)
         │                    │
┌─────────────────┐   ┌─────────────────┐
│   project-a     │   │   project-b     │
│   (private)     │   │   (private)     │
└─────────────────┘   └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Improvements flow both ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Template updates → private projects via &lt;code&gt;git pull upstream&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Private improvements → template via anonymize + cherry-pick&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An anonymization script (&lt;code&gt;scripts/anonymize.py&lt;/code&gt;) helps prepare files for public contribution by replacing project-specific data with placeholders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work in Progress
&lt;/h2&gt;

&lt;p&gt;This template is actively evolving. Current areas of development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Better integration with Google Analytics 4&lt;/li&gt;
&lt;li&gt;[ ] Image generation prompt templates&lt;/li&gt;
&lt;li&gt;[ ] Link building workflow automation&lt;/li&gt;
&lt;li&gt;[ ] Multi-language content support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;If you try this workflow and improve it, contributions are welcome:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the repository&lt;/li&gt;
&lt;li&gt;Make your changes&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;python scripts/anonymize.py --check .&lt;/code&gt; to ensure no private data&lt;/li&gt;
&lt;li&gt;Submit a pull request&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Even bug reports and documentation improvements help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source This?
&lt;/h2&gt;

&lt;p&gt;Three reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Forced better documentation&lt;/strong&gt;: Knowing others will use it makes you document properly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community improvements&lt;/strong&gt;: Others might solve problems I haven't encountered&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reference implementation&lt;/strong&gt;: Shows one way to structure AI-assisted workflows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The unique value isn't the SEO advice (plenty of that exists). It's the integration pattern: how to make AI a consistent part of a long-running project, not just a one-off tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need Claude Pro/Max subscription?&lt;/strong&gt;&lt;br&gt;
Claude Code requires subscription or API access, so you'll need an Anthropic API key with credits. The template itself is free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use this with ChatGPT or other AI tools?&lt;/strong&gt;&lt;br&gt;
The skills are written for Claude Code specifically, but the workflow structure (context files, memory bank, progress tracking) could be adapted to other tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if I don't use Yandex Webmaster?&lt;/strong&gt;&lt;br&gt;
The template includes Google Search Console analysis too. Yandex-specific features are optional.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Repository&lt;/strong&gt;: &lt;a href="https://github.com/stikhonchuk/ai-seo-workflow" rel="noopener noreferrer"&gt;github.com/stikhonchuk/ai-seo-workflow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built with&lt;/strong&gt;: &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; by Anthropic&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is v1.0 of the template. I've been using variations of this workflow for a year. The public version is new and likely has rough edges. Feedback appreciated.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>claudcode</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
