{"id":109645,"date":"2025-02-25T18:59:51","date_gmt":"2025-02-25T18:59:51","guid":{"rendered":"https:\/\/peraltafinancing.com\/business\/marketing\/code-is-now-content-how-we-built-our-seo-calculator-with-ai\/"},"modified":"2025-02-25T18:59:51","modified_gmt":"2025-02-25T18:59:51","slug":"code-is-now-content-how-we-built-our-seo-calculator-with-ai","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=109645","title":{"rendered":"Code Is Now Content: How We Built Our SEO Calculator With AI"},"content":{"rendered":" \r\n<br><div id=\"\">\n                \n<!-- \/wp:post-content -->\n\n<!-- wp:paragraph -->\n<p>AI researcher Andrej Karpathy calls this <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/x.com\/karpathy\/status\/1886192184808149383\">&#8220;vibe coding:&#8221;<\/a> You provide high-level ideas and direction (the vibe) while the AI handles the technical details (the code).<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For the past six months, I\u2019ve been vibing as a non-coder. I\u2019ll show you what I\u2019ve learned from converting a basic SEO forecasting template into a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/seo-forecast.animalz.co\/\">polished, public-facing tool<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Famous Last Words: \u201cI\u2019ll Build That In an Hour\u201d<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>My adventure started with a messy spreadsheet that estimated organic traffic from a list of keywords. While it worked for internal strategy gut checks, we&#8217;d never show it to a client: a cacophony of cells, jumbled formulas, and zero brand polish.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4351,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/SEO-tool-Excel-screenshot.jpg\" alt=\"\" class=\"wp-image-4351\"\/><figcaption><em>The genesis of our forecasting app: a good old spreadsheet.<\/em><\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>I said, \u201cI can turn that into an app in less than an hour,\u201d overconfident from my first successful vibe coding experience \u2014 updating <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/revive.animalz.co\/\">our content refresh tool Revive.<\/a><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I opened <a href=\"https:\/\/claude.ai\" target=\"_blank\" rel=\"noreferrer noopener\">Anthropic\u2019s Claude<\/a>, pasted in the spreadsheet\u2019s logic with some additional context,<br\/>prompted it to create an app, and&#8230;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A functional SEO calculator appeared!<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4352,\"sizeSlug\":\"large\",\"linkDestination\":\"custom\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/seo-forecast.animalz.co\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/tool-start-and-end-w1500-border.jpg\" alt=\"\" class=\"wp-image-4352\"\/><\/a><figcaption><em>The final version on the right still bears some resemblance to Claude\u2019s first mockup.<\/em><\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Smooth <s>sailing<\/s> vibing so far.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Styling was easy, too. I attached our brand guidelines and a screenshot of Revive, and Claude more or less nailed the design that appears in the live tool today.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Let\u2019s pause here for a moment to reflect on what we just did. In half an hour, I created a professional-looking, functional mini-app. Pre-AI, this would have taken a developer at least a day.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I was right: I could build the app in under an hour!<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Well, yes, but there were issues.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can click around in prototypes within Claude\u2019s interface, but you can\u2019t run more complex code and interactions, like uploading CSV files with keywords, as I wanted to do.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The other problem with coding in Claude is its usage limits (even on the paid plan). Each interaction uses &#8220;tokens&#8221; \u2014 essentially credits that measure how much you can ask the AI to do.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Generating code uses up these tokens quickly, especially if, like me, you don&#8217;t really know what you&#8217;re doing and need multiple attempts to get things working. And so you&#8217;ll often find yourself waiting for hours until Claude will help you again.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>Quick aside: My coworker and fellow vibe coder Nathan Wahl sees Claude&#8217;s limitation as a benefit. Both of us discovered (and you might too) that coding is addictive. He finds himself at his computer way past bedtime too often, trying to fix or add just &#8220;one more thing&#8221;\u2014Claude&#8217;s usage limits actually force him to go to sleep.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Time for the Big League With a Real Dev Tool<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>As you get more ambitious with your apps, you&#8217;ll run up against the limitations of AI chat tools \u2014 as I did. To build exciting stuff, you need a real programming tool that allows you to:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Interact with your codebase directly with AI and without usage limits.<\/li><li>Work across multiple files at once. No more copying and pasting between chats.<\/li><li>Deploy and test your app in a real development environment.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>I&#8217;ve been using <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/www.cursor.com\/\">Cursor<\/a>, but similar alternatives exist, like <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/replit.com\/\">Replit<\/a> and <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/codeium.com\/windsurf\">Windsurf<\/a>. They all present a similar interface: overwhelming walls of code and a small AI chat panel on the right.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4353,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/Cursor-interface.jpg\" alt=\"\" class=\"wp-image-4353\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>The good news is that you\u2019ll rarely have to venture into the dark depths of code because most of your time is spent in that chat window.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Does that mean you should say goodbye to Claude and ChatGPT? Not at all. They were often the last thing standing between me and my computer flying out of the window after hours of failed bug fixing. But we\u2019ll get to that.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>First, let\u2019s go back to Cursor\u2019s chat window and the SEO forecasting tool.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In the chat, I explain in plain English what I want to build, saying things like:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\u201cUse this prototype code I created with Claude and turn it into a functioning app.\u201d<\/li><li>\u201cMake that button a little larger.\u201d<\/li><li>\u201cI want an exit-intent pop-up to capture email addresses and send them to ConvertKit.\u201d<\/li><li>\u201cLet\u2019s refine the algorithm so sites with higher Domain Authority (DA) rank more easily for low-difficulty keywords.\u201d<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Whenever I give tasks like these, the AI proposes a change to accept or reject.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4354,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/cursor-reject-accept-1200w.jpg\" alt=\"\" class=\"wp-image-4354\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><em>Pro tip I learned the hard way:<\/em><\/strong><em> before starting in Cursor, discuss your project with an advanced AI model like Claude or <\/em><a href=\"https:\/\/www.animalz.co\/blog\/chatgpt-o1-pro\/\"><em>ChatGPT&#8217;s o1 pro<\/em><\/a><em>. Explain you&#8217;re building an app and want the AI to help you think through the scope and architecture. The AI will create a brief for Cursor to set up an organized file structure.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>I skipped this step and ended up with all my code in one massive file \u2014 a mess that forced me to rebuild significant parts of the project later.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Surviving the Valley of Death (Where Ambitious Apps Die)<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>With AI handling the code, is there anything left for you to worry about? Well, yes. The challenge is getting your tool to function and feel <em>exactly<\/em> how you want it to.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The hill I nearly died on during this project was the <em>algorithm<\/em> behind the forecast. It&#8217;s the perfect example of why a tailored experience increases the time you spend on app building \u2014 and the handicaps you face as a non-coder.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Initially, the forecasts of the Claude prototype seemed good. But as I started looking at details, there was a lot to dislike:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Low DA sites would rank for hard keywords.<\/li><li>High DA sites would <em>always<\/em> rank #1 for easy keywords.<\/li><li>Keywords would never <em>not<\/em> rank.<\/li><li>All articles would start ranking from month one, regardless of the monthly content production setting.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Issues like these led to endless conversations with my code in Cursor. \u201cMake it harder for low DA sites to rank for high KD keywords.\u201d \u201cIntroduce a probability for keywords not to rank at all.\u201d And so on.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This worked, until it didn\u2019t.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Low DA sites stopped ranking for hard keywords, but then the probability for keywords not to rank would break. I fixed that, then my low DA sites would rank again for hard keywords.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I was going around in coding circles, and it was driving me mad. I knew a real coder would solve these issues in minutes, but I could only work through my interpreter, Cursor&#8217;s chat.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I was ready to throw my computer out the window. As a last resort, I called the Mr. Wolf of AI models, ChatGPT\u2019s o1 pro.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4355,\"sizeSlug\":\"large\",\"linkDestination\":\"custom\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.animalz.co\/blog\/chatgpt-o1-pro\/\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/o1-pro-mr-wolf.jpg\" alt=\"\" class=\"wp-image-4355\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Just as different team members bring unique strengths to a project, each AI model has its own &#8220;personality&#8221; and role. Claude is fast and excels at creativity and regular coding tasks. O1 pro is like a senior engineer: analytical, wise, and thorough (and expensive!).<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This became my standard troubleshooting process whenever I hit a wall:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol><li>Ask Cursor for an exhaustive overview of the problem and the solutions we\u2019ve tried \u201cfor a senior engineer to review.\u201d<\/li><li>Bring Cursor\u2019s output and relevant code to o1 pro.<\/li><li>Ask o1 pro to find the problem and propose solutions written in a prescriptive way for \u201cyour developer to implement.\u201d<\/li><li>Copy-paste the solutions back into Cursor to see if they solve your problem. Usually, they do.<\/li><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>This approach saved me countless times. Once, I\u2019d tried everything to tweak the forecasting algorithm but kept seeing incorrect values in my chart.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4356,\"sizeSlug\":\"large\",\"linkDestination\":\"custom\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/seo-forecast.animalz.co\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/Projected-growth-chart.png\" alt=\"\" class=\"wp-image-4356\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Cursor was no help. It kept contradicting itself while the charts remained stubbornly wrong. First it would insist, &#8220;The calculations are correct, no changes needed.&#8221; Then in the next response: &#8220;Actually, we need to change the algorithm.&#8221;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I&#8217;d make the suggested changes, but the charts were still incorrect. Then Cursor would flip back: &#8220;No, the original calculations were right after all.&#8221; Round and round we went in a maddening loop.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>By calling in o1 pro to review the relevant code, I determined:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol><li>The algorithm was working as I intended.<\/li><li>The problem was in the front-end code that renders the user interface.<\/li><li>A duplicate piece of code caused problems and had to be removed.<\/li><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>This debugging dance between different AI models became a regular part of my development process. Sometimes, I felt less like a developer and more like a messenger running between AI tools \u2014 perhaps a glimpse of our future role: coordinating AIs instead of doing the work directly.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Here&#8217;s another example of my AI runner role: I used Gemini&#8217;s Deep Research feature to analyze SEO performance benchmarks from Ahrefs, Backlinko, Moz, and others. (ChatGPT and Perplexity have since <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/weeatrobots.substack.com\/p\/deep-research-wars-openai-perplexity\">introduced similar deep research capabilities<\/a>.) The AI extracted metrics and patterns about ranking factors, which I then fed to o1 pro and Cursor to refine our forecasting algorithm with real-world data.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Think You&#8217;re Done? Let&#8217;s Deploy<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>I spent more time wrapping up the project than creating the initial MVP because to make an app accessible to others, you must host it on a server.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For non-technical folks like me, doing so used to be intimidating, cumbersome, or impossible. Now, because of serverless deployment platforms like <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/vercel.com\/\">Vercel<\/a>, it\u2019s become feasible: Vercel configures a server for scripts, programming languages, databases, and anything else required to run your app.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4357,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/vercel-1200w.jpg\" alt=\"\" class=\"wp-image-4357\"\/><figcaption><em>Vercel, your app\u2019s final destination.<\/em><\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>That\u2019s not to say it\u2019s easy. For starters, you need to sync your app into Vercel through GitHub, a version control system for code. (And we\u2019ll touch on how much I like GitHub soon\u2026)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>After getting your app in Vercel, you&#8217;ll likely face a few, &#8220;but it worked on my computer!&#8221; moments. For example, my email capture form stopped working because Vercel needed separate access credentials to ConvertKit (an email service).<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>As before, my friend in such situations is ChatGPT (and especially o1 pro). I could have never navigated Vercel without an AI chat window to guide me when I got stuck.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><em>Pro tip:<\/em><\/strong><em> When you don&#8217;t know what to do, drop screenshots into ChatGPT or Claude, and it will tell you exactly what to try next.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Once I finally had the app accessible to others through Vercel, there was one step left for actual humans: testing.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I asked AI to point out issues with my work, but fellow beings still found flaws our robot friends missed:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Entering just a few keywords produced unusual charts.<\/li><li>People left when they did not have a CSV at hand.<\/li><li>Question mark icon buttons didn&#8217;t work.<\/li><li>People weren\u2019t sure where to find their Domain Authority.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Some of these issues took a minute to fix. Others sent me through another hour-long loop of Cursor \u2192 o1 pro \u2192 Cursor. \ud83e\udd2f<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>What I Learned the Hard Way<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Here are the most valuable lessons I learned from <s>weeks of <\/s><s>running<\/s><s> between AI tools, banging my head against walls, and nearly launching my laptop into orbit<\/s> building with AI. Hopefully, they save you some headaches.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4358,\"sizeSlug\":\"large\",\"linkDestination\":\"custom\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.linkedin.com\/posts\/metztim_this-should-be-easy-to-turn-into-an-app-activity-7295781280099577856-_kk7\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/LI-lessons-video.jpg\" alt=\"\" class=\"wp-image-4358\"\/><\/a><figcaption><em>I talk to three of the below lessons <\/em><a href=\"https:\/\/www.linkedin.com\/posts\/metztim_this-should-be-easy-to-turn-into-an-app-activity-7295781280099577856-_kk7\" target=\"_blank\" rel=\"noreferrer noopener\"><em>in this video on LinkedIn<\/em><\/a><em>.<\/em><\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Be Realistic About Your Scope<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Don&#8217;t dismiss the &#8220;5-minute AI app&#8221; possibility. But before you start, evaluate if you&#8217;re building a standard app AI can quickly create or something bespoke that will take much more time. That clarity helps you decide if the project is worth pursuing.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I thought our SEO forecaster would be quick and simple. Weeks later, I wished I&#8217;d done that assessment more carefully. I might have approached the project differently \u2014 or invested my time elsewhere.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Pick the Right AI for Your Needs<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Each AI model brings different capabilities (dare I say &#8220;personalities&#8221;?) to your development process, much like team members with distinct roles:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Use Claude for rapid prototyping, simple tools, and design guidance.<\/li><li>Move to Cursor for larger projects, customization, and sophistication.<\/li><li>Call in o1 pro as your &#8220;senior engineer&#8221; for thorny problems.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Know When to Ship (and When to Stop)<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>AI makes <em>anything<\/em> possible. There\u2019s always another improvement to make or flaw to fix, so it\u2019s tempting to keep tweaking forever.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>My SEO calculator started with basic calculations. Then, it grew to include real-world benchmarks and probability curves. Each addition added complexities, potential bugs, and debugging time.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The trick is finding a balance between &#8220;minimum viable&#8221; and &#8220;perfect.&#8221; Start simple, validate with real users, and add complexity only when truly needed. Ship the app before you convince yourself to add &#8220;just one more feature.&#8221;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Accept Version Control as Your Frenemy<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>AI sometimes introduces unwanted changes in unknown places. Without version control, you quickly end up in a maze of broken code with no way back.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I learned to save frequently with GitHub so I could revert when things went wrong \u2014 which happened often.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>(Actually, that sentence doesn&#8217;t begin to capture the struggles I&#8217;ve been through to get some understanding of GitHub. Even after this project, I still need a cheat sheet with GitHub commands AND constantlyask ChatGPT questions about it.)<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Let AI Be Your Translator<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>AI became my universal translator throughout this project. Not just for turning my feature requests into code, but for bridging many other gaps in understanding:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>When I needed to grasp how our forecasting algorithm actually worked, I&#8217;d ask AI to explain it in plain English.<\/li><li>When I gathered SEO benchmark research, AI helped translate those findings into code improvements.<\/li><li>When I got stuck debugging, AI translated the situation into situational briefs for o1 pro to review.<\/li><li>When someone had questions about the tool, I asked Cursor to &#8220;interview&#8221; the codebase for <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/www.linkedin.com\/posts\/metztim_this-should-be-easy-to-turn-into-an-app-activity-7295981499953070080--NR2\">answers<\/a>.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3>Be Engaged, Not Afraid<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>The black screen filled with code can seem scary at times. But vibe coding means you don&#8217;t need to understand every technical detail \u2014 that&#8217;s the AI&#8217;s job.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You do need to keep an eye on the AI&#8217;s actions. Watch for obvious issues like it getting stuck in loops or duplicating files unnecessarily. You&#8217;re still the driver, though it often feels like you&#8217;re in the passenger seat!<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2>Yes, We Can Code Now<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>We\u2019ve entered a world where AI lets anyone build software without first spending years learning how to code. But building well still requires patience, planning, and persistence. The \u201c5-minute AI app\u201d is possible but often won\u2019t meet your needs, especially if you create apps for others.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Still, this democratization of coding is significant. It seems like a small miracle that I eventually ended up with a live <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/seo-forecast.animalz.co\/\">SEO forecasting tool<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>With curiosity and determination, you can create scripts that speed up your day, interactive experiences that delight your audience, and tools that solve real customer problems.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>So, take a sticky note, write &#8220;code is now content,&#8221; and put it on your screen as a constant reminder of your new superpowers.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":4359,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2025\/02\/code-is-now-content-sticky.jpg\" alt=\"\" class=\"wp-image-4359\"\/><\/figure>\n<!-- \/wp:image -->                <div class=\"article-author\">\n\t\n\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/animalzinc.wpenginepowered.com\/wp-content\/uploads\/2024\/11\/Tim-Metz-03.jpg\" srcset=\"https:\/\/www.animalz.co\/wp-content\/uploads\/2024\/11\/Tim-Metz-03.jpg 2x\" class=\"avatar avatar-125 photo\" height=\"125\" width=\"125\" loading=\"lazy\"\/>\n\t<h5><a href=\"https:\/\/www.animalz.co\/blog\/author\/tim\/\">\n\t\tTim Metz\t<\/a><\/h5>\n\n\t\t\t<a href=\"https:\/\/twitter.com\/timmetz\" class=\"social-link\" target=\"_blank\">\n\t\t\t<svg class=\"icon icon-twitter\"><use xlink:href=\"#icon-twitter\"\/><\/svg> Follow Tim\t\t<\/a>\n\t\n\t<p>Tim is the Director of Marketing and Innovation at Animalz. He&#8217;s also the creator of <a href=\"https:\/\/saent.com\" rel=\"noopener\">Lifeline, a pomodoro timer app<\/a> for macOS. Tim lives in Koh Samui, Thailand. \ud83c\udfdd\ufe0f<\/p>\n<\/div>            <\/div><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\r\n<br>\r\n","protected":false},"excerpt":{"rendered":"<p>AI researcher Andrej Karpathy calls this &#8220;vibe coding:&#8221; You provide high-level ideas and direction (the vibe) while the AI handles the technical details (the code). For the past six months, I\u2019ve been vibing as a non-coder. I\u2019ll show you what I\u2019ve learned from converting a basic SEO forecasting template into a polished, public-facing tool. Famous [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":109647,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[98],"tags":[10243,10470,11230,7222,12733],"dealstore":[],"offerexpiration":[],"class_list":["post-109645","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-marketing","tag-built","tag-calculator","tag-code","tag-content","tag-seo"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Code Is Now Content: How We Built Our SEO Calculator With AI - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=109645\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Code Is Now Content: How We Built Our SEO Calculator With AI - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"AI researcher Andrej Karpathy calls this &#8220;vibe coding:&#8221; You provide high-level ideas and direction (the vibe) while the AI handles the technical details (the code). For the past six months, I\u2019ve been vibing as a non-coder. I\u2019ll show you what I\u2019ve learned from converting a basic SEO forecasting template into a polished, public-facing tool. Famous [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=109645\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-25T18:59:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1344\" \/>\n\t<meta property=\"og:image:height\" content=\"896\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=109645#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=109645\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Code Is Now Content: How We Built Our SEO Calculator With AI\",\"datePublished\":\"2025-02-25T18:59:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=109645\"},\"wordCount\":2500,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=109645#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg\",\"keywords\":[\"Built\",\"Calculator\",\"Code\",\"Content\",\"SEO\"],\"articleSection\":[\"Marketing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=109645#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=109645\",\"url\":\"https:\/\/fivemor.com\/?p=109645\",\"name\":\"Code Is Now Content: How We Built Our SEO Calculator With AI - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=109645#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=109645#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg\",\"datePublished\":\"2025-02-25T18:59:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=109645#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=109645\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=109645#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg\",\"width\":1344,\"height\":896},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=109645#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Code Is Now Content: How We Built Our SEO Calculator With AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Code Is Now Content: How We Built Our SEO Calculator With AI - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=109645","og_locale":"en_US","og_type":"article","og_title":"Code Is Now Content: How We Built Our SEO Calculator With AI - Som2ny Network","og_description":"AI researcher Andrej Karpathy calls this &#8220;vibe coding:&#8221; You provide high-level ideas and direction (the vibe) while the AI handles the technical details (the code). For the past six months, I\u2019ve been vibing as a non-coder. I\u2019ll show you what I\u2019ve learned from converting a basic SEO forecasting template into a polished, public-facing tool. Famous [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=109645","og_site_name":"Som2ny Network","article_published_time":"2025-02-25T18:59:51+00:00","og_image":[{"width":1344,"height":896,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=109645#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=109645"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Code Is Now Content: How We Built Our SEO Calculator With AI","datePublished":"2025-02-25T18:59:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=109645"},"wordCount":2500,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=109645#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg","keywords":["Built","Calculator","Code","Content","SEO"],"articleSection":["Marketing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=109645#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=109645","url":"https:\/\/fivemor.com\/?p=109645","name":"Code Is Now Content: How We Built Our SEO Calculator With AI - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=109645#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=109645#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg","datePublished":"2025-02-25T18:59:51+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=109645#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=109645"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=109645#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/code-is-content-hero-image.jpg","width":1344,"height":896},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=109645#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Code Is Now Content: How We Built Our SEO Calculator With AI"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/109645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=109645"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/109645\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/109647"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=109645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=109645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=109645"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=109645"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=109645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}