<?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: The AI Shift</title>
    <description>The latest articles on DEV Community by The AI Shift (@mihail2026).</description>
    <link>https://dev.to/mihail2026</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%2F4089376%2Fe8ce6189-6108-48cd-98bc-b84610c6049e.jpg</url>
      <title>DEV Community: The AI Shift</title>
      <link>https://dev.to/mihail2026</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mihail2026"/>
    <language>en</language>
    <item>
      <title>Step-by-step: Build a Calculator in Google Cloud Run</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Tue, 08 Sep 2026 12:21:39 +0000</pubDate>
      <link>https://dev.to/mihail2026/build-and-deploy-a-calculator-app-on-google-cloud-run-4k5</link>
      <guid>https://dev.to/mihail2026/build-and-deploy-a-calculator-app-on-google-cloud-run-4k5</guid>
      <description>&lt;p&gt;Below is a simple laboratory exercise where students create a &lt;strong&gt;web calculator using Python and Flask&lt;/strong&gt;, run it in the &lt;strong&gt;Cloud Shell terminal&lt;/strong&gt;, and deploy it to &lt;strong&gt;Google Cloud Run&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Open Google Cloud Console
&lt;/h3&gt;

&lt;p&gt;Open the Google Cloud Console and select your project.&lt;/p&gt;

&lt;p&gt;Then open:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud Shell → Terminal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will create the application directly in the built-in Cloud Shell.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Create a project folder
&lt;/h3&gt;

&lt;p&gt;In the Cloud Shell terminal, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;calculator
&lt;span class="nb"&gt;cd &lt;/span&gt;calculator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. Create the Python application
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;render_template_string&lt;/span&gt;

&lt;span class="c1"&gt;# Create the Flask application
&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# HTML, CSS and calculator interface
&lt;/span&gt;&lt;span class="n"&gt;HTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;

&amp;lt;head&amp;gt;

    &amp;lt;meta charset=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UTF-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
    &amp;lt;meta name=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;viewport&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; content=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;width=device-width, initial-scale=1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;

    &amp;lt;title&amp;gt;Cloud Calculator&amp;lt;/title&amp;gt;

    &amp;lt;style&amp;gt;

        /* Remove default browser spacing */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }


        /* Main page */
        body {
            font-family: Arial, Helvetica, sans-serif;

            min-height: 100vh;

            display: flex;
            justify-content: center;
            align-items: center;

            background:
                linear-gradient(
                    135deg,
                    #667eea,
                    #764ba2
                );

            padding: 20px;
        }


        /* Calculator container */
        .calculator {

            width: 100%;
            max-width: 400px;

            padding: 30px;

            border-radius: 25px;

            background: rgba(255, 255, 255, 0.15);

            backdrop-filter: blur(15px);

            border: 1px solid rgba(255, 255, 255, 0.25);

            box-shadow:
                0 25px 50px rgba(0, 0, 0, 0.25);

            color: white;
        }


        /* Calculator title */
        h1 {
            text-align: center;

            font-size: 32px;

            margin-bottom: 10px;
        }


        /* Subtitle */
        .subtitle {
            text-align: center;

            color: rgba(255, 255, 255, 0.75);

            margin-bottom: 25px;

            font-size: 14px;
        }


        /* Input fields */
        input,
        select {

            width: 100%;

            padding: 15px;

            margin-bottom: 15px;

            border: none;

            border-radius: 12px;

            font-size: 17px;

            outline: none;

            background: rgba(255, 255, 255, 0.9);

            color: #333;

            transition: 0.2s;
        }


        /* Input focus effect */
        input:focus,
        select:focus {

            transform: scale(1.02);

            box-shadow:
                0 0 0 3px rgba(255, 255, 255, 0.3);
        }


        /* Operation selector */
        select {

            cursor: pointer;

            font-weight: bold;
        }


        /* Calculate button */
        button {

            width: 100%;

            padding: 15px;

            border: none;

            border-radius: 12px;

            font-size: 18px;

            font-weight: bold;

            color: white;

            cursor: pointer;

            background:
                linear-gradient(
                    135deg,
                    #ff6a00,
                    #ee0979
                );

            box-shadow:
                0 8px 20px rgba(0, 0, 0, 0.2);

            transition: all 0.2s;
        }


        /* Button hover effect */
        button:hover {

            transform: translateY(-2px);

            box-shadow:
                0 12px 25px rgba(0, 0, 0, 0.3);
        }


        /* Button click effect */
        button:active {

            transform: scale(0.98);
        }


        /* Result box */
        .result {

            margin-top: 25px;

            padding: 20px;

            border-radius: 15px;

            text-align: center;

            background: rgba(255, 255, 255, 0.15);

            border: 1px solid rgba(255, 255, 255, 0.2);
        }


        /* Result label */
        .result-title {

            font-size: 13px;

            text-transform: uppercase;

            letter-spacing: 2px;

            color: rgba(255, 255, 255, 0.7);

            margin-bottom: 8px;
        }


        /* Result number */
        .result-value {

            font-size: 36px;

            font-weight: bold;

            word-break: break-word;
        }


        /* Cloud Run label */
        .cloud-run {

            margin-top: 25px;

            text-align: center;

            font-size: 12px;

            color: rgba(255, 255, 255, 0.6);
        }


        /* Mobile devices */
        @media (max-width: 450px) {

            .calculator {

                padding: 22px;

            }

            h1 {

                font-size: 28px;

            }

        }

    &amp;lt;/style&amp;gt;

&amp;lt;/head&amp;gt;


&amp;lt;body&amp;gt;


    &amp;lt;div class=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;calculator&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;

        &amp;lt;h1&amp;gt;🧮 Calculator&amp;lt;/h1&amp;gt;

        &amp;lt;div class=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subtitle&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
            Simple calculator powered by Python
        &amp;lt;/div&amp;gt;


        &amp;lt;form method=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;


            &amp;lt;!-- First number --&amp;gt;

            &amp;lt;input
                type=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                name=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                step=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                placeholder=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter first number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                required
            &amp;gt;


            &amp;lt;!-- Mathematical operation --&amp;gt;

            &amp;lt;select name=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;operation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;

                &amp;lt;option value=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                    ➕ Addition
                &amp;lt;/option&amp;gt;

                &amp;lt;option value=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                    ➖ Subtraction
                &amp;lt;/option&amp;gt;

                &amp;lt;option value=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                    ✖️ Multiplication
                &amp;lt;/option&amp;gt;

                &amp;lt;option value=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                    ➗ Division
                &amp;lt;/option&amp;gt;

            &amp;lt;/select&amp;gt;


            &amp;lt;!-- Second number --&amp;gt;

            &amp;lt;input
                type=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                name=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                step=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                placeholder=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter second number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
                required
            &amp;gt;


            &amp;lt;!-- Calculate button --&amp;gt;

            &amp;lt;button type=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;submit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                Calculate
            &amp;lt;/button&amp;gt;


        &amp;lt;/form&amp;gt;


        {% if result is not none %}

        &amp;lt;div class=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;result&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;

            &amp;lt;div class=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;result-title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                Result
            &amp;lt;/div&amp;gt;

            &amp;lt;div class=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;result-value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
                {{ result }}
            &amp;lt;/div&amp;gt;

        &amp;lt;/div&amp;gt;

        {% endif %}


        &amp;lt;div class=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cloud-run&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
            ☁️ Running on Google Cloud Run
        &amp;lt;/div&amp;gt;

    &amp;lt;/div&amp;gt;


&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;


&lt;span class="c1"&gt;# Main calculator route
&lt;/span&gt;&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculator&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;

    &lt;span class="c1"&gt;# No result when the page is opened
&lt;/span&gt;    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;


    &lt;span class="c1"&gt;# Process the form after clicking Calculate
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="c1"&gt;# Get the two numbers
&lt;/span&gt;        &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="n"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;


        &lt;span class="c1"&gt;# Get the selected operation
&lt;/span&gt;        &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;operation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


        &lt;span class="c1"&gt;# Perform the calculation
&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

            &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt;

        &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

            &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt;

        &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

            &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt;

        &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

                &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cannot divide by zero&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

                &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt;


    &lt;span class="c1"&gt;# Display the HTML page
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;render_template_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;HTML&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Start the application
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;


# Process calculator requests
@app.route(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, methods=[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;])
def calculator():

    result = None

    if request.method == &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:

        # Get numbers from the form
        num1 = float(request.form[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;])
        num2 = float(request.form[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;])

        # Get selected operation
        operation = request.form[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;operation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;]

        # Perform calculation
        if operation == &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:
            result = num1 + num2

        elif operation == &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:
            result = num1 - num2

        elif operation == &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:
            result = num1 * num2

        elif operation == &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:

            if num2 == 0:
                result = &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cannot divide by zero&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
            else:
                result = num1 / num2

    return render_template_string(HTML, result=result)


# Start the web server
if __name__ == &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:

    app.run(
        host=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;,
        port=8080
    )
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the file:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ctrl + O → Enter → Ctrl + X&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Create &lt;code&gt;requirements.txt&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flask
gunicorn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Test the application in Cloud Shell
&lt;/h3&gt;

&lt;p&gt;Install Flask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The terminal should show something similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running on http://127.0.0.1:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To open the application, use &lt;strong&gt;Web Preview&lt;/strong&gt; in Cloud Shell and select port &lt;strong&gt;8080&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now the calculator should appear in your browser.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Stop the local server
&lt;/h3&gt;

&lt;p&gt;Return to the terminal and press:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ctrl + C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  7. Create a Dockerfile
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; python:3.12-slim&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; requirements.txt .&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--no-cache-dir&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; app.py .&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; exec gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 app:app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Deploy the calculator to Cloud Run
&lt;/h3&gt;

&lt;p&gt;From the same folder, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud run deploy calculator &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--source&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--region&lt;/span&gt; europe-central2 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--allow-unauthenticated&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google Cloud will build the application and deploy it to &lt;strong&gt;Cloud Run&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When deployment finishes, you will receive a URL similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://calculator-xxxxx-uc.a.run.app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  9. Open the calculator
&lt;/h3&gt;

&lt;p&gt;Copy the URL from the terminal and open it in your browser.&lt;/p&gt;

&lt;p&gt;You now have a &lt;strong&gt;public web calculator running on Google Cloud Run&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2F_8ojSEc4CahC2BHqkQ6uOg9S6teTuTxMUdQ2iEIMDwQUVFotfYY-ak2uwScw1akAVMp4T5T1IU8K9TR8MKBjDAaew_k1cQty9M3BT3vjnqs3olbE-EWqenalCjV6rmYkSnaQFbfraHhvvkm0XPKt_MftXM_jfm0dJW5G84vLBdRfor_T7IY8iYspj4dWnUBi%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2F_8ojSEc4CahC2BHqkQ6uOg9S6teTuTxMUdQ2iEIMDwQUVFotfYY-ak2uwScw1akAVMp4T5T1IU8K9TR8MKBjDAaew_k1cQty9M3BT3vjnqs3olbE-EWqenalCjV6rmYkSnaQFbfraHhvvkm0XPKt_MftXM_jfm0dJW5G84vLBdRfor_T7IY8iYspj4dWnUBi%3Fpurpose%3Dfullsize" alt="Image" width="1400" height="1044"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FZY03xsiV-q4c6hqjAr94G0dLAOQYS-mUfSBpcheF__19mS5vCDneUSMwtSrQsOwb4jQ_O8lVq2-ly8hR4F9RnkuiNjIXY0bT4yvmclXuOI1vYy8CaacfeOFqykL-LsmBOLZa8xix3jkZb8NIwdLb_TqqUk-5X5MO0s5yOdlKBkrB6XG-o0n4yxeB3TAp0B82%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FZY03xsiV-q4c6hqjAr94G0dLAOQYS-mUfSBpcheF__19mS5vCDneUSMwtSrQsOwb4jQ_O8lVq2-ly8hR4F9RnkuiNjIXY0bT4yvmclXuOI1vYy8CaacfeOFqykL-LsmBOLZa8xix3jkZb8NIwdLb_TqqUk-5X5MO0s5yOdlKBkrB6XG-o0n4yxeB3TAp0B82%3Fpurpose%3Dfullsize" alt="Image" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FT7mloizx6dkyihdqtD58fcggfT45-VGyl-suYhPjhIqDZ8nt1YPmNCEZyFGa7uwZfEltK_GDF41sQVwpNP1IderFgYaK57MeQhaNshKuiIrUUN7jSLEBU6r6WEtRnu33zQw5W20Pl8iH_aGZhT9YU0lQ6m1UI0LGIqybqvlNr_jbJKzoXPdc6uj983sccwhX%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FT7mloizx6dkyihdqtD58fcggfT45-VGyl-suYhPjhIqDZ8nt1YPmNCEZyFGa7uwZfEltK_GDF41sQVwpNP1IderFgYaK57MeQhaNshKuiIrUUN7jSLEBU6r6WEtRnu33zQw5W20Pl8iH_aGZhT9YU0lQ6m1UI0LGIqybqvlNr_jbJKzoXPdc6uj983sccwhX%3Fpurpose%3Dfullsize" alt="Image" width="1920" height="871"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What students have learned
&lt;/h2&gt;

&lt;p&gt;After completing the laboratory, students should understand:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; — application logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flask&lt;/strong&gt; — web application framework.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML/CSS&lt;/strong&gt; — user interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Shell&lt;/strong&gt; — built-in Google Cloud terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dockerfile&lt;/strong&gt; — describes how to build the application container.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run&lt;/strong&gt; — runs the container as a web service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public URL&lt;/strong&gt; — allows users to access the application over the Internet.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Simple architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
  ↓
Web Browser
  ↓
Cloud Run
  ↓
Container
  ↓
Flask Application
  ↓
Calculator Logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a good &lt;strong&gt;beginner Cloud Run laboratory&lt;/strong&gt; because students can see the complete path from writing Python code in the terminal to deploying a real web application to the cloud.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>python</category>
      <category>serverless</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Renewable Code: Why Specifications Matter More Than Source Code in the Age of AI</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sat, 29 Aug 2026 17:45:40 +0000</pubDate>
      <link>https://dev.to/mihail2026/renewable-code-why-specifications-matter-more-than-source-code-in-the-age-of-ai-5l1</link>
      <guid>https://dev.to/mihail2026/renewable-code-why-specifications-matter-more-than-source-code-in-the-age-of-ai-5l1</guid>
      <description>&lt;p&gt;What will happen to software development when autonomous AI agents can create, modify, and completely rewrite code?&lt;/p&gt;

&lt;p&gt;The book &lt;strong&gt;“Renewable Code: Specification-Driven Software Development”&lt;/strong&gt; offers a new perspective on building software systems. Instead of endlessly maintaining codebases accumulated over years of development, it treats code as a derived result—the implementation of requirements, business rules, architectural decisions, and technical constraints.&lt;/p&gt;

&lt;p&gt;At the heart of this model are &lt;strong&gt;specifications as the source of truth&lt;/strong&gt;, code provenance tracking, architectures designed for selective renewal, and AI agents capable of participating in software development as full-fledged contributors.&lt;/p&gt;

&lt;p&gt;The book explains how to move from a model of “constantly fixing old code” to one in which changes begin with specifications, the system identifies the affected components, and code can be selectively updated or generated again from the underlying specifications.&lt;/p&gt;

&lt;p&gt;This is a book about a possible future of software development in which the most valuable asset is no longer the number of lines of code written, but &lt;strong&gt;a precise description of what a system must do, why it must do it, and which rules it must never violate&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Renewable Code&lt;/strong&gt;
&lt;/h1&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Specification-Driven Software Development&lt;/em&gt;
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;Why software must be maintained for years&lt;/p&gt;

&lt;p&gt;Why code gradually turns into technical debt&lt;/p&gt;

&lt;p&gt;How artificial intelligence is changing the cost of creating and modifying code&lt;/p&gt;

&lt;p&gt;From maintaining codebases to managing specifications&lt;/p&gt;




&lt;h1&gt;
  
  
  PART I. THE PROBLEM: CODE AS ACCUMULATED HISTORY
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 1. A World Built Around Source Code
&lt;/h2&gt;

&lt;p&gt;Source code as the primary asset of software development&lt;/p&gt;

&lt;p&gt;Why code is considered the source of truth&lt;/p&gt;

&lt;p&gt;The incremental evolution of software systems&lt;/p&gt;

&lt;p&gt;How large codebases are formed&lt;/p&gt;

&lt;p&gt;Why old code continues to live on&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 2. Code as an Accumulation of Decisions
&lt;/h2&gt;

&lt;p&gt;Every line of code as a trace of a past decision&lt;/p&gt;

&lt;p&gt;Why the history of development becomes more complex than the system itself&lt;/p&gt;

&lt;p&gt;Software archaeology&lt;/p&gt;

&lt;p&gt;When developers no longer understand why code exists&lt;/p&gt;

&lt;p&gt;Hidden decisions inside the codebase&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 3. Technical Debt and the Problem of Perpetual Maintenance
&lt;/h2&gt;

&lt;p&gt;Why software ages&lt;/p&gt;

&lt;p&gt;Temporary solutions that become permanent&lt;/p&gt;

&lt;p&gt;Dependencies and outdated technologies&lt;/p&gt;

&lt;p&gt;Why changing legacy systems is dangerous&lt;/p&gt;

&lt;p&gt;“This module is better left untouched”&lt;/p&gt;

&lt;p&gt;The cost of preserving the past&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 4. The Limitations of Traditional Software Development
&lt;/h2&gt;

&lt;p&gt;Incremental changes&lt;/p&gt;

&lt;p&gt;Pull requests&lt;/p&gt;

&lt;p&gt;Code review&lt;/p&gt;

&lt;p&gt;Version control&lt;/p&gt;

&lt;p&gt;Testing changes&lt;/p&gt;

&lt;p&gt;Why these processes assume human participation&lt;/p&gt;




&lt;h1&gt;
  
  
  PART II. ARTIFICIAL INTELLIGENCE CHANGES SOFTWARE DEVELOPMENT
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 5. When AI Becomes the Primary Author of Code
&lt;/h2&gt;

&lt;p&gt;From programming assistant to autonomous developer&lt;/p&gt;

&lt;p&gt;Generating functions&lt;/p&gt;

&lt;p&gt;Generating components&lt;/p&gt;

&lt;p&gt;Generating applications&lt;/p&gt;

&lt;p&gt;Large-scale codebase modifications&lt;/p&gt;

&lt;p&gt;Why the volume of change is no longer human-scale&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 6. The Problem of Massive Changes
&lt;/h2&gt;

&lt;p&gt;What happens when AI modifies thousands of files&lt;/p&gt;

&lt;p&gt;Why it is impossible to read all generated code&lt;/p&gt;

&lt;p&gt;The limits of traditional code review&lt;/p&gt;

&lt;p&gt;Why the question “What changed?” is no longer enough&lt;/p&gt;

&lt;p&gt;From reviewing lines of code to reviewing intent&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 7. The New Unit of Software Development
&lt;/h2&gt;

&lt;p&gt;If code can be created quickly, what becomes valuable?&lt;/p&gt;

&lt;p&gt;Intent&lt;/p&gt;

&lt;p&gt;Requirements&lt;/p&gt;

&lt;p&gt;Business rules&lt;/p&gt;

&lt;p&gt;Architectural decisions&lt;/p&gt;

&lt;p&gt;Constraints&lt;/p&gt;

&lt;p&gt;Tests&lt;/p&gt;

&lt;p&gt;Why these become the primary intellectual assets&lt;/p&gt;




&lt;h1&gt;
  
  
  PART III. SPECIFICATIONS AS THE SOURCE OF TRUTH
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 8. From Code to Specifications
&lt;/h2&gt;

&lt;p&gt;The traditional development model&lt;/p&gt;

&lt;p&gt;The specification-driven development model&lt;/p&gt;

&lt;p&gt;Code as an outcome&lt;/p&gt;

&lt;p&gt;What is a system specification?&lt;/p&gt;

&lt;p&gt;Different levels of specifications&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 9. What a Specification Contains
&lt;/h2&gt;

&lt;p&gt;Business requirements&lt;/p&gt;

&lt;p&gt;Functional requirements&lt;/p&gt;

&lt;p&gt;Non-functional requirements&lt;/p&gt;

&lt;p&gt;Business rules&lt;/p&gt;

&lt;p&gt;Data models&lt;/p&gt;

&lt;p&gt;API contracts&lt;/p&gt;

&lt;p&gt;Architectural constraints&lt;/p&gt;

&lt;p&gt;Security rules&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 10. Specifications as the New Source Code
&lt;/h2&gt;

&lt;p&gt;What does “source of truth” mean?&lt;/p&gt;

&lt;p&gt;Why Git cannot always answer the question “Why?”&lt;/p&gt;

&lt;p&gt;What matters more: the history of changes or the reason something exists?&lt;/p&gt;

&lt;p&gt;Specifications as the foundation of the system&lt;/p&gt;

&lt;p&gt;Code as a derived artifact&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 11. From Intent to a Working System
&lt;/h2&gt;

&lt;p&gt;User intent&lt;/p&gt;

&lt;p&gt;Formalizing requirements&lt;/p&gt;

&lt;p&gt;Architectural models&lt;/p&gt;

&lt;p&gt;Technical constraints&lt;/p&gt;

&lt;p&gt;Generating components&lt;/p&gt;

&lt;p&gt;Generating code&lt;/p&gt;

&lt;p&gt;Testing the result&lt;/p&gt;




&lt;h1&gt;
  
  
  PART IV. CODE PROVENANCE
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 12. Why Code Must Be Able to Explain Its Existence
&lt;/h2&gt;

&lt;p&gt;The question “Who changed this?”&lt;/p&gt;

&lt;p&gt;The question “When was it changed?”&lt;/p&gt;

&lt;p&gt;The question “Why does this component exist?”&lt;/p&gt;

&lt;p&gt;The question “Which requirement produced this code?”&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 13. Provenance and Lineage
&lt;/h2&gt;

&lt;p&gt;What is provenance?&lt;/p&gt;

&lt;p&gt;What is software lineage?&lt;/p&gt;

&lt;p&gt;The relationship between requirements and code&lt;/p&gt;

&lt;p&gt;The relationship between architectural decisions and components&lt;/p&gt;

&lt;p&gt;The relationship between components and deployed systems&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 14. The Software Provenance Graph
&lt;/h2&gt;

&lt;p&gt;Requirements as graph nodes&lt;/p&gt;

&lt;p&gt;Architectural decisions&lt;/p&gt;

&lt;p&gt;Components&lt;/p&gt;

&lt;p&gt;Modules&lt;/p&gt;

&lt;p&gt;Code&lt;/p&gt;

&lt;p&gt;Tests&lt;/p&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;Tracing the path from a business requirement to production&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 15. What Happens When a Specification Changes
&lt;/h2&gt;

&lt;p&gt;Identifying dependencies&lt;/p&gt;

&lt;p&gt;Impact analysis&lt;/p&gt;

&lt;p&gt;Which components need to change&lt;/p&gt;

&lt;p&gt;Which components must remain untouched&lt;/p&gt;

&lt;p&gt;Building an impact map&lt;/p&gt;




&lt;h1&gt;
  
  
  PART V. RENEWABLE CODE
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 16. Code as a Derived Artifact
&lt;/h2&gt;

&lt;p&gt;What does “derived artifact” mean?&lt;/p&gt;

&lt;p&gt;The analogy with compilation&lt;/p&gt;

&lt;p&gt;Specification → generation → code&lt;/p&gt;

&lt;p&gt;Why code can be recreated&lt;/p&gt;

&lt;p&gt;Which parts of a system are suitable for regeneration&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 17. Full Regeneration
&lt;/h2&gt;

&lt;p&gt;Rebuilding a system from scratch&lt;/p&gt;

&lt;p&gt;The advantages of a clean implementation&lt;/p&gt;

&lt;p&gt;Eliminating accumulated technical debt&lt;/p&gt;

&lt;p&gt;The risks of full regeneration&lt;/p&gt;

&lt;p&gt;When full regeneration is justified&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 18. Selective Regeneration
&lt;/h2&gt;

&lt;p&gt;Why not everything needs to be recreated&lt;/p&gt;

&lt;p&gt;Defining the scope of change&lt;/p&gt;

&lt;p&gt;Dependency graphs&lt;/p&gt;

&lt;p&gt;Selecting components for renewal&lt;/p&gt;

&lt;p&gt;Localized generation&lt;/p&gt;

&lt;p&gt;Compatibility validation&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 19. Stability Versus Renewability
&lt;/h2&gt;

&lt;p&gt;Why constant change can be dangerous&lt;/p&gt;

&lt;p&gt;When a system should remain stable&lt;/p&gt;

&lt;p&gt;The cost of regeneration&lt;/p&gt;

&lt;p&gt;The risks of unpredictable behavior&lt;/p&gt;

&lt;p&gt;Finding the balance between renewal and stability&lt;/p&gt;




&lt;h1&gt;
  
  
  PART VI. ARCHITECTURE FOR RENEWAL
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 20. Architecture Designed for Regeneration
&lt;/h2&gt;

&lt;p&gt;Modularity&lt;/p&gt;

&lt;p&gt;Clear component boundaries&lt;/p&gt;

&lt;p&gt;Contracts&lt;/p&gt;

&lt;p&gt;Dependency isolation&lt;/p&gt;

&lt;p&gt;Minimizing coupling&lt;/p&gt;

&lt;p&gt;Maximizing replaceability&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 21. Components Instead of a Monolithic Codebase
&lt;/h2&gt;

&lt;p&gt;Why monoliths are difficult to renew&lt;/p&gt;

&lt;p&gt;Boundaries of responsibility&lt;/p&gt;

&lt;p&gt;Independent components&lt;/p&gt;

&lt;p&gt;Contracts between components&lt;/p&gt;

&lt;p&gt;Replacing an implementation without changing the system&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 22. Contracts as System Protection
&lt;/h2&gt;

&lt;p&gt;API contracts&lt;/p&gt;

&lt;p&gt;Data schemas&lt;/p&gt;

&lt;p&gt;Compatibility&lt;/p&gt;

&lt;p&gt;Contract versioning&lt;/p&gt;

&lt;p&gt;Why implementations can change when contracts remain stable&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 23. Invariants: Rules That Must Never Be Broken
&lt;/h2&gt;

&lt;p&gt;What is an invariant?&lt;/p&gt;

&lt;p&gt;Business invariants&lt;/p&gt;

&lt;p&gt;Data invariants&lt;/p&gt;

&lt;p&gt;Security invariants&lt;/p&gt;

&lt;p&gt;Architectural invariants&lt;/p&gt;

&lt;p&gt;How to validate a system after regeneration&lt;/p&gt;




&lt;h1&gt;
  
  
  PART VII. AI AGENTS AS DEVELOPERS
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 24. From AI Assistant to AI Agent
&lt;/h2&gt;

&lt;p&gt;The assistant&lt;/p&gt;

&lt;p&gt;The task executor&lt;/p&gt;

&lt;p&gt;The autonomous agent&lt;/p&gt;

&lt;p&gt;Multi-agent systems&lt;/p&gt;

&lt;p&gt;How the role of humans changes&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 25. The Analyst Agent
&lt;/h2&gt;

&lt;p&gt;Understanding requirements&lt;/p&gt;

&lt;p&gt;Identifying contradictions&lt;/p&gt;

&lt;p&gt;Creating specifications&lt;/p&gt;

&lt;p&gt;Clarifying business rules&lt;/p&gt;

&lt;p&gt;Checking requirement completeness&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 26. The Architect Agent
&lt;/h2&gt;

&lt;p&gt;Creating architecture&lt;/p&gt;

&lt;p&gt;Selecting components&lt;/p&gt;

&lt;p&gt;Defining boundaries&lt;/p&gt;

&lt;p&gt;Creating contracts&lt;/p&gt;

&lt;p&gt;Architectural constraints&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 27. The Developer Agent
&lt;/h2&gt;

&lt;p&gt;Generating code&lt;/p&gt;

&lt;p&gt;Modifying existing components&lt;/p&gt;

&lt;p&gt;Refactoring&lt;/p&gt;

&lt;p&gt;Regeneration&lt;/p&gt;

&lt;p&gt;Working with specifications&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 28. The Testing Agent
&lt;/h2&gt;

&lt;p&gt;Generating tests&lt;/p&gt;

&lt;p&gt;Validating invariants&lt;/p&gt;

&lt;p&gt;Regression testing&lt;/p&gt;

&lt;p&gt;Property-based testing&lt;/p&gt;

&lt;p&gt;Verifying system behavior&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 29. The Agent System
&lt;/h2&gt;

&lt;p&gt;Agent collaboration&lt;/p&gt;

&lt;p&gt;Task delegation&lt;/p&gt;

&lt;p&gt;Conflicts between agents&lt;/p&gt;

&lt;p&gt;Decision validation&lt;/p&gt;

&lt;p&gt;Orchestration&lt;/p&gt;

&lt;p&gt;Humans in the control loop&lt;/p&gt;




&lt;h1&gt;
  
  
  PART VIII. TESTING IN THE WORLD OF GENERATED CODE
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 30. Why Testing Changes Is Not Enough
&lt;/h2&gt;

&lt;p&gt;The traditional approach&lt;/p&gt;

&lt;p&gt;Diff-based testing&lt;/p&gt;

&lt;p&gt;The problem of large-scale generation&lt;/p&gt;

&lt;p&gt;Changing implementation without changing behavior&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 31. Testing Behavior
&lt;/h2&gt;

&lt;p&gt;What the system must do&lt;/p&gt;

&lt;p&gt;Behavioral contracts&lt;/p&gt;

&lt;p&gt;Scenarios&lt;/p&gt;

&lt;p&gt;Acceptance tests&lt;/p&gt;

&lt;p&gt;Validating outcomes instead of implementation&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 32. Testing Invariants
&lt;/h2&gt;

&lt;p&gt;Rules that must remain true&lt;/p&gt;

&lt;p&gt;Business constraints&lt;/p&gt;

&lt;p&gt;Data constraints&lt;/p&gt;

&lt;p&gt;Security constraints&lt;/p&gt;

&lt;p&gt;Automated validation&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 33. Trusting Generated Code
&lt;/h2&gt;

&lt;p&gt;Can AI be trusted?&lt;/p&gt;

&lt;p&gt;Levels of trust&lt;/p&gt;

&lt;p&gt;Automated validation&lt;/p&gt;

&lt;p&gt;Human approval&lt;/p&gt;

&lt;p&gt;Fully autonomous changes&lt;/p&gt;




&lt;h1&gt;
  
  
  PART IX. THE RENEWABLE SOFTWARE SYSTEM
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 34. The Complete Lifecycle
&lt;/h2&gt;

&lt;p&gt;Creating a requirement&lt;/p&gt;

&lt;p&gt;Creating a specification&lt;/p&gt;

&lt;p&gt;Designing the architecture&lt;/p&gt;

&lt;p&gt;Generating code&lt;/p&gt;

&lt;p&gt;Testing&lt;/p&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;Monitoring&lt;/p&gt;

&lt;p&gt;Updating&lt;/p&gt;

&lt;p&gt;Regeneration&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 35. The Production System
&lt;/h2&gt;

&lt;p&gt;What happens in production?&lt;/p&gt;

&lt;p&gt;Observing the system&lt;/p&gt;

&lt;p&gt;Collecting feedback&lt;/p&gt;

&lt;p&gt;Detecting problems&lt;/p&gt;

&lt;p&gt;Updating specifications&lt;/p&gt;

&lt;p&gt;Regenerating the system&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 36. Continuous System Renewal
&lt;/h2&gt;

&lt;p&gt;Continuous Integration&lt;/p&gt;

&lt;p&gt;Continuous Delivery&lt;/p&gt;

&lt;p&gt;Continuous Regeneration&lt;/p&gt;

&lt;p&gt;Automatically detecting changes&lt;/p&gt;

&lt;p&gt;Automated regeneration&lt;/p&gt;

&lt;p&gt;Safe deployment&lt;/p&gt;




&lt;h1&gt;
  
  
  PART X. THE PRACTICAL TRANSITION
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 37. Why You Cannot Simply Rewrite Everything
&lt;/h2&gt;

&lt;p&gt;The dangers of large-scale migration&lt;/p&gt;

&lt;p&gt;The cost of replacement&lt;/p&gt;

&lt;p&gt;Critical systems&lt;/p&gt;

&lt;p&gt;Hidden dependencies&lt;/p&gt;

&lt;p&gt;Incremental transition&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 38. Your First Renewable Component
&lt;/h2&gt;

&lt;p&gt;How to choose a component&lt;/p&gt;

&lt;p&gt;Creating a specification&lt;/p&gt;

&lt;p&gt;Defining contracts&lt;/p&gt;

&lt;p&gt;Creating tests&lt;/p&gt;

&lt;p&gt;Generation&lt;/p&gt;

&lt;p&gt;Validation&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 39. Adding Provenance to an Existing System
&lt;/h2&gt;

&lt;p&gt;Linking requirements and components&lt;/p&gt;

&lt;p&gt;Documenting architectural decisions&lt;/p&gt;

&lt;p&gt;Creating a dependency graph&lt;/p&gt;

&lt;p&gt;Tracking changes&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 40. Incremental Codebase Migration
&lt;/h2&gt;

&lt;p&gt;From legacy code to specifications&lt;/p&gt;

&lt;p&gt;The Strangler Pattern&lt;/p&gt;

&lt;p&gt;Replacing individual components&lt;/p&gt;

&lt;p&gt;Maintaining compatibility&lt;/p&gt;

&lt;p&gt;Gradually expanding the model&lt;/p&gt;




&lt;h1&gt;
  
  
  PART XI. A PRACTICAL CASE STUDY
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 41. A Logistics Company: The Existing System
&lt;/h2&gt;

&lt;p&gt;Orders&lt;/p&gt;

&lt;p&gt;Shipments&lt;/p&gt;

&lt;p&gt;Routes&lt;/p&gt;

&lt;p&gt;Warehouses&lt;/p&gt;

&lt;p&gt;Transportation&lt;/p&gt;

&lt;p&gt;Delivery tracking&lt;/p&gt;

&lt;p&gt;Customers&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 42. Creating the Specifications
&lt;/h2&gt;

&lt;p&gt;Describing business processes&lt;/p&gt;

&lt;p&gt;The Shipment model&lt;/p&gt;

&lt;p&gt;Shipment statuses&lt;/p&gt;

&lt;p&gt;Business rules&lt;/p&gt;

&lt;p&gt;Security&lt;/p&gt;

&lt;p&gt;API contracts&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 43. Creating the Architecture
&lt;/h2&gt;

&lt;p&gt;Services&lt;/p&gt;

&lt;p&gt;Events&lt;/p&gt;

&lt;p&gt;Data storage&lt;/p&gt;

&lt;p&gt;APIs&lt;/p&gt;

&lt;p&gt;Integrations&lt;/p&gt;

&lt;p&gt;Component boundaries&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 44. Generating the System
&lt;/h2&gt;

&lt;p&gt;How AI agents work&lt;/p&gt;

&lt;p&gt;Creating components&lt;/p&gt;

&lt;p&gt;Creating the database&lt;/p&gt;

&lt;p&gt;Creating APIs&lt;/p&gt;

&lt;p&gt;Creating tests&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 45. A Change in the Business
&lt;/h2&gt;

&lt;p&gt;A new requirement&lt;/p&gt;

&lt;p&gt;Updating the specification&lt;/p&gt;

&lt;p&gt;Dependency analysis&lt;/p&gt;

&lt;p&gt;Identifying the impact area&lt;/p&gt;

&lt;p&gt;Selective regeneration&lt;/p&gt;

&lt;p&gt;Testing&lt;/p&gt;

&lt;p&gt;Deployment&lt;/p&gt;




&lt;h1&gt;
  
  
  PART XII. THE FUTURE OF SOFTWARE DEVELOPMENT
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Chapter 46. Is This the End of Traditional Programming?
&lt;/h2&gt;

&lt;p&gt;What remains the responsibility of humans?&lt;/p&gt;

&lt;p&gt;What moves to AI?&lt;/p&gt;

&lt;p&gt;New developer roles&lt;/p&gt;

&lt;p&gt;New skills&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 47. The Programmer of the Future
&lt;/h2&gt;

&lt;p&gt;Moving beyond writing lines of code&lt;/p&gt;

&lt;p&gt;Designing systems&lt;/p&gt;

&lt;p&gt;Creating specifications&lt;/p&gt;

&lt;p&gt;Managing agents&lt;/p&gt;

&lt;p&gt;Expressing intent&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 48. Beyond Source Code
&lt;/h2&gt;

&lt;p&gt;What will become a company's most valuable asset?&lt;/p&gt;

&lt;p&gt;Knowledge&lt;/p&gt;

&lt;p&gt;Specifications&lt;/p&gt;

&lt;p&gt;Business rules&lt;/p&gt;

&lt;p&gt;Architecture&lt;/p&gt;

&lt;p&gt;Provenance data&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;We No Longer Have to Maintain the Past Forever&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Code is not the memory of the system&lt;/p&gt;

&lt;p&gt;Code is an implementation of intent&lt;/p&gt;

&lt;p&gt;Specifications matter more than implementation&lt;/p&gt;

&lt;p&gt;Rules matter more than individual lines of code&lt;/p&gt;

&lt;p&gt;Architecture matters more than individual files&lt;/p&gt;

&lt;p&gt;Renewable systems instead of endlessly repaired software&lt;/p&gt;




&lt;h1&gt;
  
  
  Appendices
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Appendix A. Component Specification Template
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Appendix B. Architecture Decision Template
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Appendix C. A Catalog of Invariant Types
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Appendix D. A Software Provenance Model
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Appendix E. A System Regeneration Readiness Checklist
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Appendix F. An AI Agent Adoption Checklist
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Appendix G. Glossary of Terms
&lt;/h3&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Designing Sources of Truth</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:02:21 +0000</pubDate>
      <link>https://dev.to/mihail2026/designing-sources-of-truth-2jp1</link>
      <guid>https://dev.to/mihail2026/designing-sources-of-truth-2jp1</guid>
      <description>&lt;p&gt;In traditional software development, code is considered the primary source of truth. A requirement becomes a task, the task becomes changes to files, and Git preserves the history of those changes.&lt;/p&gt;

&lt;p&gt;In the world of AI-driven development, this model is beginning to change. If an agent can independently create, modify, and even completely regenerate code, a new question arises: &lt;strong&gt;what should remain the immutable source of truth?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is not the code itself, but the knowledge from which that code is generated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Is the Result, Not the Source
&lt;/h2&gt;

&lt;p&gt;Consider a simple order-processing system. Its code contains a rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An order cannot be shipped until it has been paid for.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If this rule exists only inside several functions, it is tied to a particular implementation. When the service is rewritten, an agent may accidentally lose it.&lt;/p&gt;

&lt;p&gt;In a regenerative model, the rule is elevated to the specification level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order cannot transition to SHIPPED
unless payment_status = PAID.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now it is not an implementation detail, but a &lt;strong&gt;system invariant&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The agent can implement it in Go, Python, or Rust — but the result must comply with the rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Source of Truth Should Describe Meaning
&lt;/h2&gt;

&lt;p&gt;A good specification does not try to replace source code with a detailed description of every function.&lt;/p&gt;

&lt;p&gt;It captures what must remain true regardless of the implementation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;business rules;&lt;/li&gt;
&lt;li&gt;architectural constraints;&lt;/li&gt;
&lt;li&gt;API contracts;&lt;/li&gt;
&lt;li&gt;data schemas;&lt;/li&gt;
&lt;li&gt;invariants;&lt;/li&gt;
&lt;li&gt;security requirements;&lt;/li&gt;
&lt;li&gt;performance requirements;&lt;/li&gt;
&lt;li&gt;access controls;&lt;/li&gt;
&lt;li&gt;failure conditions;&lt;/li&gt;
&lt;li&gt;acceptance criteria.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The validatePayment() function must call checkBalance().
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;it is better to specify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A payment cannot be confirmed
if the available balance is less than the payment amount.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first description is tied to an implementation. The second survives its complete replacement.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Source of Truth Must Be Verifiable
&lt;/h2&gt;

&lt;p&gt;A textual requirement alone is not enough.&lt;/p&gt;

&lt;p&gt;If the specification says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The service must be fast.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the agent does not know what “fast” means.&lt;/p&gt;

&lt;p&gt;A much more useful requirement is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p95 latency &amp;lt; 200 ms
at 1000 RPS.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the requirement can be verified automatically.&lt;/p&gt;

&lt;p&gt;A mature system therefore follows a chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Specification
      ↓
Generation
      ↓
Tests
      ↓
Validation
      ↓
Production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tests become more than a way to check code. They become an executable part of the source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Source of Truth Must Survive Implementation Changes
&lt;/h2&gt;

&lt;p&gt;There is a simple test for a specification:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If we delete all generated code, can we reconstruct the system?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is yes, the architecture is genuinely moving toward a regenerative model.&lt;/p&gt;

&lt;p&gt;If the answer is no, some of the system's knowledge is still hidden inside the code.&lt;/p&gt;

&lt;p&gt;This does not mean all code must become disposable. Critical or highly complex components can remain stable and human-controlled. But it must be clear &lt;strong&gt;which code is derived and which artifacts contain the actual decisions&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provenance Matters Too
&lt;/h2&gt;

&lt;p&gt;The specification itself is not enough.&lt;/p&gt;

&lt;p&gt;We also need to understand how a particular production artifact came into existence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requirement
    ↓
Architecture
    ↓
Contract
    ↓
Agent task
    ↓
Model
    ↓
Generation
    ↓
Code
    ↓
Tests
    ↓
Production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is &lt;strong&gt;provenance&lt;/strong&gt; — the lineage of a result.&lt;/p&gt;

&lt;p&gt;When an agent generates a thousand lines of code, it is more important to understand not only the diff, but also:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;what decision produced these changes and which rules do they implement?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Mistake
&lt;/h2&gt;

&lt;p&gt;The most dangerous mistake is treating everything as a source of truth.&lt;/p&gt;

&lt;p&gt;If we simultaneously treat these as authoritative:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;legacy code;&lt;/li&gt;
&lt;li&gt;documentation;&lt;/li&gt;
&lt;li&gt;README files;&lt;/li&gt;
&lt;li&gt;prompts;&lt;/li&gt;
&lt;li&gt;tests;&lt;/li&gt;
&lt;li&gt;architecture diagrams;&lt;/li&gt;
&lt;li&gt;Jira tickets;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;they will eventually contradict one another.&lt;/p&gt;

&lt;p&gt;Sources of truth therefore need an &lt;strong&gt;explicit hierarchy and ownership&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business rules
      ↓
Architecture
      ↓
Contracts
      ↓
Policies
      ↓
Generated implementation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the code contradicts the contract, the code should be fixed.&lt;/p&gt;

&lt;p&gt;If the contract contradicts an architectural rule, the conflict should be resolved at the architectural level.&lt;/p&gt;

&lt;p&gt;The key is not to maintain every artifact as an equally authoritative truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  A New Role for Engineers
&lt;/h2&gt;

&lt;p&gt;In this model, engineers spend less time maintaining every line of code and more time designing the system that produces that code.&lt;/p&gt;

&lt;p&gt;They define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rules;&lt;/li&gt;
&lt;li&gt;contracts;&lt;/li&gt;
&lt;li&gt;constraints;&lt;/li&gt;
&lt;li&gt;architectural boundaries;&lt;/li&gt;
&lt;li&gt;testable invariants;&lt;/li&gt;
&lt;li&gt;context for AI agents;&lt;/li&gt;
&lt;li&gt;validation mechanisms;&lt;/li&gt;
&lt;li&gt;decision provenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, the central question of software development gradually changes.&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“How do we write this code?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“How do we describe the system so that the correct implementation can be generated from that description again and again?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the essence of &lt;strong&gt;designing sources of truth&lt;/strong&gt; — creating a set of specifications, rules, and contracts that preserve the &lt;strong&gt;meaning of the system&lt;/strong&gt;, even when its implementation changes completely.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Analytics System for an Online Store</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sun, 23 Aug 2026 10:00:40 +0000</pubDate>
      <link>https://dev.to/mihail2026/ai-analytics-system-for-an-online-store-o14</link>
      <guid>https://dev.to/mihail2026/ai-analytics-system-for-an-online-store-o14</guid>
      <description>&lt;p&gt;An online store generates enormous amounts of data: orders, products, clicks, advertising campaigns, returns, and customer inquiries. The problem is not a lack of information, but turning that information into decisions quickly.&lt;/p&gt;

&lt;p&gt;Modern AI analytics makes it possible to build a unified system where data is not simply displayed in reports, but &lt;strong&gt;analyzed, used for predictions, and turned into automated actions&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How the Stack Works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;BigQuery — data.&lt;/strong&gt;&lt;br&gt;
All major store data is collected and processed in BigQuery: orders, customers, products, advertising costs, and website events. This is where SQL transformations, metric calculations, and feature preparation for machine learning models take place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Looker — understanding the data.&lt;/strong&gt;&lt;br&gt;
Looker turns BigQuery data into a clear business picture: revenue, average order value, conversion rate, profitability, repeat purchases, and other key metrics. Management sees the state of the business rather than raw tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertex AI — models.&lt;/strong&gt;&lt;br&gt;
This is where predictions are created: customer churn probability, future sales, product demand, purchase probability, and anomaly detection. Models can be deployed and used in real business processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini — natural language and generative intelligence.&lt;/strong&gt;&lt;br&gt;
Analytics no longer has to be expressed in SQL. You can simply ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Why did revenue decline this month?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI can help generate queries, investigate the data, explain the results, and prepare an analytical summary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agents — actions.&lt;/strong&gt;&lt;br&gt;
The next step is not just getting an answer, but actually performing the work. An agent can detect a problem, investigate the data, identify the likely cause, and initiate an action—for example, generate a list of customers for retention campaigns or create a task for a sales manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MLOps — reliable production.&lt;/strong&gt;&lt;br&gt;
Models cannot simply be trained once and forgotten. MLOps provides testing, versioning, deployment, monitoring, and continuous updating of models.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Result
&lt;/h3&gt;

&lt;p&gt;The result is a closed-loop system:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;data → analysis → prediction → explanation → decision → action → new data.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the key difference between AI analytics and traditional BI. A dashboard tells you &lt;strong&gt;what happened&lt;/strong&gt;. An AI-powered system helps you understand &lt;strong&gt;why it happened, what is likely to happen next, and what to do about it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For an online store, this architecture transforms fragmented data and separate AI tools into a unified analytics system capable not only of monitoring the business, but also of actively participating in its management.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Zero Value of Code</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sun, 23 Aug 2026 09:08:52 +0000</pubDate>
      <link>https://dev.to/mihail2026/zero-value-of-code-2jdm</link>
      <guid>https://dev.to/mihail2026/zero-value-of-code-2jdm</guid>
      <description>&lt;p&gt;For decades, companies have treated source code as one of their most valuable secrets. Repositories were locked down, access was restricted, and today many companies hesitate to give AI agents access to their codebases because of one fear:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What if our code leaks?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But there is a more fundamental question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How valuable is that code in the first place?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the past, writing complex software was expensive. It required teams of programmers and years of development, debugging, and maintenance. Source code therefore had significant value: obtaining it could save a competitor years of work.&lt;/p&gt;

&lt;p&gt;AI is changing this equation.&lt;/p&gt;

&lt;p&gt;Today, in many cases, software does not need to be understood and maintained for years. It can simply be rebuilt. AI can analyze an existing system, reconstruct its logic, generate tests, and gradually produce a new implementation.&lt;/p&gt;

&lt;p&gt;This is especially true for legacy systems.&lt;/p&gt;

&lt;p&gt;A codebase that is 10–15 years old rarely consists entirely of brilliant architectural decisions. It contains temporary solutions, workarounds, duplicated logic, outdated libraries, exceptions, and countless patches accumulated over time.&lt;/p&gt;

&lt;p&gt;It may contain hundreds of thousands of lines of proprietary code.&lt;/p&gt;

&lt;p&gt;But are those lines really an asset?&lt;/p&gt;

&lt;p&gt;Sometimes they are simply &lt;strong&gt;technical debt that a company mistakenly considers intellectual property.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A competitor who obtains such a repository may not gain a technological advantage. They may simply receive a blueprint showing what needs to be rewritten.&lt;/p&gt;

&lt;p&gt;This is why the value of software is gradually shifting away from the code itself toward things that are much harder to reproduce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;proprietary data;&lt;/li&gt;
&lt;li&gt;customers;&lt;/li&gt;
&lt;li&gt;business processes;&lt;/li&gt;
&lt;li&gt;domain expertise;&lt;/li&gt;
&lt;li&gt;infrastructure;&lt;/li&gt;
&lt;li&gt;brand and distribution;&lt;/li&gt;
&lt;li&gt;unique algorithms;&lt;/li&gt;
&lt;li&gt;accumulated operational knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code is increasingly becoming &lt;strong&gt;a reproducible material&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This does not mean that all code is worthless. Unique algorithms, highly optimized systems, critical infrastructure, and genuinely proprietary technologies can still be extremely valuable.&lt;/p&gt;

&lt;p&gt;But the key question is changing.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What happens if an AI agent sees our code?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;companies should also ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“How much time and money would it take to build this code again?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the answer is a few months rather than a decade, perhaps the code is no longer a strategic asset.&lt;/p&gt;

&lt;p&gt;Perhaps it is simply a consumable component of the business.&lt;/p&gt;

&lt;p&gt;And this creates an interesting paradox:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A company may be protecting its code from AI not because the code is highly valuable, but because it is protecting its accumulated technical debt.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the age of AI, competitive advantage may no longer come from how much code a company owns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It comes from what cannot be quickly rewritten.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Who Is an AgentOps?</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sat, 22 Aug 2026 15:02:47 +0000</pubDate>
      <link>https://dev.to/mihail2026/who-is-an-agentops-2jbo</link>
      <guid>https://dev.to/mihail2026/who-is-an-agentops-2jbo</guid>
      <description>&lt;p&gt;The rise of AI agents is changing the way we approach automation. Traditional automation follows predefined workflows, while AI agents can &lt;strong&gt;make decisions, choose tools, interact with systems, and change the sequence of actions on their own&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But autonomy creates a new challenge:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you manage all of this in production?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;AgentOps&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is AgentOps?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AgentOps (Agent Operations)&lt;/strong&gt; is a set of practices, tools, and processes for &lt;strong&gt;deploying, monitoring, testing, controlling, and optimizing AI agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In a way, AgentOps is becoming for AI agents what DevOps became for software systems.&lt;/p&gt;

&lt;p&gt;If DevOps asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do we reliably deploy and maintain an application?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AgentOps asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“How do we operate autonomous AI agents safely, reliably, and predictably?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What Does an AgentOps Specialist Do?
&lt;/h3&gt;

&lt;p&gt;Their responsibilities may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;monitoring AI agent performance;&lt;/li&gt;
&lt;li&gt;analyzing agent decisions and action sequences;&lt;/li&gt;
&lt;li&gt;controlling the use of tools and APIs;&lt;/li&gt;
&lt;li&gt;managing model and prompt versions;&lt;/li&gt;
&lt;li&gt;monitoring AI costs;&lt;/li&gt;
&lt;li&gt;detecting errors and unexpected behavior;&lt;/li&gt;
&lt;li&gt;logging and tracing agent execution;&lt;/li&gt;
&lt;li&gt;testing agents before deployment;&lt;/li&gt;
&lt;li&gt;managing permissions and access;&lt;/li&gt;
&lt;li&gt;enforcing security and organizational policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Observability&lt;/strong&gt; is particularly important.&lt;/p&gt;

&lt;p&gt;It is not enough to know that an agent produced the wrong result. You need to understand &lt;strong&gt;why it produced it, what data it used, which tools it called, and what decisions it made along the way&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Is AgentOps Becoming a Separate Discipline?
&lt;/h3&gt;

&lt;p&gt;Traditional software is relatively predictable. AI agents are different: the same request can result in different chains of actions.&lt;/p&gt;

&lt;p&gt;This creates a new engineering layer between AI agent development and business deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Engineering → Agent Development → AgentOps → Business&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AgentOps turns an experimental AI agent into a &lt;strong&gt;manageable production system&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  A New Profession
&lt;/h3&gt;

&lt;p&gt;As autonomous AI systems become more widespread, demand will grow for specialists who can not only build agents but also &lt;strong&gt;operate and manage entire fleets of agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AgentOps may eventually bring together skills from several fields:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevOps + MLOps + Security + AI Engineering + Observability + Cost Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is why AgentOps is more than just another buzzword in AI. It represents a potentially &lt;strong&gt;new engineering discipline emerging as organizations move from individual AI tools to autonomous AI systems&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>agentops</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>What Comes After AI Agents?</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sat, 22 Aug 2026 13:47:29 +0000</pubDate>
      <link>https://dev.to/mihail2026/what-comes-after-ai-agents-gc0</link>
      <guid>https://dev.to/mihail2026/what-comes-after-ai-agents-gc0</guid>
      <description>&lt;p&gt;The AI market is rapidly moving from simple LLM applications toward &lt;strong&gt;AI Agents&lt;/strong&gt;. It is no longer enough for a model to simply answer questions. Agents can use tools, work with data, execute tasks, and make decisions.&lt;/p&gt;

&lt;p&gt;But the next stage is not simply about having more agents. It is about building the &lt;strong&gt;infrastructure for autonomous AI systems&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  From AI Agents to AI Systems
&lt;/h2&gt;

&lt;p&gt;If a single agent can solve an individual task, real businesses will need entire systems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agents → Memory → Tools → Data → Policies → Automation → Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And this is where several new, still underexplored fields are emerging.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. AI Automation Engineering
&lt;/h3&gt;

&lt;p&gt;Agents are beginning to do more than assist employees. They can execute entire business processes: sales, customer support, analytics, document processing, finance, and operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-Agent Systems
&lt;/h3&gt;

&lt;p&gt;The next step is teams of specialized agents that can divide tasks, exchange information, and coordinate their actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. AgentOps
&lt;/h3&gt;

&lt;p&gt;When agents move into production, they need to be monitored, tested, evaluated, and controlled. This creates an emerging discipline similar to DevOps and MLOps, but designed specifically for autonomous AI systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Agent Security &amp;amp; Governance
&lt;/h3&gt;

&lt;p&gt;Agents can gain access to data, APIs, and enterprise systems. As a result, &lt;strong&gt;identity, permissions, auditing, policies, and human approval&lt;/strong&gt; become critical.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Human + AI Workforce
&lt;/h3&gt;

&lt;p&gt;AI is gradually evolving from a tool used by employees into a kind of &lt;strong&gt;digital coworker&lt;/strong&gt;. Humans set goals and oversee outcomes, while agents perform an increasing share of the actual work.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. AI Cost Engineering
&lt;/h3&gt;

&lt;p&gt;An autonomous agent may perform dozens of operations to complete a single task. This creates a need to manage not only quality, but also the &lt;strong&gt;cost of every AI-driven process&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Agent Memory &amp;amp; AI Infrastructure
&lt;/h3&gt;

&lt;p&gt;Agents need long-term memory, organizational knowledge, task state, and interaction history. This is creating a new layer of &lt;strong&gt;AI-native data infrastructure&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Trend
&lt;/h2&gt;

&lt;p&gt;We are gradually moving along this path:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM → RAG → AI Agents → Multi-Agent Systems → Autonomous AI Systems → AI-Native Enterprise&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The next market will therefore be built around a question much bigger than:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“How do you build an AI Agent?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The more important question will be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“How do you build a company where AI agents can safely, efficiently, and autonomously perform real work?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where the next layer of AI Engineering is taking shape — at the intersection of &lt;strong&gt;AI Automation, AgentOps, Security, Governance, Multi-Agent Systems, and Human-AI Collaboration&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Agents are probably not the destination. They are the beginning of a new engineering discipline.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aiagents</category>
      <category>ai</category>
      <category>autonomousaisystems</category>
      <category>agentops</category>
    </item>
    <item>
      <title>New Book: AI Product Manager</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sat, 22 Aug 2026 11:49:52 +0000</pubDate>
      <link>https://dev.to/mihail2026/new-book-ai-product-manager-2oc0</link>
      <guid>https://dev.to/mihail2026/new-book-ai-product-manager-2oc0</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;How to Build, Evaluate, and Evolve Products in the Age of AI Agents&lt;/strong&gt;
&lt;/h2&gt;




&lt;h3&gt;
  
  
  Brief Synopsis
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;AI Product Manager: How to Build, Evaluate, and Evolve Products in the Age of AI Agents&lt;/em&gt;&lt;/strong&gt; is a practical guide for Product Managers, founders, designers, and technology leaders building products in the new era of AI agents.&lt;/p&gt;

&lt;p&gt;The book shows how to use AI not simply as a tool or an additional product feature, but as &lt;strong&gt;part of the entire product development system&lt;/strong&gt;—from user research and hypothesis validation to prototyping, development, evaluation, launch, and continuous improvement.&lt;/p&gt;

&lt;p&gt;Readers will learn how to design AI-native products, decide when to use a conventional workflow versus an AI agent, work with models, context, RAG, tools, and MCP, build evaluation systems, control costs and risks, and turn user feedback into a continuous product improvement loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Readers Will Gain
&lt;/h3&gt;

&lt;p&gt;After reading the book, readers will be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Turn ideas into working prototypes faster&lt;/strong&gt; without immediately requiring a large engineering team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identify where AI creates genuine value&lt;/strong&gt; and where it only adds unnecessary complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design AI-native products and agents&lt;/strong&gt; with the appropriate level of autonomy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use AI throughout the Product Management lifecycle&lt;/strong&gt;—research, discovery, prototyping, development, testing, and feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate AI system quality&lt;/strong&gt; instead of judging products by impressive demos alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manage the cost, latency, security, and reliability&lt;/strong&gt; of AI-powered products.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build effective workflows between Product Managers, AI tools, and AI agents.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make product decisions based on evidence and experimentation&lt;/strong&gt;, rather than intuition alone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shorten the path from a user problem to a production-ready product.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Core Value of the Book
&lt;/h3&gt;

&lt;p&gt;The book does not teach a fixed set of AI tools that may quickly become outdated. Instead, it provides a &lt;strong&gt;practical framework for building products in the age of AI agents&lt;/strong&gt;—a methodology that remains applicable regardless of which models, platforms, and technologies emerge next.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction — The New Product Manager&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What has changed in product development&lt;/li&gt;
&lt;li&gt;From AI features to AI-native products&lt;/li&gt;
&lt;li&gt;The collapse of the distance between idea and prototype&lt;/li&gt;
&lt;li&gt;Why iteration speed has become a product advantage&lt;/li&gt;
&lt;li&gt;What AI can do for a Product Manager—and what it cannot&lt;/li&gt;
&lt;li&gt;The new Product Manager: researcher, builder, operator, and strategist&lt;/li&gt;
&lt;li&gt;The AI Product Development Loop&lt;/li&gt;
&lt;li&gt;How to use this book&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part I — The Foundations of AI Product Management&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 1 — Product Management After AI&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The traditional product development cycle&lt;/li&gt;
&lt;li&gt;The AI-native product development cycle&lt;/li&gt;
&lt;li&gt;What AI actually accelerates&lt;/li&gt;
&lt;li&gt;The cost of moving in the wrong direction faster&lt;/li&gt;
&lt;li&gt;From roadmaps to continuous decision-making&lt;/li&gt;
&lt;li&gt;From feature delivery to learning velocity&lt;/li&gt;
&lt;li&gt;The new responsibilities of the Product Manager&lt;/li&gt;
&lt;li&gt;What should never be delegated to AI&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 2 — AI-Native Product Thinking&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AI-powered vs. AI-assisted vs. AI-native products&lt;/li&gt;
&lt;li&gt;When AI creates genuine product value&lt;/li&gt;
&lt;li&gt;When AI is the wrong solution&lt;/li&gt;
&lt;li&gt;Designing around capabilities instead of features&lt;/li&gt;
&lt;li&gt;Human-in-the-loop vs. human-on-the-loop&lt;/li&gt;
&lt;li&gt;Copilots, workflows, agents, and autonomous systems&lt;/li&gt;
&lt;li&gt;Designing the minimum necessary level of autonomy&lt;/li&gt;
&lt;li&gt;The AI Opportunity Canvas&lt;/li&gt;
&lt;li&gt;AI feasibility assessment&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part II — AI-Powered Product Discovery&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 3 — Understanding Users with AI&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Turning unstructured user data into product insight&lt;/li&gt;
&lt;li&gt;Interviews, support tickets, reviews, chats, and behavioral data&lt;/li&gt;
&lt;li&gt;AI-assisted interview analysis&lt;/li&gt;
&lt;li&gt;Identifying patterns without losing context&lt;/li&gt;
&lt;li&gt;Clustering problems and user needs&lt;/li&gt;
&lt;li&gt;From observations to insights&lt;/li&gt;
&lt;li&gt;From insights to hypotheses&lt;/li&gt;
&lt;li&gt;Avoiding AI-generated research bias&lt;/li&gt;
&lt;li&gt;The AI Research Workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 4 — Competitive Intelligence in the AI Era&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What to analyze beyond feature lists&lt;/li&gt;
&lt;li&gt;Product positioning and user workflows&lt;/li&gt;
&lt;li&gt;Monitoring competitors with AI&lt;/li&gt;
&lt;li&gt;Tracking product and pricing changes&lt;/li&gt;
&lt;li&gt;Analyzing customer sentiment&lt;/li&gt;
&lt;li&gt;Identifying gaps and opportunities&lt;/li&gt;
&lt;li&gt;Separating facts from generated conclusions&lt;/li&gt;
&lt;li&gt;Turning competitive intelligence into product decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 5 — From Problem to Product Hypothesis&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Writing a meaningful problem statement&lt;/li&gt;
&lt;li&gt;Jobs-to-be-Done in AI products&lt;/li&gt;
&lt;li&gt;Identifying AI opportunities&lt;/li&gt;
&lt;li&gt;Formulating product hypotheses&lt;/li&gt;
&lt;li&gt;Defining expected outcomes&lt;/li&gt;
&lt;li&gt;Defining success metrics&lt;/li&gt;
&lt;li&gt;Defining kill criteria&lt;/li&gt;
&lt;li&gt;Testing assumptions before building&lt;/li&gt;
&lt;li&gt;The AI Product Hypothesis Canvas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 6 — Prioritizing AI Opportunities&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why traditional prioritization models are not enough&lt;/li&gt;
&lt;li&gt;User value&lt;/li&gt;
&lt;li&gt;Frequency and severity of the problem&lt;/li&gt;
&lt;li&gt;AI feasibility&lt;/li&gt;
&lt;li&gt;Model quality&lt;/li&gt;
&lt;li&gt;Cost and latency&lt;/li&gt;
&lt;li&gt;Data availability&lt;/li&gt;
&lt;li&gt;Risk and safety&lt;/li&gt;
&lt;li&gt;Strategic value&lt;/li&gt;
&lt;li&gt;Build, buy, or partner&lt;/li&gt;
&lt;li&gt;API, open-source, or proprietary models&lt;/li&gt;
&lt;li&gt;The AI Opportunity Score&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part III — From Idea to Working Prototype&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 7 — Building AI Prototypes&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why static mockups are no longer enough&lt;/li&gt;
&lt;li&gt;Prototype vs. MVP vs. production&lt;/li&gt;
&lt;li&gt;What a prototype should prove&lt;/li&gt;
&lt;li&gt;Designing the smallest useful AI system&lt;/li&gt;
&lt;li&gt;Inputs, processing, model, context, and output&lt;/li&gt;
&lt;li&gt;Simulating AI behavior&lt;/li&gt;
&lt;li&gt;Connecting real data&lt;/li&gt;
&lt;li&gt;Testing the complete user workflow&lt;/li&gt;
&lt;li&gt;From concept to working prototype&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 8 — AI Coding for Product Managers&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How much technical knowledge a modern PM needs&lt;/li&gt;
&lt;li&gt;Understanding frontend, backend, APIs, databases, and deployment&lt;/li&gt;
&lt;li&gt;Working with AI coding agents&lt;/li&gt;
&lt;li&gt;Giving an AI coding agent the right context&lt;/li&gt;
&lt;li&gt;Breaking a product idea into implementation tasks&lt;/li&gt;
&lt;li&gt;Reviewing AI-generated code&lt;/li&gt;
&lt;li&gt;Git, version control, and change management&lt;/li&gt;
&lt;li&gt;Debugging with AI&lt;/li&gt;
&lt;li&gt;Avoiding AI-generated technical debt&lt;/li&gt;
&lt;li&gt;Knowing when to hand the project to engineering&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 9 — Designing AI Workflows&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prompt vs. workflow vs. agent&lt;/li&gt;
&lt;li&gt;Structured outputs&lt;/li&gt;
&lt;li&gt;Sequential workflows&lt;/li&gt;
&lt;li&gt;Decision points&lt;/li&gt;
&lt;li&gt;Tool calling&lt;/li&gt;
&lt;li&gt;State and memory&lt;/li&gt;
&lt;li&gt;Human approval&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Workflow orchestration&lt;/li&gt;
&lt;li&gt;Choosing the simplest architecture that works&lt;/li&gt;
&lt;li&gt;When not to build an agent&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part IV — The Architecture of AI Products&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 10 — The Anatomy of an AI System&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Models&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Knowledge&lt;/li&gt;
&lt;li&gt;Retrieval&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Orchestration&lt;/li&gt;
&lt;li&gt;Guardrails&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Human control&lt;/li&gt;
&lt;li&gt;Designing the complete AI system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 11 — Context Engineering&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why prompt engineering is no longer enough&lt;/li&gt;
&lt;li&gt;What belongs in model context&lt;/li&gt;
&lt;li&gt;System instructions&lt;/li&gt;
&lt;li&gt;User input&lt;/li&gt;
&lt;li&gt;Retrieved information&lt;/li&gt;
&lt;li&gt;Conversation history&lt;/li&gt;
&lt;li&gt;Tools and tool results&lt;/li&gt;
&lt;li&gt;State and memory&lt;/li&gt;
&lt;li&gt;Context selection&lt;/li&gt;
&lt;li&gt;Context compression&lt;/li&gt;
&lt;li&gt;Context pollution&lt;/li&gt;
&lt;li&gt;Retrieval-Augmented Generation&lt;/li&gt;
&lt;li&gt;When RAG is the wrong solution&lt;/li&gt;
&lt;li&gt;Managing context cost and latency&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 12 — Tools, APIs, and MCP&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;From answering questions to taking actions&lt;/li&gt;
&lt;li&gt;Function calling&lt;/li&gt;
&lt;li&gt;Tool design&lt;/li&gt;
&lt;li&gt;API integration&lt;/li&gt;
&lt;li&gt;Model Context Protocol&lt;/li&gt;
&lt;li&gt;Connecting business systems&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Files&lt;/li&gt;
&lt;li&gt;Browsers&lt;/li&gt;
&lt;li&gt;CRM and internal tools&lt;/li&gt;
&lt;li&gt;Read vs. write operations&lt;/li&gt;
&lt;li&gt;Permission boundaries&lt;/li&gt;
&lt;li&gt;Approval workflows&lt;/li&gt;
&lt;li&gt;Auditing agent actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 13 — Memory and State&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why conversation history is not memory&lt;/li&gt;
&lt;li&gt;Working memory&lt;/li&gt;
&lt;li&gt;Long-term memory&lt;/li&gt;
&lt;li&gt;User memory&lt;/li&gt;
&lt;li&gt;Product state&lt;/li&gt;
&lt;li&gt;Agent state&lt;/li&gt;
&lt;li&gt;What should be remembered&lt;/li&gt;
&lt;li&gt;What should never be remembered&lt;/li&gt;
&lt;li&gt;Memory retrieval&lt;/li&gt;
&lt;li&gt;Memory decay and correction&lt;/li&gt;
&lt;li&gt;When memory makes a product worse&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part V — Building AI Agents&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 14 — From Copilots to Autonomous Agents&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chat interfaces&lt;/li&gt;
&lt;li&gt;Copilots&lt;/li&gt;
&lt;li&gt;AI workflows&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;Autonomous agents&lt;/li&gt;
&lt;li&gt;Multi-agent systems&lt;/li&gt;
&lt;li&gt;Increasing autonomy and increasing risk&lt;/li&gt;
&lt;li&gt;Choosing the right level of autonomy&lt;/li&gt;
&lt;li&gt;Where agents create real value&lt;/li&gt;
&lt;li&gt;Where agents create unnecessary complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 15 — Designing Reliable AI Agents&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Defining the agent's goal&lt;/li&gt;
&lt;li&gt;Inputs and context&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Decision logic&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;li&gt;Success criteria&lt;/li&gt;
&lt;li&gt;Failure conditions&lt;/li&gt;
&lt;li&gt;Stop conditions&lt;/li&gt;
&lt;li&gt;Escalation&lt;/li&gt;
&lt;li&gt;Auditability&lt;/li&gt;
&lt;li&gt;The Agent Specification&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 16 — Agent UX&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Designing for interaction with autonomous systems&lt;/li&gt;
&lt;li&gt;When an agent should ask for permission&lt;/li&gt;
&lt;li&gt;Showing agent state and progress&lt;/li&gt;
&lt;li&gt;Communicating uncertainty&lt;/li&gt;
&lt;li&gt;Explaining actions&lt;/li&gt;
&lt;li&gt;Undo and rollback&lt;/li&gt;
&lt;li&gt;Correcting an agent&lt;/li&gt;
&lt;li&gt;Human takeover&lt;/li&gt;
&lt;li&gt;Failure states&lt;/li&gt;
&lt;li&gt;Designing trust without creating false confidence&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part VI — Evaluation: Proving That AI Works&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 17 — Why a Successful Demo Proves Nothing&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The difference between demos and reliable products&lt;/li&gt;
&lt;li&gt;Model variability&lt;/li&gt;
&lt;li&gt;Edge cases&lt;/li&gt;
&lt;li&gt;Regression&lt;/li&gt;
&lt;li&gt;Failure at scale&lt;/li&gt;
&lt;li&gt;Hidden failure modes&lt;/li&gt;
&lt;li&gt;Evaluation-driven product development&lt;/li&gt;
&lt;li&gt;Defining quality before launch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 18 — Building an Evaluation System&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What an evaluation actually measures&lt;/li&gt;
&lt;li&gt;Golden datasets&lt;/li&gt;
&lt;li&gt;Test cases&lt;/li&gt;
&lt;li&gt;Automated evaluation&lt;/li&gt;
&lt;li&gt;Human evaluation&lt;/li&gt;
&lt;li&gt;LLM-as-a-judge&lt;/li&gt;
&lt;li&gt;Pairwise comparison&lt;/li&gt;
&lt;li&gt;Regression testing&lt;/li&gt;
&lt;li&gt;Continuous evaluation&lt;/li&gt;
&lt;li&gt;Evaluating prompts, models, tools, and agents&lt;/li&gt;
&lt;li&gt;Building an evaluation pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 19 — Measuring AI Product Performance&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Product metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Activation&lt;/li&gt;
&lt;li&gt;Retention&lt;/li&gt;
&lt;li&gt;Conversion&lt;/li&gt;
&lt;li&gt;Task completion&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI quality metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Accuracy&lt;/li&gt;
&lt;li&gt;Relevance&lt;/li&gt;
&lt;li&gt;Groundedness&lt;/li&gt;
&lt;li&gt;Hallucination rate&lt;/li&gt;
&lt;li&gt;Tool success rate&lt;/li&gt;
&lt;li&gt;Escalation rate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  System metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Token usage&lt;/li&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  User metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Acceptance rate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Correction rate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trust&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Abandonment&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choosing metrics that reflect actual user value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building an AI product scorecard&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part VII — From Prototype to Production&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 20 — Productionizing AI Products&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What changes after the first real users arrive&lt;/li&gt;
&lt;li&gt;Reliability engineering for AI systems&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Logging&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Model versioning&lt;/li&gt;
&lt;li&gt;Prompt versioning&lt;/li&gt;
&lt;li&gt;Tool versioning&lt;/li&gt;
&lt;li&gt;Fallback models&lt;/li&gt;
&lt;li&gt;Human fallback&lt;/li&gt;
&lt;li&gt;Incident management&lt;/li&gt;
&lt;li&gt;Rollbacks&lt;/li&gt;
&lt;li&gt;Continuous improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 21 — AI Security&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prompt injection&lt;/li&gt;
&lt;li&gt;Data leakage&lt;/li&gt;
&lt;li&gt;Excessive agency&lt;/li&gt;
&lt;li&gt;Tool abuse&lt;/li&gt;
&lt;li&gt;Malicious inputs&lt;/li&gt;
&lt;li&gt;Sensitive information&lt;/li&gt;
&lt;li&gt;Permission boundaries&lt;/li&gt;
&lt;li&gt;Sandboxing&lt;/li&gt;
&lt;li&gt;Audit logs&lt;/li&gt;
&lt;li&gt;Red teaming&lt;/li&gt;
&lt;li&gt;Security by design&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 22 — Privacy and AI Governance&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What data is sent to models&lt;/li&gt;
&lt;li&gt;Data retention&lt;/li&gt;
&lt;li&gt;Access control&lt;/li&gt;
&lt;li&gt;Sensitive data&lt;/li&gt;
&lt;li&gt;Enterprise requirements&lt;/li&gt;
&lt;li&gt;AI usage policies&lt;/li&gt;
&lt;li&gt;Human accountability&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Governance for agentic systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part VIII — The Economics of AI Products&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 23 — AI Unit Economics&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why AI changes software economics&lt;/li&gt;
&lt;li&gt;Cost per request&lt;/li&gt;
&lt;li&gt;Cost per task&lt;/li&gt;
&lt;li&gt;Cost per user&lt;/li&gt;
&lt;li&gt;Token economics&lt;/li&gt;
&lt;li&gt;Model pricing&lt;/li&gt;
&lt;li&gt;Latency vs. cost&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Model routing&lt;/li&gt;
&lt;li&gt;Small vs. large models&lt;/li&gt;
&lt;li&gt;Infrastructure costs&lt;/li&gt;
&lt;li&gt;Gross margin&lt;/li&gt;
&lt;li&gt;Cost-aware product design&lt;/li&gt;
&lt;li&gt;When an AI feature is economically unsustainable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 24 — Model Strategy&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How to choose a model&lt;/li&gt;
&lt;li&gt;Quality vs. cost vs. latency&lt;/li&gt;
&lt;li&gt;Proprietary APIs vs. open-source models&lt;/li&gt;
&lt;li&gt;Single-model vs. multi-model architectures&lt;/li&gt;
&lt;li&gt;Model routing&lt;/li&gt;
&lt;li&gt;Fine-tuning&lt;/li&gt;
&lt;li&gt;RAG vs. fine-tuning&lt;/li&gt;
&lt;li&gt;Specialized models&lt;/li&gt;
&lt;li&gt;Model substitution&lt;/li&gt;
&lt;li&gt;Vendor lock-in&lt;/li&gt;
&lt;li&gt;Designing for model portability&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part IX — The AI Product Operating System&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 25 — Building an AI Research System&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Research sources&lt;/li&gt;
&lt;li&gt;Automated collection&lt;/li&gt;
&lt;li&gt;Processing and normalization&lt;/li&gt;
&lt;li&gt;Analysis&lt;/li&gt;
&lt;li&gt;Insight extraction&lt;/li&gt;
&lt;li&gt;Hypothesis generation&lt;/li&gt;
&lt;li&gt;Decision-making&lt;/li&gt;
&lt;li&gt;Research repositories&lt;/li&gt;
&lt;li&gt;Decision logs&lt;/li&gt;
&lt;li&gt;Keeping research continuously updated&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 26 — Building an AI Feedback System&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Collecting product feedback&lt;/li&gt;
&lt;li&gt;Support tickets&lt;/li&gt;
&lt;li&gt;Reviews&lt;/li&gt;
&lt;li&gt;Interviews&lt;/li&gt;
&lt;li&gt;Behavioral signals&lt;/li&gt;
&lt;li&gt;Automatic classification&lt;/li&gt;
&lt;li&gt;Clustering&lt;/li&gt;
&lt;li&gt;Prioritization&lt;/li&gt;
&lt;li&gt;Detecting emerging problems&lt;/li&gt;
&lt;li&gt;Turning feedback into experiments&lt;/li&gt;
&lt;li&gt;Closing the feedback loop&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 27 — Building an AI Meeting System&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before the meeting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Context gathering&lt;/li&gt;
&lt;li&gt;Agenda&lt;/li&gt;
&lt;li&gt;Questions&lt;/li&gt;
&lt;li&gt;Stakeholder analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  During the meeting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Transcription&lt;/li&gt;
&lt;li&gt;Decisions&lt;/li&gt;
&lt;li&gt;Open questions&lt;/li&gt;
&lt;li&gt;Action items&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  After the meeting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Owners&lt;/li&gt;
&lt;li&gt;Deadlines&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Follow-up&lt;/li&gt;
&lt;li&gt;Updating product knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 28 — Building an AI Documentation System&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Product briefs&lt;/li&gt;
&lt;li&gt;PRDs&lt;/li&gt;
&lt;li&gt;Decision logs&lt;/li&gt;
&lt;li&gt;Architecture decision records&lt;/li&gt;
&lt;li&gt;Experiment logs&lt;/li&gt;
&lt;li&gt;Changelogs&lt;/li&gt;
&lt;li&gt;Knowledge bases&lt;/li&gt;
&lt;li&gt;Keeping documentation synchronized with reality&lt;/li&gt;
&lt;li&gt;Documentation as a by-product of product development&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part X — The AI-Native Product Team&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 29 — The New Product Team&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The evolving role of the Product Manager&lt;/li&gt;
&lt;li&gt;Product Design in AI products&lt;/li&gt;
&lt;li&gt;Software Engineering in the age of AI coding&lt;/li&gt;
&lt;li&gt;AI Engineering&lt;/li&gt;
&lt;li&gt;Data Engineering&lt;/li&gt;
&lt;li&gt;Domain expertise&lt;/li&gt;
&lt;li&gt;Cross-functional AI teams&lt;/li&gt;
&lt;li&gt;Human and AI workers as one operating system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 30 — The AI-Native Development Process&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stage 1 — Problem
&lt;/h3&gt;

&lt;p&gt;Define the problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2 — Discovery
&lt;/h3&gt;

&lt;p&gt;Understand users and context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3 — Hypothesis
&lt;/h3&gt;

&lt;p&gt;Define the opportunity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 4 — Prototype
&lt;/h3&gt;

&lt;p&gt;Build the smallest useful system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 5 — Evaluation
&lt;/h3&gt;

&lt;p&gt;Measure quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 6 — User Testing
&lt;/h3&gt;

&lt;p&gt;Test with real users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 7 — MVP
&lt;/h3&gt;

&lt;p&gt;Build the minimum production product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 8 — Production
&lt;/h3&gt;

&lt;p&gt;Deploy and operate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 9 — Monitoring
&lt;/h3&gt;

&lt;p&gt;Measure quality, cost, and behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 10 — Iteration
&lt;/h3&gt;

&lt;p&gt;Use evidence to decide what happens next.&lt;/p&gt;

&lt;p&gt;For every stage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inputs&lt;/li&gt;
&lt;li&gt;Activities&lt;/li&gt;
&lt;li&gt;AI capabilities&lt;/li&gt;
&lt;li&gt;Outputs&lt;/li&gt;
&lt;li&gt;Decision criteria&lt;/li&gt;
&lt;li&gt;Kill criteria&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part XI — Real-World AI Product Cases&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 31 — Adding AI to an Existing Product&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A complete case study:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem → Research → Hypothesis → Prototype → Architecture → Evaluation → Economics → Launch&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 32 — Building an AI-Native Product from Scratch&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A complete greenfield case:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Market opportunity → User problem → AI-native workflow → Agent → Evaluation → MVP → Production&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 33 — Building an AI Operations Agent&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A practical case involving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;knowledge retrieval;&lt;/li&gt;
&lt;li&gt;classification;&lt;/li&gt;
&lt;li&gt;decision-making;&lt;/li&gt;
&lt;li&gt;tool use;&lt;/li&gt;
&lt;li&gt;automated actions;&lt;/li&gt;
&lt;li&gt;human approval;&lt;/li&gt;
&lt;li&gt;monitoring.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 34 — Knowing When to Kill an AI Product&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Poor model quality&lt;/li&gt;
&lt;li&gt;Insufficient user value&lt;/li&gt;
&lt;li&gt;High operating cost&lt;/li&gt;
&lt;li&gt;Low adoption&lt;/li&gt;
&lt;li&gt;Unacceptable risk&lt;/li&gt;
&lt;li&gt;Lack of defensibility&lt;/li&gt;
&lt;li&gt;Better non-AI alternatives&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kill criteria
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;How to define them before development&lt;/li&gt;
&lt;li&gt;How to recognize sunk-cost bias&lt;/li&gt;
&lt;li&gt;How to shut down an AI experiment without wasting the learning&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Part XII — The AI Product Manager's Operating System&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 35 — The AI Product Operating System&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A unified framework connecting:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discovery → Decision → Creation → Intelligence → Evaluation → Production → Economics → Learning&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The discovery layer&lt;/li&gt;
&lt;li&gt;The decision layer&lt;/li&gt;
&lt;li&gt;The creation layer&lt;/li&gt;
&lt;li&gt;The intelligence layer&lt;/li&gt;
&lt;li&gt;The evaluation layer&lt;/li&gt;
&lt;li&gt;The production layer&lt;/li&gt;
&lt;li&gt;The economics layer&lt;/li&gt;
&lt;li&gt;The learning layer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 36 — Building Your Personal AI Product Stack&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Research layer&lt;/li&gt;
&lt;li&gt;Reasoning layer&lt;/li&gt;
&lt;li&gt;Creation layer&lt;/li&gt;
&lt;li&gt;Data layer&lt;/li&gt;
&lt;li&gt;Agent layer&lt;/li&gt;
&lt;li&gt;Evaluation layer&lt;/li&gt;
&lt;li&gt;Communication layer&lt;/li&gt;
&lt;li&gt;Selecting the minimum viable tool stack&lt;/li&gt;
&lt;li&gt;Avoiding tool sprawl&lt;/li&gt;
&lt;li&gt;Designing a replaceable AI stack&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Chapter 37 — The 30-Day AI Product Manager Transformation&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Week 1 — Research
&lt;/h3&gt;

&lt;p&gt;Build an AI-assisted research workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 2 — Prototype
&lt;/h3&gt;

&lt;p&gt;Turn a product problem into a working prototype.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 3 — Agents
&lt;/h3&gt;

&lt;p&gt;Build a workflow or agent that performs a real task.&lt;/p&gt;

&lt;h3&gt;
  
  
  Week 4 — Evaluation and Launch
&lt;/h3&gt;

&lt;p&gt;Measure quality, test with users, calculate economics, and define the production path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final deliverable
&lt;/h3&gt;

&lt;p&gt;A working AI product experiment—not a collection of prompts or tutorials.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Appendices&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix A — AI Product Canvas&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A complete one-page framework covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem&lt;/li&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Opportunity&lt;/li&gt;
&lt;li&gt;AI capability&lt;/li&gt;
&lt;li&gt;Workflow&lt;/li&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Risk&lt;/li&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix B — AI Product Requirements Document&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A practical PRD template for AI features and AI-native products.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix C — Agent Specification&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Goal&lt;/li&gt;
&lt;li&gt;Inputs&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;li&gt;Output&lt;/li&gt;
&lt;li&gt;Evaluation&lt;/li&gt;
&lt;li&gt;Failure conditions&lt;/li&gt;
&lt;li&gt;Escalation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix D — AI Evaluation Template&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Test case&lt;/li&gt;
&lt;li&gt;Input&lt;/li&gt;
&lt;li&gt;Expected behavior&lt;/li&gt;
&lt;li&gt;Actual output&lt;/li&gt;
&lt;li&gt;Score&lt;/li&gt;
&lt;li&gt;Failure category&lt;/li&gt;
&lt;li&gt;Severity&lt;/li&gt;
&lt;li&gt;Regression status&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix E — AI Risk Register&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Risk&lt;/li&gt;
&lt;li&gt;Probability&lt;/li&gt;
&lt;li&gt;Impact&lt;/li&gt;
&lt;li&gt;Mitigation&lt;/li&gt;
&lt;li&gt;Owner&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix F — AI Unit Economics Calculator&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Users&lt;/li&gt;
&lt;li&gt;Tasks&lt;/li&gt;
&lt;li&gt;Tokens&lt;/li&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;Cost per task&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Revenue&lt;/li&gt;
&lt;li&gt;Gross margin&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix G — AI Product Launch Checklist&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Product&lt;/li&gt;
&lt;li&gt;UX&lt;/li&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Evaluation&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Support&lt;/li&gt;
&lt;li&gt;Rollback&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Appendix H — Product Decision Log&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Decision&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Alternatives&lt;/li&gt;
&lt;li&gt;Evidence&lt;/li&gt;
&lt;li&gt;Decision&lt;/li&gt;
&lt;li&gt;Expected outcome&lt;/li&gt;
&lt;li&gt;Review date&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Book positioning&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI Product Manager&lt;/strong&gt; is a practical guide for Product Managers, founders, designers, and technology leaders who need to build products in an environment where AI can participate in research, design, development, decision-making, and execution.&lt;/p&gt;

&lt;p&gt;The book deliberately avoids becoming a catalog of prompts or a tutorial for a particular AI platform. Instead, it provides a &lt;strong&gt;durable product-development framework&lt;/strong&gt; that remains useful as models and tools change.&lt;/p&gt;

&lt;p&gt;The central proposition is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The next generation of Product Managers will not merely manage teams that build AI products. They will design systems in which people, models, agents, data, and software work together as one product-development organization.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This structure gives the publisher a book that is positioned not as another introductory AI title, but as a &lt;strong&gt;practical product-management framework for the agentic AI era&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>newbook</category>
      <category>aiproductmanager</category>
      <category>productmanager</category>
      <category>ai</category>
    </item>
    <item>
      <title>YouTube + AI: How to Know in 5 Minutes If a Video Is Worth Watching</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sat, 22 Aug 2026 09:10:55 +0000</pubDate>
      <link>https://dev.to/mihail2026/youtube-ai-how-to-know-in-5-minutes-if-a-video-is-worth-watching-2po</link>
      <guid>https://dev.to/mihail2026/youtube-ai-how-to-know-in-5-minutes-if-a-video-is-worth-watching-2po</guid>
      <description>&lt;p&gt;You can easily spend half an hour on YouTube watching a video that turns out to be mostly empty talk.&lt;/p&gt;

&lt;p&gt;The title promises:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“I Found a Secret That Will Change Your Life!”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The thumbnail screams &lt;em&gt;BREAKING!&lt;/em&gt; and &lt;em&gt;YOU NEED TO KNOW THIS!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And then… the first 10 minutes are an introduction, the next 15 minutes repeat things you already knew, and the author finally gets to the point somewhere near the end.&lt;/p&gt;

&lt;p&gt;But there’s a simple way to find out what a video is &lt;strong&gt;really about before watching it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And all you need is AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 The Simple Hack: Get the Transcript and Give It to AI
&lt;/h2&gt;

&lt;p&gt;Most YouTube videos have subtitles or an automatically generated transcript.&lt;/p&gt;

&lt;p&gt;And that transcript is essentially the &lt;strong&gt;textual version of the entire video&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of watching the whole thing, you can use a simple workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;YouTube → Transcript → AI → Summary + Analysis → Decision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In just a few minutes, you can find out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the video is actually about&lt;/li&gt;
&lt;li&gt;What the creator’s main arguments and ideas are&lt;/li&gt;
&lt;li&gt;Whether there is anything genuinely useful&lt;/li&gt;
&lt;li&gt;Whether the content matches the title&lt;/li&gt;
&lt;li&gt;Whether the video contains new information or just repeats common knowledge&lt;/li&gt;
&lt;li&gt;Whether it’s worth spending 30–60 minutes watching it&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🧠 How It Works
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1. Find an Interesting Video
&lt;/h3&gt;

&lt;p&gt;Let’s say you come across a video titled:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“I Used ChatGPT for 30 Days — Here’s What Happened”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The video is &lt;strong&gt;47 minutes long&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You’re curious, but you don’t really want to spend almost an hour watching it just to find out whether there’s anything useful inside.&lt;/p&gt;

&lt;p&gt;That’s where AI comes in.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Get the YouTube Transcript
&lt;/h3&gt;

&lt;p&gt;If the video has subtitles or an automatically generated transcript, copy or download the text.&lt;/p&gt;

&lt;p&gt;You don’t need to read it yourself.&lt;/p&gt;

&lt;p&gt;The goal is simply to give the transcript to an AI assistant.&lt;/p&gt;

&lt;p&gt;Even if automatically generated subtitles contain a few mistakes, they’re usually good enough for understanding the overall content.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Ask AI to Analyze It — Not Just Summarize It
&lt;/h3&gt;

&lt;p&gt;This is important.&lt;/p&gt;

&lt;p&gt;Don’t just ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Summarize this video.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Give the AI a specific task.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Analyze the transcript of this YouTube video.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Briefly explain what the video is about.&lt;/li&gt;
&lt;li&gt;List the 5–10 most important ideas.&lt;/li&gt;
&lt;li&gt;Separate facts from the creator’s opinions.&lt;/li&gt;
&lt;li&gt;Identify specific tips, examples, and conclusions.&lt;/li&gt;
&lt;li&gt;Compare the video’s actual content with its title.&lt;/li&gt;
&lt;li&gt;Is there any genuinely new or practically useful information?&lt;/li&gt;
&lt;li&gt;Point out unnecessary repetition or parts where the creator goes off-topic.&lt;/li&gt;
&lt;li&gt;Finally, give me a verdict: &lt;strong&gt;Is it worth watching the full video, and who would benefit from watching it?&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;That last question is particularly useful.&lt;/p&gt;

&lt;p&gt;You’re not just asking AI to tell you &lt;strong&gt;what the video says&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You’re asking whether the video deserves &lt;strong&gt;your time&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⏱️ The Most Useful Question: “Should I Watch It?”
&lt;/h1&gt;

&lt;p&gt;Instead of a generic summary, ask AI for a clear verdict.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ Verdict: You probably don’t need to watch the whole thing.
&lt;/h3&gt;

&lt;p&gt;The video contains a few useful ideas, but most of it consists of the creator’s personal experience and a repetition of well-known ChatGPT capabilities.&lt;/p&gt;

&lt;p&gt;Reading the summary and watching the section about the actual experiment should be enough.&lt;/p&gt;

&lt;p&gt;Or you might get the opposite result:&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Verdict: This video is worth watching.
&lt;/h3&gt;

&lt;p&gt;The creator presents several specific use cases, provides actual results and demonstrates the process step by step.&lt;/p&gt;

&lt;p&gt;The summary captures the main ideas, but watching the full video would be useful if you want to understand the practical implementation.&lt;/p&gt;

&lt;p&gt;This can save you time not only on &lt;strong&gt;watching the video&lt;/strong&gt;, but also on &lt;strong&gt;deciding whether to watch it in the first place&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎯 Is It Clickbait?
&lt;/h1&gt;

&lt;p&gt;This is where the method gets even more interesting.&lt;/p&gt;

&lt;p&gt;A YouTube title and thumbnail are the &lt;strong&gt;packaging&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The actual video is the &lt;strong&gt;product&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And sometimes the two are very different.&lt;/p&gt;

&lt;p&gt;You can ask AI to compare them directly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Compare the video title with its actual content. How accurately does the title represent what the creator discusses? Are there signs of clickbait? Rate the match from 1 to 10 and explain your rating.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;h3&gt;
  
  
  Title
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“This ChatGPT Feature Will Replace Half Your Employees!”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  AI’s assessment
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The title significantly exaggerates the actual content. The creator demonstrates how several tasks can be automated, but the video does not provide evidence that employees can actually be replaced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Title-to-content match: 4/10.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You've just created your own little &lt;strong&gt;anti-clickbait filter&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔎 You Can Go Even Further
&lt;/h1&gt;

&lt;p&gt;What if the video is two hours long?&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an interview&lt;/li&gt;
&lt;li&gt;a podcast&lt;/li&gt;
&lt;li&gt;a conference talk&lt;/li&gt;
&lt;li&gt;a lecture&lt;/li&gt;
&lt;li&gt;a tutorial&lt;/li&gt;
&lt;li&gt;a business case study&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can ask AI:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Identify the most important moments in the transcript and provide the approximate timestamps where they occur.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You might get something like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12:40&lt;/strong&gt; — The creator explains the main idea&lt;br&gt;
&lt;strong&gt;27:15&lt;/strong&gt; — Interesting real-world example&lt;br&gt;
&lt;strong&gt;48:30&lt;/strong&gt; — Practical tip&lt;br&gt;
&lt;strong&gt;1:17:20&lt;/strong&gt; — Most important part of the interview&lt;/p&gt;

&lt;p&gt;Now you don’t have to watch two hours.&lt;/p&gt;

&lt;p&gt;You can jump directly to the parts that actually matter to you.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚠️ There Is One Important Limitation
&lt;/h1&gt;

&lt;p&gt;AI is analyzing the &lt;strong&gt;transcript&lt;/strong&gt;, not necessarily the entire video.&lt;/p&gt;

&lt;p&gt;If the creator shows something on screen, uses charts, demonstrates software, or relies heavily on visual information, the transcript may not capture it.&lt;/p&gt;

&lt;p&gt;The same applies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;humor&lt;/li&gt;
&lt;li&gt;tone of voice&lt;/li&gt;
&lt;li&gt;visual demonstrations&lt;/li&gt;
&lt;li&gt;editing&lt;/li&gt;
&lt;li&gt;facial expressions&lt;/li&gt;
&lt;li&gt;atmosphere&lt;/li&gt;
&lt;li&gt;important information shown only on screen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A transcript can tell you &lt;strong&gt;what was said&lt;/strong&gt;, but it doesn’t always tell you &lt;strong&gt;what it felt like to watch the video&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So the best approach is not to think of AI as a complete replacement for YouTube.&lt;/p&gt;

&lt;p&gt;Think of it as a &lt;strong&gt;filter that helps you decide where your attention is worth spending&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚡ The 5-Minute Workflow
&lt;/h1&gt;

&lt;p&gt;Here’s the whole process:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;① Find an interesting video&lt;/strong&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;strong&gt;② Check how long it is&lt;/strong&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;strong&gt;③ Get the transcript&lt;/strong&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;strong&gt;④ Upload it to your AI assistant&lt;/strong&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;strong&gt;⑤ Ask for analysis — not just a summary&lt;/strong&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;strong&gt;⑥ Get the key ideas + clickbait check + verdict&lt;/strong&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;strong&gt;⑦ Decide: watch everything, watch selected parts, or skip it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of spending &lt;strong&gt;40 minutes watching&lt;/strong&gt;, you may spend &lt;strong&gt;5 minutes understanding&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Bottom Line
&lt;/h1&gt;

&lt;p&gt;YouTube is designed to make us &lt;strong&gt;click&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI can help us &lt;strong&gt;understand first — and click second&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not every 40-minute video deserves 40 minutes of your life.&lt;/p&gt;

&lt;p&gt;And not every sensational title hides valuable information.&lt;/p&gt;

&lt;p&gt;So next time you see an interesting YouTube video, &lt;strong&gt;don’t press Play immediately&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Get the transcript.&lt;/p&gt;

&lt;p&gt;Give it to AI.&lt;/p&gt;

&lt;p&gt;And ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“What is actually valuable in this video, does the content match the title, and is it worth watching the whole thing?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sometimes AI will save you 40 minutes.&lt;/p&gt;

&lt;p&gt;And sometimes it will tell you that behind the clickbait title is actually a video worth watching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your time is valuable. Let AI help you spend it on the content that matters.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>simplehack</category>
      <category>youtube</category>
    </item>
    <item>
      <title>Who Is an AI Automation Specialist?</title>
      <dc:creator>The AI Shift</dc:creator>
      <pubDate>Sat, 22 Aug 2026 08:53:29 +0000</pubDate>
      <link>https://dev.to/mihail2026/who-is-an-ai-automation-specialist-4l9i</link>
      <guid>https://dev.to/mihail2026/who-is-an-ai-automation-specialist-4l9i</guid>
      <description>&lt;p&gt;AI Automation Specialist is a professional who helps companies automate business processes using artificial intelligence.&lt;/p&gt;

&lt;p&gt;Their role goes far beyond simply using ChatGPT or another AI tool. The key question is:&lt;/p&gt;

&lt;p&gt;Which parts of real-world work can be delegated to AI, and how can AI be integrated into an existing workflow?&lt;/p&gt;

&lt;p&gt;⚙️ &lt;strong&gt;What Does an AI Automation Specialist Do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A specialist analyzes how a company or department works and identifies tasks that AI can perform independently.&lt;/p&gt;

&lt;p&gt;For example, AI can be used to:&lt;/p&gt;

&lt;p&gt;📩 Process incoming requests&lt;br&gt;
📄 Analyze documents&lt;br&gt;
📊 Prepare reports&lt;br&gt;
💻 Write and review code&lt;br&gt;
🔎 Search for and structure information&lt;br&gt;
🔄 Transfer data between different systems&lt;/p&gt;

&lt;p&gt;The goal is not simply to introduce AI into a company, but to build an efficient end-to-end workflow around it.&lt;/p&gt;

&lt;p&gt;🧩 &lt;strong&gt;More Than Just AI Tools&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AI Automation Specialist does not work only with AI models.&lt;/p&gt;

&lt;p&gt;They need to understand the entire workflow:&lt;/p&gt;

&lt;p&gt;Task → Context → AI → Validation → Result → Action&lt;/p&gt;

&lt;p&gt;This means understanding how a task is defined, what information AI needs, how its output should be verified, and what happens with the result afterward.&lt;/p&gt;

&lt;p&gt;One of the key ideas discussed in the interview is the transition from:&lt;/p&gt;

&lt;p&gt;🔹 Automating individual actions&lt;/p&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;p&gt;🔹 Automating the complete work cycle&lt;/p&gt;

&lt;p&gt;This represents an important stage in the evolution of AI in the workplace.&lt;/p&gt;

&lt;p&gt;🧠 &lt;strong&gt;What Skills Are Needed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The profession combines several areas of expertise.&lt;/p&gt;

&lt;p&gt;🔹 Business Process Understanding&lt;/p&gt;

&lt;p&gt;The ability to understand how a business actually operates and where automation can create value.&lt;/p&gt;

&lt;p&gt;🔹 Systems Thinking&lt;/p&gt;

&lt;p&gt;Seeing the entire process rather than focusing on a single task or tool.&lt;/p&gt;

&lt;p&gt;🔹 AI Interaction&lt;/p&gt;

&lt;p&gt;Knowing how to formulate tasks, provide context, and structure information so that AI can perform reliably.&lt;/p&gt;

&lt;p&gt;🔹 Context Management&lt;/p&gt;

&lt;p&gt;Organizing:&lt;/p&gt;

&lt;p&gt;📚 documentation&lt;br&gt;
📊 data&lt;br&gt;
🧾 previous decisions&lt;br&gt;
🔗 business rules&lt;br&gt;
🗂️ other relevant materials&lt;/p&gt;

&lt;p&gt;This context allows AI to produce much more useful and consistent results.&lt;/p&gt;

&lt;p&gt;🔹 Automation&lt;/p&gt;

&lt;p&gt;Understanding how different AI tools, applications, databases, and business systems can work together.&lt;/p&gt;

&lt;p&gt;You don't necessarily have to be a programmer.&lt;/p&gt;

&lt;p&gt;Depending on the company, an AI Automation Specialist may combine the skills of a business analyst, automation specialist, AI engineer, and business process expert.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Why Is This Profession Promising?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI is gradually becoming not just a separate tool, but a part of the workflow itself.&lt;/p&gt;

&lt;p&gt;This creates demand for people who can bridge the gap between:&lt;/p&gt;

&lt;p&gt;🤖 AI capabilities&lt;br&gt;
↓&lt;br&gt;
⚙️ Business processes&lt;br&gt;
↓&lt;br&gt;
💰 Measurable business results&lt;/p&gt;

&lt;p&gt;The most valuable question is no longer:&lt;/p&gt;

&lt;p&gt;“How can we use AI?”&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;p&gt;“What exactly can we delegate to AI, and how can we redesign the workflow so that it actually creates business value?”&lt;/p&gt;

&lt;p&gt;🎯 &lt;strong&gt;The Role in One Sentence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AI Automation Specialist connects the capabilities of artificial intelligence with the real work of a business — turning AI from a tool into an integrated part of the workflow.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
