<?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: Teamvoy</title>
    <description>The latest articles on DEV Community by Teamvoy (@teamvoy).</description>
    <link>https://dev.to/teamvoy</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%2F4063210%2Fcfcc886b-fbc3-4fee-b691-6b63ae8b3c85.png</url>
      <title>DEV Community: Teamvoy</title>
      <link>https://dev.to/teamvoy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/teamvoy"/>
    <language>en</language>
    <item>
      <title>What Does LLMOps Cover That MLOps Does Not?</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Mon, 21 Sep 2026 16:25:11 +0000</pubDate>
      <link>https://dev.to/teamvoy/what-does-llmops-cover-that-mlops-does-not-454m</link>
      <guid>https://dev.to/teamvoy/what-does-llmops-cover-that-mlops-does-not-454m</guid>
      <description>&lt;p&gt;&lt;em&gt;What the operations layer around a production language model actually contains, and what it costs to skip it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Picture the failure. Support deflection has sat at 61% for six weeks. On a Tuesday it reads 48%. Your repo has no new commits. Latency is flat, the error rate is zero, every HTTP response is a 200. The provider rolled a point release behind the model identifier you pinned loosely, and the summarization step now writes three sentences where it wrote one, so the routing logic downstream stopped matching.&lt;/p&gt;

&lt;p&gt;You find out from a customer.&lt;/p&gt;

&lt;p&gt;That gap between “the service is up” and “the answers are right” is the entire subject of LLMOps. It is the engineering between a model endpoint and the people depending on it, and in 2026 it is the part of the stack most teams shipped without.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing you are operating is a configuration, not a model
&lt;/h2&gt;

&lt;p&gt;Here is the distinction that makes LLMOps its own discipline rather than MLOps with new vocabulary.&lt;/p&gt;

&lt;p&gt;In MLOps you version training data, features and weights. You own the artifact. When it degrades, the cause is data drift or a broken feature pipeline, and the fix is a retrain on your schedule.&lt;/p&gt;

&lt;p&gt;In LLMOps the artifact belongs to a vendor. What you own is everything wrapped around it: prompt versions, a retrieval corpus, tool contracts, a routing config, a provider and model version. A regression comes from a version bump you did not schedule, a corpus update someone ran at 4pm, or a one-word prompt edit that passed review because nobody had a way to test it.&lt;/p&gt;

&lt;p&gt;Rollback means restoring a previous combination of prompt, corpus and provider. There is no artifact to roll back to. That difference cascades into five components, and most engagements start with whichever one is missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluation suites.&lt;/strong&gt; A versioned case set covering the paths users take, run in CI against every prompt edit, corpus change and provider bump, with a pass threshold gating release.&lt;br&gt;
&lt;strong&gt;Tracing.&lt;/strong&gt; Every model call, retrieval and tool invocation, captured at the request level.&lt;br&gt;
&lt;strong&gt;Versioning.&lt;/strong&gt; Prompts, corpora and tool contracts under change control, the same way code is.&lt;br&gt;
&lt;strong&gt;Cost telemetry.&lt;/strong&gt; Spend attributed per request across a multi-step path.&lt;br&gt;
&lt;strong&gt;Release control.&lt;/strong&gt; A documented rollback path someone has actually used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluation is the control plane, and logging is not
&lt;/h2&gt;

&lt;p&gt;The industry spent two years buying tracing tools and calling it observability. Tracing tells you what happened after it happened. An evaluation suite stops the bad change from shipping.&lt;/p&gt;

&lt;p&gt;A working suite is a versioned case set with graded expectations, run in the same pipeline as your unit tests. Four kinds of case earn their place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Golden cases with known-correct answers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adversarial cases covering ambiguous and out-of-scope input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multi-step cases that exercise the tool path, including the loop that runs twice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regressions pulled from real traces, added the week each one broke.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pass threshold blocks the merge. That single mechanic turns a prompt edit from a judgment call into a diff someone reviews on evidence, and it turns a provider release from an incident into a report: the suite runs against the new version, the delta comes back case by case, and the routing config either moves or stays.&lt;br&gt;
Now the honest part. Real evaluation adds weeks to a first release and returns nothing on that release. It pays back on the first model change and every one after. A team shipping one prompt into a low-volume internal tool should skip it and spend the time elsewhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a trace has to carry before it is useful
&lt;/h2&gt;

&lt;p&gt;Most LLM tracing captures the model call and stops. That covers maybe a third of your failure modes. A trace that answers real questions has four layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retrieval.&lt;/strong&gt; Which documents came back, what they scored, and whether the answer actually cited them. Most quality complaints resolve here, and they resolve fast when the retrieved chunks sit next to the output.&lt;br&gt;
&lt;strong&gt;The model call.&lt;/strong&gt; Provider, model identifier, prompt version, tokens in and out, time to first token, total latency.&lt;br&gt;
&lt;strong&gt;Tool calls.&lt;/strong&gt; Which tool the model picked, the arguments it passed, what came back, and how many times the loop ran before it stopped.&lt;br&gt;
&lt;strong&gt;Outcome.&lt;/strong&gt; Whether the request resolved, escalated to a person, or got retried.&lt;/p&gt;

&lt;p&gt;Join that last layer to cost and the number changes meaning. Spend per million tokens is an accounting figure. Spend per resolved request is an operating one, and it is the only version of the metric that tells you whether a cheaper model is actually cheaper once it escalates twice as often.&lt;/p&gt;

&lt;h2&gt;
  
  
  In a regulated deployment, the ops layer is the evidence layer
&lt;/h2&gt;

&lt;p&gt;If you run in fintech, insurance or health, the auditor will ask for records rather than architecture. Four artifacts carry that weight, and each is a design decision taken before launch rather than a report generated after one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Version lineage per decision.&lt;/strong&gt; For any output that affected a customer: the prompt version, model identifier, retrieval snapshot and tool responses behind it. Under SR 11–7 model risk guidance, this is what makes a language model component reviewable in the same terms as a credit scorecard.&lt;br&gt;
&lt;strong&gt;Human review records.&lt;/strong&gt; Which outputs a person approved, changed or rejected, timestamped and attributable. Where a fully automated decision would sit in scope under the EU AI Act, this is the control teams most often rely on to stay outside it.&lt;br&gt;
&lt;strong&gt;Retention and residency.&lt;/strong&gt; Traces hold customer text. Retention windows, redaction and inference region are GDPR questions rather than infrastructure preferences, and DORA adds concentration risk where one provider serves every route.&lt;br&gt;
&lt;strong&gt;Change control.&lt;/strong&gt; SOC 2 change management applied to prompts and corpora, not only to code, because both move model behavior.&lt;/p&gt;

&lt;p&gt;Teams that treat these as a compliance workstream separate from engineering build the system twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the classical model still wins
&lt;/h2&gt;

&lt;p&gt;One more thing worth saying out loud, because vendors rarely say it.&lt;/p&gt;

&lt;p&gt;On a stable, high-volume classification step, a small trained classifier or a deterministic rule beats a model call on cost, latency and predictability. Every time. If the step is “route this ticket to one of nine queues” and you have labeled history, the language model is the expensive option with the worse audit story.&lt;/p&gt;

&lt;p&gt;Teams already running classical models are in the best position here anyway. The registry, the deployment pipeline, the monitoring backbone and the incident rota serve both disciplines. Splitting them doubles the operational surface for no return. What diverges is the clock: a classical model gets retrained on your data, a model route gets reconfigured on a vendor’s release schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four questions for whoever you hire
&lt;/h2&gt;

&lt;p&gt;Apply these to us as readily as to anyone else.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Who writes the evaluation suite, and when? If the answer is “after the first release,” evaluation is an add-on rather than part of the engineering.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where does inference run and who holds the keys? Your cloud account, a vendor platform, or a mix, and the data path in each case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the handover artifact? A running system with traces, a documented case set and an on-call rota is a different deliverable from an architecture diagram.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What did the team do the week a provider last deprecated a model? &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This one is hard to fake.&lt;br&gt;
We wrote up how we run this work, including a 3–5 day readiness audit that leaves you with a written gap list you can act on with any partner: &lt;a href="https://teamvoy.com/llmops-consulting-services/" rel="noopener noreferrer"&gt;LLMOps consulting services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Or take the shorter path. A 15-minute call with our CTO about where your model runs, what your traces show today, and what breaks the next time a provider ships a version bump.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>llmops</category>
    </item>
    <item>
      <title>If Reviewers Accept 95% of Drafts Unchanged, They Stopped Reading</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Tue, 15 Sep 2026 15:44:02 +0000</pubDate>
      <link>https://dev.to/teamvoy/if-reviewers-accept-95-of-drafts-unchanged-they-stopped-reading-3551</link>
      <guid>https://dev.to/teamvoy/if-reviewers-accept-95-of-drafts-unchanged-they-stopped-reading-3551</guid>
      <description>&lt;p&gt;Track one number when you put a generative model into a review workflow: how often reviewers accept the draft unchanged.&lt;/p&gt;

&lt;p&gt;Above roughly 95% and they've stopped reading. That's automation bias, and it looks exactly like success on every dashboard you have. The person's job changed from doing the work to approving it, which is a different job with different failure modes, and the main one is approving what they should have caught.&lt;/p&gt;

&lt;p&gt;This is the shape of the whole problem. A prototype proves the model can produce the artifact. Production asks whether you can show a regulator, six months later, why a particular output was produced — and whether a customer can challenge it. Those are design problems long before they're engineering problems.&lt;/p&gt;

&lt;p&gt;The integration work is roughly 20% model and 80% everything else: data pipelines, evals, audit logging, human review paths, and the interface showing a user what the model did.&lt;/p&gt;

&lt;p&gt;Three things change when the output is probabilistic&lt;br&gt;
The same input can produce a different artifact tomorrow. Interfaces built on deterministic assumptions break quietly. Pin temperature and seed or you cannot reproduce a decision.&lt;br&gt;
The audit surface grows. Every inference becomes a record you may need to reconstruct.&lt;br&gt;
The human role moves from producing to approving, with the acceptance-rate problem above.&lt;br&gt;
Generative and predictive are different products wearing one name&lt;/p&gt;

&lt;p&gt;A credit model returning a default probability is predictive. An assistant drafting the adverse-action notice that follows is generative. Vendors blur this and buyers inherit the blur — one platform sells "AI for lending" and you've bought two unrelated risk profiles under one contract.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Predictive  Generative
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Output  Score, class, ranking   Text, document, summary&lt;br&gt;
Evaluation  Precision, recall, AUC vs labels    Faithfulness, groundedness, human preference&lt;br&gt;
Failure mode    Systematic bias against a group Confident fabrication, one output at a time&lt;br&gt;
Found by    Aggregate analysis  Per-instance review&lt;br&gt;
Reproducibility Deterministic given version Varies unless parameters pinned&lt;br&gt;
Cost profile    Training-heavy, inference-cheap Training-light, inference-expensive&lt;/p&gt;

&lt;p&gt;A generative feature needs a review path. A predictive feature needs a challenger model. Building one and governing it as the other is the most expensive mistake in the category, because it's usually found during an examination rather than during a sprint.&lt;/p&gt;

&lt;p&gt;RAG sits between them and confuses things further. Govern the retrieval as a data-access control and the generation as a content control. Treating it as one component makes both halves harder to defend.&lt;/p&gt;

&lt;p&gt;Four prerequisites, each with a pass/fail test&lt;/p&gt;

&lt;p&gt;Run these in week one, on paper, before anyone writes a prompt:&lt;/p&gt;

&lt;p&gt;Data — can you pull 200 real cases with labeled correct outcomes without a manual export? If that takes more than two days, the data problem is your project.&lt;br&gt;
Team — is a compliance reviewer named in the sprint, not on the distribution list?&lt;br&gt;
Baseline — is there a current metric with today's number written next to it?&lt;br&gt;
Sponsor — does one executive own the outcome and the budget, in writing?&lt;/p&gt;

&lt;p&gt;The data test fails most often, and it fails in week five, after the model work is already scheduled. That moves the launch by a quarter.&lt;/p&gt;

&lt;p&gt;Write the eval suite before picking the model&lt;/p&gt;

&lt;p&gt;The sequence teams actually run: pick the model in week one because it's the interesting decision, design the interface around whatever it produces, hand the whole thing to compliance in week ten. Reversing that is most of what separates a six-week build from a six-month one.&lt;/p&gt;

&lt;p&gt;The dependency order that can't move:&lt;/p&gt;

&lt;p&gt;You cannot validate a model against evals you haven't written.&lt;br&gt;
You cannot write evals without knowing what a correct output looks like in the workflow.&lt;br&gt;
So the domain expert who does this work today has to be in the room before model selection, scoring 100 to 300 real cases.&lt;/p&gt;

&lt;p&gt;Cost, latency, data residency, and vendor retention policy narrow the field faster than benchmark scores do. And test for disparate outcomes on protected characteristics even when the output is a draft rather than a decision — a drafting assistant that writes warmer letters to one group is a fair-lending problem wearing a different hat.&lt;/p&gt;

&lt;p&gt;Design the reviewer's screen before the customer's&lt;/p&gt;

&lt;p&gt;The review interface decides whether reviewers catch errors or rubber-stamp them, and that single behaviour sets the feature's real error rate more than model quality does. It's the part of the work that never shows up in a portfolio.&lt;/p&gt;

&lt;p&gt;Beyond acceptance rate, two things help: put the retrieved records next to the generated draft so the grounding is visible, and seed known-bad cases into the queue to check people are still catching them.&lt;/p&gt;

&lt;p&gt;On the customer side, three patterns carry the trust load:&lt;/p&gt;

&lt;p&gt;Confidence disclosure that states the basis, not a number. "Drafted from your March statement and two prior disputes" tells a user more than "87% confidence" and is much harder to misread.&lt;br&gt;
Reversible action. Anything the model initiates gets an undo with a stated window. Where reversal is impossible — a sent payment — require confirmation before rather than explanation after.&lt;br&gt;
A visible human path. One click, with expected response time on the button.&lt;/p&gt;

&lt;p&gt;When a fraud hold lands on a legitimate transaction, the customer doesn't want an explanation of the model. They want the hold lifted and they want to know how long that takes. Trust in financial products is mostly a function of recoverability. Users trust what they can undo more than what they can read.&lt;/p&gt;

&lt;p&gt;Two anti-patterns: acting without confirmation on anything material, and decorative explainability — a "why did I see this" link returning generic text. A weak explanation is worse than none, because it signals the team knew the answer mattered and chose not to give one.&lt;/p&gt;

&lt;p&gt;Audit log before prompt&lt;/p&gt;

&lt;p&gt;The artifact people underbuild. It has to store the prompt, the retrieved context, the model version, the parameters, the output, and the reviewer's decision — keyed so one case can be reconstructed on request.&lt;/p&gt;

&lt;p&gt;The examiner's first question is rarely about the model. It's who signed off, what they saw when they did, and whether you can produce that record now. Teams that treat compliance as a document written after the build find the document has to describe decisions nobody wrote down.&lt;/p&gt;

&lt;p&gt;Cheap to build in week one. Expensive to retrofit, and the feature sits idle while it happens.&lt;/p&gt;

&lt;p&gt;What it costs, and where&lt;/p&gt;

&lt;p&gt;A first production feature in a regulated fintech workflow: roughly $110,000 to $220,000 for a customer-support-style assistant, $320,000 to $1.1M for transaction monitoring, over three to six months. Run costs $2,000 to $25,000 a month depending on volume.&lt;/p&gt;

&lt;p&gt;The model is the cheap part — inference on a well-scoped workflow is often under $2,000 a month at pilot volume. The spread comes from data readiness and regulatory tier, not model choice. Rough split: data prep 25–35%, model integration and evals 15–20%, interface and review design 20–25%, audit logging 10–15%, validation and documentation 10–20%.&lt;/p&gt;

&lt;p&gt;What pushes a build past the top of the range is nearly always the same thing: the workflow wasn't scoped to one queue, and it grew a second and third use case before the first one shipped.&lt;/p&gt;

&lt;p&gt;One trade-off this approach doesn't solve. Running compliance in parallel from step one makes your first feature slower than a team that skips it — measurably, often four to six weeks. The payback lands on features two and three, when the control framework is reusable. If your organization judges the first project on speed alone, negotiate the measure before the project starts rather than cutting the governance work.&lt;/p&gt;

&lt;p&gt;Scope to one workflow with a number attached. Write the kill criteria before the code.&lt;/p&gt;

&lt;p&gt;Full guide — the seven-step process, the regulatory table, and build vs buy: see the full guide&lt;/p&gt;

&lt;p&gt;Written by Bohdan Varshchuk, CTO at Teamvoy. More engineering writing at teamvoy.com/blog.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Ten Things to Wire Up Before an Agent Touches Production</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Tue, 08 Sep 2026 18:53:46 +0000</pubDate>
      <link>https://dev.to/teamvoy/ten-things-to-wire-up-before-an-agent-touches-production-2ejo</link>
      <guid>https://dev.to/teamvoy/ten-things-to-wire-up-before-an-agent-touches-production-2ejo</guid>
      <description>&lt;p&gt;A developer deployed a customer-support agent that got stuck in a retry loop with a CRM tool. No hard circuit breaker. It spent six hours overnight repeating the same broken call while he slept, and he woke up to roughly a $4,200 OpenAI bill for doing nothing useful.&lt;/p&gt;

&lt;p&gt;That's the failure mode. Not a dramatic hack — a boring loop with no external stop.&lt;/p&gt;

&lt;p&gt;Roughly 95% of enterprise generative-AI pilots in 2025 delivered no measurable return, and almost none of those were model failures. Teams optimized the brain and skipped the nervous system. A read-only chatbot is a wiki with better search. A deployed agent &lt;em&gt;does things&lt;/em&gt; — writes to a database, calls an API, refunds a customer. That shift from reading to doing is where pilots die.&lt;/p&gt;

&lt;p&gt;The useful mental model: treat the LLM as a fallible kernel, not a magic box. You don't trust a kernel blindly. You wrap it in checks, limits, and a way to roll back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents break three assumptions your ops playbook depends on
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Non-determinism.&lt;/strong&gt; The same input can produce different actions on different days. An agent succeeds Monday and fails on the identical request Tuesday. Call it ghost debugging — the bug won't sit still long enough to catch. Design for a 3% to 15% tool-call failure rate as a normal state, not an exception.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost grows with loop length, not request count.&lt;/strong&gt; This is the mechanism most guides skip. The agent loops: think, call a tool, read the result, think again. Frameworks append every step &lt;em&gt;and every tool error&lt;/em&gt; to the running history, then resend the whole cumulative log on the next call. Token use grows quadratically. A 20-step loop is not twice a 10-step loop — each step re-pays for everything before it. Related trap: past roughly the 40% context-fill mark, answers get worse. Load the window with tool definitions and raw JSON and you're doing your real work in the dumb zone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every tool you connect widens the blast radius.&lt;/strong&gt; Which brings us to the controls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four controls the agent cannot touch
&lt;/h2&gt;

&lt;p&gt;Wire these before you touch agent logic, not after. The principle is determinism of enforcement: limits live outside the model, in code it cannot rewrite. An agent told to stay under budget will, often enough, talk itself into one more call.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Circuit breaker.&lt;/strong&gt; Hard cap on retries and loop iterations. Hit it and the agent stops, full stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deny-by-default allowlist.&lt;/strong&gt; The agent calls only tools you explicitly permit. Everything else is blocked, not warned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirmation gate.&lt;/strong&gt; Anything destructive or irreversible — delete, refund, send — waits for a human yes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost ceiling.&lt;/strong&gt; Spend limit per run and per day, enforced by infrastructure rather than by asking the model nicely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Research on action-level privilege control found enforcement cut attack success from 70.3% to 7.3%, and to zero with manual policies. The control plane protects you, not the prompt.&lt;/p&gt;

&lt;p&gt;Worth being honest about the limit: external controls stop catastrophes. They don't make a weak agent good. They buy you the safety to improve it in production instead of gambling with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three identities, not one
&lt;/h2&gt;

&lt;p&gt;Most teams give an agent one set of credentials. That's how a single prompt injection becomes a full breach. Split it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The user&lt;/strong&gt; — who asked for the action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The agent&lt;/strong&gt; — its own machine identity, separate from any human.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The tool token&lt;/strong&gt; — a scoped, on-behalf-of credential per tool call.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In a DORA- or PCI-DSS-bound system, "the AI did it" is not an answer an auditor accepts.&lt;/p&gt;

&lt;p&gt;There's a quieter risk in the tool descriptors themselves. A study of 1,899 live MCP servers found 7.2% carried general vulnerabilities and 5.5% were open to tool poisoning, where a malicious description hijacks the agent. Pin and version your descriptors. Treat them as supply-chain code, not config.&lt;/p&gt;

&lt;p&gt;And assume prompt injection — direct, where a user types it, and indirect, where the agent reads a poisoned page or document and follows hidden orders. You cannot prompt your way out of this. Checks run outside the model, in deterministic code. One scan of 5,000 AI-built apps found 60% vulnerable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ship it in five stages
&lt;/h2&gt;

&lt;p&gt;Never all at once. Each stage answers one question before the next earns traffic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Offline eval suite&lt;/strong&gt; — proves broadly correct on known cases, before any real traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow mode&lt;/strong&gt; — the agent decides, nothing executes. Proves it behaves sanely on live data at zero risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canary&lt;/strong&gt; — a small slice of low-risk real traffic. Proves it survives messy production input.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graduated rollout&lt;/strong&gt; — widen in steps, confirmation gates on anything destructive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post-deploy validation&lt;/strong&gt; — behaviour drifts as inputs and model versions change. Proves it &lt;em&gt;stays&lt;/em&gt; correct.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The rollback detail teams get wrong: an agent's behaviour is set by four things together — code, prompts, tool catalog, model version. Reverting code while keeping yesterday's prompt is not a rollback. It's a new configuration you have never run. Revert all four as one atomic bundle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitor the trajectory, not the endpoint
&lt;/h2&gt;

&lt;p&gt;Uptime dashboards tell you the agent returned a 200. They don't tell you the answer was confidently wrong. Three surfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operational&lt;/strong&gt; — is it running? p95 latency, error rates, cost per run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive&lt;/strong&gt; — what did it decide, and why? Full reasoning trace and every tool call, in order.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual&lt;/strong&gt; — what did it see? Exact inputs, retrieved documents, tool outputs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Track task-completion rate, tool-call success rate, tokens per run, and latency. Drift in any of them is the early warning.&lt;/p&gt;

&lt;p&gt;Almost-right output passes every uptime check. It's the expensive failure mode precisely because completely wrong gets caught — tests fail, the build breaks — while almost right ships and compounds for months. AI-generated pull requests average 10.8 issues against 6.4 in human code, and the tell is often suppression rather than error: one review turned up a file carrying eleven &lt;code&gt;eslint-disable&lt;/code&gt; comments where the agent had silenced the type errors instead of fixing them.&lt;/p&gt;

&lt;p&gt;Three questions before any agent-written change merges: does it reuse what exists or reinvent it badly, does it follow your conventions or invent its own, and can a developer explain it without reading the AI's comments?&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually costs
&lt;/h2&gt;

&lt;p&gt;Inference is rarely the big number. Integration and compliance run 40% to 60% of total deployment spend. Get the data layer wrong and everything else inflates.&lt;/p&gt;

&lt;p&gt;Pick hosting by workload shape rather than by which is "cheaper": serverless for spiky or unpredictable volume, containers for steady high volume, hybrid if you genuinely have both and can afford to run two systems. Cloud is rented elasticity — if your load is steady, you're paying a premium for flexibility you aren't using.&lt;/p&gt;

&lt;p&gt;Then cap the variable part: token budgets per run and per day enforced in infrastructure, semantic caching so repeated questions don't re-pay the model, and model tiering so the expensive model only runs on the steps that need it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ten-line go/no-go
&lt;/h2&gt;

&lt;p&gt;Empty box means you're shipping a demo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Eval suite passes.&lt;/li&gt;
&lt;li&gt;Staged rollout ready — shadow, canary, graduated, with gates.&lt;/li&gt;
&lt;li&gt;Circuit breaker live, enforced outside the model.&lt;/li&gt;
&lt;li&gt;Cost ceiling set in infrastructure.&lt;/li&gt;
&lt;li&gt;Tool allowlist is deny-by-default.&lt;/li&gt;
&lt;li&gt;Three-identity auth.&lt;/li&gt;
&lt;li&gt;Trajectory logging on.&lt;/li&gt;
&lt;li&gt;Atomic rollback bundle — code, prompts, tools, model version.&lt;/li&gt;
&lt;li&gt;Spec-first verification with the three-question test.&lt;/li&gt;
&lt;li&gt;Named incident owner — a specific human, not a team alias.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you went quiet on three or four of those, you're in the same place as most teams shipping their first production agent. Writing the agent is the cheap part. The gap between a working demo and something you trust at 2 a.m. is everything above.&lt;/p&gt;

&lt;p&gt;Full guide — architecture patterns, identity delegation, cost modelling, and deploying onto a legacy core: &lt;a href="https://teamvoy.com/blog/ai-agent-deployment-best-practices/" rel="noopener noreferrer"&gt;teamvoy.com/blog/ai-agent-deployment-best-practices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Written by Taras Voytovych, Founder &amp;amp; CEO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Systems That Need Modernizing Most Aren't the Broken Ones</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Thu, 03 Sep 2026 11:54:36 +0000</pubDate>
      <link>https://dev.to/teamvoy/the-systems-that-need-modernizing-most-arent-the-broken-ones-3lid</link>
      <guid>https://dev.to/teamvoy/the-systems-that-need-modernizing-most-arent-the-broken-ones-3lid</guid>
      <description>&lt;p&gt;The applications that most need modernizing are usually not the ones that are obviously broken.&lt;/p&gt;

&lt;p&gt;They're the stable ones. Running for years, rarely paging anyone, and increasingly impossible to change. Nothing on a dashboard flags that, because "hard to change" isn't an outage — it's a slow tax paid in every estimate that comes back three times longer than the feature deserves.&lt;/p&gt;

&lt;p&gt;Which is why the first question shouldn't be what technology replaces the current stack. It should be: what does the current architecture prevent the product and engineering teams from doing? That question has a concrete answer. "Should we move to microservices" does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modernization is not a synonym for rewrite
&lt;/h2&gt;

&lt;p&gt;This is the assumption that turns a scoped project into a two-year program. The real decision is what stays, what changes, and where the investment actually removes a constraint on the business.&lt;/p&gt;

&lt;p&gt;The 7 R's are useful precisely because two of the seven are "don't touch it":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retire&lt;/strong&gt; — it no longer provides value. Delete it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retain&lt;/strong&gt; — still useful, still cost-effective, leave it alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rehost&lt;/strong&gt; — move it, minimal changes. Fastest path to a new environment, solves the least.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replatform&lt;/strong&gt; — new platform, minor changes to optimize.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactor&lt;/strong&gt; — improve the code's structure without changing external behaviour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rearchitect&lt;/strong&gt; — redesign for new capability or scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replace&lt;/strong&gt; — retire it and adopt something else, often SaaS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run every application in the portfolio through that list before picking a strategy for any of them. Teams that skip this step tend to apply one R uniformly, usually rearchitect, because it's the most interesting one.&lt;/p&gt;

&lt;p&gt;Worth being blunt about the trade at each level: rehosting is the fastest way to the cloud and will carry every legacy problem with it. Rearchitecting and rebuilding are where the real capability change happens, and where the schedule risk lives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6h651l8325gkvtlcf959.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6h651l8325gkvtlcf959.webp" alt=" " width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually goes wrong
&lt;/h2&gt;

&lt;p&gt;Three challenges, and each has one thing that contains it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Technical debt.&lt;/strong&gt; Legacy code makes every update slower than it should be. Contained by structured assessment first — you cannot sequence work you haven't inventoried.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration complexity.&lt;/strong&gt; Connecting modern components to legacy systems is where the unknown work hides. Contained by phased rollout, so an integration surprise costs one phase instead of the program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security risk.&lt;/strong&gt; Changing infrastructure exposes new surface. Contained by continuous monitoring through the migration, not a review at the end.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those three are technology problems. They're sequencing problems, which is why the assessment phase is the one worth over-investing in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tie it to a number or it drifts
&lt;/h2&gt;

&lt;p&gt;Modernization without a defined outcome becomes an infrastructure project that nobody can defend at budget time. Three things keep it honest:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Named KPIs.&lt;/strong&gt; Cost per deploy, time to ship a feature, incident rate — whatever the constraint actually was. Define it before the work starts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-functional ownership.&lt;/strong&gt; IT, business, and operations working from the same target. Modernization that only engineering can explain the value of gets cut.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritized workloads.&lt;/strong&gt; Start with the applications where the constraint costs the business the most, not the ones easiest to migrate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For context on scale: 83% of C-suite executives see app and data modernization as central to business strategy, and worldwide public cloud end-user spending was forecast at $723.4 billion for 2025, growing 21.5% year over year. The money is moving. Whether your slice of it removes a constraint or just relocates one depends on the sequencing above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI helps, and where the data layer stops it
&lt;/h2&gt;

&lt;p&gt;Two things worth separating. AI &lt;em&gt;in&lt;/em&gt; the modernized system — automation, forecasting, analytics — needs clean, governed data to be worth anything. If the data layer is the actual blocker, that's the modernization project, and no amount of application refactoring routes around it.&lt;/p&gt;

&lt;p&gt;AI &lt;em&gt;in the migration&lt;/em&gt; is a different claim. It compresses the mechanical parts: reading unfamiliar code, generating tests for untested paths, drafting the boring half of a refactor. It doesn't compress the assessment or the integration work, because those are constrained by other people's systems and by decisions someone has to own.&lt;/p&gt;

&lt;p&gt;The sprint framing is the one part of the process worth copying regardless of scale: short iterative cycles against one measurable constraint, so you find out early whether the approach works. A modernization program that shows nothing for six months isn't lower risk than a rewrite. It's a rewrite with better branding.&lt;/p&gt;

&lt;p&gt;Start with what the architecture prevents, not with what would replace it.&lt;/p&gt;

&lt;p&gt;Full guide — all seven R's, the sprint model, and partner selection criteria: &lt;a href="https://dev.toREPLACE_WITH_LIVE_URL"&gt;see the full guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Bohdan Varshchuk, CTO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>architecture</category>
      <category>ai</category>
    </item>
    <item>
      <title>Every AI Readiness Score Skips the Part That Actually Blocks You</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Tue, 01 Sep 2026 17:42:44 +0000</pubDate>
      <link>https://dev.to/teamvoy/every-ai-readiness-score-skips-the-part-that-actually-blocks-you-2ji7</link>
      <guid>https://dev.to/teamvoy/every-ai-readiness-score-skips-the-part-that-actually-blocks-you-2ji7</guid>
      <description>&lt;p&gt;Over 85% of AI projects fail to reach their full potential, and the reason is almost never that the model didn't work. It's infrastructure, data hygiene, governance, or missing skills.&lt;/p&gt;

&lt;p&gt;Which is what readiness assessments are supposed to catch. Except most of them stop exactly where the blocking problems start. They score strategy, data, infrastructure, governance, and culture — all at the level a survey can reach, filled in by one executive, without an engineer in the room.&lt;/p&gt;

&lt;p&gt;So you get a "governance: strong" rating that means a policy document exists. It does not mean a model-risk committee, a SOC 2 auditor, or an enterprise security team will accept that policy as evidence. Those are different questions, and you find out which one you were answering months later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Score yourself before paying anyone
&lt;/h2&gt;

&lt;p&gt;Eight questions. More than two "no" answers means a formal assessment will find real gaps — useful information, not a reason to skip it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Strategy&lt;/strong&gt; — Is there a named AI initiative with a defined business outcome, or is "we're exploring AI" the whole plan?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt; — Can the team point to the specific source an AI feature would read from, and confirm it's clean enough to trust?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure&lt;/strong&gt; — Does the current setup support the latency and scaling the feature needs, or would it need rework first?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Governance&lt;/strong&gt; — Is there a named owner for AI decisions with a documented approval path, or does responsibility sit nowhere specific?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Culture&lt;/strong&gt; — Have the engineers who'd build this used the intended tools before, or would it be a first attempt under deadline pressure?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codebase health&lt;/strong&gt; — Would a new engineer joining today understand the code well enough to safely add an AI component, or is onboarding already a multi-week process?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation coverage&lt;/strong&gt; — Is there any automated way to check whether a model's output is correct, or does a person read it?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regulatory evidence&lt;/strong&gt; (regulated industries) — Can you produce model risk documentation, an audit trail, and a data residency answer today, or would all three be built from scratch?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Six or more "yes" and you're closer to production-ready than most tools assume by default. Fewer than four points at a real assessment before committing engineering time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two questions nobody's scorecard asks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Codebase health.&lt;/strong&gt; This is the one that actually decides whether a pilot ships. 88% of organizations use AI in some form, but fewer than 20% track results for generative AI specifically — a measurement failure that starts in engineering, not strategy. Pilots stall for three repeating reasons: the codebase is too tangled to hold a new component safely, test coverage is thin enough that every change risks something else, and the team is overloaded or missing the specific skills the project assumed. None of those show up on a strategy survey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eval coverage.&lt;/strong&gt; If correctness is checked by a person reading output, you don't have evaluation, you have review. That works until volume arrives.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're regulated, "governance" is six separate things
&lt;/h2&gt;

&lt;p&gt;A generic assessment treats governance as one pillar. For a bank, lender, payments company, or insurer it has to produce evidence someone external will accept:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model risk management&lt;/strong&gt; — SR 11-7-style validation. Who approved the model, what it was tested against, how drift is monitored after deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit trail&lt;/strong&gt; — every model decision that touched a real transaction, retained and retrievable, not logged and forgotten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data residency&lt;/strong&gt; — where training and inference data physically sits, and whether a provider outside the EU ever touches EU customer data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EU AI Act classification&lt;/strong&gt; — whether the feature is high-risk, which changes the documentation burden &lt;em&gt;before&lt;/em&gt; deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOC 2 and PCI DSS&lt;/strong&gt; — proof the AI layer didn't open a gap in controls that were already passing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FFIEC and NYDFS Part 500&lt;/strong&gt; — examiner expectations for third-party risk now extend to AI vendors and AI-generated decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pass a generic assessment on governance, then stall in compliance review months later. Same failure the assessment was meant to prevent, just moved downstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're AI-native, the question is inverted
&lt;/h2&gt;

&lt;p&gt;You're not asking "can we deploy AI safely." You're asking "will our product survive an enterprise buyer's security review." Five things get asked, in roughly this order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenancy isolation&lt;/strong&gt; — can one customer's data, prompts, or fine-tuning artifacts reach another's session? This is the first question, every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eval harness maturity&lt;/strong&gt; — automated evaluation covering multi-step paths, not a spot check before release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG infrastructure&lt;/strong&gt; — document versioning, access control at the chunk level, stale-index detection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production monitoring&lt;/strong&gt; — observability on every model and tool call, so a bad output traces back to the input that caused it instead of being reported by a customer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOC 2 readiness&lt;/strong&gt; — whether the posture needed to close the deal exists or is aspirational in a deck.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Score well on a generic readiness tool and still lose the deal, because the tool never asked any of these.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mistakes that turn a diagnostic into shelfware
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treating the score as pass/fail. A 60% isn't a verdict, it's an ordered list of what to fix. Waiting for a perfect score delays a project that could have shipped after three specific fixes.&lt;/li&gt;
&lt;li&gt;Running it without the engineers who'd build the feature.&lt;/li&gt;
&lt;li&gt;Never re-running it. Readiness changes as gaps close, and you have no way to confirm the fixes worked.&lt;/li&gt;
&lt;li&gt;Choosing by brand recognition rather than scope. A strategy tool answers whether leadership is aligned. An engineering tool answers whether the codebase can carry what's planned. They aren't substitutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The useful thing about a readiness assessment isn't the number. It's finding out, before the budget moves, which of these questions you can't currently answer.&lt;/p&gt;

&lt;p&gt;Full comparison of ten tools — what each scores, who it fits, what it costs: &lt;a href="https://teamvoy.com/blog/best-ai-readiness-assessment-tools-in-2026/" rel="noopener noreferrer"&gt;teamvoy.com/blog/best-ai-readiness-assessment-tools-in-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Zhanna Yuskevych, CPO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Most of You Should Not Be Custom-Building an Ecommerce Store</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Mon, 31 Aug 2026 12:08:25 +0000</pubDate>
      <link>https://dev.to/teamvoy/most-of-you-should-not-be-custom-building-an-ecommerce-store-355m</link>
      <guid>https://dev.to/teamvoy/most-of-you-should-not-be-custom-building-an-ecommerce-store-355m</guid>
      <description>&lt;p&gt;Ecommerce projects rarely get hard because of the storefront. They get hard when the storefront has to meet the needs of the rest of the business.&lt;/p&gt;

&lt;p&gt;Inventory already lives somewhere. Orders land somewhere else. Finance has its own systems. Payments drag security and compliance into scope. And the platform picked in month one defines what's easy, expensive, or impossible two years later.&lt;/p&gt;

&lt;p&gt;Which is why the first question shouldn't be Shopify vs Magento vs WooCommerce vs custom. Starting there means arguing about features before anyone understands the constraints. The better opening question: what are we actually building, and which parts genuinely need to be custom?&lt;/p&gt;

&lt;p&gt;For most people reading this, the honest answer is buy a platform and move on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The phase ordering that costs the most
&lt;/h2&gt;

&lt;p&gt;Seven phases: discovery, architecture and platform selection, design, build and integration, data migration, compliance and security review, launch and first optimization. Four to seven months for a mid-market build.&lt;/p&gt;

&lt;p&gt;The sequence matters more than the labels, and one inversion is expensive above all others: &lt;strong&gt;choosing a platform before you've scoped compliance.&lt;/strong&gt; Do it in that order and a compliance finding can force a re-architecture eight weeks into the build.&lt;/p&gt;

&lt;p&gt;Two phases account for most overruns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build slips because discovery missed a system.&lt;/strong&gt; The integration nobody scoped in phase 1 surfaces two months late, when the schedule has no slack left. Discovery in commerce isn't about pages — it's about finding every system holding a number the store needs, &lt;em&gt;and&lt;/em&gt; finding who can grant access to it. That list is always longer than the brief.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance review slips because it was treated as a formality.&lt;/strong&gt; Remediation lands on a team that has already released its engineers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are schedule problems created long before they appear.&lt;/p&gt;

&lt;p&gt;Staffing note worth agreeing in writing before kickoff: phases 1, 2, and 6 need someone on the client side — a person who can get you into the ERP, whoever signs the contract, and named owners for the payment page and accessibility. Phases 3, 4, and 5 can sit almost entirely with the build team. The three phases you have to staff are the three that stall when nobody's free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three dates that already passed
&lt;/h2&gt;

&lt;p&gt;These are no longer planning questions. They're evidence questions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PCI DSS v4.0.1 req 6.4.3 and 11.6.1&lt;/strong&gt;, in force since 2025-03-31. Inventory every script on the payment page, authorize each one, justify why it's there, and detect unauthorized changes to page headers and content. The catch: the scripts in question are usually marketing tags nobody in engineering added. PCI now has an owner problem — the tag manager on checkout needs a named owner and an approval step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;European Accessibility Act, Art. 2(2)(f)&lt;/strong&gt;, applying after 2025-06-28 to ecommerce services sold to EU consumers. Measured against EN 301 549, which points at WCAG. "We'll do accessibility after launch" is now a statement about legal exposure, not backlog priority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GDPR / CCPA / CPRA&lt;/strong&gt;, unchanged but load-bearing. Consent, access, and deletion paths wired into the customer data model rather than bolted on. If a deletion request can't be executed against the customer record without an engineer, it doesn't scale past the first hundred.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Accessibility written as an acceptance criterion in phase 3 costs days. Discovered in phase 6, it costs weeks. Same work, different bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checkout: the causes are business decisions, not design problems
&lt;/h2&gt;

&lt;p&gt;The average documented cart abandonment rate is 70.22% (Baymard, across 50 studies, updated 2025-09-22). Among shoppers who intended to buy, the top causes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extra costs shown too late — shipping, tax, fees — at 40%.&lt;/li&gt;
&lt;li&gt;Slow delivery, 20%.&lt;/li&gt;
&lt;li&gt;Distrust of the payment form, 19%.&lt;/li&gt;
&lt;li&gt;Forced account creation, 18%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three of those four are decisions no redesign can make on your behalf. In order of what actually abandons carts: show the full total on the cart page, offer guest checkout, give a real delivery date rather than a shipping-method name, make the payment step look like a payment step, and cut every optional field.&lt;/p&gt;

&lt;p&gt;Run A/B tests only after those five are in place. Below a few thousand checkouts a month you don't have the traffic to detect a one-point conversion change without weeks per variant, and teams routinely call the result on day four because the chart looks decided. Testing earns its place above the checkout — category layouts, product page structure, price and delivery presentation — where there's more traffic per decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI actually earns its place
&lt;/h2&gt;

&lt;p&gt;The test: does the model's output change a decision somebody was already making on worse information?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Demand forecasting and replenishment.&lt;/strong&gt; Output is a purchase order quantity. Error is countable against what sold.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fraud and chargeback scoring.&lt;/strong&gt; Output is a score with a threshold. Both false positives and false negatives show up in the finance report — which means the review interface is in scope, not a follow-up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search and merchandising&lt;/strong&gt;, but above roughly ten thousand SKUs, where manual merchandising already stopped covering the tail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where it doesn't: personalization on a 200-SKU catalog has too little behaviour to learn from and the engineering cost lands anyway. Dynamic pricing on consumer goods invites a customer to screenshot two prices and post them. Generated product copy at scale reads like generated product copy at scale, on exactly the pages you wanted indexed.&lt;/p&gt;

&lt;p&gt;Separately — AI &lt;em&gt;in the build&lt;/em&gt; is a different question from AI &lt;em&gt;in the store&lt;/em&gt;. Coding assistants compress phases 3 and 4. They don't touch 1, 5, or 6, which is where the schedule risk lives, because those are constrained by other people's systems and by evidence someone has to sign.&lt;/p&gt;

&lt;h2&gt;
  
  
  Composable, honestly
&lt;/h2&gt;

&lt;p&gt;Headless decouples the front end and is a configuration option on several hosted platforms. Composable replaces the engine with separate services. Headless is a weekend of architecture; composable is a program of work. The terms get used interchangeably and shouldn't be.&lt;/p&gt;

&lt;p&gt;On a composable build, expect the first feature to take four to six weeks longer than on a coupled platform, and expect payback to start around the third. If your roadmap has three changes in it, the arithmetic doesn't work.&lt;/p&gt;

&lt;p&gt;You also inherit a service layer somebody maintains, and six services that fail in more ways than one platform does. "Wanting to be modern" is not a reason. Multi-channel selling from one inventory, or business rules no vendor has productized, are.&lt;/p&gt;

&lt;p&gt;If the reason is real, migrate incrementally: routing layer in front of the existing store, move one capability behind it, run both, move the next. Search and product content first — read-heavy, low-risk. Checkout near the end, because it handles the money and the compliance scope. Teams that move checkout first take the program's largest risk before learning anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three-year number
&lt;/h2&gt;

&lt;p&gt;Build cost is the number in the quote and the smaller half of the decision. A $70,000 build with $12,000 annual maintenance and $1,500 a month in platform fees is a $160,000 commitment before a single new feature ships.&lt;/p&gt;

&lt;p&gt;Price every platform over three years, because the fee structures behave differently: revenue-percentage platforms get more expensive as you succeed, self-hosted charges you in engineering hours whether you grow or not, licence-plus-build front-loads and holds steady. Ask each vendor what the bill looks like at three times current volume, and get it in writing. That belongs in phase 2, not the post-launch review.&lt;/p&gt;

&lt;p&gt;And then the question underneath all of it. Under roughly $5M in annual online revenue, with a standard catalog and standard checkout, buying wins on price, time, and risk. Custom development is the answer to a named business rule you can attach a cost to living without — never to a general preference for control.&lt;/p&gt;

&lt;p&gt;Full breakdown — all seven phases, the platform comparison table, and the build-vs-buy signals: &lt;a href="https://dev.toREPLACE_WITH_LIVE_URL"&gt;see the full guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Bohdan Varshchuk, CTO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ecommerce</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>Nobody Budgets for the Redirect Map</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Wed, 26 Aug 2026 20:07:58 +0000</pubDate>
      <link>https://dev.to/teamvoy/nobody-budgets-for-the-redirect-map-491j</link>
      <guid>https://dev.to/teamvoy/nobody-budgets-for-the-redirect-map-491j</guid>
      <description>&lt;p&gt;A $5,000 template refresh and a $150,000 rebuild both get called "a website redesign." Then someone requests three quotes without scoping the project and compares numbers that don't describe the same work.&lt;/p&gt;

&lt;p&gt;That's how a redesign that started on a small-business budget discovers halfway through that it needed enterprise scope. Not because anyone lied. Because "redesign" is a word that covers two completely different engineering jobs, and the person buying it usually can't tell which one they're in until the content migration starts.&lt;/p&gt;

&lt;p&gt;Broad shape for 2026: roughly $3,000 at the small-business end, past $250,000 for complex enterprise builds, with most mid-market work landing between $40,000 and $100,000. Those ranges are almost useless on their own. What matters is which drivers your project actually has.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually moves the number
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unique page templates.&lt;/strong&gt; Not pages — templates. A homepage, product page, service page, blog post, and landing page are five separate design-and-build efforts, each wireframed, built, made responsive, tested, and wired into the CMS. Small sites might need 3 to 5. Large ones run past 15. Figure $1,500 to $5,000 per additional template depending on complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom features and third-party integrations.&lt;/strong&gt; Every integration means research, API configuration, testing, and ongoing support. The ones that hurt are the ones needing custom middleware or two-way data sync, because those keep costing after launch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content migration.&lt;/strong&gt; The most underestimated line by a wide margin. If content is inconsistently structured or spread across platforms, migration alone eats 10 to 20% of the project budget. Automated tools help with extraction and reformatting; manual review is still where the quality comes from. New copy runs $100 to $300 per page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility.&lt;/strong&gt; WCAG 2.1 AA means semantic HTML, keyboard navigation, contrast checks, ARIA attributes, and testing every template. It's real hours. Skipping it saves money up front and buys legal risk later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timeline.&lt;/strong&gt; Rushed deadlines and vague scope both inflate cost, for opposite reasons — one buys overtime, the other buys rework.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The one that quietly costs the most
&lt;/h2&gt;

&lt;p&gt;SEO migration. It is the cheapest thing to skip and the most expensive thing to have skipped.&lt;/p&gt;

&lt;p&gt;You need a URL map with 301s from every old path, meta and schema carried across, header structure and alt text preserved, and performance that doesn't regress on mobile. Get it wrong and you launch a beautiful site that lost its organic traffic, which nobody notices for six weeks because everyone is looking at the design.&lt;/p&gt;

&lt;p&gt;Build the redirect map during development, not during launch week. It's the artifact that makes the difference between a redesign and an outage with better typography.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does AI actually take off the bill?
&lt;/h2&gt;

&lt;p&gt;Real, but narrower than the pitch suggests. It compresses the repetitive middle of the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scanning an existing site, extracting content, reformatting it for new templates — genuinely useful on large blogs and news archives.&lt;/li&gt;
&lt;li&gt;Resizing, compressing, and tagging images. Auto-generating alt text saves dozens of hours on an image-heavy migration.&lt;/li&gt;
&lt;li&gt;Automated passes for broken links, accessibility issues, and performance bottlenecks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where it stops: brand narrative, custom integrations against proprietary systems, and interpreting compliance requirements. Automate deliberately — not everywhere at once. On a small project the savings are meaningful. On a complex custom build, automation optimizes the process rather than replacing the expensive part of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The number nobody puts in the quote
&lt;/h2&gt;

&lt;p&gt;Ongoing maintenance runs 15 to 20% of build cost, annually. Security patches, CMS updates, performance monitoring, bug fixes.&lt;/p&gt;

&lt;p&gt;On a $60,000 build that's $9,000 to $12,000 a year, every year, and it is almost never in the proposal you're comparing. Neither is custom photography ($3,000 to $15,000), video ($5,000 to $25,000 per video), hosting, or premium plugin licensing.&lt;/p&gt;

&lt;p&gt;Two things that make a quote comparable: insist on itemized proposals that include content migration, maintenance, and media production as explicit lines, and reserve 10 to 15% for contingency. Scope creep is not a sign anyone failed. It is the default state of a project where the content turns out messier than the audit suggested.&lt;/p&gt;

&lt;p&gt;The design is the part everyone argues about and the part that costs the least to change. The redirect map, the integration surface, and the annual maintenance line are the ones that decide whether the number you were quoted resembles the number you pay.&lt;/p&gt;

&lt;p&gt;Full breakdown — pricing by business size, all seven cost drivers, and a budgeting checklist: &lt;a href="https://teamvoy.com/blog/website-redesign-cost/" rel="noopener noreferrer"&gt;teamvoy.com/blog/website-redesign-cost&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Zhanna Yuskevych, CPO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>design</category>
      <category>uidesign</category>
      <category>website</category>
    </item>
    <item>
      <title>Your Main Branch Has Code Nobody Read. Whose Name Is On It?</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Tue, 25 Aug 2026 12:58:20 +0000</pubDate>
      <link>https://dev.to/teamvoy/your-main-branch-has-code-nobody-read-whose-name-is-on-it-3jlb</link>
      <guid>https://dev.to/teamvoy/your-main-branch-has-code-nobody-read-whose-name-is-on-it-3jlb</guid>
      <description>&lt;p&gt;Who is accountable for AI-generated code? The engineer who merges it. That answer hasn't changed since 2023. What changed is the volume behind it.&lt;/p&gt;

&lt;p&gt;Google's own number: just over a quarter of new code AI-generated in October 2024, roughly half by late 2025, 75% by April 2026 per Sundar Pichai. Almost nobody's review gates, provenance records, or audit evidence moved in that same window. So the accountability gap is the distance between how much of your codebase a model wrote and how much your governance assumes a human wrote.&lt;/p&gt;

&lt;p&gt;It stays invisible until the worst possible moment — an incident postmortem, a security review, a customer questionnaire, an examiner asking about your SDLC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three failure modes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The review bottleneck.&lt;/strong&gt; Agents produce diffs faster than humans read them. Review becomes either the constraint on delivery or a rubber stamp. Watch for the tell: approval latency stays flat while actual scrutiny drops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provenance blindness.&lt;/strong&gt; Someone asks "was this AI-generated, and what checked it?" and nothing in the commit history can answer. This is cheap to record now and impossible to reconstruct later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow tooling.&lt;/strong&gt; Policy says no, engineers use personal accounts and local models anyway. The company keeps the risk and loses the visibility. We ran this exact movie with unsanctioned SaaS a decade ago.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the review bottleneck, there's a recurring r/ExperiencedDevs thread shape worth reading: a senior engineer describes review queues doubling after agent adoption, and the replies split between "review harder" and "trust the tests." Both miss the same move. The review standard has to change &lt;em&gt;shape&lt;/em&gt;, not intensity. A heroic reviewer and a green CI run are equally poor substitutes for deciding which changes deserve which gate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why banning makes it worse
&lt;/h2&gt;

&lt;p&gt;Three postures, and only one of them produces a defensible answer to "who signs this?"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ban&lt;/strong&gt; — you get a clean-sounding policy. You pay in shadow usage with zero visibility, a senior hiring penalty, and the loss of the audit trail you were trying to protect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laissez-faire&lt;/strong&gt; — you get speed and goodwill. You pay in no provenance, rubber-stamped review, and unanswerable audit questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Governed adoption&lt;/strong&gt; — you get speed &lt;em&gt;plus&lt;/em&gt; evidence that survives an audit. You pay in real setup work, roughly four to eight weeks of process and tooling change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The ban threads on r/cscareerquestions read identically every time: the policy says no, the replies describe exactly how people route around it, and nobody believes the codebase is cleaner for it. When your engineers can narrate the workaround in public, the ban isn't a control. It's a blindfold.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five moves
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Name the owner, per merge.&lt;/strong&gt; One sentence of policy: the engineer who merges a change owns it, regardless of what produced the draft. The model proposes, the engineer signs. No autonomous merges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tag provenance at commit time.&lt;/strong&gt; Commit trailers, PR labels, or tool-native attribution. Record which changes are substantially AI-generated and by which tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harden the gate where it counts.&lt;/strong&gt; Risk-tier your repos. AI-drafted changes to payment logic, authz, and data migrations get a second reviewer and a required test diff. AI-drafted changes to internal tooling get the standard gate. Uniform strictness is how review becomes theater.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give non-deterministic code a CI gate.&lt;/strong&gt; An eval harness is a CI suite for code whose output isn't reproducible. If your agents write code that calls models, evals gate the merge the way unit tests gate deterministic changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the evidence file as you go.&lt;/strong&gt; Tool inventory, policy, provenance stats, gate configs, exception log — one folder. When the auditor asks, you hand over a folder instead of a promise.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The objection we hear on move 2: provenance tagging slows engineers down and they'll skip it. In practice the tag is a commit trailer the tooling adds, not a form someone fills in. That objection describes the policy-PDF version of governance, not the tooling version.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like six weeks in
&lt;/h2&gt;

&lt;p&gt;Composite from rollouts inside client deliveries — fintech scaleup, 30 to 80 engineers, high agent adoption, no provenance, a customer security questionnaire sitting unanswered because nobody could describe the AI share of the SDLC.&lt;/p&gt;

&lt;p&gt;Six weeks later: a bot tags model-drafted changes at commit time, so the AI-drafted share of merges is a dashboard number instead of a guess. Repos are risk-tiered. Anything calling a model at runtime runs an eval job in CI. The evidence file exists.&lt;/p&gt;

&lt;p&gt;The outcome worth copying is counterintuitive. Review time per diff spikes in week one, then settles at or below baseline — because reviewers stop treating every change as equally suspect. The stalled security questionnaire gets answered from the evidence file in a day. And the tooling debate changes tone, because arguments about impressions become arguments about a dashboard.&lt;/p&gt;

&lt;p&gt;None of it required slowing the agents down.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is not
&lt;/h2&gt;

&lt;p&gt;It is not a case for treating model-drafted code as suspect by default. Model-drafted code that passed a real review and a real test suite is production code. The vibe-coding failure mode — shipping unread model output — is a review failure, not a tooling failure.&lt;/p&gt;

&lt;p&gt;The tools are already in your building and the volume is already in your main branch. The only open question is whether the signature on the merge still means anything. Governance that lives in a document drifts. Governance that lives in the pipeline holds.&lt;/p&gt;

&lt;p&gt;Full breakdown — the three postures compared, the rollout timeline, and the legal accountability question: &lt;a href="https://teamvoy.com/blog/ai-generated-code-accountability-2026/" rel="noopener noreferrer"&gt;teamvoy.com/blog/ai-generated-code-accountability-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Zhanna Yuskevych, CPO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>coding</category>
      <category>vibecoding</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Your GenAI Pilot Didn't Fail. Your Data Layer Did.</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Fri, 21 Aug 2026 10:29:44 +0000</pubDate>
      <link>https://dev.to/teamvoy/your-genai-pilot-didnt-fail-your-data-layer-did-e04</link>
      <guid>https://dev.to/teamvoy/your-genai-pilot-didnt-fail-your-data-layer-did-e04</guid>
      <description>&lt;p&gt;MIT found that 95% of enterprise GenAI pilots returned no measurable P&amp;amp;L impact, and only 5% reached production at scale. Almost none of those failures were model failures.&lt;/p&gt;

&lt;p&gt;The stalled pilots we get called into look identical from the inside. Someone spent three months on prompts and model selection. Nobody looked at the pipeline feeding it. When we trace a bad output back, it is a brittle query pulling stale or wrong records — the model was working correctly on garbage. Fix the pipeline and the same model suddenly looks smart.&lt;/p&gt;

&lt;p&gt;The model is the kernel. The integration layer is the operating system around it, and that is where pilots die. Gartner forecast $644 billion in global GenAI spend for 2025, up 76.4% in a year, against that 95% figure. Big spend is not safe spend.&lt;/p&gt;

&lt;h2&gt;
  
  
  The demo-to-production cliff
&lt;/h2&gt;

&lt;p&gt;A demo runs on clean, hand-picked data. Production does not. That is the entire gap, and it has three concrete failure modes once an agent gets write-access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Runaway cost.&lt;/strong&gt; An agent stuck in a retry loop runs unattended for hours and burns thousands in API spend before anyone wakes up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt injection.&lt;/strong&gt; The top agentic risk, and not hypothetical — one arXiv study cut attack success from 73.2% to 8.7%, but only after layering multiple defenses. A single successful injection exfiltrates a secret in minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quadratic token growth.&lt;/strong&gt; Cost can scale with the square of context length, not linearly. "Just add more context" gets expensive fast, and past roughly the 40% context-fill mark many models get &lt;em&gt;less&lt;/em&gt; accurate anyway. More context is not free, and it can make the system dumber.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are model-quality problems. They are control problems, and NIST's GenAI Profile (AI 600-1) names all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions before anything gets write-access
&lt;/h2&gt;

&lt;p&gt;Ask these of any partner, internal team, or yourself:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Where is the circuit breaker that stops a runaway agent, and who set the spend cap?&lt;/li&gt;
&lt;li&gt;Who owns the audit trail when the agent writes to production data?&lt;/li&gt;
&lt;li&gt;What requires human approval before the agent executes a sensitive action?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A clean answer to those three tells you more than any benchmark. Build the circuit breaker before you grant write-access, not after the first incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Name your pattern
&lt;/h2&gt;

&lt;p&gt;A demo says "we use AI." A production system names its pattern, and each one has a caveat you inherit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-RAG&lt;/strong&gt; — the model rewrites its query and checks its own retrieval. Good for messy queries. Extra model calls add latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corrective RAG&lt;/strong&gt; — filters or rejects weak retrieved chunks. Use when wrong context is costly. Needs a tuned relevance scorer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive RAG&lt;/strong&gt; — routes simple and complex queries differently. Routing logic is its own complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GraphRAG&lt;/strong&gt; — retrieves over a knowledge graph instead of flat text. Strong on relational data. Graph build and upkeep is real, ongoing work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic orchestration&lt;/strong&gt; — bounded tool calls with control flow. Untrusted output must never call tools directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These stack into retrieve, rank, generate, verify. Latency compounds at every layer, so caching and tight chunking are not optimizations you defer.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you know it works, rather than sounds confident?
&lt;/h2&gt;

&lt;p&gt;Evals. This is the phase teams skip and the reason pilots die on real data.&lt;/p&gt;

&lt;p&gt;Automation is safe when you can specify the objective and verify the output against it. No verification, no safe automation — you are shipping on vibes. The phased path that survives contact with production data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scope one narrow workflow with a measurable outcome.&lt;/li&gt;
&lt;li&gt;Prove it on messy production data, not a clean sample, so you find out where it actually fails.&lt;/li&gt;
&lt;li&gt;Add evals and guardrails, so failures get caught before users do.&lt;/li&gt;
&lt;li&gt;Harden for latency, cost, and edge cases under real load.&lt;/li&gt;
&lt;li&gt;Hand over documented, with rollback in place.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step five matters more than it sounds. A model has no memory of your system between sessions, so the knowledge has to live in documentation and code rather than in one engineer's head. "Done" means it still works in six months.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs, and where the budget actually leaks
&lt;/h2&gt;

&lt;p&gt;Roughly $50K for a proof of concept, $2M+ for a production system at scale with compliance. But the build is rarely what blows the budget — the runtime is. Quadratic token billing and cloud shock, the penalty for running elastic AI infrastructure with a static data-center mindset. Right-size compute before you scale, not after.&lt;/p&gt;

&lt;p&gt;The most expensive AI code is not the broken kind. It is the code that almost works — it runs, it looks fine in review, and it writes to the wrong data while the screen looks correct. That is also true of the pilot itself. It demos beautifully and returns nothing, and the reason is never the part everyone spent three months tuning.&lt;/p&gt;

&lt;p&gt;Full breakdown — integration patterns, NIST AI RMF mapping, and how to evaluate a delivery partner: &lt;a href="https://teamvoy.com/blog/generative-ai-implementation-services/" rel="noopener noreferrer"&gt;teamvoy.com/blog/generative-ai-implementation-services&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Written by Taras Voytovych, Founder &amp;amp; CEO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>genai</category>
      <category>automation</category>
      <category>rag</category>
    </item>
    <item>
      <title>Claude Code vs Copilot Is the Wrong Question</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Mon, 17 Aug 2026 12:59:51 +0000</pubDate>
      <link>https://dev.to/teamvoy/claude-code-vs-copilot-is-the-wrong-question-4p9a</link>
      <guid>https://dev.to/teamvoy/claude-code-vs-copilot-is-the-wrong-question-4p9a</guid>
      <description>&lt;p&gt;The most expensive mistake in AI tooling procurement right now is treating Claude Code and GitHub Copilot as substitutes and picking one.&lt;/p&gt;

&lt;p&gt;We watched a team standardize on autocomplete alone, then hand it a service restructure. The code compiled, read fine in review, and shipped with the wrong invariants — the kind of plausible-looking output you get when a tool designed to finish a line is asked to make a design decision. Nobody was misusing the tool. They just bought one product and assumed it covered both jobs.&lt;/p&gt;

&lt;p&gt;They don't overlap the way the comparison posts imply. Copilot is an IDE assistant that helps a human type faster, with an agent layer bolted on top. Claude Code is a CLI agent that reads your repo, edits files, runs your tests, and commits. Different category, different workflow, different budget line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where each one actually wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per-line autocomplete and IDE chat: Copilot.&lt;/strong&gt; Years of telemetry-driven tuning and native reach across VS Code, JetBrains, Visual Studio, Neovim, and Xcode. Claude Code's canonical interface is a terminal, not a cursor in a buffer. The trade-off: the autocomplete surface is shallow by design. Good at finishing a line, mid-quality on a function, wrong tool for restructuring a service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-file refactors and long autonomous tasks: Claude Code.&lt;/strong&gt; A 1M-token context window, real shell access, and Agent Teams coordinating through a shared task file and git worktrees. We've run multi-service migrations with one instance on API contracts, one on migrations, one on the test suite, all through a shared &lt;code&gt;TASKS.md&lt;/code&gt;. The trade-off: agent loops burn tokens. A documented Express.js refactor came in roughly ten times more expensive than a cloud-sandboxed equivalent. On a narrow, well-scoped issue, Copilot's coding agent often gets there for less.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code quality on hard diffs: Claude Code.&lt;/strong&gt; In blind review — reviewers shown unlabeled diffs from Claude Code and leading cloud-agent peers — Claude Code's output was preferred 67% of the time. The trade-off: on easy, well-scoped work the gap is small and closing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-seat cost for a broad rollout: Copilot, not close.&lt;/strong&gt; Roughly five to ten times cheaper at the daily-driver tier. Claude Code's daily driver sits at $100 per seat per month after the April 2026 reset, $200 for parallel agent workflows. The trade-off: Copilot's headline seat price excludes the agent surfaces, which meter separately. A team living in Workspace closes the gap.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security and audit: this one genuinely splits
&lt;/h2&gt;

&lt;p&gt;Claude Code wins source-code residency. Code stays on the developer's machine, so a CISO at a bank or insurer isn't signing a data-handling agreement to let source leave the network.&lt;/p&gt;

&lt;p&gt;Copilot wins day-one governance. Content exclusions, IP indemnity, audit logs in the GitHub admin surface, and the compliance alignment procurement already accepts.&lt;/p&gt;

&lt;p&gt;For a NYDFS-regulated bank or a DORA-scoped insurer, the split we deploy: Claude Code on hardened dev environments for source-bearing work with explicit egress controls and audit hooks through MCP servers, Copilot inside GitHub for review, draft PRs, and the long tail of non-source-bearing work.&lt;/p&gt;

&lt;p&gt;What doesn't split: prompt injection through code comments, README files, and dependency metadata hits both tools identically. Same mitigations — confidence thresholds, sandboxed test environments, human-in-the-loop gates.&lt;/p&gt;

&lt;h2&gt;
  
  
  So how do you actually spend the budget?
&lt;/h2&gt;

&lt;p&gt;Split the seats instead of picking a winner.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copilot for every engineer, on the tier your governance review clears in under a month.&lt;/li&gt;
&lt;li&gt;Claude Code Max layered on top for the ~20% who do refactors and platform work.&lt;/li&gt;
&lt;li&gt;Both behind one guardrails layer — audit log routing, secrets access, human-in-the-loop gates — so the tool choice stays reversible.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That third point is the one teams skip, and it's the one that determines whether you can change your mind in a year without re-litigating the whole rollout.&lt;/p&gt;

&lt;p&gt;The head-to-head framing is comfortable because it produces a decision. It just produces the wrong one. Pick the lane each tool wins, instrument both, and stop pretending an autocomplete engine and an autonomous agent are competing for the same job.&lt;/p&gt;

&lt;p&gt;Full category-by-category breakdown, pricing tables, and the decision matrix: &lt;a href="https://teamvoy.com/blog/claude-code-vs-github-copilot-cto-guide/" rel="noopener noreferrer"&gt;teamvoy.com/blog/claude-code-vs-github-copilot-cto-guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Bohdan Varshchuk, CTO at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>githubcopilot</category>
      <category>github</category>
    </item>
    <item>
      <title>Your CI Agent Should Not Have Write Access Yet</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Mon, 17 Aug 2026 09:43:19 +0000</pubDate>
      <link>https://dev.to/teamvoy/your-ci-agent-should-not-have-write-access-yet-30em</link>
      <guid>https://dev.to/teamvoy/your-ci-agent-should-not-have-write-access-yet-30em</guid>
      <description>&lt;p&gt;An agent in your pipeline does not fail the way a script fails. A script fails the same way every time. An agent fails creatively, and then tries again.&lt;/p&gt;

&lt;p&gt;We watched one retry the same broken fix eleven times against a failing build. No retry limit, no memory of the previous attempt, so every loop looked like a fresh problem to it. It burned compute for most of an afternoon and left the build exactly as broken as it found it. The pipeline never errored. It just never finished.&lt;/p&gt;

&lt;p&gt;That is the thing tech leads underestimate: agentic CI/CD is not automation with better judgment. It is a non-deterministic system with commit rights, and it needs guardrails that traditional CI never needed. Confidence thresholds, sandboxes, retry limits, and observability on the agent's own decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four failure modes scripts don't have
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Looping.&lt;/strong&gt; Without a retry ceiling and memory of prior attempts, the agent repeats itself indefinitely. Cost and wall-clock time, no progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinated fixes.&lt;/strong&gt; On an unfamiliar error it will invent a fix — a flag that doesn't exist, a config key from a different version. This breaks the pipeline further, or worse, passes and creates a subtle bug downstream.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-determinism.&lt;/strong&gt; Same input, different action across runs. Reproducibility was the whole basis of trusting CI, and probabilistic agents remove it. Debugging gets much harder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt injection through your logs.&lt;/strong&gt; This is the one that should stop you. If the agent reads error logs and has execution permissions, a crafted string in a log line is an instruction. Destructive commands, leaked API keys. Your logs are now untrusted input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maturity is genuinely low here. Only a small fraction of agent-driven pipeline changes land successfully today. Treat agents as assistants with a review queue, not as replacements for the engineer who owns the deploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to put in place before the agent can commit
&lt;/h2&gt;

&lt;p&gt;Read access and proposals first. Write access after you have evidence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A confidence threshold.&lt;/strong&gt; Above roughly 90%, the agent acts. Between 60 and 70%, the action is flagged and waits for a human. Nothing uncertain executes silently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A sandbox.&lt;/strong&gt; Let it try to fix the broken build in full isolation. Even a failed attempt produces logs and debugging context an engineer can use. Nothing it does can touch production data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retry limits and prior-attempt memory.&lt;/strong&gt; The cheapest fix for the most expensive failure mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict input validation on anything the agent reads.&lt;/strong&gt; Logs included. Especially logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A dashboard on the agent's own behaviour.&lt;/strong&gt; Error rates, rollback frequency, resource utilisation, and drift in decision patterns. Correlate agent decisions against build events so anomalies surface early instead of in the invoice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where agents actually earn their place
&lt;/h2&gt;

&lt;p&gt;The wins are real, and they cluster in the same area: deciding what to run rather than running everything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test selection.&lt;/strong&gt; Analyse the change, run the tests it can actually affect, skip the rest. Shorter feedback loops without dropping coverage where it matters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flaky test prediction.&lt;/strong&gt; Historical failure patterns tell you which tests fail for no reason, which is maintenance work nobody wants to do manually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risky commit flagging.&lt;/strong&gt; Build history and error logs predict failures before code reaches production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy timing and rollback.&lt;/strong&gt; Pick the window based on load, auto-trigger rollback on post-deploy signals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident triage.&lt;/strong&gt; Root-cause insight and a suggested corrective action before a human opens the dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Continuous learning is the headline benefit, but it has a precondition: the agent can only improve if the evaluation harness and observability exist to teach it. That instrumentation is the part most teams skip, and they find out they skipped it when the agent makes a decision nobody can explain.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you scope the first agent?
&lt;/h2&gt;

&lt;p&gt;In this order, and skipping either of the first two is how you ship something that works perfectly and changes nothing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Name the business outcome — release frequency, change failure rate, mean time to recover. Not "adopt AI."&lt;/li&gt;
&lt;li&gt;Identify the specific bottleneck, and state how an agent removes it.&lt;/li&gt;
&lt;li&gt;Sequence the work so the first agent ships against one measurable bottleneck, not five.&lt;/li&gt;
&lt;li&gt;Track the KPI you named in step 1.&lt;/li&gt;
&lt;li&gt;Feed what you learn back into scope and guardrails.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The rule we hold: no agent gets write access to a repo before it has spent a sprint proposing changes that a human approved or rejected. The rejection rate is the only honest readiness signal you get.&lt;/p&gt;

&lt;p&gt;None of this shows up in a demo, where the agent fixes the broken build on the first try and everyone claps. It shows up on the afternoon it tries the same fix eleven times, or the afternoon a log line convinces it to do something nobody asked for. Guardrails are not the exciting part of agentic CI/CD. They are the part that decides whether you keep the agent.&lt;/p&gt;

&lt;p&gt;Full playbook — architecture, benefits, pitfalls, and the guardrail set in detail: &lt;a href="https://teamvoy.com/blog/building-ai-agents-into-your-ci-cd-pipeline-a-playbook-for-tech-leads/" rel="noopener noreferrer"&gt;teamvoy.com/blog/building-ai-agents-into-your-ci-cd-pipeline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Alyona Kakora, Project Manager at Teamvoy. More engineering writing at &lt;a href="https://teamvoy.com/blog" rel="noopener noreferrer"&gt;teamvoy.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cicd</category>
      <category>devops</category>
      <category>testing</category>
    </item>
    <item>
      <title>Your Rails App Isn't Too Old for AI. It's Too Untested.</title>
      <dc:creator>Teamvoy</dc:creator>
      <pubDate>Thu, 06 Aug 2026 14:25:16 +0000</pubDate>
      <link>https://dev.to/teamvoy/your-rails-app-isnt-too-old-for-ai-its-too-untested-e7a</link>
      <guid>https://dev.to/teamvoy/your-rails-app-isnt-too-old-for-ai-its-too-untested-e7a</guid>
      <description>&lt;p&gt;When an AI feature fails to land on a legacy Rails app, it is almost never the model. It is that nobody could safely change the code underneath it.&lt;/p&gt;

&lt;p&gt;We picked up an app running Rails 5.2 with 11% test coverage and a Sidekiq queue nobody had looked at since 2021. The team had already built an LLM classifier. It worked on a laptop and had been sitting in a branch for five months, because merging it meant touching a controller that three people were afraid of.&lt;/p&gt;

&lt;p&gt;That is the whole argument: modernization is not a rewrite and it is not a version bump. It is the sequence that makes a legacy Rails app changeable again, and then puts AI in the places where the numbers move. Skip the sequence and you get a prototype that lives in a branch forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  The sequence, and why you don't get to reorder&amp;nbsp;it
&lt;/h2&gt;

&lt;p&gt;Audit, upgrade, test, refactor, then integrate. Every step exists because the next one is unsafe without it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audit&lt;/strong&gt;. Map dependencies, security posture, and tech debt against business priorities. You are deciding what not to touch as much as what to fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade&lt;/strong&gt;, one major at a time. 4.2 → 5.0 → 5.2 → 6.0 → 6.1 → 7.0 → 7.2 → 8.0. Resolve deprecations at each stop and enable new defaults gradually through config.load_defaults. Skipping a version to save a sprint buys you a month of breaking changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test&lt;/strong&gt;. Unit, integration, and system coverage, running on every push in CI. This is not hygiene. It is the precondition for everything after it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactor&lt;/strong&gt;. Extract business logic into service objects and concerns. This is where the seams for AI actually get cut.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrate&lt;/strong&gt;. Only now.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Incremental work also wins on cost - rebuilds have been measured at up to three times the feature development cost of upgrading in place. And there are still over 560,000 live Rails sites, so the population of teams making this decision is not small.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the AI layer actually looks&amp;nbsp;like
&lt;/h2&gt;

&lt;p&gt;Four components, and none of them are optional if the feature is going to survive a production week.&lt;br&gt;
&lt;strong&gt;A provider client.&lt;/strong&gt; Wrap OpenAI, Anthropic, Hugging Face, or your self-hosted model behind one abstraction. Swap vendors without touching business logic. Swap in a mock during CI so tests are fast and deterministic.&lt;br&gt;
&lt;strong&gt;A service object.&lt;/strong&gt; All AI logic lives here. Testable, replaceable, out of the controller.&lt;br&gt;
&lt;strong&gt;A background job.&lt;/strong&gt; Sidekiq or equivalent. Model calls never sit in the request path. A recommendation engine can chew through user data without adding a millisecond to page load.&lt;br&gt;
**An audit table. **Inputs, outputs, and confidence scores in JSONB on Postgres. When a classification is wrong, you pull the exact pair, fix the prompt, and version the change.&lt;/p&gt;

&lt;p&gt;The trade-off nobody puts in the proposal: that audit table grows fast and someone has to own retention on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you keep the AI layer from quietly costing you&amp;nbsp;money?
&lt;/h2&gt;

&lt;p&gt;Set confidence thresholds before launch, not after the first invoice. When confidence drops below the line, fall back to deterministic logic, a cached prior answer, or a human review queue. Enforce a per-tenant daily cost cap at the job layer, where you can actually stop the work.&lt;br&gt;
Then treat prompts as versioned, testable code and mock model responses in the suite. An untested prompt change is a production change with no rollback story.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to bring someone&amp;nbsp;in
&lt;/h2&gt;

&lt;p&gt;In-house works when the team ships weekly, has bandwidth for a 20% side program, and the AI use case is scoped tightly. Bring in help when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rails is two or more majors behind and no engineer on the team has run an upgrade this decade.&lt;/li&gt;
&lt;li&gt;A live prototype never got past staging because nobody owns operations for it.&lt;/li&gt;
&lt;li&gt;A board or regulator has set a date, and missing it has a number attached.&lt;/li&gt;
&lt;li&gt;The one senior Rails engineer who understood the plan just gave notice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What to push back on in a vendor quote: any multi-month discovery phase that ends in a slide deck, any proposal naming juniors on delivery, any pricing without a locked scope.&lt;br&gt;
None of this shows up in a demo. It shows up five months later, when the classifier still works perfectly on someone's laptop and the branch has 400 commits of drift behind main. The upgrade sequence is not the interesting part of adding AI to Rails. It is the part that decides whether the AI ever ships.&lt;/p&gt;

&lt;p&gt;Full breakdown of the assessment, upgrade path, and integration patterns: &lt;a href="https://dev.tourl"&gt;teamvoy.com/blog/how-to-transition-legacy-ruby-on-rails-apps-to-ai-enabled-architectures&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Bohdan Varshchuk, CTO at Teamvoy. More engineering writing at &lt;a href="https://dev.tourl"&gt;teamvoy.com/blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ruby</category>
      <category>rails</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
