<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Shirisha Uppoju</title>
    <description>The latest articles on Forem by Shirisha Uppoju (@shirisha_uppoju_b20d30705).</description>
    <link>https://forem.com/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>Forem: Shirisha Uppoju</title>
      <link>https://forem.com/shirisha_uppoju_b20d30705</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shirisha_uppoju_b20d30705"/>
    <language>en</language>
    <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://forem.com/shirisha_uppoju_b20d30705/i-built-a-personal-second-brain-with-markdown-files-and-claude-code-heres-how-2m14</link>
      <guid>https://forem.com/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://forem.com/shirisha_uppoju_b20d30705/i-built-an-ai-meal-planner-that-saves-families-200month-on-groceries-34m8</link>
      <guid>https://forem.com/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://forem.com/shirisha_uppoju_b20d30705/breaking-the-glass-ceiling-an-interactive-frontend-art-piece-2bpd</link>
      <guid>https://forem.com/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://forem.com/shirisha_uppoju_b20d30705/captcha-for-robots-a-verification-system-that-humans-will-never-pass-32n4</link>
      <guid>https://forem.com/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://forem.com/shirisha_uppoju_b20d30705/i-built-an-ai-powered-price-comparison-tool-that-searches-100-retailers-instantly-4492</link>
      <guid>https://forem.com/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>
