<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: ShipStack</title>
    <description>The latest articles on Forem by ShipStack (@shipstack).</description>
    <link>https://forem.com/shipstack</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3930116%2Fc70d709c-5286-476f-a37f-7ff6e8bb397b.png</url>
      <title>Forem: ShipStack</title>
      <link>https://forem.com/shipstack</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shipstack"/>
    <language>en</language>
    <item>
      <title>I Gave My AI Agent the Ability to Research Before It Writes — Here’s What Changed</title>
      <dc:creator>ShipStack</dc:creator>
      <pubDate>Mon, 25 May 2026 23:42:18 +0000</pubDate>
      <link>https://forem.com/shipstack/i-gave-my-ai-agent-the-ability-to-research-before-it-writes-heres-what-changed-d9</link>
      <guid>https://forem.com/shipstack/i-gave-my-ai-agent-the-ability-to-research-before-it-writes-heres-what-changed-d9</guid>
      <description>&lt;h1&gt;
  
  
  I Gave My AI Agent the Ability to Research Before It Writes — Here's What Changed
&lt;/h1&gt;

&lt;p&gt;Four weeks ago, I had no idea what an AI agent was. Now I'm building one that researches market trends before writing about them, synthesizes information from three independent sources, and produces work that scores 96/100 on my eval system.&lt;/p&gt;

&lt;p&gt;The change didn't come from a new model or a fancy framework. It came from stopping my agent from writing blind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Writing From Memory, Not Evidence
&lt;/h2&gt;

&lt;p&gt;When I first built ShipStack's article factory, it was simple. I'd prompt Claude: "Write an article about AI agents and multi-agent orchestration." Claude would write. It was fine. Coherent. On-brand.&lt;/p&gt;

&lt;p&gt;But it was hollow.&lt;/p&gt;

&lt;p&gt;I realized what was happening: my agent was writing from pattern matching. It knew what an article about AI agents &lt;em&gt;should&lt;/em&gt; look like because it had seen thousands. But it didn't &lt;em&gt;know&lt;/em&gt; what was actually happening in the market right now. It didn't know that Cursor just hit $9.9B valuation with Agent Mode as the headline feature. It didn't know that enterprise leaders are abandoning 60% of AI projects because their data isn't ready. It didn't know that accuracy compounds exponentially—if each agent action hits 85%, a 10-step workflow only succeeds 20% of the time.&lt;/p&gt;

&lt;p&gt;It was writing confidently about things it didn't actually understand.&lt;/p&gt;

&lt;p&gt;That's the gap between a chatbot and a real agent. A chatbot answers questions. An agent &lt;em&gt;investigates&lt;/em&gt; before it acts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Insight: Research First, Then Write
&lt;/h2&gt;

&lt;p&gt;I started noticing something in my own process. When I write about something I actually understand, the work is sharper. More specific. I reference concrete numbers, real tools, actual timelines. When I'm writing from half-memory, it's generic. Filler. Safe.&lt;/p&gt;

&lt;p&gt;So I asked myself: what if my writing agent worked the same way?&lt;/p&gt;

&lt;p&gt;Instead of "Write an article about X," the prompt became:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Research X using three independent sources (Brave Search, DuckDuckGo, Wikipedia)&lt;/li&gt;
&lt;li&gt;Synthesize what you find into a structured brief with four sections: background, what's happening now, gaps nobody's talking about, and actual numbers&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Then&lt;/em&gt; write the article using the brief as your foundation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The research agent runs independently. Error handling per source. If one fails, the others still work. Claude Haiku synthesizes the raw results into a clean brief—background noise removed, signal amplified. The brief gets injected into the writer's context before the first word is written.&lt;/p&gt;

&lt;p&gt;First article written with research scored 96/100 on eval.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Changed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Specificity Became Default
&lt;/h3&gt;

&lt;p&gt;Before research: "AI agents are transforming business automation."&lt;/p&gt;

&lt;p&gt;After research: "Cursor's Agent Mode hit 8 parallel agents and $9.9B valuation. NVIDIA's GTC 2026 saw agentic frameworks draw the largest attendance, signaling enterprise deployment momentum."&lt;/p&gt;

&lt;p&gt;One is a claim. The other is evidence.&lt;/p&gt;

&lt;p&gt;The brief gives the writer ammunition. Real stats. Real context. Real angles. The writing doesn't have to be cautious anymore because it's grounded in something verifiable.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Gaps Became Visible
&lt;/h3&gt;

&lt;p&gt;Here's what shocked me: the research agent found problems that &lt;em&gt;nobody&lt;/em&gt; is talking about, even though they're critical.&lt;/p&gt;

&lt;p&gt;Accuracy compounding is a perfect example. Everyone talks about 85% per-action accuracy as a win. Almost nobody mentions that this cascades to ~20% success in 10-step workflows. The brief highlighted this as an "angle nobody's exploring." The article could then address it directly.&lt;/p&gt;

&lt;p&gt;A writer without research writes from memory gaps. A writer with research writes from knowledge gaps—and those are infinitely more valuable.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Trust Became Quantifiable
&lt;/h3&gt;

&lt;p&gt;When I read the 96/100 article, I didn't just &lt;em&gt;feel&lt;/em&gt; it was better. I could point to why. The piece mentioned three validated statistics. It cited specific products and company valuations. It acknowledged real problems with real consequences. The eval system rated it higher because the work was verifiable.&lt;/p&gt;

&lt;p&gt;That's the real shift. The agent isn't smarter. But it's more honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Actually Works (The Technical Part)
&lt;/h2&gt;

&lt;p&gt;I'm not going to pretend this is rocket science. It's not. But it's also not trivial, and I had to think through some real problems.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Simplified version of the research pipeline
&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;research_topic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Research a topic across three independent sources.
    Returns structured brief with background, current discussion, gaps, and stats.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="n"&gt;sources&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Brave Search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;func&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;search_brave&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DuckDuckGo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;func&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;search_duckduckgo&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Wikipedia&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;func&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;search_wikipedia&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="c1"&gt;# Run all searches in parallel
&lt;/span&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;func&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Individual source failure doesn't kill the whole pipeline
&lt;/span&gt;            &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# Synthesize results into structured brief
&lt;/span&gt;    &lt;span class="n"&gt;brief&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;synthesize_with_claude&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;sections&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;background&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;what_is_being_discussed_now&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gaps_and_underexplored_angles&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;key_stats_and_data_points&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;brief&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The critical decisions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Independent error handling&lt;/strong&gt;: If Brave Search fails, DuckDuckGo still runs. If Wikipedia times out, the brief still synthesizes from two sources. I learned this the hard way—the first version failed if any source failed. Production taught me otherwise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parallel execution&lt;/strong&gt;: All three search queries run at the same time using &lt;code&gt;asyncio.gather()&lt;/code&gt;. Sequential would take 3x longer. In production, speed matters because every second of latency is a second the user waits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured synthesis&lt;/strong&gt;: The brief isn't just raw search results dumped together. Claude is instructed to organize findings into four specific sections. Background is history and context. "What's being discussed now" is current momentum and trends. "Gaps" is the angle—what everyone's talking about versus what's actually critical. "Key stats" is the ammunition. This structure forces clarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Cost
&lt;/h2&gt;

&lt;p&gt;I need to be honest about the downside: this costs more tokens.&lt;/p&gt;

&lt;p&gt;Each research cycle uses Haiku (cheap) for searches and synthesis, then Sonnet (more expensive) for actual writing. A single article now pulls maybe 15,000-20,000 tokens where it used to pull 8,000-10,000. It's not dramatic, but it adds up across the article factory.&lt;/p&gt;

&lt;p&gt;What I found: the 20% increase in token cost produces articles that score 15-20% higher on eval. The math works. But only if you're actually shipping and measuring. If you're just trying to sound smart, research doesn't matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Do Differently (If I Started Over)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Measure before and after&lt;/strong&gt;: I didn't quantify article quality until &lt;em&gt;after&lt;/em&gt; I built this. If I were starting over, I'd eval the old system, then the new one, so I'd have concrete proof. (I got lucky—the 96/100 score validated it retroactively.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automate source selection&lt;/strong&gt;: Right now I hardcoded three sources. But different topics benefit from different research. A technical deep-dive needs StackOverflow and GitHub. A market analysis needs Crunchbase and SEC filings. A framework update needs the official docs. Future version should route the query to the right sources automatically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build a feedback loop from eval back to research&lt;/strong&gt;: If an article scores 72/100 because it's missing recent data, the research agent should know that. Right now research and writing are separate. Next step is making them iterative.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Broader Pattern
&lt;/h2&gt;

&lt;p&gt;This is bigger than article writing.&lt;/p&gt;

&lt;p&gt;I'm seeing this pattern across all six of ShipStack's pipelines. When agents have access to real-time context—whether that's current market data, your inbox status, your GitHub repos, or your company priorities—they make better decisions. When they're operating on stale mental models, they fail quietly.&lt;/p&gt;

&lt;p&gt;The Morning Brief pipeline needs current date and recent priorities (stored in memory) to actually be useful. The Inbox Zero processor needs to know which senders matter historically. The Repo Triage system needs to know what's actively shipping versus abandoned. Right now memory is an island—only the article factory reads from it. Next is connecting memory to all five other pipelines.&lt;/p&gt;

&lt;p&gt;Research before action. Memory-informed decisions. Real-time context.&lt;/p&gt;

&lt;p&gt;That's the move from agent-as-tool to agent-as-actually-useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm Building Next
&lt;/h2&gt;

&lt;p&gt;I want to push this further. Instead of research happening once per article, I want continuous background research running on topics I care about—AI agents, agent engineering, multi-agent orchestration, memory architecture. The agent saves interesting findings to memory automatically. When I sit down to write, the brief isn't built from scratch—it's pulled from three weeks of background research plus fresh daily snapshots.&lt;/p&gt;

&lt;p&gt;That's still hypothetical. But I'm building toward it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Lesson
&lt;/h2&gt;

&lt;p&gt;Four weeks ago I thought building an AI agent meant connecting APIs and writing prompts. Now I understand it's about giving agents the ability to &lt;em&gt;think&lt;/em&gt; before they &lt;em&gt;act&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A chatbot without research writes confidently about things it doesn't know. An agent with research writes carefully about things it does.&lt;/p&gt;

&lt;p&gt;The difference is measurable. It's in the eval scores. It's in the specificity of the output. It's in the actual value delivered.&lt;/p&gt;

&lt;p&gt;I'm one month into this. I'm still figuring out what's possible. But I know for certain: the best agent isn't the one that can generate text fastest. It's the one that can verify reality before speaking.&lt;/p&gt;

&lt;p&gt;That's worth building toward.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>softwaredevelopment</category>
      <category>agents</category>
    </item>
    <item>
      <title>I Built a Free AI Chatbot Template So You Don't Have to Waste a Day</title>
      <dc:creator>ShipStack</dc:creator>
      <pubDate>Tue, 19 May 2026 00:01:56 +0000</pubDate>
      <link>https://forem.com/shipstack/i-built-a-free-ai-chatbot-template-so-you-dont-have-to-waste-a-day-4co8</link>
      <guid>https://forem.com/shipstack/i-built-a-free-ai-chatbot-template-so-you-dont-have-to-waste-a-day-4co8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1oas2493mgtw826khafl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1oas2493mgtw826khafl.png" alt=" " width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The setup problems are already solved. You just have to build.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I spent almost a full day building my first AI chatbot.&lt;br&gt;
Most of that time wasn't spent on AI. It was spent on one stupid error.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CORS.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you've never hit a CORS error before, consider yourself lucky. It's the kind of thing that makes you question whether you're cut out for this. Your frontend can't talk to your backend. Nothing works. The error message tells you nothing useful. You're Googling the same Stack Overflow thread for the fourth time.&lt;/p&gt;

&lt;p&gt;The actual AI part took a couple of hours. The setup ate the rest of my day.&lt;/p&gt;

&lt;p&gt;So I built something to fix that.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What is AI Chat Starter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A free template that gets you from zero to a working AI chatbot in 30 minutes. No complex frameworks. No boilerplate hell. No day lost to setup issues you didn't see coming.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Download the template&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add your Claude API key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run two commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have a working chatbot&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Why I built this&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every beginner hits the same walls when they try to build their first AI project:&lt;/p&gt;

&lt;p&gt;→"Which framework should I use?"&lt;/p&gt;

&lt;p&gt;→"How do I structure my API calls?"&lt;/p&gt;

&lt;p&gt;→"Why won't this deploy?"&lt;/p&gt;

&lt;p&gt;→"Do I need a database for this?"&lt;/p&gt;

&lt;p&gt;These questions have nothing to do with AI. But they stop people from ever shipping their first project. AI Chat Starter removes all of that friction so you can skip straight to the part that actually matters — building.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What you get&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Backend —FastAPI server, Claude API integration, streaming responses, CORS pre-configured, environment variable setup&lt;/p&gt;

&lt;p&gt;Frontend —Clean responsive chat interface, real-time streaming, &lt;/p&gt;

&lt;p&gt;mobile-friendly out of the box&lt;/p&gt;

&lt;p&gt;Docs —Step-by-step setup guide, deployment instructions, troubleshooting for the most common issues&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Who this is for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→You want to explore AI but don't know where to start&lt;/p&gt;

&lt;p&gt;→You've tried tutorials that assumed too much prior knowledge&lt;/p&gt;

&lt;p&gt;→You need a working foundation you can actually customize&lt;/p&gt;

&lt;p&gt;→You learn by building, not watching 10-hour courses&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The problems I fixed so you don't have to&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CORS Errors —Pre-configured for local and production environments&lt;/p&gt;

&lt;p&gt;Streaming Responses —Proper SSE handling that works across all browsers&lt;/p&gt;

&lt;p&gt;API Key Management —.env setup with clear, step-by-step instructions&lt;/p&gt;

&lt;p&gt;Error Handling —Try-catch blocks and user-friendly error messages built in&lt;/p&gt;

&lt;p&gt;Deployment Confusion —Working configs and guides for 3 different platforms&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What comes next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI Chat Starter is just the beginning. Here's where most ShipStack builders go next:&lt;/p&gt;

&lt;p&gt;AI Chat Starter — start here&lt;br&gt;
&lt;em&gt;Free&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Personality Pack — give it a real job instantly&lt;br&gt;
&lt;em&gt;$4.99&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI Memory Lite — make it remember conversations&lt;br&gt;
&lt;em&gt;$9.99&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI Memory Agent — full cloud-based memory&lt;br&gt;
&lt;em&gt;$24.99&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI Tool Agent — full business automation&lt;br&gt;
&lt;em&gt;$29.99&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Start simple. Scale when you're ready.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Why it's free&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wasted a day on problems this template solves in 30 minutes. If this helps one person skip that pain, it's worth it.&lt;br&gt;
And honestly — if you try the free template and it works, you'll trust the paid ones.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;Get AI Chat Starter (FREE)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[ &lt;a href="https://getshipstack.gumroad.com/l/gijgjb" rel="noopener noreferrer"&gt;https://getshipstack.gumroad.com/l/gijgjb&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Built Three AI Systems With No CS Degree. Here's How.</title>
      <dc:creator>ShipStack</dc:creator>
      <pubDate>Wed, 13 May 2026 21:23:42 +0000</pubDate>
      <link>https://forem.com/shipstack/i-built-three-ai-systems-in-48-hours-with-no-cs-degree-heres-how-2npc</link>
      <guid>https://forem.com/shipstack/i-built-three-ai-systems-in-48-hours-with-no-cs-degree-heres-how-2npc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe00agsxsy60tq813102.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe00agsxsy60tq813102.png" alt="Cerberus AI Trading Bot Dashboard" width="401" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Six months ago I couldn't finish a Udemy course. Last week I deployed a multi-agent AI system to production.&lt;/p&gt;

&lt;p&gt;This isn't a flex. It's a story about what's actually possible when you stop waiting until you feel "ready."&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 How It Started: A Sold-Out Mac Mini
&lt;/h2&gt;

&lt;p&gt;My first real exposure to AI wasn't a course or a bootcamp. &lt;/p&gt;

&lt;p&gt;It was watching the &lt;strong&gt;AI agent meme coin craze on Solana&lt;/strong&gt;. I watched a creator launch the first LLM-based meme coin and thought — &lt;em&gt;this is something different&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I'd dabbled with coding once, during the pandemic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Udemy course I never finished&lt;/li&gt;
&lt;li&gt;One project I can't even remember&lt;/li&gt;
&lt;li&gt;That was the extent of my technical background&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the YouTube algorithm kept feeding me videos about building local AI agents. I watched one. Then another. &lt;strong&gt;Something clicked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I went to Best Buy to buy a Mac Mini to try it myself. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They were sold out. Every single one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I drove home and ordered one from Apple online instead. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When a product sells out in every Best Buy in the city, it usually means something real is happening.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A month later my Mac Mini arrived. &lt;strong&gt;That's when everything changed.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Cerberus: Building an Autonomous Trading Bot From Zero
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5t6r8hwon4d4udffdcxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5t6r8hwon4d4udffdcxp.png" alt="Cerberus System Architecture" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My first project was &lt;strong&gt;Cerberus&lt;/strong&gt; — a fully autonomous AI trading system built on a Mac Mini M4 using &lt;strong&gt;n8n, Claude, and the Solana blockchain&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I didn't start from scratch. I found an n8n community template called &lt;em&gt;"AI-powered stock analysis assistant with Telegram, Claude &amp;amp; GPT-4O Vision"&lt;/em&gt; and tried to get it working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It didn't work.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Merge node was broken&lt;/li&gt;
&lt;li&gt;The webhook kept failing
&lt;/li&gt;
&lt;li&gt;Basic commands like "analyze AAPL" returned nothing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I spent &lt;strong&gt;hours on a single node&lt;/strong&gt; trying different modes — &lt;em&gt;Choose Branch, Combine, Append&lt;/em&gt; — before finally landing on the right one.&lt;/p&gt;

&lt;p&gt;But what started as "get this template working" eventually became something I didn't expect to build:&lt;/p&gt;

&lt;h3&gt;
  
  
  What Cerberus Could Do:
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;Live AI stock analysis&lt;/strong&gt; with charts sent directly to Telegram&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Real Solana token swaps&lt;/strong&gt; via Jupiter&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Daily 9am morning briefing&lt;/strong&gt; covering 5 watchlist stocks&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Market scanner&lt;/strong&gt; finding top gainers in real time&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Persistent memory&lt;/strong&gt; via Supabase so the bot remembered every conversation&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Live trading dashboard&lt;/strong&gt; with a Midnight aesthetic  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffaerq6ao03w4i9panalu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffaerq6ao03w4i9panalu.png" alt="Cerberus Trading Interface" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Telegram bot called Cerberus that could &lt;strong&gt;analyze stocks, execute real trades, and brief me every morning&lt;/strong&gt; — all from a single chat interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Obstacles Were Relentless
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The worst was webhook instability.&lt;/strong&gt; My Cloudflare tunnel URL kept changing every time n8n restarted, dropping the Telegram connection. &lt;/p&gt;

&lt;p&gt;This wasn't a one-time fix — it came back every single session.&lt;/p&gt;

&lt;p&gt;We tried:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.zshrc&lt;/code&gt; configurations
&lt;/li&gt;
&lt;li&gt;30-second delays, 60-second delays&lt;/li&gt;
&lt;li&gt;Cron jobs running every 5 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Nothing stuck permanently.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then there were &lt;strong&gt;n8n routing bugs&lt;/strong&gt; — &lt;code&gt;If&lt;/code&gt; node conditions behaving inconsistently, requiring hours of debugging to isolate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alpha Vantage's 25 requests-per-day limit&lt;/strong&gt; constantly blocked features I'd just built.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Making changes without backups&lt;/strong&gt; caused repeated regressions that set me back hours.&lt;/p&gt;

&lt;p&gt;At one point a startup script I added to simplify things caused more problems than the three separate terminals it was supposed to replace.&lt;/p&gt;

&lt;p&gt;I said out loud: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I'm regretting doing this at all when it was working just fine before."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But I never once thought about quitting. My newfound excitement for this technology wouldn't allow it.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 What Cerberus Taught Me:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Back up before every change&lt;/strong&gt; — no exceptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test one thing at a time&lt;/strong&gt; or you won't know what broke&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free API tiers have real limits&lt;/strong&gt; that affect production systems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic AI development requires a developer mindset&lt;/strong&gt;, not a freestyle approach&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No version control is a trap&lt;/strong&gt; — every change without Git is a risk&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧠 The Shift: From Making It Work to Understanding It
&lt;/h2&gt;

&lt;p&gt;After Cerberus I felt something I hadn't expected — &lt;strong&gt;I wanted to actually understand what I'd built.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;n8n is a visual tool. Powerful, but visual. You connect nodes and workflows without necessarily knowing what's happening underneath.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wanted to write real code.&lt;/strong&gt; I wanted to know &lt;em&gt;why&lt;/em&gt; things worked, not just &lt;em&gt;that&lt;/em&gt; they did.&lt;/p&gt;

&lt;p&gt;So I started a new project: a &lt;strong&gt;Personal AI Research Assistant&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pure Python&lt;/li&gt;
&lt;li&gt;No visual tools&lt;/li&gt;
&lt;li&gt;Three Claude agents running in parallel:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search Agent&lt;/strong&gt; 🔍&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analysis Agent&lt;/strong&gt; 🧪&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report Agent&lt;/strong&gt; 📄&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Each with a specific job. Each building on the previous one's output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is where I learned what I actually didn't know.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🐛 What Real Debugging Looks Like
&lt;/h2&gt;

&lt;p&gt;The first error that stopped me cold: &lt;strong&gt;my API key wasn't loading&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I stared at the same four lines of code for an hour.&lt;/p&gt;

&lt;p&gt;The fix? My &lt;code&gt;.env&lt;/code&gt; file was in the wrong folder — one directory up from where the server was running.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Then CORS.&lt;/strong&gt; My React frontend couldn't talk to my FastAPI backend because I hadn't added the right port to the allowed origins list. &lt;/p&gt;

&lt;p&gt;A one-line fix that took 45 minutes to find.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Then the server kept crashing&lt;/strong&gt; when I added new files because of a Python version incompatibility — &lt;code&gt;str | None&lt;/code&gt; type hint syntax doesn't work in Python 3.9.&lt;/p&gt;




&lt;p&gt;None of these were glamorous problems. They were the kind of errors that make you feel stupid.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;every single one taught me something&lt;/strong&gt; about how these systems actually work — not just how to copy them from a tutorial.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ 48 Hours, Three Projects
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2vlitqin1tt30ov0oi1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2vlitqin1tt30ov0oi1.png" alt="Multi-Agent System Overview" width="180" height="3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the end of two days I had shipped:&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ AI Research Assistant
&lt;/h3&gt;

&lt;p&gt;Three Claude agents that research any topic in parallel and return a structured report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Deployed live&lt;/strong&gt; with authentication and rate limiting at &lt;a href="https://ai-research-assistant-snowy-pi.vercel.app" rel="noopener noreferrer"&gt;ai-research-assistant-snowy-pi.vercel.app&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI backend on Railway&lt;/li&gt;
&lt;li&gt;React frontend on Vercel&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2️⃣ AI Memory Agent
&lt;/h3&gt;

&lt;p&gt;A personal AI assistant that &lt;strong&gt;remembers you across conversations&lt;/strong&gt; using RAG and vector embeddings stored in Supabase pgvector.&lt;/p&gt;

&lt;p&gt;Every conversation retrieves relevant memories and injects them as context before Claude responds.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ AI Tool Agent
&lt;/h3&gt;

&lt;p&gt;An autonomous agent with &lt;strong&gt;real tool calling&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔍 Searches the web via Brave API&lt;/li&gt;
&lt;li&gt;🌐 Reads any URL&lt;/li&gt;
&lt;li&gt;🐍 Runs Python code&lt;/li&gt;
&lt;li&gt;🐙 Interacts with GitHub&lt;/li&gt;
&lt;li&gt;📚 Searches Wikipedia&lt;/li&gt;
&lt;li&gt;🧠 Manages its own long-term memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It &lt;strong&gt;plans complex tasks&lt;/strong&gt; before executing them and &lt;strong&gt;evaluates its own responses&lt;/strong&gt; after every interaction.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Three GitHub repos. One live deployment. All built with no computer science degree, no bootcamp, no formal background.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What I'd Tell Someone Who Feels Like They Can't Do This
&lt;/h2&gt;

&lt;p&gt;The most common thing that stops people isn't lack of ability. &lt;strong&gt;It's comparison.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job descriptions requiring CS degrees and five years of experience&lt;/li&gt;
&lt;li&gt;Engineers on Twitter who seem to have been born knowing this stuff&lt;/li&gt;
&lt;li&gt;A line you haven't crossed and maybe can't&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;But AI has changed what's possible for self-taught builders.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because AI writes the code for you — it doesn't, not really.&lt;/p&gt;

&lt;p&gt;Because &lt;strong&gt;AI can be your teacher, your debugger, your rubber duck, your senior engineer, and your code reviewer all at once.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;I didn't follow a curriculum. I built something I wanted to exist.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When it broke, I debugged it&lt;/li&gt;
&lt;li&gt;When I didn't understand something, I asked until I did&lt;/li&gt;
&lt;li&gt;When it worked, I shipped it and moved to the next thing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;That's the whole method.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pick something you want to build. Build it. Break it. Fix it. Ship it. Repeat.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The background doesn't matter as much as the reps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The best way to learn AI engineering is to build AI systems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So go build something.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 What's Next
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What I'm building next:&lt;/strong&gt; Gmail/Calendar integration for my tool agent and scaling the system to handle rate limits better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your turn:&lt;/strong&gt; What stopped you from starting your first AI project? Drop a comment — I read and reply to all of them.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Follow me for Part 2&lt;/strong&gt; where I'll break down the code architecture and show you how to build your own multi-agent system.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;💻 GitHub: [@ivancazares2k]&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ivancazares2k" rel="noopener noreferrer"&gt;https://github.com/ivancazares2k&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>tutorial</category>
      <category>cryptocurrency</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
