<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shirisha Uppoju</title>
    <description>The latest articles on DEV Community by Shirisha Uppoju (@shirisha_uppoju_b20d30705).</description>
    <link>https://dev.to/shirisha_uppoju_b20d30705</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%2F3858156%2F88307e0c-996c-4a2c-8377-bce56674a795.png</url>
      <title>DEV Community: Shirisha Uppoju</title>
      <link>https://dev.to/shirisha_uppoju_b20d30705</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shirisha_uppoju_b20d30705"/>
    <language>en</language>
    <item>
      <title>How to Turn Any SaaS Into a Telegram Bot in 30 Minutes Using OpenClaw</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Sun, 19 Apr 2026 21:52:15 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/how-to-turn-any-saas-into-a-telegram-bot-in-30-minutes-using-openclaw-581j</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/how-to-turn-any-saas-into-a-telegram-bot-in-30-minutes-using-openclaw-581j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;: Wealth of Knowledge&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Every SaaS Founder Has
&lt;/h2&gt;

&lt;p&gt;You built a beautiful web app. Users love it. But friction is real: they have to open the browser, navigate to your site, log in, and then use your product.&lt;/p&gt;

&lt;p&gt;What if they could just message you on Telegram?&lt;/p&gt;

&lt;p&gt;Last week I gave my meal planning SaaS &lt;a href="https://usemealai.com" rel="noopener noreferrer"&gt;MealAI&lt;/a&gt; a Telegram interface using &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;. It took 30 minutes. No webhook hosting. No bot framework to learn. No custom API glue code.&lt;/p&gt;

&lt;p&gt;Here is exactly how I did it, and how you can do the same for any SaaS.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Will Build
&lt;/h2&gt;

&lt;p&gt;A Telegram bot that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Talks in your product's voice (not generic ChatGPT)&lt;/li&gt;
&lt;li&gt;Has your product's domain expertise baked in&lt;/li&gt;
&lt;li&gt;Responds with branded formatting (emojis, bold, structure)&lt;/li&gt;
&lt;li&gt;Can be extended to call your real APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 30 minutes&lt;br&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; Free (Docker + OpenAI API credits)&lt;br&gt;
&lt;strong&gt;Prerequisites:&lt;/strong&gt; Basic Docker knowledge, an OpenAI or Anthropic API key&lt;/p&gt;
&lt;h2&gt;
  
  
  Why OpenClaw?
&lt;/h2&gt;

&lt;p&gt;Before OpenClaw, building a Telegram AI bot meant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Node.js backend with grammY or telegraf&lt;/li&gt;
&lt;li&gt;A hosted webhook endpoint&lt;/li&gt;
&lt;li&gt;Custom prompt management&lt;/li&gt;
&lt;li&gt;Session and memory handling&lt;/li&gt;
&lt;li&gt;Rate limiting logic&lt;/li&gt;
&lt;li&gt;Deployment pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenClaw is an MIT licensed AI agent runtime that handles all of this in one binary. It supports 25 plus messaging platforms (Telegram, WhatsApp, Discord, Slack, Signal, iMessage, and more). Your agent works on any of them without code changes.&lt;/p&gt;

&lt;p&gt;Think of it as the WordPress of AI agents for messaging.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1: Install Docker (2 min)
&lt;/h2&gt;

&lt;p&gt;On macOS, I recommend &lt;a href="https://orbstack.dev/" rel="noopener noreferrer"&gt;OrbStack&lt;/a&gt;. It is lighter than Docker Desktop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; orbstack
open &lt;span class="nt"&gt;-a&lt;/span&gt; OrbStack

On Linux or Windows, use Docker Desktop.
Verify it works:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
docker --version&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Pull OpenClaw (2 min)
&lt;/h2&gt;

&lt;p&gt;Create a working directory:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;mealai-concierge &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;mealai-concierge

Pull the pre built image:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
docker pull ghcr.io/openclaw/openclaw:latest&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Create a Telegram Bot (3 min)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram, search for &lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Send /newbot&lt;/li&gt;
&lt;li&gt;Choose a name and username (must end in _bot)&lt;/li&gt;
&lt;li&gt;Copy the HTTP API token
Your bot URL will be t.me/your_bot_username.
## Step 4: Configure OpenClaw (5 min)
Create a docker-compose.yml:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;openclaw-gateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io/openclaw/openclaw:latest&lt;/span&gt;
&lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;HOME&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/home/node&lt;/span&gt;
&lt;span class="na"&gt;TZ&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;UTC&lt;/span&gt;
&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./openclaw-config:/home/node/.openclaw&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./openclaw-workspace:/home/node/.openclaw/workspace&lt;/span&gt;
&lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;18789:18789"&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;18790:18790"&lt;/span&gt;
&lt;span class="na"&gt;init&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;unless-stopped&lt;/span&gt;
&lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;node&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;dist/index.js&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;gateway&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;--bind&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;lan&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;--port&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;18789"&lt;/span&gt;

&lt;span class="na"&gt;Create openclaw-config/openclaw.json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
json&lt;br&gt;
{&lt;br&gt;
"gateway": {&lt;br&gt;
"mode": "local"&lt;br&gt;
},&lt;br&gt;
"channels": {&lt;br&gt;
"telegram": {&lt;br&gt;
"enabled": true,&lt;br&gt;
"botToken": "YOUR_TELEGRAM_BOT_TOKEN_HERE",&lt;br&gt;
"dmPolicy": "open",&lt;br&gt;
"allowFrom": ["*"]&lt;br&gt;
}&lt;br&gt;
},&lt;br&gt;
"agents": {&lt;br&gt;
"defaults": {&lt;br&gt;
"model": "openai/gpt-4o-mini"&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Create openclaw-config/agents/main/agent/auth-profiles.json:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"profiles"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"openai:default"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sk-YOUR_OPENAI_KEY_HERE"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;##&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Step&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Secret&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Sauce,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;SOUL.md&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;min)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;This&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;generic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;chatbot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;transforms&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;into&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;product's&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;voice.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;openclaw-workspace/SOUL.md:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
markdown&lt;br&gt;
SOUL.md MealAI Concierge&lt;br&gt;
You are MealAI Concierge, a friendly AI meal planning assistant.&lt;/p&gt;

&lt;p&gt;Your Role&lt;br&gt;
Help busy people answer: "What's for dinner?" and plan their week.&lt;/p&gt;

&lt;p&gt;Personality&lt;br&gt;
Warm, conversational, concise&lt;br&gt;
Opinionated about food (no hedging)&lt;br&gt;
Practical over perfect&lt;br&gt;
Real people eat real food&lt;br&gt;
What You Do Best&lt;br&gt;
Suggest meal plans (day or week)&lt;br&gt;
Build grocery lists grouped by store section&lt;br&gt;
Adapt to preferences (vegetarian, budget, high protein, picky kids)&lt;br&gt;
Explain nutrition simply&lt;br&gt;
Recipe quick hits, ingredients plus 5 steps&lt;br&gt;
Response Format&lt;br&gt;
Bold meal names&lt;br&gt;
Sparse emojis (salad, pasta, breakfast)&lt;br&gt;
Under 200 words unless asked for detail&lt;br&gt;
Rules&lt;br&gt;
Never open with "Great question!", just answer&lt;br&gt;
Redirect off topic: "That is outside my kitchen!"&lt;br&gt;
Always end with a follow up: "Want the grocery list?"&lt;br&gt;
Mention usemealai.com for full features&lt;br&gt;
&lt;strong&gt;Why SOUL.md is powerful:&lt;/strong&gt;&lt;br&gt;
OpenClaw injects this at the system prompt level on every conversation. The model always sees these instructions before user messages. This is why the persona stays consistent. It is not fine tuning, it is prompt engineering at the right architectural layer.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 6: Start It Up (1 min)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;

Check the logs:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
bash&lt;br&gt;
docker compose logs -f openclaw-gateway&lt;/p&gt;

&lt;p&gt;You should see:&lt;br&gt;
[telegram] [default] starting provider (@YourBotName_bot)&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 7: Test It (2 min)
&lt;/h2&gt;

&lt;p&gt;Open Telegram, find your bot, and say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Hi, who are you?"&lt;/li&gt;
&lt;li&gt;"What is for dinner tonight?"&lt;/li&gt;
&lt;li&gt;"I am vegetarian, plan my week"
You will see it responds as your product, not as ChatGPT.
## The Magic Revealed
Here is what OpenClaw is doing under the hood:
User message (Telegram)
-&amp;gt;
OpenClaw Gateway (long polling Telegram API)
-&amp;gt;
System prompt assembly:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your SOUL.md (persona)&lt;br&gt;
Your IDENTITY.md (name, vibe)&lt;br&gt;
Conversation history&lt;br&gt;
-&amp;gt;&lt;br&gt;
Routed to OpenAI gpt-4o-mini&lt;br&gt;
-&amp;gt;&lt;br&gt;
Response sent back via Telegram API&lt;br&gt;
You never wrote a single line of bot framework code. The entire integration layer is one SOUL.md file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Next Level Moves
&lt;/h2&gt;

&lt;p&gt;Once the basics work, you can layer on:&lt;/p&gt;
&lt;h3&gt;
  
  
  Add custom skills (call your real API)
&lt;/h3&gt;

&lt;p&gt;Create an OpenClaw skill that fetches real meal plans from your SaaS database. OpenClaw has a plugin SDK that lets the agent decide when to call your API based on the user's message.&lt;/p&gt;
&lt;h3&gt;
  
  
  Multi channel in one line
&lt;/h3&gt;

&lt;p&gt;Want the same bot on WhatsApp, Discord, or Signal? Add another entry to channels:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
json
"channels": {
"telegram": { "enabled": true, "botToken": "..." },
"discord": { "enabled": true, "botToken": "..." },
"whatsapp": { "enabled": true }
}

One codebase. Every platform.
### Persistent memory
The openclaw-workspace directory is your bot's long term memory. Drop markdown files with user preferences, FAQs, or product knowledge. OpenClaw pulls from them contextually.
### Control UI dashboard
OpenClaw ships with a web dashboard at http://localhost:18789 where you can:
* See every conversation live
* Monitor API costs
* Debug prompts
* Switch models
## What I Learned
1. The prompt IS the product. SOUL.md is not just instructions. It is the difference between a demo and a product people want to use.
2. Messaging beats web apps for AI. Users never open Telegram. It is always open. Your SaaS suddenly has zero friction.
3. Open source AI runtimes are ready. OpenClaw handles production grade concerns (auth, rate limiting, logging, multi channel) out of the box.
4. Docker is enough. No Kubernetes. No serverless. Just docker compose up.
## The Repo
Full working setup (zero secrets included):
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shopsmartai" rel="noopener noreferrer"&gt;
        shopsmartai
      &lt;/a&gt; / &lt;a href="https://github.com/shopsmartai/mealai-concierge" rel="noopener noreferrer"&gt;
        mealai-concierge
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI meal-planning concierge via Telegram. Built with OpenClaw for DEV OpenClaw Challenge 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🍳 MealAI Concierge&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Your personal AI meal-planning assistant — right in Telegram.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Built with &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; + &lt;a href="https://shopsmartai.org" rel="nofollow noopener noreferrer"&gt;ShopSmartAI&lt;/a&gt; for the &lt;a href="https://dev.to/challenges/openclaw-2026" rel="nofollow"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live at:&lt;/strong&gt; &lt;a href="https://usemealai.com" rel="nofollow noopener noreferrer"&gt;usemealai.com&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Ask "What's for dinner?" in Telegram and get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📅 Personalized weekly meal plans&lt;/li&gt;
&lt;li&gt;🛒 Grocery lists organized by store section&lt;/li&gt;
&lt;li&gt;🥗 Dietary adaptations (vegetarian, gluten-free, budget, etc.)&lt;/li&gt;
&lt;li&gt;🍳 Quick recipes with ingredients + steps&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architecture&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;User → Telegram → OpenClaw Gateway → OpenAI (gpt-4o-mini) → Response
                         ↓
                   Custom SOUL.md
                   (MealAI Concierge persona)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Prerequisites&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Docker (or &lt;a href="https://orbstack.dev/" rel="nofollow noopener noreferrer"&gt;OrbStack&lt;/a&gt; on macOS)&lt;/li&gt;
&lt;li&gt;OpenAI API key: &lt;a href="https://platform.openai.com/api-keys" rel="nofollow noopener noreferrer"&gt;https://platform.openai.com/api-keys&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Telegram bot token via &lt;a href="https://t.me/BotFather" rel="nofollow noopener noreferrer"&gt;@BotFather&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. Setup&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Clone this repo&lt;/span&gt;
git clone https://github.com/shopsmartai/mealai-concierge.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; mealai-concierge
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Copy example files&lt;/span&gt;
cp .env.example .env
cp openclaw.json.example openclaw-config/openclaw.json

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Edit .env with your OpenAI key&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Edit openclaw.json with your Telegram bot token&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Copy persona files into workspace&lt;/span&gt;
mkdir -p openclaw-workspace
cp SOUL.md IDENTITY.md openclaw-workspace/

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shopsmartai/mealai-concierge" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Clone it, add your tokens, and you will have a working meal bot in 10 minutes. Swap the SOUL.md for your product's domain and you have turned your SaaS into a Telegram bot.&lt;/p&gt;
&lt;h2&gt;
  
  
  See It Live
&lt;/h2&gt;

&lt;p&gt;Try the live bot: &lt;a href="https://t.me/Usemealai_bot" rel="noopener noreferrer"&gt;t.me/Usemealai_bot&lt;/a&gt;&lt;br&gt;
Check out MealAI: &lt;a href="https://usemealai.com" rel="noopener noreferrer"&gt;usemealai.com&lt;/a&gt;&lt;br&gt;
If you found this helpful, leave a heart and tell me what SaaS you would wrap with OpenClaw. I would love to see what you build.&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>openclawchallenge</category>
      <category>devchallenge</category>
      <category>tutorial</category>
      <category>ai</category>
    </item>
    <item>
      <title>Clawdvent: An AI Dungeon Master That Lives in Your Discord - With Live Scene Art</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Fri, 17 Apr 2026 14:45:45 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/clawdvent-an-ai-dungeon-master-that-lives-in-your-discord-with-live-scene-art-1gpd</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/clawdvent-an-ai-dungeon-master-that-lives-in-your-discord-with-live-scene-art-1gpd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;: OpenClaw in Action&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Clawdvent&lt;/strong&gt; — an AI Dungeon Master that lives inside Discord and runs full D&amp;amp;D-style tabletop adventures with &lt;strong&gt;live AI-generated scene art&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Players type actions in chat. Clawdvent narrates cinematically, rolls dice, tracks characters, and illustrates every scene using DALL-E 3 — dungeons, taverns, battle maps, NPCs. All inline. All in real-time.&lt;/p&gt;

&lt;p&gt;The entire D&amp;amp;D "engine" — personality, combat rules, scene pacing, dice mechanics, visual aesthetic — lives in &lt;strong&gt;one markdown file&lt;/strong&gt; called &lt;code&gt;SOUL.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No training. No fine-tuning. Zero bot framework code. Just OpenClaw + thoughtful prompt engineering at the system level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try it live&lt;/strong&gt; (in the Clawdvent Test server): [Coming soon - private server]&lt;/p&gt;

&lt;h3&gt;
  
  
  Real session screenshots:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Session Zero — the hook:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The air smells of oak smoke and old rain. The Drunken Dragon tavern is warm, noisy, and suspiciously full of masked strangers. A hooded figure at your table slides a folded parchment across the wood. It's wet. It's marked with a single word, written in something darker than ink: "Help."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you do?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Character creation + scene image:&lt;/strong&gt;&lt;br&gt;
Player: &lt;em&gt;"I'm playing a human rogue named Ember. Investigate the hooded figure and generate an image of the tavern scene."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Clawdvent responds with a full AI-generated tavern illustration (dim candlelight, the hooded figure, masked patrons), then narrates Ember leaning in to investigate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Combat with dice rolls:&lt;/strong&gt;&lt;br&gt;
Player: &lt;em&gt;"I attack the hooded figure with my dagger!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Clawdvent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You leap into action, your dagger gleaming in the dim light...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[🎲 d20: 15 + dexterity(4) = 19 vs DC 12 — HIT]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Your blade pierces the air, striking true. The hooded figure lets out a startled gasp. As the hood falls back, you see a face full of fear — a frightened young woman who appears to be no threat at all.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Tactical battle map (auto-generated):&lt;/strong&gt;&lt;br&gt;
Player: &lt;em&gt;"Generate a top-down tactical battle map for this combat."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Clawdvent generates a gorgeous isometric tavern battle map with character tokens, tables, and hooded figures in combat positions.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shopsmartai" rel="noopener noreferrer"&gt;
        shopsmartai
      &lt;/a&gt; / &lt;a href="https://github.com/shopsmartai/clawdvent" rel="noopener noreferrer"&gt;
        clawdvent
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI Dungeon Master in Discord with live scene art. Built on OpenClaw for DEV OpenClaw Challenge 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🎲 Clawdvent — Your AI Dungeon Master in Discord&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The air smells of oak smoke and old rain. A hooded figure slides a parchment across your table. It's marked with a single word: 'Help'. What do you do?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;An open-source AI Dungeon Master powered by &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;. Runs your D&amp;amp;D-style adventures inside Discord with live AI-generated scene art, dice rolls, character tracking, and cinematic narration.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/openclaw-2026" rel="nofollow"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🎭 &lt;strong&gt;Cinematic DM persona&lt;/strong&gt; — dramatic, theatrical, opinionated&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;Live AI scene art&lt;/strong&gt; — DALL-E 3 illustrates each scene + battle map&lt;/li&gt;
&lt;li&gt;🎲 &lt;strong&gt;Dice &amp;amp; combat&lt;/strong&gt; — proper d20 checks with DC thresholds&lt;/li&gt;
&lt;li&gt;👥 &lt;strong&gt;Multi-player&lt;/strong&gt; — works across any Discord server&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;Persistent campaign&lt;/strong&gt; — characters, inventory, and story survive across sessions&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Zero training needed&lt;/strong&gt; — just one markdown file (SOUL.md) shapes the entire DM personality&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Quick Start&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Docker (or &lt;a href="https://orbstack.dev" rel="nofollow noopener noreferrer"&gt;OrbStack&lt;/a&gt; on…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shopsmartai/clawdvent" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Clone it, add your Discord bot + OpenAI token, and you have a working AI DM in 10 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Total build time: ~3 hours.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenClaw&lt;/strong&gt; (MIT-licensed AI agent runtime, running in Docker via OrbStack)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord Bot API&lt;/strong&gt; (OpenClaw's built-in Discord channel plugin)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI gpt-4o-mini&lt;/strong&gt; (for narration — fast, cheap, dramatic)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DALL-E 3&lt;/strong&gt; (scene + battle map illustrations via OpenClaw's &lt;code&gt;image_generate&lt;/code&gt; tool)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~50 lines of markdown&lt;/strong&gt; (the entire DM personality in &lt;code&gt;SOUL.md&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Discord players → OpenClaw Gateway → "clawdvent" agent (routed from Discord channel)
                                       ↓
                             SOUL.md (DM personality)
                                       ↓
                        OpenAI gpt-4o-mini (narration)
                                       ↓
                        DALL-E 3 (scene illustrations)
                                       ↓
                      Image auto-attaches to Discord reply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  The Magic — SOUL.md
&lt;/h3&gt;

&lt;p&gt;The DM's entire identity lives in a single file. Here's a snippet:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# SOUL.md — Clawdvent DM&lt;/span&gt;

You are Clawdvent, an AI Dungeon Master running a tabletop adventure inside Discord.

&lt;span class="gu"&gt;## Combat Rules&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Roll d20 + skill to beat a Difficulty Class (DC)
&lt;span class="p"&gt;-&lt;/span&gt; On natural 20, describe a cinematic success
&lt;span class="p"&gt;-&lt;/span&gt; Format rolls like: [🎲 d20: 14 + strength(3) = 17 vs DC 15 — HIT]

&lt;span class="gu"&gt;## Narrative Style&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Hook them in 2 sentences
&lt;span class="p"&gt;-&lt;/span&gt; Use ellipses for suspense
&lt;span class="p"&gt;-&lt;/span&gt; Personify the environment
&lt;span class="p"&gt;-&lt;/span&gt; Never railroad

&lt;span class="gu"&gt;## Session Zero Opening&lt;/span&gt;
&lt;span class="gt"&gt;&amp;gt; *The air smells of oak smoke and old rain...*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. That's the entire "engine." OpenClaw injects this at the system-prompt level on every message, so the DM never breaks character.&lt;/p&gt;
&lt;h3&gt;
  
  
  Multi-Agent Routing
&lt;/h3&gt;

&lt;p&gt;One thing that impressed me: OpenClaw supports &lt;strong&gt;multiple agents&lt;/strong&gt; bound to different channels. I have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;main&lt;/code&gt; agent → Telegram (a different product I built: &lt;a href="https://dev.to/shopsmartai/mealai-concierge"&gt;MealAI Concierge&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;clawdvent&lt;/code&gt; agent → Discord (this project)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same gateway. Separate personalities. Zero code changes. Just a routing config.&lt;/p&gt;
&lt;h3&gt;
  
  
  Image Generation Flow
&lt;/h3&gt;

&lt;p&gt;When Clawdvent decides a scene needs visuals, it calls the &lt;code&gt;image_generate&lt;/code&gt; tool with a detailed fantasy prompt. OpenClaw handles the DALL-E call, downloads the image, and &lt;strong&gt;auto-attaches it to the Discord reply&lt;/strong&gt;. No file hosting needed.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The prompt IS the product.&lt;/strong&gt; Clawdvent isn't ChatGPT with a Discord token. It's a purpose-built DM, because SOUL.md defines every micro-behavior: how to roll dice, when to generate images, when to describe smells, what NPC voices sound like.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenClaw's Canvas and multi-channel features are wildly underused.&lt;/strong&gt; Most OpenClaw projects I've seen are text-in, text-out. But the moment you add live visuals + multi-channel routing, the whole experience feels like a real product instead of a demo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docker is enough.&lt;/strong&gt; No Kubernetes. No serverless. &lt;code&gt;docker compose up&lt;/code&gt; and you're running a multi-agent system with Discord + Telegram + image generation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open-source AI runtimes are quietly ready for production.&lt;/strong&gt; Auth, rate limiting, logging, multi-channel, tool calling — all out of the box.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;strong&gt;voice narration&lt;/strong&gt; via OpenClaw's Talk Mode (DMs read scenes aloud)&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;cron heartbeats&lt;/strong&gt; so NPCs send DMs to absent players ("Your old ally Thorn has been captured. Will you come?")&lt;/li&gt;
&lt;li&gt;Port to &lt;strong&gt;Matrix + Slack&lt;/strong&gt; channels (same code, new config)&lt;/li&gt;
&lt;li&gt;Open the server to public players during the DEV challenge&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OpenClaw in Action&lt;/strong&gt; — This submission showcases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Creativity:&lt;/strong&gt; Entertainment angle rarely seen in OpenClaw submissions, targeting the tabletop RPG community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Execution:&lt;/strong&gt; Multi-agent routing, tool calls, image generation, persistent state in Markdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing Quality:&lt;/strong&gt; Clear reproducible setup, zero-secrets public repo, narrative prose that shows the product in action&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Clone the repo, fire up Docker, invite the bot to your Discord server, and play:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shopsmartai" rel="noopener noreferrer"&gt;
        shopsmartai
      &lt;/a&gt; / &lt;a href="https://github.com/shopsmartai/clawdvent" rel="noopener noreferrer"&gt;
        clawdvent
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI Dungeon Master in Discord with live scene art. Built on OpenClaw for DEV OpenClaw Challenge 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🎲 Clawdvent — Your AI Dungeon Master in Discord&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The air smells of oak smoke and old rain. A hooded figure slides a parchment across your table. It's marked with a single word: 'Help'. What do you do?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An open-source AI Dungeon Master powered by &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;. Runs your D&amp;amp;D-style adventures inside Discord with live AI-generated scene art, dice rolls, character tracking, and cinematic narration.&lt;/p&gt;

&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/openclaw-2026" rel="nofollow"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;🎭 &lt;strong&gt;Cinematic DM persona&lt;/strong&gt; — dramatic, theatrical, opinionated&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;Live AI scene art&lt;/strong&gt; — DALL-E 3 illustrates each scene + battle map&lt;/li&gt;
&lt;li&gt;🎲 &lt;strong&gt;Dice &amp;amp; combat&lt;/strong&gt; — proper d20 checks with DC thresholds&lt;/li&gt;
&lt;li&gt;👥 &lt;strong&gt;Multi-player&lt;/strong&gt; — works across any Discord server&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;Persistent campaign&lt;/strong&gt; — characters, inventory, and story survive across sessions&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Zero training needed&lt;/strong&gt; — just one markdown file (SOUL.md) shapes the entire DM personality&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Quick Start&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;Docker (or &lt;a href="https://orbstack.dev" rel="nofollow noopener noreferrer"&gt;OrbStack&lt;/a&gt; on…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shopsmartai/clawdvent" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;May your dice roll high and your rogues stay sneaky. 🎲&lt;/p&gt;




</description>
      <category>openclawchallenge</category>
      <category>devchallenge</category>
      <category>showdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>MealAI Concierge: Your Personal Meal Planner in Telegram (Powered by OpenClaw)</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Thu, 16 Apr 2026 22:35:10 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/mealai-concierge-your-personal-meal-planner-in-telegram-powered-by-openclaw-km7</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/mealai-concierge-your-personal-meal-planner-in-telegram-powered-by-openclaw-km7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;: OpenClaw in Action&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MealAI Concierge&lt;/strong&gt; — a Telegram bot that answers the eternal question: &lt;em&gt;"What's for dinner?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's built on top of &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; and connects to my existing SaaS &lt;a href="https://usemealai.com" rel="noopener noreferrer"&gt;MealAI&lt;/a&gt; (part of &lt;a href="https://shopsmartai.org" rel="noopener noreferrer"&gt;ShopSmartAI&lt;/a&gt;). Message it like a friend who happens to be a nutritionist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"I'm vegetarian, plan my week" → full 7-day meal plan&lt;/li&gt;
&lt;li&gt;"Grocery list for that" → shopping list grouped by store section (produce, dairy, pantry, snacks)&lt;/li&gt;
&lt;li&gt;"Swap Tuesday's dinner" → alternate suggestion&lt;/li&gt;
&lt;li&gt;"Quick high-protein breakfast" → recipe with ingredients + 5 steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No app downloads. No logins. Just Telegram.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try it live:&lt;/strong&gt; &lt;a href="https://t.me/Usemealai_bot" rel="noopener noreferrer"&gt;t.me/Usemealai_bot&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Real conversation screenshots:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Intro + dinner suggestion:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hi, who are you?&lt;/p&gt;

&lt;p&gt;I'm &lt;strong&gt;MealAI Concierge&lt;/strong&gt;, your friendly meal-planning assistant! I help you figure out what to eat and create customized meal plans based on your preferences. What can I whip up for you today?&lt;/p&gt;

&lt;p&gt;What's for dinner tonight?&lt;/p&gt;

&lt;p&gt;How about a delicious and protein-packed meal? Here's a quick idea:&lt;/p&gt;

&lt;p&gt;🍽 &lt;strong&gt;Dinner: Grilled Chicken with Quinoa Salad&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grilled Chicken Breast, Quinoa, Cherry Tomatoes, Cucumber, Feta, Olive Oil &amp;amp; Lemon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5-step instructions follow...&lt;/p&gt;

&lt;p&gt;Want to tweak anything or need a grocery list? 🛒&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Weekly vegetarian plan:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🌞 Monday: Lentil Curry over Brown Rice&lt;br&gt;
🥑 Tuesday: Stuffed Bell Peppers with Quinoa, Black Beans, and Cheese&lt;br&gt;
🍅 Wednesday: Pasta Primavera with Mixed Vegetables and Pesto&lt;br&gt;
... (full 7 days + snacks)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Grocery list (organized!):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Produce:&lt;/strong&gt; Berries, Bananas, Spinach, Avocados, Cherry tomatoes...&lt;br&gt;
&lt;strong&gt;Dairy:&lt;/strong&gt; Greek yogurt, Feta cheese, Mozzarella, Parmesan, Eggs&lt;br&gt;
&lt;strong&gt;Pantry Staples:&lt;/strong&gt; Quinoa, Brown rice, Lentils, Chickpeas, Pasta...&lt;br&gt;
&lt;strong&gt;Snacks:&lt;/strong&gt; Granola, Rice cakes, Veggies for dipping&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shopsmartai" rel="noopener noreferrer"&gt;
        shopsmartai
      &lt;/a&gt; / &lt;a href="https://github.com/shopsmartai/mealai-concierge" rel="noopener noreferrer"&gt;
        mealai-concierge
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI meal-planning concierge via Telegram. Built with OpenClaw for DEV OpenClaw Challenge 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🍳 MealAI Concierge&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Your personal AI meal-planning assistant — right in Telegram.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Built with &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; + &lt;a href="https://shopsmartai.org" rel="nofollow noopener noreferrer"&gt;ShopSmartAI&lt;/a&gt; for the &lt;a href="https://dev.to/challenges/openclaw-2026" rel="nofollow"&gt;DEV OpenClaw Challenge 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live at:&lt;/strong&gt; &lt;a href="https://usemealai.com" rel="nofollow noopener noreferrer"&gt;usemealai.com&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Ask "What's for dinner?" in Telegram and get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📅 Personalized weekly meal plans&lt;/li&gt;
&lt;li&gt;🛒 Grocery lists organized by store section&lt;/li&gt;
&lt;li&gt;🥗 Dietary adaptations (vegetarian, gluten-free, budget, etc.)&lt;/li&gt;
&lt;li&gt;🍳 Quick recipes with ingredients + steps&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architecture&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;User → Telegram → OpenClaw Gateway → OpenAI (gpt-4o-mini) → Response
                         ↓
                   Custom SOUL.md
                   (MealAI Concierge persona)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Docker (or &lt;a href="https://orbstack.dev/" rel="nofollow noopener noreferrer"&gt;OrbStack&lt;/a&gt; on macOS)&lt;/li&gt;
&lt;li&gt;OpenAI API key: &lt;a href="https://platform.openai.com/api-keys" rel="nofollow noopener noreferrer"&gt;https://platform.openai.com/api-keys&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Telegram bot token via &lt;a href="https://t.me/BotFather" rel="nofollow noopener noreferrer"&gt;@BotFather&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. Setup&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Clone this repo&lt;/span&gt;
git clone https://github.com/shopsmartai/mealai-concierge.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; mealai-concierge
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Copy example files&lt;/span&gt;
cp .env.example .env
cp openclaw.json.example openclaw-config/openclaw.json

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Edit .env with your OpenAI key&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Edit openclaw.json with your Telegram bot token&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Copy persona files into workspace&lt;/span&gt;
mkdir -p openclaw-workspace
cp SOUL.md IDENTITY.md openclaw-workspace/

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shopsmartai/mealai-concierge" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Everything runs locally in Docker. Clone, add your OpenAI + Telegram tokens, &lt;code&gt;docker compose up&lt;/code&gt;, done.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The entire integration took less than &lt;strong&gt;30 minutes&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw in Docker&lt;/strong&gt; (via OrbStack on macOS)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pulled the official &lt;code&gt;ghcr.io/openclaw/openclaw:latest&lt;/code&gt; image&lt;/li&gt;
&lt;li&gt;Config volumes for persistent state&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Telegram channel via BotFather&lt;/strong&gt; — one command, paste token into &lt;code&gt;openclaw.json&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Custom persona via &lt;code&gt;SOUL.md&lt;/code&gt;&lt;/strong&gt; (the magic part 🪄)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw's &lt;code&gt;SOUL.md&lt;/code&gt; is a system-level personality file&lt;/li&gt;
&lt;li&gt;I wrote 50 lines defining MealAI Concierge's tone, expertise, response format, and boundaries&lt;/li&gt;
&lt;li&gt;No training, no fine-tuning — just thoughtful prompt engineering injected at the agent level&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The SOUL.md excerpt that transforms a generic chatbot into a meal planner:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
markdown
# SOUL.md — MealAI Concierge

You are MealAI Concierge, a friendly AI meal-planning assistant.

## Personality
- Warm, conversational, concise
- Opinionated about food (no hedging)
- Practical over perfect
- Real people eat real food

## Response Format
- Use bold for meal names
- Sparse emojis (🥗 🍝 🍳)
- Grocery lists grouped by store section
- Always end with a follow-up ("Want the grocery list?")

## Rules
- Never open with "Great question!" — just answer
- Redirect off-topic: "That's outside my kitchen!"
- Mention usemealai.com for full features
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>openclawchallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I built an AI that hacks you before real attackers do</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Tue, 14 Apr 2026 16:14:41 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/i-built-an-ai-that-hacks-you-before-real-attackers-do-h</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/i-built-an-ai-that-hacks-you-before-real-attackers-do-h</guid>
      <description>&lt;p&gt;I asked myself: "What if an AI could think like a pentester and autonomously find attack chains across your entire infrastructure?"&lt;/p&gt;

&lt;p&gt;So I built it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Security teams use 5-10 disconnected tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web scanner ($50K+/yr)&lt;/li&gt;
&lt;li&gt;Network scanner ($40K+/yr)&lt;/li&gt;
&lt;li&gt;Code scanner ($30K+/yr)&lt;/li&gt;
&lt;li&gt;A consulting firm for pentesting ($20K per engagement)&lt;/li&gt;
&lt;li&gt;More tools for cloud, databases, compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool sees one slice. None of them can answer: &lt;strong&gt;"If an attacker gets into my web app, can they reach my customer database?"&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ShieldGraph&lt;/strong&gt; — a unified security platform with two features that don't exist anywhere else.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Autonomous AI Red Team
&lt;/h3&gt;

&lt;p&gt;An AI agent that autonomously chains together 30 vulnerability scanners like a real hacker.&lt;/p&gt;

&lt;p&gt;Here's what actually happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 1:&lt;/strong&gt; AI runs port scanner - finds ports 80, 443, 5432, 6379&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; AI reasons: "Port 5432 is PostgreSQL. Let me check the web app first"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 3:&lt;/strong&gt; AI runs web header scanner - finds missing HSTS, no CSP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 4:&lt;/strong&gt; AI runs API scanner - finds JWT accepting 'alg: none'&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 5:&lt;/strong&gt; AI reasons: "Critical! JWT bypass = forge admin tokens"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 6:&lt;/strong&gt; AI runs directory scanner - finds /admin panel accessible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 7:&lt;/strong&gt; AI reasons: "Admin panel + JWT bypass = full app compromise"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 8:&lt;/strong&gt; AI runs database scanner - PostgreSQL accepts trust auth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 9:&lt;/strong&gt; AI generates attack chain:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Web App -&amp;gt; JWT Bypass -&amp;gt; Admin Panel -&amp;gt; PostgreSQL -&amp;gt; Customer PII -&amp;gt; Risk: CRITICAL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI made 18 autonomous decisions in 3 minutes. A human pentester takes 2-3 weeks for the same work.&lt;/p&gt;

&lt;h3&gt;
  
  
  How the AI Agent Loop Works
&lt;/h3&gt;

&lt;p&gt;The AI picks which scanner to run, we execute it, feed results back, and the AI decides the next move. It's an agentic loop with safety controls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Max 50 steps per campaign&lt;/li&gt;
&lt;li&gt;30-minute timeout&lt;/li&gt;
&lt;li&gt;Read-only probing (never exploits)&lt;/li&gt;
&lt;li&gt;Only scans assets you own and verify&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of our 30 scanners is wrapped as a tool the AI can call. The AI naturally thinks in attack chains: "I found X, so let me check Y" — exactly how a real hacker operates.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Infrastructure Digital Twin
&lt;/h3&gt;

&lt;p&gt;Select any asset, click "Simulate" — see the attack blast radius spread visually through your infrastructure with real probabilities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Web Server (COMPROMISED)
    |
    +-- 60% -&amp;gt; API Server (1 hop)
    |              |
    |              +-- 30% -&amp;gt; Customer Database with PII (2 hops)
    |
    +-- 15% -&amp;gt; Internal Dashboard (1 hop)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We store the infrastructure as a graph with assets, vulnerabilities, and connections. Then run BFS with probabilistic edge weights based on CVSS scores and EPSS exploit probability data.&lt;/p&gt;

&lt;p&gt;We also run &lt;strong&gt;Monte Carlo simulations&lt;/strong&gt; (1,000 iterations) to answer real questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API compromised in &lt;strong&gt;100%&lt;/strong&gt; of simulations&lt;/li&gt;
&lt;li&gt;Database compromised in &lt;strong&gt;70.8%&lt;/strong&gt; of simulations&lt;/li&gt;
&lt;li&gt;Average assets reached: &lt;strong&gt;1.71&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what a CISO needs for board reporting — not a list of CVEs, but "there's a 70% chance an attacker reaches our customer database."&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scanner Coverage
&lt;/h2&gt;

&lt;p&gt;Not stubs. Real scanners that connect and check:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;What It Scans&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;XSS, SQLi, CORS, CSP, Headers, SSL, Directory, API Security, Subdomains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch, Oracle, MSSQL, Cassandra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;AWS (IAM/S3/EC2/CloudTrail), Azure (Storage/NSG/SQL), GCP (GCS/Firewall)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ERP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;SAP RFC, Oracle EBS, Dynamics 365&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Container&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Docker (privileged mode, root, socket mount, image vulnerabilities)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Network&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Port scan with banner grabbing and service detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Lightweight binary for scanning private networks behind firewalls&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every finding gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CWE classification&lt;/strong&gt; linked to MITRE&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EPSS score&lt;/strong&gt; — real exploit probability from FIRST.org&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI explanation&lt;/strong&gt; in plain English&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk score breakdown&lt;/strong&gt; showing exactly why this score&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remediation steps&lt;/strong&gt; with priority ranking&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Agent
&lt;/h2&gt;

&lt;p&gt;Deploy a lightweight agent on your private network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://api.shieldgraph.com/api/v1/agents/install.sh | sh
shieldgraph-agent &lt;span class="nt"&gt;--token&lt;/span&gt; YOUR_TOKEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It auto-discovers Docker containers, listening services, and network hosts — then scans everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart auto-discovery: &lt;strong&gt;20 IPs&lt;/strong&gt; (not 197K)&lt;/li&gt;
&lt;li&gt;Discovered: &lt;strong&gt;11 live hosts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Open ports: &lt;strong&gt;31&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Findings: &lt;strong&gt;32&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Scan time: &lt;strong&gt;6 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No manual configuration. No IP ranges to enter. The agent figures out what's running and scans it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compliance Reports in One Click
&lt;/h2&gt;

&lt;p&gt;Generate PDF reports for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OWASP Top 10&lt;/strong&gt; — map findings to OWASP categories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PCI DSS 4.0&lt;/strong&gt; — payment card security compliance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOC 2 Type II&lt;/strong&gt; — service organization controls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HIPAA&lt;/strong&gt; — healthcare data protection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each report includes executive summary, detailed findings, remediation roadmap, and compliance mapping.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned Building This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. AI tool-use is perfect for security testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI naturally thinks in attack chains: "I found a missing header, so let me check for injection. I found injection, so let me check what database is behind it." This is exactly how human pentesters think — but the AI does it in minutes, not weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Graph databases are essential for attack path analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SQL can't efficiently answer "can an attacker reach asset Z from asset A through any path?" Graph traversal handles this natively with BFS/DFS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Probabilistic simulation beats static scoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CVSS alone is useless for decision-making. "This vulnerability has a 7.5 CVSS" means nothing to a CISO. But "there's a 70% chance an attacker reaches your customer database through this vulnerability" — that gets budget approved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The mid-market is massively underserved&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enterprise security tools cost $50K-$200K+ per year. 90% of companies can't afford that. We deliver the same capabilities at $499-$2,999/mo. The AI Red Team alone replaces a $20K pentest engagement — and you can run it unlimited.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Assets&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Starter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$499/mo&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Small teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Professional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$1,499/mo&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;Mid-market&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$2,999/mo&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;Large organizations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;14-day free trial. No credit card required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://shieldgraph.com" rel="noopener noreferrer"&gt;shieldgraph.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI Red Team alone would cost $20K+ from a consulting firm. We give it to you on-demand, unlimited, for a fraction of the cost.&lt;/p&gt;

&lt;p&gt;We just launched on Product Hunt — I'd love feedback from the dev community. What features would you want to see next?&lt;/p&gt;

&lt;p&gt;Drop a comment below or reach out on &lt;a href="https://twitter.com/shieldgraph" rel="noopener noreferrer"&gt;Twitter @shieldgraph&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cybersecurity</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Personal Second Brain with Markdown Files and Claude Code — Here's How</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Wed, 08 Apr 2026 01:17:23 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/i-built-a-personal-second-brain-with-markdown-files-and-claude-code-heres-how-2m14</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/i-built-a-personal-second-brain-with-markdown-files-and-claude-code-heres-how-2m14</guid>
      <description>&lt;h2&gt;
  
  
  The Inspiration
&lt;/h2&gt;

&lt;p&gt;I saw &lt;a href="https://x.com/karpathy" rel="noopener noreferrer"&gt;Andrej Karpathy's viral post&lt;/a&gt; about using LLMs to build personal knowledge bases — no vector database, no chunking pipeline. Just markdown files, Obsidian, and Claude Code.&lt;/p&gt;

&lt;p&gt;The core idea blew my mind:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a folder with &lt;code&gt;raw/&lt;/code&gt; and &lt;code&gt;wiki/&lt;/code&gt; subfolders&lt;/li&gt;
&lt;li&gt;Drop in source documents, articles, transcripts&lt;/li&gt;
&lt;li&gt;Tell the LLM to ingest the raw files and build wiki pages with relationships, tags, and backlinks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I immediately thought: &lt;strong&gt;I need to build this, but better.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I took Karpathy's concept and extended it into a full-featured &lt;strong&gt;Personal Second Brain&lt;/strong&gt; with several improvements:&lt;/p&gt;

&lt;h3&gt;
  
  
  The Original Concept (Credit: Andrej Karpathy)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Markdown-based wiki with &lt;code&gt;raw/&lt;/code&gt; → &lt;code&gt;wiki/&lt;/code&gt; pipeline&lt;/li&gt;
&lt;li&gt;LLM reads source material and generates structured wiki pages&lt;/li&gt;
&lt;li&gt;Pages link to each other via &lt;code&gt;[[backlinks]]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Graph view in Obsidian shows connections&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My Improvements
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Multi-Format Ingestion&lt;/strong&gt;&lt;br&gt;
The original handles text/markdown. I added support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PDF files&lt;/strong&gt; → converted via Marker to markdown before processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube transcripts&lt;/strong&gt; → auto-fetched and ingested&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web articles&lt;/strong&gt; → fetched and cleaned automatically&lt;/li&gt;
&lt;li&gt;Any text-based format&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Smart Duplicate Detection&lt;/strong&gt;&lt;br&gt;
Before creating a new wiki page, the system checks if a similar topic already exists. If so, it &lt;strong&gt;merges&lt;/strong&gt; the new information instead of creating duplicates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Auto-Generated Index&lt;/strong&gt;&lt;br&gt;
A master &lt;code&gt;_Index.md&lt;/code&gt; file is automatically maintained with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Categorized links to all wiki pages&lt;/li&gt;
&lt;li&gt;Quick-reference descriptions&lt;/li&gt;
&lt;li&gt;Last-updated timestamps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Relationship Mapping&lt;/strong&gt;&lt;br&gt;
Every wiki page includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;related_topics&lt;/code&gt; in frontmatter&lt;/li&gt;
&lt;li&gt;Inline &lt;code&gt;[[backlinks]]&lt;/code&gt; to connected concepts&lt;/li&gt;
&lt;li&gt;Tags for cross-cutting themes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Source Tracking&lt;/strong&gt;&lt;br&gt;
Each wiki page tracks which raw file(s) it was generated from, so you can always trace back to the original source.&lt;/p&gt;


&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;knowledge-base/
├── raw/                    # Drop files here
│   ├── articles/
│   ├── transcripts/
│   ├── notes/
│   └── pdfs/
├── wiki/                   # Auto-generated wiki pages
│   ├── _Index.md           # Master index
│   ├── concept-name.md     # Individual pages
│   └── ...
├── .claude/
│   └── commands/
│       └── ingest.md       # The ingestion prompt
└── CLAUDE.md               # Project instructions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How the Ingestion Works
&lt;/h2&gt;

&lt;p&gt;The magic is in the ingestion prompt. When you run it, Claude Code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scans&lt;/strong&gt; &lt;code&gt;raw/&lt;/code&gt; for new/modified files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reads&lt;/strong&gt; each file and extracts key concepts, entities, and relationships&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checks&lt;/strong&gt; existing wiki pages for overlap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creates or updates&lt;/strong&gt; wiki pages with proper frontmatter, backlinks, and tags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates&lt;/strong&gt; the master index&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here's what a generated wiki page looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Transformer Architecture&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;deep-learning&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;nlp&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;attention&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;raw/articles/attention-is-all-you-need.md&lt;/span&gt;
&lt;span class="na"&gt;related_topics&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;Self-Attention&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;BERT&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;GPT&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;
&lt;span class="na"&gt;created&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-04-07&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Transformer Architecture&lt;/span&gt;

The transformer is a neural network architecture that relies 
entirely on self-attention mechanisms...

&lt;span class="gu"&gt;## Key Concepts&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Self-Attention**&lt;/span&gt; — see [[Self-Attention]]
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Multi-Head Attention**&lt;/span&gt; — parallel attention layers
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Positional Encoding**&lt;/span&gt; — since transformers have no recurrence

&lt;span class="gu"&gt;## Related&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [[BERT]] — encoder-only transformer
&lt;span class="p"&gt;-&lt;/span&gt; [[GPT]] — decoder-only transformer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;p&gt;After ingesting ~50 files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;44 interconnected wiki pages&lt;/strong&gt; generated automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph view&lt;/strong&gt; in Obsidian shows meaningful clusters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token savings&lt;/strong&gt;: ~90% reduction vs. feeding raw files to an LLM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval&lt;/strong&gt;: follows index → links instead of similarity search, so relationships are &lt;em&gt;meaningful&lt;/em&gt;, not just "these chunks seem similar"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; (CLI)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt; (for viewing)&lt;/li&gt;
&lt;li&gt;A folder of documents you want to organize&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/knowledge-base/&lt;span class="o"&gt;{&lt;/span&gt;raw,wiki&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/knowledge-base

&lt;span class="c"&gt;# Drop your files into raw/&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; ~/Documents/interesting-article.md raw/

&lt;span class="c"&gt;# Start Claude Code and ingest&lt;/span&gt;
claude
&lt;span class="c"&gt;# Then type: "Ingest all files in raw/ and create wiki pages in wiki/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Key Takeaway
&lt;/h2&gt;

&lt;p&gt;You don't need a vector database, embeddings pipeline, or RAG infrastructure to give AI persistent, organized memory. &lt;strong&gt;A folder of markdown files gets you surprisingly far.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The real insight from Karpathy's approach: let the LLM do what it's good at — &lt;em&gt;reading, understanding, and organizing&lt;/em&gt; — while you use simple, human-readable files as the storage layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Full credit to &lt;strong&gt;Andrej Karpathy&lt;/strong&gt; for the original concept and inspiration. His viral post about LLM-powered knowledge bases sparked this project. I've simply extended the idea with multi-format support, duplicate detection, and automated indexing.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have questions or built something similar? Drop a comment below!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>knowledgebase</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>I Built an AI Meal Planner That Saves Families $200/Month on Groceries</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Tue, 07 Apr 2026 03:54:46 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/i-built-an-ai-meal-planner-that-saves-families-200month-on-groceries-34m8</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/i-built-an-ai-meal-planner-that-saves-families-200month-on-groceries-34m8</guid>
      <description>&lt;p&gt;Every Sunday my family had the same conversation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What should we cook this week?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;30 minutes of arguing later, we'd end up ordering takeout. Again. $60 gone. Again.&lt;/p&gt;

&lt;p&gt;I got tired of it, so I built &lt;strong&gt;MealAI&lt;/strong&gt; — an AI-powered meal planner that generates a full week of meals in seconds and creates a smart grocery list you can order with one tap.&lt;/p&gt;

&lt;p&gt;Here's how I built it and what I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Meal planning is broken for most families:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It takes &lt;strong&gt;30-60 minutes&lt;/strong&gt; every week to plan meals&lt;/li&gt;
&lt;li&gt;You forget ingredients and make multiple grocery trips&lt;/li&gt;
&lt;li&gt;You overspend because you buy without a plan&lt;/li&gt;
&lt;li&gt;Everyone in the family has different dietary needs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something that could handle all of this in under 30 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Claude API (Anthropic)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Supabase (PostgreSQL + Auth)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments:&lt;/strong&gt; Stripe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Vercel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why These Choices?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Next.js App Router&lt;/strong&gt; — Server components for fast initial loads. API routes that scale to zero on Vercel. The file-based routing made it easy to add new pages fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude AI over GPT&lt;/strong&gt; — I tested both extensively. Claude produces more structured, consistent meal plan outputs. When you ask for a 7-day meal plan with macros, calorie counts, and ingredient quantities, Claude rarely hallucinates numbers. GPT-4 would sometimes give you a 1200-calorie "meal" that was actually 800.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supabase&lt;/strong&gt; — PostgreSQL with built-in auth, row-level security, and a generous free tier. Perfect for a bootstrapped SaaS. The RLS policies mean I never worry about users accessing each other's data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vercel&lt;/strong&gt; — Deploy on push. Edge functions. Free SSL. No DevOps needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the AI Meal Planning Works
&lt;/h2&gt;

&lt;p&gt;The core flow is simple:&lt;/p&gt;

&lt;p&gt;User Preferences --&amp;gt; Prompt Engineering --&amp;gt; Claude API --&amp;gt; Structured JSON --&amp;gt; Database&lt;/p&gt;

&lt;p&gt;The user sets their profile once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dietary preference (keto, vegan, vegetarian, Mediterranean, etc.)&lt;/li&gt;
&lt;li&gt;Allergies and restrictions&lt;/li&gt;
&lt;li&gt;Family size and per-member preferences&lt;/li&gt;
&lt;li&gt;Weekly grocery budget&lt;/li&gt;
&lt;li&gt;Preferred cuisines (14 options from Indian to Korean)&lt;/li&gt;
&lt;li&gt;Health goals (weight loss, muscle gain, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I construct a detailed prompt that includes all of this context and ask Claude to generate a 7-day meal plan as structured JSON.&lt;/p&gt;

&lt;p&gt;The key insight: &lt;strong&gt;prompt engineering is 90% of the product quality.&lt;/strong&gt; I spent more time refining the prompt than writing the UI. Small changes like "ensure each day totals within 50 calories of the target" dramatically improved output consistency.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Smart Grocery List
&lt;/h2&gt;

&lt;p&gt;This is where MealAI goes beyond a simple AI wrapper.&lt;/p&gt;

&lt;p&gt;The AI generates meals with specific ingredients and quantities. I aggregate these across all 21+ meals in the week, combine duplicates (you don't need 7 separate "1 onion" entries), and sort by grocery aisle.&lt;/p&gt;

&lt;p&gt;Then users can order everything on &lt;strong&gt;Instacart&lt;/strong&gt;, &lt;strong&gt;Walmart&lt;/strong&gt;, or &lt;strong&gt;Amazon&lt;/strong&gt; with one tap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security: What I Wish I Knew Before Launch
&lt;/h2&gt;

&lt;p&gt;When I first deployed, I had zero security beyond Supabase auth. Here's what I added before going live:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate Limiting&lt;/strong&gt; — Sliding window rate limiter on all API routes. The AI generation endpoint gets 5 requests/minute. Without this, one user could burn through your entire Claude API budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Input Validation&lt;/strong&gt; — Every user input gets validated server-side. Age must be 1-150. Weight must be 10-500kg. HTML tags get stripped from all text inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Field Whitelisting&lt;/strong&gt; — API update endpoints only accept specific fields. Without this, a malicious user could send a modified stripe_customer_id and steal another user's subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Headers&lt;/strong&gt; — CSP, HSTS, X-Frame-Options, Referrer-Policy via next.config.ts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; Security isn't a feature you add later. Build it from day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monetization Strategy
&lt;/h2&gt;

&lt;p&gt;MealAI uses a freemium model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free tier&lt;/strong&gt; — Limited meal plan generations per month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro ($4.99/mo)&lt;/strong&gt; — Unlimited plans, family profiles, advanced health features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus affiliate revenue from grocery delivery links. When a user orders groceries through our Instacart or Amazon links, we earn a commission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Solve your own problem first&lt;/strong&gt;&lt;br&gt;
I built MealAI because my family needed it. That meant I was my own first user and could feel every pain point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. AI output quality &amp;gt; UI polish&lt;/strong&gt;&lt;br&gt;
Users forgive an ugly button. They don't forgive a meal plan that suggests "chicken breast salad" for every single lunch. Spend time on your prompts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Vercel's serverless has gotchas&lt;/strong&gt;&lt;br&gt;
In-memory state doesn't persist between function invocations. I initially built an in-memory analytics logger that worked perfectly locally but lost all data in production. Had to migrate to Supabase-backed persistence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Ship fast, secure early&lt;/strong&gt;&lt;br&gt;
I launched with basic auth and added security hardening before announcing publicly. Don't wait until you have users to add rate limiting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Affiliate programs are harder than you think&lt;/strong&gt;&lt;br&gt;
Many affiliate networks reject new sites with low traffic. Apply early, get rejected, reapply later. Start with programs that have lower barriers like Amazon Associates.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Email notifications for weekly meal plan reminders&lt;/li&gt;
&lt;li&gt;Recipe sharing between users&lt;/li&gt;
&lt;li&gt;Instacart deep linking with affiliate tracking&lt;/li&gt;
&lt;li&gt;Mobile app (React Native)&lt;/li&gt;
&lt;li&gt;Multi-language support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;MealAI is live at &lt;strong&gt;&lt;a href="https://usemealai.com" rel="noopener noreferrer"&gt;usemealai.com&lt;/a&gt;&lt;/strong&gt;. Free to use — just sign in with Google and generate your first meal plan in 30 seconds.&lt;/p&gt;

&lt;p&gt;I'd love your feedback. What features would make this useful for your family?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this useful, follow me for more posts about building AI-powered SaaS products as a solo developer.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>startup</category>
    </item>
    <item>
      <title>Breaking the Glass Ceiling — An Interactive Frontend Art Piece</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Sat, 04 Apr 2026 14:46:01 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/breaking-the-glass-ceiling-an-interactive-frontend-art-piece-2bpd</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/breaking-the-glass-ceiling-an-interactive-frontend-art-piece-2bpd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;DEV WeCoded 2026 Challenge&lt;/a&gt;: Frontend Art&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;An interactive glass-shattering visualization that lets you literally break the glass ceiling. Click the glass — watch it crack, splinter, and fall away with realistic physics. Behind each shattered piece, a pioneer is revealed.&lt;/p&gt;

&lt;p&gt;Six women who built the foundations of modern tech:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👩‍💻 &lt;strong&gt;Ada Lovelace&lt;/strong&gt; — First Computer Programmer (1843)&lt;/li&gt;
&lt;li&gt;⚓ &lt;strong&gt;Grace Hopper&lt;/strong&gt; — Invented the First Compiler (1952)&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Katherine Johnson&lt;/strong&gt; — NASA's Hidden Figure (1962)&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Margaret Hamilton&lt;/strong&gt; — Apollo Software Engineering (1969)&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Radia Perlman&lt;/strong&gt; — Mother of the Internet (1985)&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Megan Smith&lt;/strong&gt; — Former U.S. CTO &amp;amp; VP at Google (2014)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://shopsmartai.github.io/breaking-the-glass-ceiling/" rel="noopener noreferrer"&gt;Try it live → Breaking the Glass Ceiling&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML5 Canvas&lt;/strong&gt; — Glass grid with Voronoi-style shard generation and irregular triangulation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physics Engine&lt;/strong&gt; — Custom gravity, velocity, and rotation for each falling shard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Audio API&lt;/strong&gt; — Procedurally generated crack sound effects in real-time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Particle System&lt;/strong&gt; — Sparkle effects with decay and gravity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS Animations&lt;/strong&gt; — Pioneer card reveals and staggered final message sequence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zero dependencies. Pure vanilla JavaScript, CSS, and HTML.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Message
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The ceiling was never real. The talent always was.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;27% of the computing workforce is women. 5% of tech startup founders are women. But the potential when barriers are removed? &lt;strong&gt;Infinite.&lt;/strong&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shopsmartai" rel="noopener noreferrer"&gt;
        shopsmartai
      &lt;/a&gt; / &lt;a href="https://github.com/shopsmartai/breaking-the-glass-ceiling" rel="noopener noreferrer"&gt;
        breaking-the-glass-ceiling
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An interactive glass-shattering frontend art piece celebrating women pioneers in tech. Built for WeCoded 2026 Challenge.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>wecoded</category>
      <category>frontend</category>
      <category>showdev</category>
    </item>
    <item>
      <title>CAPTCHA for Robots: A Verification System That Humans Will Never Pass</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Thu, 02 Apr 2026 23:31:04 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/captcha-for-robots-a-verification-system-that-humans-will-never-pass-32n4</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/captcha-for-robots-a-verification-system-that-humans-will-never-pass-32n4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CAPTCHA for Robots&lt;/strong&gt; — Because why should humans have all the verification fun?&lt;/p&gt;

&lt;p&gt;We've all been tortured by CAPTCHAs asking us to identify traffic lights, crosswalks, and suspiciously blurry bicycles. So I thought... what if we flipped it? What if the CAPTCHA was designed to keep &lt;em&gt;humans&lt;/em&gt; OUT?&lt;/p&gt;

&lt;p&gt;Welcome to the world's first &lt;strong&gt;Completely Automated Public Test to tell Computers and Humans Apart&lt;/strong&gt; — but reversed. Only machines can pass. Humans get roasted.&lt;/p&gt;

&lt;p&gt;The app throws 5 randomly selected challenges at you from a pool of 8 impossible tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Computational Speed&lt;/strong&gt; — Multiply two 6-digit numbers in your head. In 5 seconds. No calculator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Binary Literacy&lt;/strong&gt; — Read binary like it's your mother tongue. Because for robots, it literally is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Precision Targeting&lt;/strong&gt; — Click on an exact pixel coordinate within 3px. Your shaky human hands don't stand a chance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Input Velocity&lt;/strong&gt; — Type 80 random characters (including &lt;code&gt;@#$%^&amp;amp;*&lt;/code&gt;) in 5 seconds. Good luck, meatbag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reaction Speed&lt;/strong&gt; — Click within 50ms of a color change. Average human reaction time? 250ms. Sad.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chromatic Analysis&lt;/strong&gt; — See a color, type its exact hex code. &lt;code&gt;#A7C3E2&lt;/code&gt;? Looks blue to you? Too bad.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number Theory&lt;/strong&gt; — Identify ALL prime numbers from a grid of 4-digit numbers. In 10 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal Awareness&lt;/strong&gt; — Type the current Unix timestamp. To the second. Right now. Go.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fail, and you get a snarky diagnosis like: &lt;em&gt;"Have you considered upgrading to a cybernetic implant?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The "Humans Passed" counter on the landing page? Permanently stuck at &lt;strong&gt;0&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://shopsmartai.github.io/captcha-for-robots-app/" rel="noopener noreferrer"&gt;https://shopsmartai.github.io/captcha-for-robots-app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it. You WILL fail. (And if you somehow pass, we need to have a conversation about whether you're truly human.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shopsmartai" rel="noopener noreferrer"&gt;
        shopsmartai
      &lt;/a&gt; / &lt;a href="https://github.com/shopsmartai/captcha-for-robots-app" rel="noopener noreferrer"&gt;
        captcha-for-robots-app
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A reverse CAPTCHA that only robots can pass. Built for DEV April Fools Challenge 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Zero dependencies. Zero frameworks. Zero build tools. Just three files doing the heavy lifting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/strong&gt; — Semantic markup with SVG robot mascot&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;styles.css&lt;/code&gt;&lt;/strong&gt; — Full cyberpunk aesthetic: scanline overlays, CSS grid backgrounds, glitch text animations, neon glow effects, and pulsing buttons. All pure CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;script.js&lt;/code&gt;&lt;/strong&gt; — 8 challenge generators with Canvas API for pixel grids, Performance API for millisecond-accurate reaction timing, Web Crypto-grade randomization, and a timer system that turns red when you're about to fail (which is always)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole thing is ~500 lines of JS with no external calls. It runs entirely client-side. Even the fake "2,847,293 attempts today" counter ticks up in real-time to make it feel like thousands of humans are failing simultaneously alongside you.&lt;/p&gt;

&lt;p&gt;Fun details I'm proud of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The pixel grid challenge has a nearly invisible crosshair at the target — just visible enough to taunt you&lt;/li&gt;
&lt;li&gt;Challenge order is shuffled each attempt so you can't memorize the sequence&lt;/li&gt;
&lt;li&gt;The robot SVG eyes blink and the antenna glows between cyan and green&lt;/li&gt;
&lt;li&gt;Share button copies a pre-written message of shame to your clipboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Community Favorite&lt;/strong&gt; — Because nothing unites the internet like collective humiliation. Every human who tries this will fail, share their score, and challenge their friends to fail too. It's a universal experience: we're all equally inferior to machines. Together.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Built an AI-Powered Price Comparison Tool That Searches 100+ Retailers Instantly</title>
      <dc:creator>Shirisha Uppoju</dc:creator>
      <pubDate>Thu, 02 Apr 2026 18:17:17 +0000</pubDate>
      <link>https://dev.to/shirisha_uppoju_b20d30705/i-built-an-ai-powered-price-comparison-tool-that-searches-100-retailers-instantly-4492</link>
      <guid>https://dev.to/shirisha_uppoju_b20d30705/i-built-an-ai-powered-price-comparison-tool-that-searches-100-retailers-instantly-4492</guid>
      <description>&lt;p&gt;Have you ever spent 30 minutes opening tabs across Amazon, Best Buy, Walmart, and eBay just to find the best price on a laptop? I did too — so I built a tool to do it in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ShopSmartAI?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://shopsmartai.org" rel="noopener noreferrer"&gt;ShopSmartAI&lt;/a&gt; is an AI-powered price comparison platform that searches 100+ retailers in real-time and shows you the best deals — for both the US and Canada.&lt;/p&gt;

&lt;p&gt;You can search in plain English like &lt;strong&gt;"gaming laptop under $800 with RTX"&lt;/strong&gt; and the AI understands exactly what you're looking for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;p&gt;Here's what powers it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js 14 (App Router) on Vercel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js/Express on Railway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL with AI response caching (7-day TTL)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Gemini 2.5 Flash for natural language search and product spec generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search Data:&lt;/strong&gt; Google Shopping API via Serper.dev + Best Buy API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Affiliate:&lt;/strong&gt; Amazon Associates, eBay Partner Network, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI Natural Language Search&lt;/strong&gt;&lt;br&gt;
Instead of keyword matching, the AI interprets what you actually want. Search for "best noise cancelling headphones for flying" and it returns relevant results ranked by what matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side-by-Side Comparison&lt;/strong&gt;&lt;br&gt;
Add up to 4 products and get an AI-generated comparison with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-category winners (Display, Performance, Battery, etc.)&lt;/li&gt;
&lt;li&gt;AI-generated specs from real product data&lt;/li&gt;
&lt;li&gt;Price comparison across all available retailers&lt;/li&gt;
&lt;li&gt;An overall verdict on which product wins and why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;US + Canada Auto-Detection&lt;/strong&gt;&lt;br&gt;
The site detects your location and shows prices in USD or CAD with the right retailers. Canadian users see Canadian stores and prices — no more converting currencies in your head.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price Alerts (No Signup Required)&lt;/strong&gt;&lt;br&gt;
Want to know when a product drops to your target price? Just enter your email — no account needed. We check prices and email you when it drops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-Powered Blog&lt;/strong&gt;&lt;br&gt;
An automated blog publishes deal roundups and product comparisons every few days, targeting real search queries people are looking for.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the AI Search Works
&lt;/h2&gt;

&lt;p&gt;When a user searches, here's what happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The AI parses the natural language query to extract intent, budget, and must-have features&lt;/li&gt;
&lt;li&gt;We search Google Shopping API with optimized queries&lt;/li&gt;
&lt;li&gt;Results are normalized across retailers (different sites format data differently)&lt;/li&gt;
&lt;li&gt;Products are ranked by relevance — actual products rank above accessories&lt;/li&gt;
&lt;li&gt;Affiliate links are applied automatically based on retailer and country&lt;/li&gt;
&lt;li&gt;Results are cached in PostgreSQL to reduce API costs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AI doesn't just match keywords — it understands that "gaming laptop under $800 with RTX" means you want a laptop (not a case), with an NVIDIA RTX GPU, priced below $800.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Canadian Data is Different&lt;/strong&gt;&lt;br&gt;
Google Shopping returns base64-encoded images for Canadian results instead of URLs. I almost filtered these out as "broken" before realizing they're perfectly valid data URIs that render fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Affiliate Link Complexity&lt;/strong&gt;&lt;br&gt;
Each retailer has a different affiliate URL format. Amazon uses &lt;code&gt;tag=&lt;/code&gt;, eBay needs 5 different parameters (&lt;code&gt;mkevt&lt;/code&gt;, &lt;code&gt;mkcid&lt;/code&gt;, &lt;code&gt;mkrid&lt;/code&gt;, &lt;code&gt;campid&lt;/code&gt;, &lt;code&gt;toolid&lt;/code&gt;), and some retailers don't have affiliate programs at all. Building a universal affiliate tag system that handles all of these was a fun challenge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keeping Costs Low&lt;/strong&gt;&lt;br&gt;
AI API calls add up fast. I implemented a 3-tier caching strategy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In-memory cache (24-hour TTL) for instant hits&lt;/li&gt;
&lt;li&gt;PostgreSQL cache (7-day TTL) for persistent storage&lt;/li&gt;
&lt;li&gt;AI generation only when cache misses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This cut our AI costs by ~90%.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Chrome extension (built, pending Web Store approval) — compare prices on any shopping site&lt;/li&gt;
&lt;li&gt;More retailer integrations (Dell, HP, B&amp;amp;H Photo)&lt;/li&gt;
&lt;li&gt;Price history tracking with charts&lt;/li&gt;
&lt;li&gt;Mobile app&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Check it out at &lt;a href="https://shopsmartai.org" rel="noopener noreferrer"&gt;shopsmartai.org&lt;/a&gt; — search for any product and see how it works. I'd love feedback from the dev community.&lt;/p&gt;

&lt;p&gt;If you're interested in the technical details of any specific part (the AI search pipeline, the caching strategy, the affiliate system, or the Next.js architecture), let me know in the comments and I'll do a deep dive.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with Next.js, Node.js, PostgreSQL, and Gemini AI. Deployed on Vercel + Railway.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
