PageSourceSearch

https://celestify.com/blog/the-ai-models-are-the-easy-part

html celestify.com collected 2026-10-04 22:07:54 UTC 99,566 bytes, 2 lines download raw bytes

1<!DOCTYPE html><html lang="en" class="__variable_0dc7d2"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/293bdbb2c1cb6716-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="https://celestify.com/payload-api/media/file/00707027e857150131269b5f10623b16628a0992-800x800.jpg" as="image"/><link rel="preload" href="https://celestify.com/payload-api/media/file/1716084698763.jpeg" as="image"/><link rel="stylesheet" href="/_next/static/css/33e453de1ae92b8d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3cc2b7bdf98d5a2b.js"/>
1<script src="/_next/static/chunks/d2891261-3e2d8de1462d5580.js" async=""></script>
1<script src="/_next/static/chunks/1124-fb52c32cc35e7105.js" async=""></script>
1<script src="/_next/static/chunks/main-app-cce624366ad71a2f.js" async=""></script>
1<script src="/_next/static/chunks/22302548-9e0716f75a59e6c3.js" async=""></script>
1<script src="/_next/static/chunks/1766-f8b53247ae39f908.js" async=""></script>
1<script src="/_next/static/chunks/app/(frontend)/layout-5d54a033d20a9405.js" async=""></script>
1<script src="/_next/static/chunks/115-c9a403bc108dd3d6.js" async=""></script>
1<script src="/_next/static/chunks/24-5447bd5adfb3cf0c.js" async=""></script>
1<script src="/_next/static/chunks/7048-1593614faddd6414.js" async=""></script>
1<script src="/_next/static/chunks/4877-c8c73ae1beca9220.js" async=""></script>
1<script src="/_next/static/chunks/4415-247a6f8cfe9a9c17.js" async=""></script>
1<script src="/_next/static/chunks/app/(frontend)/blog/%5Bslug%5D/page-895ce4fb42d544a8.js" async=""></script>
1<link rel="preload" href="https://static.claydar.com/init.v1.js?id=c5ZmZB6jsT" as="script"/><link rel="preload" href="https://r2.leadsy.ai/tag.js" as="script"/><link rel="alternate" type="application/rss+xml" title="The Celestify Blog" href="/blog/feed.xml"/><meta name="theme-color" content="#ffffff"/><meta name="msapplication-TileColor" content="#ffffff"/><meta name="next-size-adjust" content=""/><title>The AI models are the easy part - Celestify</title><meta name="description" content="AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI into systems that perform, scale, and make commercial sense."/><meta name="author" content="Daria-Georgiana Chiriac"/><link rel="manifest" href="/manifest.webmanifest"/><meta name="keywords" content="software development,custom development,AI development,CTO as a service,web development,mobile apps"/><meta name="creator" content="Celestify"/><meta name="publisher" content="Celestify"/><meta name="robots" content="index, follow"/><meta name="googlebot" content="index, follow"/><meta name="category" content="Engineering Strategy"/><link rel="canonical" href="https://celestify.com/blog/the-ai-models-are-the-easy-part"/><meta property="og:title" content="The AI models are the easy part"/><meta property="og:description" content="AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI 
1into systems that perform, scale, and make commercial sense."/><meta property="og:url" content="https://celestify.com/blog/the-ai-models-are-the-easy-part"/><meta property="og:site_name" content="Celestify"/><meta property="og:image" content="https://celestify.com/payload-api/media/file/1716084698763.jpeg"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="The AI models are the easy part"/><meta property="og:type" content="article"/><meta property="article:published_time" content="2026-08-24T07:30:00.000Z"/><meta property="article:modified_time" content="2026-08-24T07:30:00.000Z"/><meta property="article:author" content="Daria-Georgiana Chiriac"/><meta property="article:section" content="Blog"/><meta property="article:tag" content="Engineering Strategy"/><meta property="article:tag" content="AI in Engineering"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="@celestify"/><meta name="twitter:title" content="The AI models are the easy part"/><meta name="twitter:description" content="AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI 
1into systems that perform, scale, and make commercial sense."/><meta name="twitter:image" content="https://celestify.com/payload-api/media/file/1716084698763.jpeg"/><link rel="icon" href="/favicon.ico?c3febddb54fe6109" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon-4usi79.svg?62460d8b38ae0fac" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon-4usi79.png?e75011e973801870" type="image/png" sizes="180x180"/>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
1</head><body class="text-gray-950 antialiased"><div hidden=""><!--$--><!--/$--></div>
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://celestify.com#organization","name":"Celestify","url":"https://celestify.com","description":"Celestify is a software development agency offering custom development, AI development, and Fractional CTO-as-a-Service, helping companies build and scale high-quality software.","slogan":"Software that sets you apart","knowsAbout":["Custom Software Development","AI Development","Fractional CTO","Software Architecture","Engineering Strategy"],"areaServed":"Worldwide","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https://celestify.com#/schema/logo/image/","url":"https://celestify.com/icon-512.png","contentUrl":"https://celestify.com/icon-512.png","width":512,"height":512,"caption":"Celestify"},"image":{"@id":"https://celestify.com#/schema/logo/image/"},"sameAs":["https://linkedin.com/company/celestifyhq","https://github.com/celestifyhq","https://x.com/celestifyhq","https://instagram.com/celestifyhq"]},{"@type":"WebSite","@id":"https://celestify.com#website","url":"https://celestify.com","name":"Celestify","description":"Celestify helps you build scalable, high-quality software, from first launch to long-term evolution.","publisher":{"@id":"https://celestify.com#organization"},"inLanguage":"en-GB"}]}</script>
1<main>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","headline":"The AI models are the easy part","description":"AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI into systems that perform, scale, and make commercial sense.","url":"https://celestify.com/blog/the-ai-models-are-the-easy-part","datePublished":"2026-08-24T07:30:00.000Z","dateModified":"2026-08-24T07:30:00.000Z","author":{"@type":"Person","name":"Daria-Georgiana Chiriac","jobTitle":"Full Stack TypeScript Developer","url":"https://www.linkedin.com/in/daria-georgiana-chiriac-701399232/","sameAs":["https://www.linkedin.com/in/daria-georgiana-chiriac-701399232/"]},"publisher":{"@type":"Organization","name":"Celestify","url":"https://celestify.com","logo":{"@type":"ImageObject","url":"https://celestify.com/icon-512.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://celestify.com/blog/the-ai-models-are-the-easy-part"},"image":{"@type":"ImageObject","url":"https://celestify.com/payload-api/media/file/1716084698763.jpeg"},"articleSection":"Engineering Strategy","keywords":"Engineering Strategy, AI in Engineering"}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://celestify.com"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://celestify.com/blog"},{"@type":"ListItem","position":3,"name":"The AI models are the easy part","item":"https://celestify.com/blog/the-ai-models-are-the-easy-part"}]}</script>
1<header class="sticky top-0 z-50 transition-all duration-500 ease-in-out pt-12 sm:pt-16"><div class="px-6 lg:px-8"><div class="mx-auto max-w-2xl lg:max-w-7xl"><div class="mx-auto max-w-7xl rounded-full transition-all duration-500 ease-in-out bg-transparent ring-1 ring-transparent"><div class="relative flex items-center justify-between py-1 transition-all duration-500 ease-in-out "><div class="relative flex gap-6"><div class="py-2"><a data-headlessui-state="" href="/"><svg version="1.1" id="animation" viewBox="0 0 400.36 100.223" xml:space="preserve" overflow="visible" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-9" style="display:block;width:180px;height:auto"><g transform="scale(0.67)"><defs id="defs1"><linearGradient x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" spreadMethod="pad" id="linearGradient41" gradientTransform="scale(472.6 -472.6) rotate(-45 -2.645 -12.036)"><stop style="stop-color:#2fa8e0" offset="0" id="stop40"></stop><stop style="stop-color:#1e2a68" offset="1" id="stop41"></stop></linearGradient><linearGradient x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(472.606 -472.606) rotate(-45 -4.14 -11.417)" spreadMethod="pad" id="linearGradient45"><stop style="stop-color:#2fa8e0" offset="0" id="stop44"></stop><stop style="stop-color:#1e2a68" offset="1" id="stop45"></stop></linearGradient><linearGradient x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(433.106 -433.106) rotate(-47.437 -2.799 -11.133)" spreadMethod="pad" id="linearGradient47"><stop style="stop-color:#2fa8e0" offset="0" id="stop46"></stop><stop style="stop-color:#1e2a68" offset="1" id="stop47"></stop></linearGradient><clipPath clipPathUnits="userSpaceOnUse" id="clipPath41"><path d="m3631.69 2841.72 64.76-241.73-26.11 97.5 26.11-97.5 13.39-49.9 55.47-207.09 164.25 164.24c22.65 22.66 34.41 66.51 26.11 97.47l-118.57 442.44Z" id="path41"></path></clipPath><clipPath clipPathUnits="userSpaceOnUse" id="clipPath45"><path d="m3199.55 3237.25-167.9-167.91 217.09-58.17v.01l167.95-45.01 113.68-30.46 209.08 209.09-442.43 118.55c-6.74 1.81-14.09 2.67-21.7 2.67-27.35 0-58.04-11.05-75.77-28.77" id="path45"></path></clipPath><clipPath clipPathUnits="userSpaceOnUse" id="clipPath47"><path d="M2860.44 2898.14c-22.66-22.65-34.4-66.51-26.12-97.48l124.12-463.17c8.31-30.95 40.4-63.06 71.36-71.37l463.19-124.11c30.95-8.29 74.8 3.45 97.46 26.13L3765.31 2343l-55.47 207.09-93.58 93.57.07-.29-156.23-156.22-5.78-5.8-79.01-78.99c-8.6-8.61-22.58-8.61-31.17 0-8.62 8.6-8.62 22.57 0 31.19l32.65 32.66c8.62 8.61 8.62 22.57 0 31.19-8.59 8.6-22.56 8.59-31.18-.02l-171.5-171.51c-8.62-8.6-22.59-8.6-31.19-.01-8.61 8.62-8.61 22.59 0 31.2l138.27 138.28c8.62 8.6 8.62 22.58 0 31.18-.68.69-1.46 1.23-2.19 1.81a21.887 21.887 0 0 1-16.32 4.37c-4.64-.62-9.12-2.62-12.67-6.18l-52.98-52.98c-8.61-8.62-22.57-8.62-31.19-.01-8.6 8.61-8.6 22.58 0 31.19l58.05 58.03 2.48 2.5-.11.42c6.08 8.62 5.33 20.58-2.36 28.27-1.9 1.9-4.08 3.31-6.38 4.36-8.16 3.76-18.08 2.36-24.82-4.36l-104.87-104.87c-8.62-8.61-22.57-8.63-31.19 0-8.6 8.6-8.6 22.57.02 31.17l143.37 143.38 4.89 4.89c8.6 8.62 8.6 22.59 0 31.19-4.48 4.48-10.41 6.58-16.27 6.4-5.42-.17-10.79-2.27-14.92-6.4l-90.38-90.38c-8.62-8.61-22.57-8.61-31.18 0s-8.61 22.57 0 31.19l121.5 121.49 5.79 5.79 156.23 156.23.29-.07-87.24 87.22-217.09 58.17Zm120.13-360.42c-8.61 8.61-8.62 22.56 0 31.19l12.23 12.21c8.61 8.62 22.56 8.6 31.16 0 8.63-8.61 8.63-22.56.01-31.18l-12.22-12.22c-4.3-4.3-9.94-6.45-15.58-6.46-5.65 0-11.3 2.16-15.6 6.46m23.2-101.55c-8.62 8.61-8.62 22.59 0 31.2 8.59 8.61 22.57 8.61 31.17-.02 8.62-8.59 8.62-22.57 0-31.17-4.3-4.3-9.95-6.46-15.59-6.46-5.64 0-11.29 2.15-15.58 6.45m101.54-23.18c-8.61 8.6-8.63 22.57 0 31.18l12.21 12.23c8.61 8.6 22.57 8.6 31.18 0 8.62-8.63 8.62-22.58 0-31.18l-12.22-12.23c-4.31-4.3-9.95-6.45-15.59-6.45-5.64 0-11.28 2.15-15.58 6.45m168.12-81.32c-8.61 8.6-8.61 22.56.01 31.16l12.23 12.23c8.61 8.61 22.55 8.61 31.15 0 8.63-8.62 8.63-22.57.01-31.18l-12.22-12.22c-4.3-4.31-9.94-6.46-15.58-6.46-5.65 0-11.29 2.15-15.6 6.47m-174.95-50.25c-8.62 8.61-8.62 22.59 0 31.19 8.6 8.62 22.58 8.62 31.18-.01 8.61-8.59 8.61-22.57 0-31.17-4.3-4.31-9.95-6.46-15.6-6.46-5.64 0-11.28 2.15-15.58 6.45" id="path47"></path></clipPath><filter id="goo"><feGaussianBlur in="SourceGraphic" stdDeviation="2" result="blur"></feGaussianBlur><feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 18 -7" result="goo"></feColorMatrix><feBlend in="SourceGraphic" in2="goo"></feBlend></filter><mask id="negate"><path d="M0 0 h539.36v150.223H0z" fill="#fff"></path><g id="gooey_parent">
1<g id="gooey" filter="url(#goo)"><path class="blob" style="fill:#000;stroke:none;stroke-width:5.875;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" d="M 47.877468,64.925864 L 47.651968,73.393775 L 51.881921,77.624075 L 50.213859,87.526337 L 54.358706,91.671524 L 57.843402,96.506546 L 62.019382,100.68287 L 70.498429,100.29757 L 74.720154,104.51964 L 82.245324,105.39526 L 106.75067,80.89147 L 69.374277,43.42909 Z" id="path6"></path><path class="blob" style="fill:none;stroke:#000;stroke-width:5.875;stroke-linecap:round" d="m50.286 66.65-28.36 28.357" id="l_1" stroke-dashoffset="0" stroke-dasharray="26.6, 11.235, 2.31, 11.235"></path><path class="blob" style="fill:none;stroke:#000;stroke-width:5.875;stroke-linecap:round" d="m66.915 83.298-28.359 28.357" id="l_2" stroke-dashoffset="0" stroke-dasharray="28.7, 9.1, 2.31, 9.1"></path><path class="blob" style="fill:none;stroke:#000;stroke-width:5.875;stroke-linecap:round" d="m89.34 94.14-28.358 28.358" id="l_3" stroke-dashoffset="0" stroke-dasharray="26.775, 11.025, 2.31, 11.025"></path><path class="blob" style="fill:none;stroke:#000;stroke-width:5.875;stroke-linecap:round" d="m54.996 78.596-29.98 29.978" id="l_4" stroke-dashoffset="0" stroke-dasharray="32.41, 9.97, 0.0001, 9.97"></path><path class="blob" style="fill:none;stroke:#000;stroke-width:5.875;stroke-linecap:round" d="m66.5 100.36-28.864 28.862" id="l_5" stroke-dashoffset="0" stroke-dasharray="32.41, 8.38, 0.0001, 9.97"></path></g></g></mask></defs><g id="logo_collective" style="cursor:pointer"><g mask="url(#negate)"><path d="M 2860.44,2898.14 C 2837.78,2875.49 2826.04,2831.63 2834.32,2800.66 V 2800.66 L 2958.44,2337.49 C 2966.75,2306.54 2998.84,2274.43 3029.8,2266.12 V 2266.12 L 3492.99,2142.01 C 3523.94,2133.72 3567.79,2145.46 3590.45,2168.14 V 2168.14 L 3840.4315,2418.1169 C 3578.9021,2680.4675 3187.3154,3072.736 3111.2658,3148.9606 Z" style="fill:url(#linearGradient47);fill-rule:nonzero;stroke:none" transform="matrix(.13333 0 0 -.13333 -377.555 435.47)"></path></g><g id="rocket_collective"><g id="head_l"><path id="head_l_path" transform="matrix(.13333 0 0 -.13333 -377.555 435.47)" d="M 3199.55,3237.25 L 3031.65,3069.34 L 3530.37,2935.71 L 3739.45,3144.8 L 3297.02,3263.35 C 3290.28,3265.16 3282.93,3266.02 3275.32,3266.02 V 3266.02 C 3247.97,3266.02 3217.28,3254.97 3199.55,3237.25" style="fill:url(#linearGradient45);fill-rule:nonzero;stroke:none"></path></g><g id="head_r"><path id="head_r_path" transform="matrix(.13333 0 0 -.13333 -377.555 435.47)" d="m3631.69 2841.72 64.76-241.73-26.11 97.5 26.11-97.5 13.39-49.9 55.47-207.09 164.25 164.24c22.65 22.66 34.41 66.51 26.11 97.47l-118.57 442.44" style="fill:url(#linearGradient41);fill-rule:nonzero;stroke:none"></path></g></g><path style="fill:#030712;stroke-linecap:round;stroke-linejoin:round" d="M205.712 112.352q-6.272 0-11.648-2.352-5.264-2.352-8.4-7.616-3.136-5.264-3.136-14v-34.72q0-8.624 3.136-13.888 3.248-5.264 8.512-7.616 5.376-2.352 11.76-2.352 7.392 0 12.544 2.576t7.84 6.832q2.8 4.256 2.8 9.296 0 2.688-1.008 3.584-.896.896-2.688.896-2.016 0-2.912-.784-.784-.896-.784-2.016-.112-1.792-.784-4.144-.56-2.352-2.24-4.48-1.568-2.128-4.704-3.472-3.024-1.456-7.952-1.456-7.84 0-11.984 4.144t-4.144 12.88v34.72q0 8.848 4.144 12.992 4.256 4.144 12.32 4.144 5.04 0 7.952-1.344 2.912-1.456 4.368-3.472 1.568-2.128 2.128-4.48.56-2.464.896-4.48.112-1.456 1.008-2.128.896-.784 2.576-.784 1.904 0 2.8 1.008 1.008.896 1.008 3.584 0 5.04-2.8 9.408-2.8 4.256-8.064 6.944-5.152 2.576-12.544 2.576Zm57.358.112q-7.056 0-12.544-2.688-5.376-2.688-8.512-7.392-3.024-4.816-3.024-11.2V78.64q0-5.6 2.912-10.304 2.912-4.704 7.728-7.504 4.928-2.8 10.752-2.8 5.6 0 10.304 2.688 4.816 2.576 7.728 7.168 2.912 4.592 2.912 10.528 0 4.368-1.456 6.272-1.456 1.792-3.696 2.24-2.128.448-4.592.448H246.27v4.144q0 6.72 4.816 10.64 4.816 3.92 12.208 3.92 4.48 0 6.944-1.12 2.464-1.12 3.808-2.24 1.456-1.12 2.688-1.12.896 0 1.568.672.784.56 1.12 1.344.448.784.448 1.456 0 1.232-2.016 3.024t-5.824 3.136q-3.808 1.232-8.96 1.232ZM246.27 82h22.4q3.36 0 4.48-.672 1.12-.784 1.12-3.136 0-3.584-1.792-6.832-1.68-3.248-4.928-5.264-3.136-2.016-7.28-2.016-3.808 0-7.056 1.904-3.136 1.792-5.04 4.928-1.904 3.024-1.904 6.832Zm50.862 29.68q-1.456 0-2.576-.896-1.008-.896-1.008-2.016V28.912q0-1.232 1.008-1.904 1.12-.784 2.576-.784 1.568 0 2.576.784 1.12.672 1.12 1.904v79.856q0 1.12-1.12 2.016-1.008.896-2.576.896Zm41.23.784q-7.056 0-12.544-2.688-5.376-2.688-8.512-7.392-3.024-4.816-3.024-11.2V78.64q0-5.6 2.912-10.304 2.912-4.704 7.728-7.504 4.928-2.8 10.752-2.8 5.6 0 10.304 2.688 4.816 2.576 7.728 7.168 2.912 4.592 2.912 10.528 0 4.368-1.456 6.272-1.456 1.792-3.696 2.24-2.128.448-4.592.448h-25.312v4.144q0 6.72 4.816 10.64 4.816 3.92 12.208 3.92 4.48 0 6.944-1.12 2.464-1.
112 3.808-2.24 1.456-1.12 2.688-1.12.896 0 1.568.672.784.56 1.12 1.344.448.784.448 1.456 0 1.232-2.016 3.024t-5.824 3.136q-3.808 1.232-8.96 1.232ZM321.562 82h22.4q3.36 0 4.48-.672 1.12-.784 1.12-3.136 0-3.584-1.792-6.832-1.68-3.248-4.928-5.264-3.136-2.016-7.28-2.016-3.808 0-7.056 1.904-3.136 1.792-5.04 4.928-1.904 3.024-1.904 6.832Zm60.718 30.464q-5.264 0-9.184-1.344-3.92-1.344-6.16-3.136-2.24-1.904-2.24-3.584 0-.784.336-1.456.336-.784.896-1.344.672-.56 1.344-.56 1.232 0 2.688 1.344 1.568 1.232 4.256 2.576 2.8 1.344 7.84 1.344 6.384 0 8.96-2.352 2.576-2.464 2.576-5.6 0-3.696-2.016-5.712-1.904-2.128-5.152-3.248-3.136-1.232-6.72-2.128-3.472-1.008-6.72-2.464-3.136-1.568-5.152-4.256-1.904-2.688-1.904-7.28 0-3.584 1.792-7.056 1.792-3.584 5.6-5.824 3.92-2.352 10.304-2.352 3.696 0 7.168.784t5.6 2.128q2.24 1.232 2.24 2.576 0 .56-.448 1.456-.336.896-1.008 1.68-.672.672-1.568.672t-2.464-.784q-1.456-.896-3.808-1.568-2.352-.784-5.6-.784-4.032 0-6.496 1.456-2.464 1.456-3.584 3.472-1.12 1.904-1.12 3.808 0 3.248 2.016 4.928 2.016 1.68 5.152 2.8 3.248 1.008 6.72 2.016 3.584.896 6.72 2.576 3.248 1.68 5.152 4.704 2.016 3.024 2.016 8.064 0 6.608-4.704 10.528-4.704 3.92-13.328 3.92Zm46.83-.784q-8.624 0-13.216-3.92-4.592-3.92-4.592-12.544V36.192q0-1.232 1.12-1.904 1.232-.784 2.464-.784 1.456 0 2.576.784 1.12.672 1.12 1.904v22.512h14.56q1.12 0 1.792.896.672.896.672 2.128 0 1.232-.672 2.128-.672.896-1.792.896h-14.56v30.464q0 5.488 2.352 7.728 2.352 2.128 8.176 2.128h3.136q1.568 0 2.352 1.008.896.896.896 2.24 0 1.344-.896 2.352-.784 1.008-2.352 1.008Zm19.502-68.656q-2.016 0-3.472-1.344-1.456-1.456-1.456-3.36t1.456-3.248q1.456-1.344 3.472-1.344t3.472 1.344q1.456 1.344 1.456 3.248 0 1.904-1.456 3.36-1.456 1.344-3.472 1.344Zm-.112 68.656q-1.456 0-2.576-.896-1.008-.896-1.008-2.016V61.392q0-1.232 1.008-1.904 1.12-.784 2.576-.784 1.568 0 2.576.784 1.12.672 1.12 1.904v47.376q0 1.12-1.12 2.016-1.008.896-2.576.896Zm21.518 0q-1.456 0-2.464-.784t-1.008-2.016V46.832q0-5.712 2.688-10.304 2.8-4.704 7.28-7.504 4.592-2.8 9.968-2.8h2.8q1.568 0 2.352 1.008.784 1.008.784 2.352 0 1.232-.784 2.24-.784 1.008-2.352 1.008h-1.904q-3.808 0-6.944 1.904-3.024 1.792-4.816 4.928-1.68 3.024-1.792 6.608v12.432h16.016q1.232 0 1.904.896.672.896.672 2.016 0 1.232-.672 2.24-.672.896-1.904.896h-16.016v44.128q0 1.232-1.12 2.016t-2.688.784Zm29.022 25.984q-1.456 0-2.464-.784-.896-.672-.896-2.464 0-1.344.448-2.352.56-1.008 1.792-1.008 2.688 0 5.152-1.68t4.592-4.816q2.128-3.024 3.808-6.944 1.68-3.808 2.688-8.176l-18.256-46.928q-.336-.56-.336-1.008 0-1.008.672-1.792.784-.784 1.792-1.232 1.12-.448 2.016-.448.896 0 1.568.448.784.336 1.008 1.12l15.344 41.216L532.416 59.6q.336-.784 1.008-1.12.672-.448 1.456-.448.896 0 1.904.448 1.12.448 1.792 1.232.784.784.784 1.904 0 .56-.224.896l-17.36 47.04q-1.68 4.48-3.584 9.408-1.904 4.928-4.48 9.072-2.464 4.256-6.048 6.944-3.584 2.688-8.624 2.688Z" id="text4" aria-label="Celestify"></path><path id="trigger" d="M 181.5,25 H 538M0 0 h539.36v150.223H0z" style="opacity:0"></path></g><animate id="l_1_IN" xlink:href="#l_1" attributeName="stroke-dashoffset" from="0" to="-205.3" dur="1.62s" begin="trigger.mouseover" keyTimes="0;1" keySplines=".37 0 .63 1" calcMode="spline" fill="freeze"></animate><animate xlink:href="#l_2" attributeName="stroke-dashoffset" from="0" to="-98.2" dur="1.62s" begin="l_1_IN.begin" keyTimes="0;1" keySplines=".37 0 .63 1" calcMode="spline" fill="freeze"></animate><animate xlink:href="#l_3" attributeName="stroke-dashoffset" from="0" to="-204.4" dur="1.62s" begin="l_1_IN.begin" keyTimes="0;1" keySplines=".37 0 .63 1" calcMode="spline" fill="freeze"></animate><animate xlink:href="#l_4" attributeName="stroke-dashoffset" from="0" to="-104.2" dur="1.62s" begin="l_1_IN.begin" keyTimes="0;1" keySplines=".37 0 .63 1" calcMode="spline" fill="freeze"></animate><animate xlink:href="#l_5" attributeName="stroke-dashoffset" from="0" to="-101.2" dur="1.62s" begin="l_1_IN.begin" keyTimes="0;1" keySplines=".37 0 .63 1" calcMode="spline" fill="freeze"></animate></g></svg></a></div></div><nav class="hidden lg:flex"><div class="relative"><a class="flex items-center px-7 py-3 text-base font-medium text-gray-950 bg-blend-multiply data-hover:text-gray-800" data-headlessui-state="" href="/services">Services<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="ml-1 h-4 w-4 transition-transform duration-200 "><path fill-rule="evenodd" d="M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z" clip-rule="evenodd"></path></svg></a></div><div class="relative"><a class="flex items-center px-7 py-3 text-base font-medium text-gray-950 bg-blend-multiply data-hover:text-gray-800" data-headlessui-state="" href="/products">Products</a></div><div class="relative"><a class="flex items-center px-7 py-3 text-base font-medium text-gray-950 bg-blend-multiply data-hover:text-gray-800" data-headlessui-state="" href="/customer-stories">Customer Stories</a></div><div class="relative"><a class="flex items-center px-7 py-3 text-base font-medium text-gray-950 bg-blend-multiply data-hover:text-gray-800" data-headlessui-state="" href="/about">About</a></div><div class="relative"><a class="flex items-center px-7 py-3 text-base font-medium text-gray-950 bg-blend-multiply data-hover:text-gray-800" data-headlessui-state="" href="/resources">Resources</a></div></nav><div class="hidden items-center py-2 lg:flex"><div tabindex="0" style="transform:none"><a class="inline-flex items-center justify-center px-6 py-[calc(--spacing(3)-1px)] rounded-full border border-transparent bg-gray-950 shadow-md text-base font-medium whitespace-nowrap text-white data-disabled:bg-gray-950 data-disabled:opacity-40 data-hover:bg-gray-800 active:shadow-
1press-inset cursor-pointer" data-headlessui-state="" href="/book-a-call">Book an intro call</a></div></div><button class="flex size-12 items-center justify-center self-center rounded-lg hover:bg-black/5 lg:hidden" aria-label="Toggle main menu"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-6"><path fill-rule="evenodd" d="M3 9a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75A.75.75 0 0 1 3 9Zm0 6.75a.75.75 0 0 1 .75-.75h16.5a.75.75 0 0 1 0 1.5H3.75a.75.75 0 0 1-.75-.75Z" clip-rule="evenodd"></path></svg></button></div></div></div></div></header><div class="relative -mt-8 sm:-mt-13"><div class="absolute inset-x-2 -top-20 bottom-0 overflow-hidden rounded-4xl ring-1 ring-black/5 ring-inset"><div class="hero-gradient absolute inset-0"></div></div><div class="relative px-6 lg:px-8"><div class="mx-auto max-w-2xl lg:max-w-7xl"><div class="grid grid-cols-1 items-center gap-10 pt-32 pb-16 sm:pt-36 sm:pb-20 md:pt-40 md:pb-24 lg:grid-cols-2 lg:gap-16"><div><div class="mb-8"><nav aria-label="Breadcrumb" class="text-sm"><ol class="flex items-center gap-2 text-gray-500"><li class="flex items-center shrink-0"><a class="whitespace-nowrap transition-colors hover:text-gray-900" data-headlessui-state="" href="/">Home</a></li><li aria-hidden="true" class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-4 shrink-0 text-gray-400"><path fill-rule="evenodd" d="M6.22 4.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.75.75 0 0 1-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"></path></svg></li><li class="flex items-center shrink-0"><a class="whitespace-nowrap transition-colors hover:text-gray-900" data-headlessui-state="" href="/blog">Blog</a></li><li aria-hidden="true" class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-4 shrink-0 text-gray-400"><path fill-rule="evenodd" d="M6.22 4.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.75.75 0 0 1-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"></path></svg></li><li class="flex items-center min-w-0"><span aria-current="page" title="The AI models are the easy part" class="max-w-[16rem] truncate font-medium text-gray-900 sm:max-w-md">The AI models are the easy part</span></li></ol></nav></div><h1 class="font-display text-4xl/[1.1] font-medium tracking-tight text-balance text-gray-950 sm:text-5xl/[1.05] md:text-6xl/[1.05]">The AI models are the easy part</h1><div class="mt-8"><div><div class="flex flex-wrap gap-x-8 gap-y-4"><div class="flex items-center gap-3"><img alt="Daria-Georgiana Chiriac" src="https://celestify.com/payload-api/media/file/00707027e857150131269b5f10623b16628a0992-800x800.jpg" class="size-10 rounded-full object-cover ring-1 ring-black/5"/><div class="flex flex-col"><span class="flex items-center gap-1.5 text-sm/5 font-medium text-gray-950">Daria-Georgiana Chiriac<a target="_blank" rel="noopener noreferrer me" aria-label="Daria-Georgiana Chiriac on LinkedIn" class="text-gray-400 transition-colors hover:text-[#0a66c2]" data-headlessui-state="" href="https://www.linkedin.com/in/daria-georgiana-chiriac-701399232/"><svg viewBox="0 0 16 16" fill="currentColor" class="size-4" aria-hidden="true"><path d="M14.82 0H1.18A1.169 1.169 0 000 1.154v13.694A1.168 1.168 0 001.18 16h13.64A1.17 1.17 0 0016 14.845V1.15A1.171 1.171 0 0014.82 0zM4.744 13.64H2.369V5.996h2.375v7.644zm-1.18-8.684a1.377 1.377 0 11.52-.106 1.377 1.377 0 01-.527.103l.007.003zm10.075 8.683h-2.375V9.921c0-.885-.015-2.025-1.234-2.025-1.218 0-1.425.966-1.425 1.968v3.775H6.233V5.997H8.51v1.05h.032c.317-.601 1.09-1.235 2.246-1.235 2.405-.005 2.851 1.578 2.851 3.63v4.197z"></path></svg></a></span><span class="text-sm/5 text-gray-600">August 24, 2026</span></div></div></div></div></div><div class="mt-6"><div class="flex flex-wrap gap-2"><a class="bg-white/95 shadow-glass supports-[backdrop-filter:blur(1px)]:bg-white/72 supports-[backdrop-filter:blur(1px)]:backdrop-blur-[12px] supports-[backdrop-filter:blur(1px)]:backdrop-saturate-[140%] [@media(prefers-reduced-transparency:reduce)]:bg-white/97 [@media(prefers-reduced-transparency:reduce)]:backdrop-blur-none rounded-full px-3 py-0.5 text-sm/6 font-medium text-gray-700 ring-1 ring-black/5 transition-colors hover:text-gray-950" data-headlessui-state="" href="/blog?category=engineering-strategy">Engineering Strategy</a>
1<a class="bg-white/95 shadow-glass supports-[backdrop-filter:blur(1px)]:bg-white/72 supports-[backdrop-filter:blur(1px)]:backdrop-blur-[12px] supports-[backdrop-filter:blur(1px)]:backdrop-saturate-[140%] [@media(prefers-reduced-transparency:reduce)]:bg-white/97 [@media(prefers-reduced-transparency:reduce)]:backdrop-blur-none rounded-full px-3 py-0.5 text-sm/6 font-medium text-gray-700 ring-1 ring-black/5 transition-colors hover:text-gray-950" data-headlessui-state="" href="/blog?category=ai-in-engineering">AI in Engineering</a></div></div></div><div class="flex justify-center"><img alt="1716084698763" src="https://celestify.com/payload-api/media/file/1716084698763.jpeg" class="aspect-[4/3] w-full max-w-lg rounded-2xl object-cover shadow-raised"/></div></div></div></div></div><div class="px-6 lg:px-8"><div class="mx-auto max-w-2xl lg:max-w-7xl"><div class="mt-12 grid grid-cols-1 gap-8 pb-24 lg:grid-cols-[15rem_minmax(0,1fr)_15rem] lg:gap-12"><aside class="hidden lg:block"><div class="lg:sticky lg:top-32 lg:max-h-[calc(100dvh-11rem)] lg:overflow-y-auto"><nav aria-label="Table of contents" class="hidden"><p class="mb-4 text-xs font-semibold tracking-wide text-gray-400">On this page</p><div class="js-toc toc-rail"></div></nav></div></aside><div class="js-toc-content mx-auto max-w-2xl text-gray-700"><div class="rich-text-article"><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Getting an AI model to do something impressive takes minutes these days. </p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">A support assistant answers questions faster than a human would. An internal tool summarises in seconds what used to take someone hours to find. Product teams ship things that would have been unreasonable to attempt a few years ago, and the first version often works the same day.<br/></p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">The most recent and relevant example of this last one is Asana&#x27;s migration away from Enzyme, using <a href="https://openai.com/index/asana/" class="font-medium text-gray-950 underline decoration-gray-400 underline-offset-4 transition-colors hover:decoration-gray-600" target="_blank" rel="noopener noreferrer">Codex</a>. OpenAI claims the work would have taken 5 years pre-AI, which is extremely questionable, though that&#x27;s beside the point in fairness. Bottom line, something that Asana considered expensive and painful was done in 2 weeks by AI, cheap enough for them to be happy with it.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">That is the part of AI everyone can see, whereas the harder part is after the demo when you still have to turn it into proper software.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="ai-doesn-t-replace-the-system-around-it" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">AI doesn&#x27;t replace the system around it</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Lately there seems to be a lot of temptation (and sadly reality) where people treat the model as the product. User asks something, model thinks, model responds, done.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Most real world software doesn&#x27;t work like that. It has users, permissions, and real data that has to come from somewhere. Every action has very specific consequences, some things need to happen immediately, some can happen later, and some absolutely must not happen twice. In software, we call this deterministic behaviour.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">In contrast to AI, which is software with a probabilistic component inside it. Sometimes that component is incredibly powerful, like it can understand an email, simplify and explain something messy, pull information out of a long/boring document, write code, reason about a request, or decide which tool to use. That in itself doesn&#x27;t mean that AI should be responsible for everything around it.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">If I already know that customer X has three unpaid invoices, I don&#x27;t need GPT-5.6 to work that out for me. A simple database query tells me that already. Whereas if I need to decide whether an email is a cancellation request, an angry complaint or somebody asking for a copy of an invoice, that&#x27;s a very good place for a model. The engineering judgement is knowing where the line between the two sits.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0"></p><h2 id="decide-what-doesn-t-need-a-model" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">Decide what doesn&#x27;t need a model</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">We&#x27;re increasingly seeing a pattern emerge as models become easier to use where everything starts getting pushed through it. A perfectly deterministic step becomes another instruction in the system prompt. Check whether the customer has an active subscription, work out which plan they&#x27;re on, decide whether they&#x27;re allowed to do this. </p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Your app already knows all three answers, and you&#x27;ve just swapped something fast, cheap and deterministic for something slower, metered and capable of being wrong. The opposite mistake is real too, where trying to handle genuinely messy human input with 400 `if` statements isn&#x27;t clever engineering either.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">
1The best AI systems are hybrid, and use normal software vs models where they each shine respectively. The fact that AI can do something does not mean it should.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="the-demo-has-no-idea-what-happens-when-things-go-wrong" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">The demo has no idea what happens when things go wrong</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">The happy path is very easy to build now, which is one reason AI demos are so seductive. Give the model the right input under the right conditions and it just feels like magic! But in reality, when an app is running in production, and the model takes 40 seconds instead of 4 seconds, what happens then?</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">When the provider returns an error halfway through a workflow, what happens then? The user clicks the button 3x more because nothing is happening, and you&#x27;ve just run the same £2 operation 4 times in a row. The model confidently returns malformed data, or calls the right tool with the wrong arguments, or produces an answer that is technically valid, yet completely useless.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">These are everyday software problems, and they have software answers: retries, timeouts, queues, validation, idempotency, fallbacks, permissions, logs and sensible UX around failure. None of that makes for an exciting demo, and it is also exactly the difference between a demo and a product.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="the-worst-failures-are-those-that-return-200-ok" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">The worst failures are those that return 200 OK</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Traditional software has a useful habit of breaking loudly. Something throws an exception, a request fails, an alert fires, someone swears at Datadog.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">AI fails <em>beautifully</em> instead. The API returns successfully, latency looks normal and nothing shows up in the logs. Instead the answer is just bad. Maybe a prompt changed, maybe the wrong data was retrieved, or the most likely, your customers started giving it inputs you didn&#x27;t anticipate. The system can happily keep returning `200 OK` while becoming less useful every day.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">So monitoring AI works differently. You still care about uptime and latency, but you have to care about output quality as well. Is it answering the right question? Did it extract the right information? Would a human agree with the decision? Are users correcting it more often than they did last month?</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Answering those means testing real outputs, keeping examples of good and bad behaviour, evaluating changes properly and actually looking at what the system does in production. Otherwise your first quality alert is a customer emailing to say the thing has been wrong for two weeks.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="then-there-is-the-small-matter-of-the-bill" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">Then there is the small matter of the bill</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">AI is often hilariously cheap at prototype scale. You build something useful, run it 50x and spend £1.84.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Then real people start using it. 1k users slowly become 10k users, context gets larger, you add another model call because the first one wasn&#x27;t quite reliable enough, agents start calling tools, failed jobs retry, you name it. By then the economics look different.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">That doesn&#x27;t quite make AI expensive though, because it&#x27;s still absurdly cheap compared with the human work it replaces. Instead it makes cost an architectural concern, such that you should know roughly what an important workflow costs, what happens to that number at 10x the volume, and what you&#x27;re getting back for the money. If an AI feature costs £4k/mo and removes £30k of work, nobody sensible should care about the £4k spend. But if it costs £4k/mo and nobody can tell whether customers would notice you switching it off, you have a different problem.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">The fix is boring though. Use caching, minimise model calls, reduce context where possible, use a smaller model and most importantly use code instead of inference when the answer is already known. The model won&#x27;t be offended!</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="good-engineers-matter-more-than-ever" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">Good engineers matter more than ever</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">There&#x27;
1s an understandable question hanging over software engineers at the moment, which is &quot;if AI can write the code, what is <em>my</em> job?&quot;</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">The answer is pretty much what it always was, which is everything around the code. Deciding what should be built. Understanding the existing system before changing it. Working out what AI should and shouldn&#x27;t be responsible for. Designing the interfaces between the deterministic and probabilistic parts of the product. Making sensible security decisions. Knowing what happens when something fails. Keeping the system understandable enough that somebody can change it six months later. Working out whether an impressive technical capability solves a problem anybody actually has. And, unfortunately the most painful one at the moment, reviewing what the agents produce.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Asana&#x27;s Enzyme migration is a good example of that too. Engineers decided what needed to change, gave the agents an environment to work in, checked their progress and reviewed the proposed changes. AI moved the implementation boundary dramatically, but engineering judgement mattered more than ever.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">This is where some of the &quot;AI replaces software engineers&quot; conversation gets muddled. The human effort required to turn an idea into code is collapsing, but code was never the whole job.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="let-s-build-boring-systems-around-clever-models" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">Let&#x27;s build boring systems around clever models</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Models will keep getting better! Six months from now they&#x27;ll do things that are awkward today, and six months after that we&#x27;ll move the line again. Predicting exactly where it stops is a waste of time. What you can do is build systems that are comfortable with the change.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Keep model providers replaceable where you can, keep business logic outside the prompt and make model outputs structured and validate them before trusting them. Measure quality, cost and more than ever, know who owns the feature after it launches.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Basically, make the system around the model boring. Boring is good, because the clever part will change every three months.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left"></p><h2 id="how-we-think-about-ai-at-celestify" class="mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0" style="text-align:left">How we think about AI at Celestify</h2><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">We are extremely bullish about what AI makes possible. We use it constantly, we build with it, our engineers use coding agents, and we put models into products and internal workflows where they remove crazy amounts of manual work.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">We&#x27;re less interested in adding AI to something because somebody wants an AI feature on the roadmap. The question we start with is &quot;what problem are we solving? which pain are we removing?&quot; Sometimes the answer involves an agent, sometimes it involves retrieval, a model and three integrations, sometimes it involves a single skill.md file. Sometimes, it doesn&#x27;t need a model at all.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">Making the impressive bit work is getting easier every month. Making the whole thing useful, reliable, secure and economically sensible is still the job.</p><p class="my-6 text-base/8 first:mt-0 last:mb-0" style="text-align:left">If you&#x27;ve got an AI feature in that grey area and can&#x27;t tell which side of the line it sits on, it&#x27;s worth working that out before you build it and we&#x27;re happy to help you think it through.</p></div><div class="mt-10"><div tabindex="0" style="transform:none"><a class="inline-flex items-center justify-center px-2 py-[calc(--spacing(1.5)-1px)] rounded-lg border border-transparent shadow-sm ring-1 ring-black/10 text-sm font-medium whitespace-nowrap text-gray-950 data-disabled:bg-transparent data-disabled:opacity-40 data-hover:bg-gray-50 cursor-pointer" data-headlessui-state="" href="/blog"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-4"><path fill-rule="evenodd" d="M9.78 4.22a.75.75 0 0 1 0 1.06L7.06 8l2.72 2.72a.75.75 0 1 1-1.06 1.06L5.47 8.53a.75.75 0 0 1 0-1.06l3.25-3.25a.75.75 0 0 1 1.06 0Z" clip-rule="evenodd"></path></svg>Back to blog</a></div></div></div></div></div></div><footer><div class="relative"><div class="absolute inset-x-2 top-0 bottom-0 rounded-4xl ring-1 ring-black/5 ring-inset hero-gradient"></div><div class="relative px-6 lg:px-8"><div class="mx-auto max-w-2xl lg:max-w-7xl"><div class="pt-20 pb-16 text-center sm:py-24"><div class="" style="opacity:0;transform:translateY(20px)"><h2 class="mt-6 text-4xl font-medium tracking-tight text-balance text-gray-950 sm:text-6xl">Ready to work with a team that gets it?</h2></div><div class="" style="opacity:0;transform:translateY(20px)"><p class="mx-auto mt-6 max-w-2xl leading-relaxed text-gray-700">Let&#x27;s discuss your project and show you how we&#x27;ll move it forward.<br/>You&#x27;ll get a clear plan, tailored to your project.</p></div><div class="" style="opacity:0;transform:translateY(20px)"><div class="mt-8"><div tabindex="0" style="transform:none"><a class="w-full sm:w-auto inline-flex items-center justify-center px-6 py-[calc(--spacing(3)-1px)] rounded-full border border-transparent bg-accent shadow-md text-base font-medium whitespace-nowrap text-white data-disabled:opacity-40 data-hover:bg-accent-hover transition-colors duration-200 ease-out focus-visible:ring-4 focus-visible:ring-accent/25 focus-visible:outline-none active:shadow-
1press-inset cursor-pointer" data-headlessui-state="" href="/book-a-call">Book an intro call</a></div></div></div></div></div></div></div><div class="bg-gray-800"><div class="px-6 lg:px-8"><div class="mx-auto max-w-2xl lg:max-w-7xl"><div class="pt-16 pb-16"><div class="group/row relative isolate pt-[calc(--spacing(2)+1px)] last:pb-[calc(--spacing(2)+1px)]"><div aria-hidden="true" class="absolute inset-y-0 left-1/2 -z-10"><div class="absolute inset-x-0 top-0"></div><div class="absolute inset-x-0 top-2"></div><div class="absolute inset-x-0 bottom-0 hidden group-last/row:block"></div><div class="absolute inset-x-0 bottom-2 hidden group-last/row:block"></div></div><div class="grid grid-cols-2 gap-y-10 pb-6 lg:grid-cols-5 lg:gap-8"><div class="col-span-2 flex"><div class="pt-6 lg:pb-6 group/item relative"><img alt="Celestify" loading="lazy" width="120" height="90" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Fimages%2Fcelestify-logo-dark.png&amp;w=128&amp;q=75 1x, /_next/image?url=%2Fimages%2Fcelestify-logo-dark.png&amp;w=256&amp;q=75 2x" src="/_next/image?url=%2Fimages%2Fcelestify-logo-dark.png&amp;w=256&amp;q=75"/><div><p class="text-md mt-4 max-w-xs text-white">Building scalable software for ambitious teams worldwide.</p><address class="mt-4 text-sm/6 text-white not-italic"><p>195-197 Whiteladies Road</p><p>Bristol</p><p>BS8 2SB</p></address><p class="mt-4 text-sm/6 text-white">Company Number: 13693543</p><p class="text-sm/6 text-white">VAT Number: GB451096306</p><div class="text-sm/6 text-white"><div class="flex items-center gap-8 pt-8 group/item relative"><a target="_blank" aria-label="Visit us on Github" class="text-white data-hover:text-white/75" data-headlessui-state="" href="https://github.com/celestifyhq"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-4"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a target="_blank" aria-label="Visit us on Instagram" class="text-white data-hover:text-white/75" data-headlessui-state="" href="https://instagram.com/celestifyhq"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-4"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path></svg></a><a target="_blank" aria-label="Visit us on X" class="text-white data-hover:text-white/75" data-headlessui-state="" href="https://x.com/celestifyhq"><svg viewBox="0 0 16 16" fill="currentColor" class="size-4"><path d="M12.6 0h2.454l-5.36 6.778L16 16h-4.937l-3.867-5.594L2.771 16H.316l5.733-7.25L0 0h5.063l3.495 5.114L12.6 0zm-.86 14.376h1.36L4.323 1.539H2.865l8.875 12.837z"></path></svg></a><a target="_blank" aria-label="Visit us on LinkedIn" class="text-white data-hover:text-white/75" data-headlessui-state="" href="https://linkedin.com/company/celestifyhq"><svg viewBox="0 0 16 16" fill="currentColor" class="size-4"><path d="M14.82 0H1.18A1.169 1.169 0 000 1.154v13.694A1.168 1.168 0 001.18 16h13.64A1.17 1.17 0 0016 14.845V1.15A1.171 1.171 0 0014.82 0zM4.744 13.64H2.369V5.996h2.375v7.644zm-1.18-8.684a1.377 1.377 0 11.52-.106 1.377 1.377 0 01-.527.103l.007.003zm10.075 8.683h-2.375V9.921c0-.885-.015-2.025-1.234-2.025-1.218 0-1.425.966-1.425 1.968v3.775H6.233V5.997H8.51v1.05h.032c.317-.601 1.09-1.235 2.246-1.235 2.405-.005 2.851 1.578 2.851 3.63v4.197z"></path></svg></a></div></div></div></div></div><div class="col-span-2 grid grid-cols-2 gap-x-8 gap-y-12 lg:col-span-3 lg:grid-cols-subgrid lg:pt-6"><div><h3 class="text-sm/6 font-medium text-white/50">Services</h3><ul class="mt-6 space-y-4 text-sm/6"><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/custom-development">
1Custom Development</a></li><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/ai-development">AI Development</a></li><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/cto-as-a-service">CTO as a Service</a></li></ul></div><div><h3 class="text-sm/6 font-medium text-white/50">Resources</h3><ul class="mt-6 space-y-4 text-sm/6"><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/blog">Blog</a></li><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/customer-stories">Customer Stories</a></li></ul><div class="mt-10"><h3 class="text-sm/6 font-medium text-white/50">Expertise</h3><ul class="mt-6 space-y-4 text-sm/6"><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/hubspot-development">HubSpot Development</a></li></ul></div></div><div><h3 class="text-sm/6 font-medium text-white/50">Company</h3><ul class="mt-6 space-y-4 text-sm/6"><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/about">About</a></li><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/jobs">Jobs</a></li><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/book-a-call">Book a call</a></li><li><a class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="/celestify-ai">Celestify AI</a></li><li><a target="_blank" class="font-medium text-white data-hover:text-white/75" data-headlessui-state="" href="https://support.celestify.com/help/350550692">Submit a Ticket</a></li></ul></div></div></div></div><div class="flex flex-col gap-4 sm:flex-row sm:justify-between group/row relative isolate pt-[calc(--spacing(2)+1px)] last:pb-[calc(--spacing(2)+1px)]"><div aria-hidden="true" class="absolute inset-y-0 left-1/2 -z-10"><div class="absolute inset-x-0 top-0"></div><div class="absolute inset-x-0 top-2"></div><div class="absolute inset-x-0 bottom-0 hidden group-last/row:block"></div><div class="absolute inset-x-0 bottom-2 hidden group-last/row:block"></div></div><div><div class="py-3 group/item relative"><div class="text-sm/6 text-white">© <!-- -->2026<!-- --> Celestify Ltd.</div></div></div><div class="flex flex-col gap-2 sm:flex-row sm:gap-4"><a class="text-sm/6 text-white" data-headlessui-state="" href="/terms">Terms of Service</a><a class="text-sm/6 text-white" data-headlessui-state="" href="/privacy">Privacy Policy</a></div></div></div></div></div></div></footer></main><!--$--><!--/$-->
1<script src="/_next/static/chunks/webpack-3cc2b7bdf98d5a2b.js" id="_R_" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[63982,[],\"\"]\n3:I[56420,[],\"\"]\n5:I[58914,[\"8525\",\"static/chunks/22302548-9e0716f75a59e6c3.js\",\"1766\",\"static/chunks/1766-f8b53247ae39f908.js\",\"9559\",\"static/chunks/app/(frontend)/layout-5d54a033d20a9405.js\"],\"\"]\n6:I[83972,[\"8525\",\"static/chunks/22302548-9e0716f75a59e6c3.js\",\"1766\",\"static/chunks/1766-f8b53247ae39f908.js\",\"9559\",\"static/chunks/app/(frontend)/layout-5d54a033d20a9405.js\"],\"MotionProvider\"]\n7:I[85214,[\"8525\",\"static/chunks/22302548-9e0716f75a59e6c3.js\",\"1766\",\"static/chunks/1766-f8b53247ae39f908.js\",\"9559\",\"static/chunks/app/(frontend)/layout-5d54a033d20a9405.js\"],\"PostHogProvider\"]\n8:I[60231,[\"8525\",\"static/chunks/22302548-9e0716f75a59e6c3.js\",\"1766\",\"static/chunks/1766-f8b53247ae39f908.js\",\"9559\",\"static/chunks/app/(frontend)/layout-5d54a033d20a9405.js\"],\"ConsentProvider\"]\nf:I[51942,[],\"default\",1]\n:HL[\"/_next/static/media/293bdbb2c1cb6716-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/33e453de1ae92b8d.css\",\"style\"]\n4:T515,{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://celestify.com#organization\",\"name\":\"Celestify\",\"url\":\"https://celestify.com\",\"description\":\"Celestify is a software development agency offering custom development, AI development, and Fractional CTO-as-a-Service, helping companies build and scale high-quality software.\",\"slogan\":\"Software that sets you apart\",\"knowsAbout\":[\"Custom Software Development\",\"AI Development\",\"Fractional CTO\",\"Software Architecture\",\"Engineering Strategy\"],\"areaServed\":\"Worldwide\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https://celestify.com#/schema/logo/image/\",\"url\":\"https://celestify.com/icon-512.png\",\"contentUrl\":\"https://celestify.com/icon-512.png\",\"width\":512,\"height\":512,\"caption\":\"Celestify\"},\"image\":{\"@id\":\"https://celestify.com#/schema/logo/image/\"},\"sameAs\":[\"https://linkedin.com/company/celestifyhq\",\"https://github.com/celestifyhq\",\"https://x.com/celestifyhq\",\"https://instagram.com/celestifyhq\"]},{\"@type\":\"WebSite\",\"@id\":\"https://celestify.com#website\",\"url\":\"https://celestify.com\",\"name\":\"Celestify\",\"description\":\"Celestify helps you build scalable, high-quality software, from first launch to long-term evolution.\",\"publisher\":{\"@id\":\"https://celestify.com#organization\"},\"inLanguage\":\"en-GB\"}]}"])</script>
1<script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"blog\",\"the-ai-models-are-the-easy-part\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(frontend)\",{\"children\":[\"blog\",{\"children\":[[\"slug\",\"the-ai-models-are-the-easy-part\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/33e453de1ae92b8d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_0dc7d2\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"title\":\"The Celestify Blog\",\"href\":\"/blog/feed.xml\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#ffffff\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#ffffff\"}]]}],[\"$\",\"body\",null,{\"className\":\"text-gray-950 antialiased\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$4\"}}],[\"$\",\"$L5\",null,{\"src\":\"https://static.claydar.com/init.v1.js?id=c5ZmZB6jsT\",\"strategy\":\"afterInteractive\"}],[\"$\",\"$L5\",null,{\"id\":\"vtag-ai-js\",\"src\":\"https://r2.leadsy.ai/tag.js\",\"strategy\":\"afterInteractive\",\"data-pid\":\"lAgRujNeHWAW43bY\",\"data-version\":\"062024\"}],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$L9\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}]]}],{\"children\":[\"$La\",{\"children\":[\"$Lb\",{\"children\":[\"$Lc\",{},null,false,null]},null,false,\"$@d\"]},null,false,\"$@d\"]},null,false,null]},null,false,\"$@d\"],\"$Le\",false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JcuibG86CQuhXVT3JGEAu\"}\n11:I[72263,[],\"OutletBoundary\"]\n12:\"$Sreact.suspense\"\n15:I[72263,[],\"ViewportBoundary\"]\n17:I[72263,[],\"MetadataBoundary\"]\n9:[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:notFound:0:1:props:children:props:children:1:props:styl"])</script>
1<script>self.__next_f.push([1,"e\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]]\na:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nc:[\"$\",\"$1\",\"c\",{\"children\":[\"$L10\",null,[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$12\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@13\"}]}]]}]\n14:[]\nd:\"$W14\"\ne:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L15\",null,{\"children\":\"$L16\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L17\",null,{\"children\":[\"$\",\"$12\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n"])</script>
1<script>self.__next_f.push([1,"16:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
1<script>self.__next_f.push([1,"19:I[29398,[],\"IconMark\"]\n13:null\n"])</script>
1<script>self.__next_f.push([1,"18:[[\"$\",\"title\",\"0\",{\"children\":\"The AI models are the easy part - Celestify\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI into systems that perform, scale, and make commercial sense.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"author\",\"content\":\"Daria-Georgiana Chiriac\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"4\",{\"name\":\"keywords\",\"content\":\"software development,custom development,AI development,CTO as a service,web development,mobile apps\"}],[\"$\",\"meta\",\"5\",{\"name\":\"creator\",\"content\":\"Celestify\"}],[\"$\",\"meta\",\"6\",{\"name\":\"publisher\",\"content\":\"Celestify\"}],[\"$\",\"meta\",\"7\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"8\",{\"name\":\"googlebot\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"9\",{\"name\":\"category\",\"content\":\"Engineering Strategy\"}],[\"$\",\"link\",\"10\",{\"rel\":\"canonical\",\"href\":\"https://celestify.com/blog/the-ai-models-are-the-easy-part\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:title\",\"content\":\"The AI models are the easy part\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:description\",\"content\":\"AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI 
1into systems that perform, scale, and make commercial sense.\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:url\",\"content\":\"https://celestify.com/blog/the-ai-models-are-the-easy-part\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:site_name\",\"content\":\"Celestify\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image\",\"content\":\"https://celestify.com/payload-api/media/file/1716084698763.jpeg\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:alt\",\"content\":\"The AI models are the easy part\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"20\",{\"property\":\"article:published_time\",\"content\":\"2026-08-24T07:30:00.000Z\"}],[\"$\",\"meta\",\"21\",{\"property\":\"article:modified_time\",\"content\":\"2026-08-24T07:30:00.000Z\"}],[\"$\",\"meta\",\"22\",{\"property\":\"article:author\",\"content\":\"Daria-Georgiana Chiriac\"}],[\"$\",\"meta\",\"23\",{\"property\":\"article:section\",\"content\":\"Blog\"}],[\"$\",\"meta\",\"24\",{\"property\":\"article:tag\",\"content\":\"Engineering Strategy\"}],[\"$\",\"meta\",\"25\",{\"property\":\"article:tag\",\"content\":\"AI in Engineering\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:creator\",\"content\":\"@celestify\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:title\",\"content\":\"The AI models are the easy part\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:description\",\"content\":\"AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI 
1into systems that perform, scale, and make commercial sense.\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image\",\"content\":\"https://celestify.com/payload-api/media/file/1716084698763.jpeg\"}],[\"$\",\"link\",\"31\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?c3febddb54fe6109\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/icon-4usi79.svg?62460d8b38ae0fac\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon-4usi79.png?e75011e973801870\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L19\",\"34\",{}]]\n"])</script>
1<script>self.__next_f.push([1,"1b:I[23414,[\"115\",\"static/chunks/115-c9a403bc108dd3d6.js\",\"24\",\"static/chunks/24-5447bd5adfb3cf0c.js\",\"7048\",\"static/chunks/7048-1593614faddd6414.js\",\"4877\",\"static/chunks/4877-c8c73ae1beca9220.js\",\"4415\",\"static/chunks/4415-247a6f8cfe9a9c17.js\",\"1639\",\"static/chunks/app/(frontend)/blog/%5Bslug%5D/page-895ce4fb42d544a8.js\"],\"Navbar\"]\n1c:I[36816,[\"115\",\"static/chunks/115-c9a403bc108dd3d6.js\",\"24\",\"static/chunks/24-5447bd5adfb3cf0c.js\",\"7048\",\"static/chunks/7048-1593614faddd6414.js\",\"4877\",\"static/chunks/4877-c8c73ae1beca9220.js\",\"4415\",\"static/chunks/4415-247a6f8cfe9a9c17.js\",\"1639\",\"static/chunks/app/(frontend)/blog/%5Bslug%5D/page-895ce4fb42d544a8.js\"],\"Link\"]\n1a:T49b,{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"The AI models are the easy part\",\"description\":\"AI is already changing how products get built. The opportunity is real, and so is the work behind it: good engineers are what turn AI into systems that perform, scale, and make commercial sense.\",\"url\":\"https://celestify.com/blog/the-ai-models-are-the-easy-part\",\"datePublished\":\"2026-08-24T07:30:00.000Z\",\"dateModified\":\"2026-08-24T07:30:00.000Z\",\"author\":{\"@type\":\"Person\",\"name\":\"Daria-Georgiana Chiriac\",\"jobTitle\":\"Full Stack TypeScript Developer\",\"url\":\"https://www.linkedin.com/in/daria-georgiana-chiriac-701399232/\",\"sameAs\":[\"https://www.linkedin.com/in/daria-georgiana-chiriac-701399232/\"]},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Celestify\",\"url\":\"https://celestify.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://celestify.com/icon-512.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://celestify.com/blog/the-ai-models-are-the-easy-part\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https://celestify.com/payload-api/media/file/1716084698763.jpeg\"},\"articleSection\":\"Engineering Strategy\",\"keywords\":\"Engineering Strategy, AI in Engineering\"}"])</script>
1<script>self.__next_f.push([1,"10:[\"$\",\"main\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1a\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Home\\\",\\\"item\\\":\\\"https://celestify.com\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"Blog\\\",\\\"item\\\":\\\"https://celestify.com/blog\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"The AI models are the easy part\\\",\\\"item\\\":\\\"https://celestify.com/blog/the-ai-models-are-the-easy-part\\\"}]}\"}}],[\"$\",\"$L1b\",null,{}],[\"$\",\"div\",null,{\"className\":\"relative -mt-8 sm:-mt-13\",\"children\":[[\"$\",\"div\",null,{\"className\":\"absolute inset-x-2 -top-20 bottom-0 overflow-hidden rounded-4xl ring-1 ring-black/5 ring-inset\",\"children\":[\"$\",\"div\",null,{\"className\":\"hero-gradient absolute inset-0\"}]}],[\"$\",\"div\",null,{\"className\":\"relative px-6 lg:px-8\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-2xl lg:max-w-7xl\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 items-center gap-10 pt-32 pb-16 sm:pt-36 sm:pb-20 md:pt-40 md:pb-24 lg:grid-cols-2 lg:gap-16\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-8\",\"children\":[\"$\",\"nav\",null,{\"aria-label\":\"Breadcrumb\",\"className\":\"text-sm\",\"children\":[\"$\",\"ol\",null,{\"className\":\"flex items-center gap-2 text-gray-500\",\"children\":[[\"$\",\"$1\",\"0\",{\"children\":[[\"$\",\"li\",null,{\"className\":\"flex items-center shrink-0\",\"children\":[\"$\",\"$L1c\",null,{\"href\":\"/\",\"className\":\"whitespace-nowrap transition-colors hover:text-gray-900\",\"children\":\"Home\"}]}],[\"$\",\"li\",null,{\"aria-hidden\":\"true\",\"className\":\"flex items-center\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\",\"data-slot\":\"icon\",\"ref\":\"$undefined\",\"aria-labelledby\":\"$undefined\",\"className\":\"size-4 shrink-0 text-gray-400\",\"children\":[null,[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M6.22 4.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.75.75 0 0 1-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 0 1 0-1.06Z\",\"clipRule\":\"evenodd\"}]]}]}]]}],[\"$\",\"$1\",\"1\",{\"children\":[[\"$\",\"li\",null,{\"className\":\"flex items-center shrink-0\",\"children\":[\"$\",\"$L1c\",null,{\"href\":\"/blog\",\"className\":\"whitespace-nowrap transition-colors hover:text-gray-900\",\"children\":\"Blog\"}]}],[\"$\",\"li\",null,{\"aria-hidden\":\"true\",\"className\":\"flex items-center\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\",\"data-slot\":\"icon\",\"ref\":\"$undefined\",\"aria-labelledby\":\"$undefined\",\"className\":\"size-4 shrink-0 text-gray-400\",\"children\":[null,\"$L1d\"]}]}]]}],\"$L1e\"]}]}]}],\"$L1f\",\"$L20\",\"$L21\"]}],\"$L22\"]}]}]}]]}],\"$L23\",\"$L24\",\"$L25\"]}]\n"])</script>
1<script>self.__next_f.push([1,"26:I[92021,[\"115\",\"static/chunks/115-c9a403bc108dd3d6.js\",\"24\",\"static/chunks/24-5447bd5adfb3cf0c.js\",\"7048\",\"static/chunks/7048-1593614faddd6414.js\",\"4877\",\"static/chunks/4877-c8c73ae1beca9220.js\",\"4415\",\"static/chunks/4415-247a6f8cfe9a9c17.js\",\"1639\",\"static/chunks/app/(frontend)/blog/%5Bslug%5D/page-895ce4fb42d544a8.js\"],\"TableOfContents\"]\n53:I[72978,[\"115\",\"static/chunks/115-c9a403bc108dd3d6.js\",\"24\",\"static/chunks/24-5447bd5adfb3cf0c.js\",\"7048\",\"static/chunks/7048-1593614faddd6414.js\",\"4877\",\"static/chunks/4877-c8c73ae1beca9220.js\",\"4415\",\"static/chunks/4415-247a6f8cfe9a9c17.js\",\"1639\",\"static/chunks/app/(frontend)/blog/%5Bslug%5D/page-895ce4fb42d544a8.js\"],\"Footer\"]\n:HL[\"https://celestify.com/payload-api/media/file/00707027e857150131269b5f10623b16628a0992-800x800.jpg\",\"image\"]\n:HL[\"https://celestify.com/payload-api/media/file/1716084698763.jpeg\",\"image\"]\n1d:[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M6.22 4.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.75.75 0 0 1-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 0 1 0-1.06Z\",\"clipRule\":\"evenodd\"}]\n1e:[\"$\",\"$1\",\"2\",{\"children\":[[\"$\",\"li\",null,{\"className\":\"flex items-center min-w-0\",\"children\":[\"$\",\"span\",null,{\"aria-current\":\"page\",\"title\":\"The AI models are the easy part\",\"className\":\"max-w-[16rem] truncate font-medium text-gray-900 sm:max-w-md\",\"children\":\"The AI models are the easy part\"}]}],false]}]\n1f:[\"$\",\"h1\",null,{\"className\":\"font-display text-4xl/[1.1] font-medium tracking-tight text-balance text-gray-950 sm:text-5xl/[1.05] md:text-6xl/[1.05]\",\"children\":\"The AI models are the easy part\"}]\n"])</script>
1<script>self.__next_f.push([1,"20:[\"$\",\"div\",null,{\"className\":\"mt-8\",\"children\":[\"$\",\"div\",null,{\"children\":[\"$undefined\",[\"$\",\"div\",null,{\"className\":\"flex flex-wrap gap-x-8 gap-y-4\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"img\",null,{\"alt\":\"Daria-Georgiana Chiriac\",\"src\":\"https://celestify.com/payload-api/media/file/00707027e857150131269b5f10623b16628a0992-800x800.jpg\",\"className\":\"size-10 rounded-full object-cover ring-1 ring-black/5\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 text-sm/5 font-medium text-gray-950\",\"children\":[\"Daria-Georgiana Chiriac\",[\"$\",\"$L1c\",null,{\"href\":\"https://www.linkedin.com/in/daria-georgiana-chiriac-701399232/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer me\",\"aria-label\":\"Daria-Georgiana Chiriac on LinkedIn\",\"className\":\"text-gray-400 transition-colors hover:text-[#0a66c2]\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"size-4\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M14.82 0H1.18A1.169 1.169 0 000 1.154v13.694A1.168 1.168 0 001.18 16h13.64A1.17 1.17 0 0016 14.845V1.15A1.171 1.171 0 0014.82 0zM4.744 13.64H2.369V5.996h2.375v7.644zm-1.18-8.684a1.377 1.377 0 11.52-.106 1.377 1.377 0 01-.527.103l.007.003zm10.075 8.683h-2.375V9.921c0-.885-.015-2.025-1.234-2.025-1.218 0-1.425.966-1.425 1.968v3.775H6.233V5.997H8.51v1.05h.032c.317-.601 1.09-1.235 2.246-1.235 2.405-.005 2.851 1.578 2.851 3.63v4.197z\"}]}]}]]}],[\"$\",\"span\",null,{\"className\":\"text-sm/5 text-gray-600\",\"children\":\"August 24, 2026\"}]]}]]}]]}]]}]}]\n21:[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-wrap gap-2\",\"children\":[[\"$\",\"$L1c\",\"engineering-strategy\",{\"href\":\"/blog?category=engineering-strategy\",\"className\":\"bg-white/95 shadow-glass supports-[backdrop-filter:blur(1px)]:bg-white/72 supports-[backdrop-filter:blur(1px)]:backdrop-blur-[12px] supports-[backdrop-filter:blur(1px)]:backdrop-saturate-[140%] [@media(prefers-reduced-transparency:reduce)]:bg-white/97 [@media(prefers-reduced-transparency:reduce)]:backdrop-blur-none rounded-full px-3 py-0.5 text-sm/6 font-medium text-gray-700 ring-1 ring-black/5 transition-colors hover:text-gray-950\",\"children\":\"Engineering Strategy\"}],[\"$\",\"$L1c\",\"ai-in-engineering\",{\"href\":\"/blog?category=ai-in-engineering\",\"className\":\"bg-white/95 shadow-glass supports-[backdrop-filter:blur(1px)]:bg-white/72 supports-[backdrop-filter:blur(1px)]:backdrop-blur-[12px] supports-[backdrop-filter:blur(1px)]:backdrop-saturate-[140%] [@media(prefers-reduced-transparency:reduce)]:bg-white/97 [@media(prefers-reduced-transparency:reduce)]:backdrop-blur-none rounded-full px-3 py-0.5 text-sm/6 font-medium text-gray-700 ring-1 ring-black/5 transition-colors hover:text-gray-950\",\"children\":\"AI in Engineering\"}]]}]}]\n22:[\"$\",\"div\",null,{\"className\":\"flex justify-center\",\"children\":[\"$\",\"img\",null,{\"alt\":\"1716084698763\",\"src\":\"https://celestify.com/payload-api/media/file/1716084698763.jpeg\",\"className\":\"aspect-[4/3] w-full max-w-lg rounded-2xl object-cover shadow-raised\"}]}]\n23:[\"$\",\"div\",null,{\"className\":\"px-6 lg:px-8\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-2xl lg:max-w-7xl\",\"children\":[\"$\",\"div\",null,{\"className\":\"mt-12 grid grid-cols-1 gap-8 pb-24 lg:grid-cols-[15rem_minmax(0,1fr)_15rem] lg:gap-12\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"hidden lg:block\",\"children\":[\"$\",\"div\",null,{\"className\":\"lg:sticky lg:top-32 lg:max-h-[calc(100dvh-11rem)] lg:overflow-y-auto\",\"children\":[\"$\",\"$L26\",null,{}]}]}],[\"$\",\"div\",null,{\"className\":\"js-toc-content mx-auto max-w-2xl text-gray-700\",\"children\":[[\"$\",\"div\",null,{\"className\":\"rich-text-article\",\"children\":[[\"$\",\"p\",\"0\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Getting an AI model to do something impressive takes minutes these days. \"],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"1\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"A support assistant answers questions faster than a human would. An internal tool summarises in seconds what used to take so"])</script>
1<script>self.__next_f.push([1,"meone hours to find. Product teams ship things that would have been unreasonable to attempt a few years ago, and the first version often works the same day.\",[\"$\",\"br\",\"1\",{}]],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"2\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"The most recent and relevant example of this last one is Asana's migration away from Enzyme, using \",[\"$\",\"a\",\"1\",{\"href\":\"https://openai.com/index/asana/\",\"className\":\"font-medium text-gray-950 underline decoration-gray-400 underline-offset-4 transition-colors hover:decoration-gray-600\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[\"Codex\"]}],\". OpenAI claims the work would have taken 5 years pre-AI, which is extremely questionable, though that's beside the point in fairness. Bottom line, something that Asana considered expensive and painful was done in 2 weeks by AI, cheap enough for them to be happy with it.\"],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"3\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"4\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"That is the part of AI everyone can see, whereas the harder part is after the demo when you still have to turn it into proper software.\"],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"5\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"h2\",\"6\",{\"id\":\"ai-doesn-t-replace-the-system-around-it\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"AI doesn't replace the system around it\"],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"7\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Lately there seems to be a lot of temptation (and sadly reality) where people treat the model as the product. User asks something, model thinks, model responds, done.\"],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"8\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Most real world software doesn't work like that. It has users, permissions, and real data that has to come from somewhere. Every action has very specific consequences, some things need to happen immediately, some can happen later, and some absolutely must not happen twice. In software, we call this deterministic behaviour.\"],\"style\":{\"textAlign\":\"left\"}}],[\"$\",\"p\",\"9\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"In contrast to AI, which is software with a probabilistic component inside it. Sometimes that component is incredibly powerful, like it can understand an email, simplify and explain something messy, pull information out of a long/boring document, write code, reason about a request, or decide which tool to use. That in itself doesn't mean that AI should be responsible for everything around it.\"],\"style\":{\"textAlign\":\"left\"}}],\"$L27\",\"$L28\",\"$L29\",\"$L2a\",\"$L2b\",\"$L2c\",\"$L2d\",\"$L2e\",\"$L2f\",\"$L30\",\"$L31\",\"$L32\",\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\",\"$L3e\",\"$L3f\",\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\",\"$L4b\",\"$L4c\",\"$L4d\",\"$L4e\",\"$L4f\",\"$L50\",\"$L51\"]}],\"$L52\"]}]]}]}]}]\n24:[\"$\",\"$L53\",null,{}]\n25:null\n"])</script>
1<script>self.__next_f.push([1,"54:I[55506,[\"115\",\"static/chunks/115-c9a403bc108dd3d6.js\",\"24\",\"static/chunks/24-5447bd5adfb3cf0c.js\",\"7048\",\"static/chunks/7048-1593614faddd6414.js\",\"4877\",\"static/chunks/4877-c8c73ae1beca9220.js\",\"4415\",\"static/chunks/4415-247a6f8cfe9a9c17.js\",\"1639\",\"static/chunks/app/(frontend)/blog/%5Bslug%5D/page-895ce4fb42d544a8.js\"],\"Button\"]\n27:[\"$\",\"p\",\"10\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n28:[\"$\",\"p\",\"11\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"If I already know that customer X has three unpaid invoices, I don't need GPT-5.6 to work that out for me. A simple database query tells me that already. Whereas if I need to decide whether an email is a cancellation request, an angry complaint or somebody asking for a copy of an invoice, that's a very good place for a model. The engineering judgement is knowing where the line between the two sits.\"],\"style\":{\"textAlign\":\"left\"}}]\n29:[\"$\",\"p\",\"12\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[]}]\n2a:[\"$\",\"h2\",\"13\",{\"id\":\"decide-what-doesn-t-need-a-model\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"Decide what doesn't need a model\"],\"style\":{\"textAlign\":\"left\"}}]\n2b:[\"$\",\"p\",\"14\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"We're increasingly seeing a pattern emerge as models become easier to use where everything starts getting pushed through it. A perfectly deterministic step becomes another instruction in the system prompt. Check whether the customer has an active subscription, work out which plan they're on, decide whether they're allowed to do this. \"],\"style\":{\"textAlign\":\"left\"}}]\n2c:[\"$\",\"p\",\"15\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Your app already knows all three answers, and you've just swapped something fast, cheap and deterministic for something slower, metered and capable of being wrong. The opposite mistake is real too, where trying to handle genuinely messy human input with 400 `if` statements isn't clever engineering either.\"],\"style\":{\"textAlign\":\"left\"}}]\n2d:[\"$\",\"p\",\"16\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n2e:[\"$\",\"p\",\"17\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"The best AI systems are hybrid, and use normal software vs models where they each shine respectively. The fact that AI can do something does not mean it should.\"],\"style\":{\"textAlign\":\"left\"}}]\n2f:[\"$\",\"p\",\"18\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n30:[\"$\",\"h2\",\"19\",{\"id\":\"the-demo-has-no-idea-what-happens-when-things-go-wrong\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"The demo has no idea what happens when things go wrong\"],\"style\":{\"textAlign\":\"left\"}}]\n31:[\"$\",\"p\",\"20\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"The happy path is very easy to build now, which is one reason AI demos are so seductive. Give the model the right input under the right conditions and it just feels like magic! But in reality, when an app is running in production, and the model takes 40 seconds instead of 4 seconds, what happens then?\"],\"style\":{\"textAlign\":\"left\"}}]\n32:[\"$\",\"p\",\"21\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"When the provider returns an error halfway through a workflow, what happens then? The user clicks the button 3x more because nothing is happening, and you've just run the same £2 operation 4 times in a row. The model confidently returns malformed data, or calls the right tool with the wrong arguments, or produces an answer that is technically valid, yet completely useless.\"],\"style\":{\"textAlign\":\"left\"}}]\n33:[\"$\",\"p\",\"22\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n34:[\"$\",\"p\",\"23\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"These"])</script>
1<script>self.__next_f.push([1," are everyday software problems, and they have software answers: retries, timeouts, queues, validation, idempotency, fallbacks, permissions, logs and sensible UX around failure. None of that makes for an exciting demo, and it is also exactly the difference between a demo and a product.\"],\"style\":{\"textAlign\":\"left\"}}]\n35:[\"$\",\"p\",\"24\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n36:[\"$\",\"h2\",\"25\",{\"id\":\"the-worst-failures-are-those-that-return-200-ok\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"The worst failures are those that return 200 OK\"],\"style\":{\"textAlign\":\"left\"}}]\n37:[\"$\",\"p\",\"26\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Traditional software has a useful habit of breaking loudly. Something throws an exception, a request fails, an alert fires, someone swears at Datadog.\"],\"style\":{\"textAlign\":\"left\"}}]\n38:[\"$\",\"p\",\"27\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"AI fails \",[\"$\",\"em\",\"1\",{\"children\":\"beautifully\"}],\" instead. The API returns successfully, latency looks normal and nothing shows up in the logs. Instead the answer is just bad. Maybe a prompt changed, maybe the wrong data was retrieved, or the most likely, your customers started giving it inputs you didn't anticipate. The system can happily keep returning `200 OK` while becoming less useful every day.\"],\"style\":{\"textAlign\":\"left\"}}]\n39:[\"$\",\"p\",\"28\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"So monitoring AI works differently. You still care about uptime and latency, but you have to care about output quality as well. Is it answering the right question? Did it extract the right information? Would a human agree with the decision? Are users correcting it more often than they did last month?\"],\"style\":{\"textAlign\":\"left\"}}]\n3a:[\"$\",\"p\",\"29\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Answering those means testing real outputs, keeping examples of good and bad behaviour, evaluating changes properly and actually looking at what the system does in production. Otherwise your first quality alert is a customer emailing to say the thing has been wrong for two weeks.\"],\"style\":{\"textAlign\":\"left\"}}]\n3b:[\"$\",\"p\",\"30\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n3c:[\"$\",\"h2\",\"31\",{\"id\":\"then-there-is-the-small-matter-of-the-bill\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"Then there is the small matter of the bill\"],\"style\":{\"textAlign\":\"left\"}}]\n3d:[\"$\",\"p\",\"32\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"AI is often hilariously cheap at prototype scale. You build something useful, run it 50x and spend £1.84.\"],\"style\":{\"textAlign\":\"left\"}}]\n3e:[\"$\",\"p\",\"33\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Then real people start using it. 1k users slowly become 10k users, context gets larger, you add another model call because the first one wasn't quite reliable enough, agents start calling tools, failed jobs retry, you name it. By then the economics look different.\"],\"style\":{\"textAlign\":\"left\"}}]\n3f:[\"$\",\"p\",\"34\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"That doesn't quite make AI expensive though, because it's still absurdly cheap compared with the human work it replaces. Instead it makes cost an architectural concern, such that you should know roughly what an important workflow costs, what happens to that number at 10x the volume, and what you're getting back for the money. If an AI feature costs £4k/mo and removes £30k of work, nobody sensible should care about the £4k spend. But if it costs £4k/mo and nobody can tell whether customers would notice you switching it off, you have a different problem.\"],\"style\":{\"textAlign\":\"left\"}}]\n40:[\"$\",\"p\",\"35\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"The fix is boring though."])</script>
1<script>self.__next_f.push([1," Use caching, minimise model calls, reduce context where possible, use a smaller model and most importantly use code instead of inference when the answer is already known. The model won't be offended!\"],\"style\":{\"textAlign\":\"left\"}}]\n41:[\"$\",\"p\",\"36\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n42:[\"$\",\"h2\",\"37\",{\"id\":\"good-engineers-matter-more-than-ever\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"Good engineers matter more than ever\"],\"style\":{\"textAlign\":\"left\"}}]\n43:[\"$\",\"p\",\"38\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"There's an understandable question hanging over software engineers at the moment, which is \\\"if AI can write the code, what is \",[\"$\",\"em\",\"1\",{\"children\":\"my\"}],\" job?\\\"\"],\"style\":{\"textAlign\":\"left\"}}]\n44:[\"$\",\"p\",\"39\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"The answer is pretty much what it always was, which is everything around the code. Deciding what should be built. Understanding the existing system before changing it. Working out what AI should and shouldn't be responsible for. Designing the interfaces between the deterministic and probabilistic parts of the product. Making sensible security decisions. Knowing what happens when something fails. Keeping the system understandable enough that somebody can change it six months later. Working out whether an impressive technical capability solves a problem anybody actually has. And, unfortunately the most painful one at the moment, reviewing what the agents produce.\"],\"style\":{\"textAlign\":\"left\"}}]\n45:[\"$\",\"p\",\"40\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Asana's Enzyme migration is a good example of that too. Engineers decided what needed to change, gave the agents an environment to work in, checked their progress and reviewed the proposed changes. AI moved the implementation boundary dramatically, but engineering judgement mattered more than ever.\"],\"style\":{\"textAlign\":\"left\"}}]\n46:[\"$\",\"p\",\"41\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"This is where some of the \\\"AI replaces software engineers\\\" conversation gets muddled. The human effort required to turn an idea into code is collapsing, but code was never the whole job.\"],\"style\":{\"textAlign\":\"left\"}}]\n47:[\"$\",\"p\",\"42\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n48:[\"$\",\"h2\",\"43\",{\"id\":\"let-s-build-boring-systems-around-clever-models\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"Let's build boring systems around clever models\"],\"style\":{\"textAlign\":\"left\"}}]\n49:[\"$\",\"p\",\"44\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Models will keep getting better! Six months from now they'll do things that are awkward today, and six months after that we'll move the line again. Predicting exactly where it stops is a waste of time. What you can do is build systems that are comfortable with the change.\"],\"style\":{\"textAlign\":\"left\"}}]\n4a:[\"$\",\"p\",\"45\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Keep model providers replaceable where you can, keep business logic outside the prompt and make model outputs structured and validate them before trusting them. Measure quality, cost and more than ever, know who owns the feature after it launches.\"],\"style\":{\"textAlign\":\"left\"}}]\n4b:[\"$\",\"p\",\"46\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Basically, make the system around the model boring. Boring is good, because the clever part will change every three months.\"],\"style\":{\"textAlign\":\"left\"}}]\n4c:[\"$\",\"p\",\"47\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[],\"style\":{\"textAlign\":\"left\"}}]\n4d:[\"$\",\"h2\",\"48\",{\"id\":\"how-we-think-about-ai-at-celestify\",\"className\":\"mt-12 mb-6 scroll-mt-32 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0\",\"children\":[\"How we th"])</script>
1<script>self.__next_f.push([1,"ink about AI at Celestify\"],\"style\":{\"textAlign\":\"left\"}}]\n4e:[\"$\",\"p\",\"49\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"We are extremely bullish about what AI makes possible. We use it constantly, we build with it, our engineers use coding agents, and we put models into products and internal workflows where they remove crazy amounts of manual work.\"],\"style\":{\"textAlign\":\"left\"}}]\n4f:[\"$\",\"p\",\"50\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"We're less interested in adding AI to something because somebody wants an AI feature on the roadmap. The question we start with is \\\"what problem are we solving? which pain are we removing?\\\" Sometimes the answer involves an agent, sometimes it involves retrieval, a model and three integrations, sometimes it involves a single skill.md file. Sometimes, it doesn't need a model at all.\"],\"style\":{\"textAlign\":\"left\"}}]\n50:[\"$\",\"p\",\"51\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"Making the impressive bit work is getting easier every month. Making the whole thing useful, reliable, secure and economically sensible is still the job.\"],\"style\":{\"textAlign\":\"left\"}}]\n51:[\"$\",\"p\",\"52\",{\"className\":\"my-6 text-base/8 first:mt-0 last:mb-0\",\"children\":[\"If you've got an AI feature in that grey area and can't tell which side of the line it sits on, it's worth working that out before you build it and we're happy to help you think it through.\"],\"style\":{\"textAlign\":\"left\"}}]\n52:[\"$\",\"div\",null,{\"className\":\"mt-10\",\"children\":[\"$\",\"$L54\",null,{\"variant\":\"outline\",\"href\":\"/blog\",\"children\":[[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\",\"data-slot\":\"icon\",\"ref\":\"$undefined\",\"aria-labelledby\":\"$undefined\",\"className\":\"size-4\",\"children\":[null,[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M9.78 4.22a.75.75 0 0 1 0 1.06L7.06 8l2.72 2.72a.75.75 0 1 1-1.06 1.06L5.47 8.53a.75.75 0 0 1 0-1.06l3.25-3.25a.75.75 0 0 1 1.06 0Z\",\"clipRule\":\"evenodd\"}]]}],\"Back to blog\"]}]}]\n"])</script>
1<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a457807fbde457b1',t:'MTc5MTE1MTY3Mg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
1<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"6b36926cf58447189b610947e2a42967","spa":2}' crossorigin="anonymous"></script>
1
2</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.