<?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: Jasmin Virdi</title>
    <description>The latest articles on DEV Community by Jasmin Virdi (@jasmin).</description>
    <link>https://dev.to/jasmin</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%2F322836%2Fde35ee13-9df1-4b90-9734-9f29aafe4ef4.jpeg</url>
      <title>DEV Community: Jasmin Virdi</title>
      <link>https://dev.to/jasmin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jasmin"/>
    <language>en</language>
    <item>
      <title>VibeBurst: Chrome extension to redesign website vibe!</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Wed, 04 Mar 2026 08:23:16 +0000</pubDate>
      <link>https://dev.to/jasmin/-4coj</link>
      <guid>https://dev.to/jasmin/-4coj</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j" class="crayons-story__hidden-navigation-link"&gt;VibeBurst: I Built a Chrome Extension That Lets AI Redesign Any Website's Vibe&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;DEV Weekend Challenge: Community&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jasmin" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F322836%2Fde35ee13-9df1-4b90-9734-9f29aafe4ef4.jpeg" alt="jasmin profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jasmin" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jasmin Virdi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jasmin Virdi
                
              
              &lt;div id="story-author-preview-content-3299336" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jasmin" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F322836%2Fde35ee13-9df1-4b90-9734-9f29aafe4ef4.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jasmin Virdi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j" id="article-link-3299336"&gt;
          VibeBurst: I Built a Chrome Extension That Lets AI Redesign Any Website's Vibe
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;9&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              9&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>VibeBurst: I Built a Chrome Extension That Lets AI Redesign Any Website's Vibe</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Sun, 01 Mar 2026 23:03:37 +0000</pubDate>
      <link>https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j</link>
      <guid>https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-2j5j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;You know that feeling when you've been staring at GitHub for 6 hours straight and everything just looks... the same? Every site, same vibe, same boring UI. Dark mode if you're lucky. Maybe someone made a theme extension for that one specific site. Cool.&lt;/p&gt;

&lt;p&gt;But what if you could just throw a whole aesthetic onto any site? Like, cyberpunk GitHub at 2am because why not. Glassmorphism on your docs. Brutalist Hacker News — which honestly already looks like that anyway.&lt;/p&gt;

&lt;p&gt;Yeah, that's what I built.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;VibeBurst&lt;/strong&gt; is a Chrome extension. You click it, pick a theme, and AI restyles the entire page with custom CSS. Not some generic stylesheet that breaks everything — it actually reads the page and generates CSS that makes sense for that specific site.&lt;/p&gt;

&lt;p&gt;The four themes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡ &lt;strong&gt;Cyberpunk&lt;/strong&gt; — dark backgrounds, neon cyan and magenta glows, monospace fonts&lt;/li&gt;
&lt;li&gt;🔮 &lt;strong&gt;Glassmorphism&lt;/strong&gt; — frosted glass aesthetic, soft purple and teal, airy and light&lt;/li&gt;
&lt;li&gt;🧱 &lt;strong&gt;Brutalist&lt;/strong&gt; — maximum contrast, pure black and white, bold red accents, zero ornamentation&lt;/li&gt;
&lt;li&gt;🌅 &lt;strong&gt;Retro Wave&lt;/strong&gt; — warm 80s sunset gradients, neon pink and sky blue, synthwave nostalgia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hit &lt;strong&gt;Regenerate&lt;/strong&gt; to get a fresh take. Hit &lt;strong&gt;Reset&lt;/strong&gt; to go back to normal. That's it.&lt;/p&gt;

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

&lt;p&gt;Here's is simple demo and screenshots of how this works on different websites.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/e8rb3N1Uwvo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Same View in different views: &lt;/p&gt;

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

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

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

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

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

&lt;p&gt;Github repository link - &lt;a href="https://github.com/Jasmin2895/VibeBurst" rel="noopener noreferrer"&gt;https://github.com/Jasmin2895/VibeBurst&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Stack: Plasmo + TypeScript + React for the extension, Groq API with llama-3.3-70b-versatile for generating CSS. Nothing fancy.&lt;br&gt;
The AI part was honestly the easy bit. The hard part? Making the CSS not destroy the page.&lt;/p&gt;

&lt;p&gt;Early versions were a mess. * selector wrecks everything. Touch width/height and the layout's gone. Bad contrast and you can't read anything. Took a lot of trial and error — ended up building a sanitizeCSS function to strip out anything that could break layouts before injecting.&lt;/p&gt;

&lt;p&gt;Then there's the fact that most sites barely use semantic HTML. It's all divs and class names. Targeting header or nav does almost nothing on sites like Google. So I had to scan the site's actual stylesheets, find every class setting a background-color, and catch the JS-injected ones too.&lt;/p&gt;

&lt;p&gt;Biggest thing that clicked: don't let the AI pick colors for class selectors. Let it style body, h1, button — the semantic stuff. Then grab the body background-color and apply it to all site-specific classes programmatically. That's when things finally stopped looking patchy.&lt;/p&gt;

&lt;p&gt;No JS touched. Page works the same. Just looks different.&lt;br&gt;
Weekend project that taught me CSS specificity is painful and theming the web is harder than it should be. 😅&lt;/p&gt;

&lt;p&gt;It was an overall great learning experience. Thanks Dev Team for organising this short weekend challenge! 👩‍💻&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>VibeBurst: I Built a Chrome Extension That Lets AI Redesign Any Website's Vibe</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Sun, 01 Mar 2026 23:03:37 +0000</pubDate>
      <link>https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-ek8</link>
      <guid>https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-ek8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;You know that feeling when you've been staring at GitHub for 6 hours straight and everything just looks... the same? Every site, same vibe, same boring UI. Dark mode if you're lucky. Maybe someone made a theme extension for that one specific site. Cool.&lt;/p&gt;

&lt;p&gt;But what if you could just throw a whole aesthetic onto any site? Like, cyberpunk GitHub at 2am because why not. Glassmorphism on your docs. Brutalist Hacker News — which honestly already looks like that anyway.&lt;/p&gt;

&lt;p&gt;Yeah, that's what I built.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;VibeBurst&lt;/strong&gt; is a Chrome extension. You click it, pick a theme, and AI restyles the entire page with custom CSS. Not some generic stylesheet that breaks everything — it actually reads the page and generates CSS that makes sense for that specific site.&lt;/p&gt;

&lt;p&gt;The four themes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡ &lt;strong&gt;Cyberpunk&lt;/strong&gt; — dark backgrounds, neon cyan and magenta glows, monospace fonts&lt;/li&gt;
&lt;li&gt;🔮 &lt;strong&gt;Glassmorphism&lt;/strong&gt; — frosted glass aesthetic, soft purple and teal, airy and light&lt;/li&gt;
&lt;li&gt;🧱 &lt;strong&gt;Brutalist&lt;/strong&gt; — maximum contrast, pure black and white, bold red accents, zero ornamentation&lt;/li&gt;
&lt;li&gt;🌅 &lt;strong&gt;Retro Wave&lt;/strong&gt; — warm 80s sunset gradients, neon pink and sky blue, synthwave nostalgia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hit &lt;strong&gt;Regenerate&lt;/strong&gt; to get a fresh take. Hit &lt;strong&gt;Reset&lt;/strong&gt; to go back to normal. That's it.&lt;/p&gt;

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

&lt;p&gt;Here's is simple demo and screenshots of how this works on different websites.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/e8rb3N1Uwvo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Same View in different views: &lt;/p&gt;

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

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

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

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

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

&lt;p&gt;Github repository link - &lt;a href="https://github.com/Jasmin2895/VibeBurst" rel="noopener noreferrer"&gt;https://github.com/Jasmin2895/VibeBurst&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Stack: Plasmo + TypeScript + React for the extension, Groq API with llama-3.3-70b-versatile for generating CSS. Nothing fancy.&lt;br&gt;
The AI part was honestly the easy bit. The hard part? Making the CSS not destroy the page.&lt;/p&gt;

&lt;p&gt;Early versions were a mess. * selector wrecks everything. Touch width/height and the layout's gone. Bad contrast and you can't read anything. Took a lot of trial and error — ended up building a sanitizeCSS function to strip out anything that could break layouts before injecting.&lt;/p&gt;

&lt;p&gt;Then there's the fact that most sites barely use semantic HTML. It's all divs and class names. Targeting header or nav does almost nothing on sites like Google. So I had to scan the site's actual stylesheets, find every class setting a background-color, and catch the JS-injected ones too.&lt;/p&gt;

&lt;p&gt;Biggest thing that clicked: don't let the AI pick colors for class selectors. Let it style body, h1, button — the semantic stuff. Then grab the body background-color and apply it to all site-specific classes programmatically. That's when things finally stopped looking patchy.&lt;/p&gt;

&lt;p&gt;No JS touched. Page works the same. Just looks different.&lt;br&gt;
Weekend project that taught me CSS specificity is painful and theming the web is harder than it should be. 😅&lt;/p&gt;

&lt;p&gt;It was an overall great learning experience. Thanks Dev Team for organising this short weekend challenge! 👩‍💻&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>VibeBurst: I Built a Chrome Extension That Lets AI Redesign Any Website's Vibe</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Sun, 01 Mar 2026 23:03:37 +0000</pubDate>
      <link>https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-hg8</link>
      <guid>https://dev.to/jasmin/vibeburst-i-built-a-chrome-extension-that-lets-ai-redesign-any-websites-vibe-hg8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;You know that feeling when you've been staring at GitHub for 6 hours straight and everything just looks... the same? Every site, same vibe, same boring UI. Dark mode if you're lucky. Maybe someone made a theme extension for that one specific site. Cool.&lt;/p&gt;

&lt;p&gt;But what if you could just throw a whole aesthetic onto any site? Like, cyberpunk GitHub at 2am because why not. Glassmorphism on your docs. Brutalist Hacker News — which honestly already looks like that anyway.&lt;/p&gt;

&lt;p&gt;Yeah, that's what I built.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;VibeBurst&lt;/strong&gt; is a Chrome extension. You click it, pick a theme, and AI restyles the entire page with custom CSS. Not some generic stylesheet that breaks everything — it actually reads the page and generates CSS that makes sense for that specific site.&lt;/p&gt;

&lt;p&gt;The four themes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡ &lt;strong&gt;Cyberpunk&lt;/strong&gt; — dark backgrounds, neon cyan and magenta glows, monospace fonts&lt;/li&gt;
&lt;li&gt;🔮 &lt;strong&gt;Glassmorphism&lt;/strong&gt; — frosted glass aesthetic, soft purple and teal, airy and light&lt;/li&gt;
&lt;li&gt;🧱 &lt;strong&gt;Brutalist&lt;/strong&gt; — maximum contrast, pure black and white, bold red accents, zero ornamentation&lt;/li&gt;
&lt;li&gt;🌅 &lt;strong&gt;Retro Wave&lt;/strong&gt; — warm 80s sunset gradients, neon pink and sky blue, synthwave nostalgia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hit &lt;strong&gt;Regenerate&lt;/strong&gt; to get a fresh take. Hit &lt;strong&gt;Reset&lt;/strong&gt; to go back to normal. That's it.&lt;/p&gt;

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

&lt;p&gt;Here's is simple demo and screenshots of how this works on different websites.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/e8rb3N1Uwvo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Same View in different views: &lt;/p&gt;

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

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

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

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

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

&lt;p&gt;Github repository link - &lt;a href="https://github.com/Jasmin2895/VibeBurst" rel="noopener noreferrer"&gt;https://github.com/Jasmin2895/VibeBurst&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Stack: Plasmo + TypeScript + React for the extension, Groq API with llama-3.3-70b-versatile for generating CSS. Nothing fancy.&lt;br&gt;
The AI part was honestly the easy bit. The hard part? Making the CSS not destroy the page.&lt;/p&gt;

&lt;p&gt;Early versions were a mess. * selector wrecks everything. Touch width/height and the layout's gone. Bad contrast and you can't read anything. Took a lot of trial and error — ended up building a sanitizeCSS function to strip out anything that could break layouts before injecting.&lt;/p&gt;

&lt;p&gt;Then there's the fact that most sites barely use semantic HTML. It's all divs and class names. Targeting header or nav does almost nothing on sites like Google. So I had to scan the site's actual stylesheets, find every class setting a background-color, and catch the JS-injected ones too.&lt;/p&gt;

&lt;p&gt;Biggest thing that clicked: don't let the AI pick colors for class selectors. Let it style body, h1, button — the semantic stuff. Then grab the body background-color and apply it to all site-specific classes programmatically. That's when things finally stopped looking patchy.&lt;/p&gt;

&lt;p&gt;No JS touched. Page works the same. Just looks different.&lt;br&gt;
Weekend project that taught me CSS specificity is painful and theming the web is harder than it should be. 😅&lt;/p&gt;

&lt;p&gt;It was an overall great learning experience. Thanks Dev Team for organising this short weekend challenge! 👩‍💻&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Rekall — A Context Recovery CLI That Uses GitHub Copilot as Its AI Brain</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Mon, 26 Jan 2026 17:21:05 +0000</pubDate>
      <link>https://dev.to/jasmin/rekall-a-context-recovery-cli-that-uses-github-copilot-as-its-ai-brain-5bm</link>
      <guid>https://dev.to/jasmin/rekall-a-context-recovery-cli-that-uses-github-copilot-as-its-ai-brain-5bm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI 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;Rekall&lt;/strong&gt; is a zero-config CLI that helps developers recover context after meetings, breaks, and context switches. Instead of piecing together git status, git log, and git stash list every time you sit back down — you type one word: &lt;strong&gt;&lt;code&gt;rekall&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rekall collects your entire project state — branch, commits, uncommitted changes, stashes, TODOs, FIXMEs — and sends it to GitHub Copilot CLI as a structured prompt. Copilot acts as the AI analysis engine, synthesizing raw data into a concise summary, suggested next step, and blockers.&lt;/p&gt;

&lt;p&gt;Most cases we use Copilot to write code. Rekall uses Copilot to power the product — four commands, each with its own Copilot touchpoint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;rekall context&lt;/strong&gt; — Copilot synthesizes your project state into summary, next step, and blockers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rekall pr &lt;/strong&gt; — Copilot analyzes PR changes with risk assessment and review questions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rekall explain&lt;/strong&gt; — Copilot explains your recent commits in natural language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rekall suggest&lt;/strong&gt; — Copilot generates commit messages or branch names from your changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rekall onboard&lt;/strong&gt; - A quick cheat sheet to understand the project structure and what's new.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool is built in TypeScript and works with or without Copilot installed — gracefully falling back to intelligent rule-based analysis.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/Jasmin2895/rekall" rel="noopener noreferrer"&gt;https://github.com/Jasmin2895/rekall&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;npm package link&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/rekall-cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/rekall-cli&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;code&gt;npm install -g rekall-cli&lt;/code&gt; &lt;br&gt;
&lt;strong&gt;Try instantly&lt;/strong&gt;: &lt;code&gt;npx rekall-cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rekall with Github Copilot CLI&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fex0v3pj2wn28d1ts2au9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fex0v3pj2wn28d1ts2au9.png" alt="rekall with cli" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

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

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

&lt;p&gt;&lt;strong&gt;Rekall without Github Copilot CLI&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lb7izcq9807eia42kq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lb7izcq9807eia42kq6.png" alt=" " width="800" height="647"&gt;&lt;/a&gt;&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="nv"&gt;$ &lt;/span&gt;rekall explain              &lt;span class="c"&gt;# Copilot explains your recent work&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;rekall suggest              &lt;span class="c"&gt;# AI commit message suggestions&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;rekall &lt;span class="nb"&gt;pr &lt;/span&gt;1                 &lt;span class="c"&gt;# Give summary overview of the PR&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;rekall onboard              &lt;span class="c"&gt;# Quick cheat sheet for project&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;rekall suggest &lt;span class="s2"&gt;"add dark mode"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; branch  &lt;span class="c"&gt;# Branch name suggestions&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;rekall &lt;span class="nt"&gt;--format&lt;/span&gt; json | jq &lt;span class="s1"&gt;'.analysis'&lt;/span&gt;         &lt;span class="c"&gt;# JSON for scripting&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Quick Test&lt;/strong&gt;
&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;cd &lt;/span&gt;any-git-repo
npx rekall-cli
npx rekall-cli explain
npx rekall-cli suggest &lt;span class="s2"&gt;"your feature idea"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Requirements&lt;/em&gt;&lt;/strong&gt;: Node.js 18+, Git. Optional: gh CLI for PR mode, gh extension install github/gh-copilot for AI-powered analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;Rekall doesn't just use Copilot CLI during development — it uses Copilot CLI &lt;strong&gt;as the product itself&lt;/strong&gt;. Every command pipes collected project data into gh copilot and parses what comes back. That's the entire architecture.&lt;/p&gt;

&lt;p&gt;When you run rekall, your git state and code issues get packed into a prompt and sent to Copilot CLI via execute command. The response is parsed into sections — SUMMARY, NEXT_STEP, BLOCKERS — and rendered as clean terminal output. All four commands follow this same pipeline.&lt;/p&gt;

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

&lt;p&gt;If Copilot isn't installed, Rekall doesn't break. It falls back to a rule-based engine that prioritizes FIXMEs, scores PR risk by file type, and generates commit messages from conventional patterns. It works — but Copilot's output is noticeably better. The tool tells you which mode you're in so there's no guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building With Copilot CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most useful part of Copilot CLI during development was testing my own prompts. I'd run &lt;code&gt;gh copilot -p&lt;/code&gt; with a rough prompt explain with different prompt structures directly in the terminal, see what came back, tweak the wording, and repeat — before writing any parsing code. That saved me from a lot of trial-and-error.&lt;/p&gt;

&lt;p&gt;It also caught a shell escaping issue I would've missed. I was passing raw project data (file paths, commit messages) into the prompt string, and Copilot helped me think through what characters could break the shell command. That's how the escaping logic ended up covering backslashes, quotes, dollar signs, and backticks.&lt;/p&gt;

&lt;p&gt;My initial error handling was too optimistic, only checking if Copilot was "not installed." During testing, I hit a variety of edge cases: API quota limits (402), authentication errors, and generic "no quota" messages. Each time, my tool (Rekall) tried to parse the error as a valid response.&lt;/p&gt;

&lt;p&gt;Using the CLI, I mapped out every failure mode gh copilot could return. This allowed me to build a comprehensive pattern list that catches these exceptions silently and lets the tool fallback gracefully.&lt;/p&gt;

&lt;p&gt;Looking back, the thing that worked best was treating Copilot CLI as a conversation partner I could test ideas against — right there in the terminal, no context switching needed.&lt;/p&gt;

&lt;p&gt;It was an overall great learning experience thanks to Dev and Github Team for organising it. 👩‍💻&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Thu, 03 Jul 2025 15:15:56 +0000</pubDate>
      <link>https://dev.to/jasmin/-577h</link>
      <guid>https://dev.to/jasmin/-577h</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679" class="crayons-story__hidden-navigation-link"&gt;Quizbit: Turn Any Article Into an Engaging Slack Quiz.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jasmin" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F322836%2Fde35ee13-9df1-4b90-9734-9f29aafe4ef4.jpeg" alt="jasmin profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jasmin" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jasmin Virdi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jasmin Virdi
                
              
              &lt;div id="story-author-preview-content-2644939" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jasmin" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F322836%2Fde35ee13-9df1-4b90-9734-9f29aafe4ef4.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jasmin Virdi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 1 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679" id="article-link-2644939"&gt;
          Quizbit: Turn Any Article Into an Engaging Slack Quiz.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/runnerhchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;runnerhchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/machinelearning"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;machinelearning&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;19&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>runnerhchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Quizbit: Turn Any Article Into an Engaging Slack Quiz.</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Tue, 01 Jul 2025 22:38:58 +0000</pubDate>
      <link>https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679</link>
      <guid>https://dev.to/jasmin/quizbit-turn-any-article-into-an-engaging-slack-quiz-5679</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/runnerh"&gt;Runner H "AI Agent Prompting" Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built an AI-powered &lt;strong&gt;"Quiz Master"&lt;/strong&gt; for Slack using a Runner H workflow. This automation takes any online article and instantly generates an engaging, five-question quiz based on its content. The Quiz Master then posts the quiz directly to a designated Slack channel, one question at a time, creating a fun and interactive learning experience for the team. After a brief pause, it reveals the correct answers with explanations, making it a seamless way to test and reinforce key takeaways from shared reading materials. This solves the problem of &lt;strong&gt;"did they actually read it?"&lt;/strong&gt; by turning passive information consumption into an active and &lt;em&gt;&lt;strong&gt;gamified group activity.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Here is the demo of setting up a Sample Slack Quiz using an article.&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/RjnQVcDoYng"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here is the final output view in Slack.&lt;/p&gt;

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

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

&lt;h2&gt;
  
  
  How I Used Runner H
&lt;/h2&gt;

&lt;p&gt;This entire workflow is powered by a single, carefully crafted Runner H prompt. The AI agent handles the content analysis, question generation, formatting, and timed message delivery.&lt;/p&gt;

&lt;p&gt;Here is the exact prompt I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Based on the article at {source_url}, generate a 5-question quiz that tests the main insights and key data points from the text.

For each question, provide the question in bold using Slack’s mrkdwn format, followed by four answer choices, each prefixed with a number emoji (e.g., :one:, :two:). Structure the quiz so each question and its answer options are sent as a separate message to {slack_channel}. Ask the channel Id and source_url of article from user to post.

After 30 seconds, send a follow-up in the thread of last message listing the correct answers and providing brief explanations for each.

Ensure each message is clearly formatted for Slack and suitable for a gamified experience. If Zapier’s Slack integration supports Block Kit elements, include interactive buttons for answer selection; otherwise, present answer options as plain text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can view the Runner H session here:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://hcompany.ai/surfer-2" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fframerusercontent.com%2Fassets%2F7eFHjmJeoNnvAhCSfhNTx0E8Njc.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://hcompany.ai/surfer-2" rel="noopener noreferrer" class="c-link"&gt;
            Surfer 2: The Next Generation of Cross-Platform Computer-Use Agents - H Company
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            We are a frontier AI research company that designs, builds, and deploys cost-efficient agentic AI systems directly into enterprises’ core workflows and processes.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fframerusercontent.com%2Fimages%2FqVilPhQQTJzvgGDNLjrYwa5xQ.png"&gt;
          hcompany.ai
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  Use Case &amp;amp; Impact
&lt;/h2&gt;

&lt;p&gt;This AI Quiz Master has several powerful real-world applications:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Corporate Training &amp;amp; HR&lt;/strong&gt;: HR and training teams can use this to quickly assess comprehension of training materials, new company policies, or onboarding documents. It makes mandatory reading more engaging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content &amp;amp; Marketing Teams&lt;/strong&gt;: After sharing an important industry report or a new company blog post, marketing teams can use the quiz to reinforce key findings and ensure everyone is aligned on the core message.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Educational Settings&lt;/strong&gt;: Teachers and study groups can use it to create quick quizzes from articles, research papers, or news items to facilitate discussion and test knowledge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;General Team Engagement&lt;/strong&gt;: It serves as a great tool for team-building. You can run a weekly quiz on a fun or interesting article to foster a more interactive and connected team environment in Slack.&lt;/p&gt;

&lt;p&gt;The primary impact is efficiency and engagement. It saves managers and team leads significant time by automating the creation of learning materials. More importantly, it transforms passive reading into an active, collaborative, and fun experience, which significantly boosts information retention and team participation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Social Love
&lt;/h3&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1940430429494083615-784" src="https://platform.twitter.com/embed/Tweet.html?id=1940430429494083615"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1940430429494083615-784');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1940430429494083615&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Huge thanks to Dev and Runner H Team for this hackathon! I really enjoyed participating. It was a refreshing and different kind of challenge, focusing on the creative art of AI prompting rather than just lines of code. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>runnerhchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Subscription Intelligence Hub - Your financial emails Knowledge Hub!</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Wed, 04 Jun 2025 22:33:41 +0000</pubDate>
      <link>https://dev.to/jasmin/subscription-intelligence-hub-3gcm</link>
      <guid>https://dev.to/jasmin/subscription-intelligence-hub-3gcm</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/postmark"&gt;Postmark Challenge: Inbox Innovators&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;We often have come across this problem where we sign up for stuff and later wonder, "&lt;strong&gt;Why am I paying for this again?&lt;/strong&gt;" and also we have so many bills paid via different payments apps and email is the only place where we get notifications from all these app payments. I built the Subscription &amp;amp; Purchase Intelligence Hub to fix that!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just forward your financial emails such as e-receipts (even PDFs!) and related email chats to one Hub address.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;AI figures out the financials: It uses OpenAI to grab the vendor, product, price, and category from your receipts. It also converts receipts uploaded in any currency into USD. &lt;br&gt;
It gets the "vibe": For your discussion emails, it uses NLP to find key comments and even tells you if the sentiment was good (👍), bad (👎), or so-so (😐).&lt;br&gt;
Everything connects: The Hub links your spending to these contextual insights automatically.&lt;br&gt;
Your personal view: Pop in the email you forwarded from (no complicated sign-ups!) and see your finances with the "why" clearly laid out on a simple dashboard.&lt;br&gt;
Basically, it helps you actually understand your spending, not just see the numbers.&lt;/p&gt;

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

&lt;p&gt;You can access the app live app &lt;strong&gt;&lt;a href="https://subscription-intelligence-hub.vercel.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps to use the app.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Forward all your bills and reciepts to &lt;strong&gt;&lt;code&gt;postmtest06@gmail.com&lt;/code&gt;&lt;/strong&gt; to analyse.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to the &lt;a href="https://subscription-intelligence-hub.vercel.app/" rel="noopener noreferrer"&gt;&lt;strong&gt;Dashboard page&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;You will see your financial summary categorised by month spending and spending by category/vendor&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Here we also show the &lt;strong&gt;Financial Items&lt;/strong&gt; containing context of financial discussion or info derived from email.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidiy3eb7b70ws0azzjv5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidiy3eb7b70ws0azzjv5.png" alt="financial-item-breakup" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Detailed financial card item open view.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;If the Item is recurring event like monthly or yearly subscription we show the next payable date.
There is an &lt;strong&gt;Add Renewal to calendar&lt;/strong&gt; button which generates downloadable &lt;code&gt;.ics&lt;/code&gt; file which can be used to create event in calendar.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;For reminders I have setup a slack channel where i post regular updates of expenses. This was a feature to showcase that if this is managed by team they can handle or post regular updates of the expenses of teammates in slack channel for subscriptions renewals.
&lt;a href="https://test-projects-talk.slack.com/archives/C08UN6D9EP8" rel="noopener noreferrer"&gt;Link&lt;/a&gt; to slack channel&lt;/li&gt;
&lt;/ol&gt;

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

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

&lt;p&gt;Link to the &lt;a href="https://github.com/Jasmin2895/subscription-intelligence-hub" rel="noopener noreferrer"&gt;&lt;strong&gt;Github repo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I really wanted to make financial tracking less about just numbers and more about the story – the 'why' behind what we spend. My goal was to turn that &lt;strong&gt;&lt;em&gt;email clutter into actual understanding&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I created a Node.js/Express backend with a PostgreSQL database, and a React frontend. The first, and most crucial, step was email ingestion. This is where &lt;strong&gt;&lt;em&gt;Postmark truly shone for me&lt;/em&gt;&lt;/strong&gt;. Setting up the inbound webhook was incredibly straightforward. It just worked, consistently delivering emails as well-structured JSON – even PDF attachments. OpenAI API does the heavy lifting on parsing financial details from all sorts of emails and PDFs. The natural NLP library helps dig out key contextual sentences from discussions and figures out the sentiment. &lt;/p&gt;

&lt;p&gt;Here is the backend process preview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwocdcpzt5yxp10okf8ob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwocdcpzt5yxp10okf8ob.png" alt="backend-flow" width="800" height="279"&gt;&lt;/a&gt;&lt;br&gt;
It was a fun challenge to combine these tools to turn messy email data into clear, actionable insights!&lt;/p&gt;

&lt;p&gt;I have also thought about enhancing this in future by adding Google calendar integration where the user can directly add reminder in their calendar instead of downloading ics file.&lt;/p&gt;

&lt;p&gt;Thank you to PostMark and Dev.to team for bringing this challenge to us.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>postmarkchallenge</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>OpsGaurd - A Smart Access AI-Driven Tenant-Safe.</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Mon, 05 May 2025 06:44:15 +0000</pubDate>
      <link>https://dev.to/jasmin/opsgaurd-a-smart-access-ai-driven-tenant-safe-4gm1</link>
      <guid>https://dev.to/jasmin/opsgaurd-a-smart-access-ai-driven-tenant-safe-4gm1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/permit_io"&gt;Permit.io Authorization Challenge&lt;/a&gt;: AI Access Control&lt;/em&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Note - Updated the demo link url - &lt;a href="https://ops-gaurd-x5ha.vercel.app/" rel="noopener noreferrer"&gt;https://ops-gaurd-x5ha.vercel.app/&lt;/a&gt;
&lt;/h5&gt;

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

&lt;p&gt;I created "OpsGaurd - Smart Access AI", a solution that combines AI and automated workflows to simplify document access and approval for teams. It allows users from different tenants (like Product and Engineering) to request access to documents while keeping everything secure and organized. The system uses Permit.io to manage roles and permissions, making sure everyone has the right level of access without needing manual approval at every step.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Problem Does It Solve?
&lt;/h2&gt;

&lt;p&gt;This tool makes managing access to documents much easier, especially in environments with multiple teams. It takes care of the tricky part—deciding who gets to access what—automatically, saving time and ensuring that everything is compliant with data security rules.&lt;/p&gt;

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

&lt;p&gt;You can check out the live demo here: &lt;a href="https://ops-gaurd-x5ha.vercel.app/" rel="noopener noreferrer"&gt;View the demo&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/61qvULPlJY4" rel="noopener noreferrer"&gt;Happy Path Flow&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/6xaHSLHQHec" rel="noopener noreferrer"&gt;Approval and denial flow&lt;/a&gt;
Here’s a quick peek at the app:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login screen - Users can log in, selecting their team (Product or Engineering). If user entry is not in permit than they will be not allowed to access the portal.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu695mkcyxhfe0s4juf4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu695mkcyxhfe0s4juf4q.png" alt="Image description" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI Assitant Agent &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jez0dy5sz3v516xft2y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jez0dy5sz3v516xft2y.png" alt="Image description" width="800" height="327"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozwma0v8p1bltdya05q6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozwma0v8p1bltdya05q6.png" alt="Image description" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Request Resource Access&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Saved Documents Lis updated by people&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2fcrbl48fl7257rwa5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2fcrbl48fl7257rwa5w.png" alt="Image description" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access approval Page&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  Project Repo
&lt;/h2&gt;

&lt;p&gt;Here is the github &lt;a href="https://github.com/Jasmin2895/OpsGaurd" rel="noopener noreferrer"&gt;project link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Journey
&lt;/h2&gt;

&lt;p&gt;Building "OpsGaurd - Smart Access AI" was a great learning experience! I had to tackle a few tricky problems along the way—like figuring out how to handle different roles and permissions for users across multiple tenants. Thanks to Permit.io, I was able to automate the approval process and simplify access control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authorization for AI Applications with Permit.io
&lt;/h2&gt;

&lt;p&gt;To ensure that access is only granted to the right users, I set up Permit.io to manage fine-grained permissions across different tenants like Product and Engineering. I used Permit.io’s role-based access control (RBAC) to define who can view or update documents. When a user without sufficient access tries to perform a restricted action, the system prompts them to request access. That request is then manually reviewed and approved by an admin from the default tenant. Once approved, the user's role is updated, and they can proceed based on their new permissions.&lt;/p&gt;

&lt;p&gt;Here’s a simple flow to show how it all works:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2evjaza6owti8ezq3qm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2evjaza6owti8ezq3qm4.png" alt="Image description" width="800" height="974"&gt;&lt;/a&gt;&lt;/p&gt;

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

</description>
      <category>devchallenge</category>
      <category>permitchallenge</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Tale Craft: Where Stories Come to Life, in Every Language.</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Mon, 27 Jan 2025 01:11:28 +0000</pubDate>
      <link>https://dev.to/jasmin/tale-craft-where-stories-come-to-life-in-every-language-492</link>
      <guid>https://dev.to/jasmin/tale-craft-where-stories-come-to-life-in-every-language-492</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://srv.buysellads.com/ads/long/x/T6EK3TDFTTTTTT6WWB6C5TTTTTTGBRAPKATTTTTTWTFVT7YTTTTTTKPPKJFH4LJNPYYNNSZL2QLCE2DPPQVCEI45GHBT" rel="noopener noreferrer"&gt;Agent.ai&lt;/a&gt; Challenge: Full-Stack Agent (&lt;a href="https://dev.to/challenges/agentai"&gt;See Details&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;TaleCraft&lt;/strong&gt; is your storytelling companion, here to turn your ideas into vivid, engaging tales. Whether you dream of an adventurous quest, a magical fairy tale, or a gripping mystery, TaleCraft brings your imagination to life with rich, descriptive narratives. It’s not just about words, it’s about creating experiences that feel personal and immersive. With the ability to craft stories in multiple language. Just share your theme, details, and preferred language, and let TaleCraft do the rest—creating stories that are as dynamic and diverse as you are.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the features of this Agent ?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;User selects the theme of the story&lt;/li&gt;
&lt;li&gt;Then user is asked to provide a little description as to what they are looking in the story like places, seasons and characters name etc.&lt;/li&gt;
&lt;li&gt;User is asked about the language preference in which they want to hear the story.&lt;/li&gt;
&lt;li&gt;The story output is generated in audio format in all the languages which user has selected.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In order to achieve the stories in different languages I have used &lt;strong&gt;&lt;em&gt;For loop Run process&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Link to the bot - &lt;a href="https://agent.ai/agent/tale_craft" rel="noopener noreferrer"&gt;https://agent.ai/agent/tale_craft&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the demo video of agent functionality.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/yskkEKXBe_g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent.ai Experience
&lt;/h2&gt;

&lt;p&gt;Agent.ai is very cool platform which provides great ease for the development of Agents. The documentation is really great along with video resources which helped me to ramp up quickly.&lt;br&gt;
The action types provided covers lot of area and invoking agents and connecting them was easy and a smooth process.&lt;/p&gt;

&lt;p&gt;In terms of the challenges faced was while playing around with actions I came across calling and deploying serverless functions and could not find a way to debug them from the Agent.ai platform. The hubspot blog does not seems to generate the article.&lt;/p&gt;

&lt;p&gt;Apart from the overall experience was great and I learnt a lot during the process.&lt;/p&gt;

&lt;p&gt;Huge thanks to Dev Team and Agent.ai team for conducting this hackathon.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agentaichallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>MealMate - Your all-in-one meal planner, nutrition guide, and grocery assistant</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Sun, 26 Jan 2025 00:44:10 +0000</pubDate>
      <link>https://dev.to/jasmin/mealmate-your-all-in-one-meal-planner-nutrition-guide-and-grocery-assistant-1i7f</link>
      <guid>https://dev.to/jasmin/mealmate-your-all-in-one-meal-planner-nutrition-guide-and-grocery-assistant-1i7f</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.tourl"&gt;&lt;/a&gt;&lt;em&gt;This is a submission for the &lt;a href="https://srv.buysellads.com/ads/long/x/T6EK3TDFTTTTTT6WWB6C5TTTTTTGBRAPKATTTTTTWTFVT7YTTTTTTKPPKJFH4LJNPYYNNSZL2QLCE2DPPQVCEI45GHBT" rel="noopener noreferrer"&gt;Agent.ai&lt;/a&gt; Challenge: Assembly of Agents (&lt;a href="https://dev.to/challenges/agentai"&gt;See Details&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;As part of this hackathon I have built MealMate which is like having a personal food assistant that combines three awesome agents —&lt;strong&gt;RecipePro&lt;/strong&gt;, &lt;strong&gt;NutriBot&lt;/strong&gt;, and &lt;strong&gt;PantryPal&lt;/strong&gt; — into one easy agent. In order to acheive this I have used &lt;strong&gt;Spoonacular API&lt;/strong&gt; which helps you find great recipes, check out their nutritional details, and make grocery lists with everything you need. It curates new meal ideas, track meal nutrition, or just figure out what to buy at the store, MealMate makes it all way easier. It’s built to save you time and keep things healthy, so you can enjoy cooking without the stress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bot has the following features.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Finds the recipe&lt;/li&gt;
&lt;li&gt;Provide nutrition Analysis of the recipe&lt;/li&gt;
&lt;li&gt;Find wide variety of packed foods.&lt;/li&gt;
&lt;li&gt;Generate the audio support for MealMate article.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now lets look at the demo.&lt;/p&gt;

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

&lt;p&gt;In order to built &lt;strong&gt;MealMate&lt;/strong&gt; I have created three small Agents.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;RecipePro Agent&lt;/em&gt; - &lt;a href="https://agent.ai/agent/recipepro-agent" rel="noopener noreferrer"&gt;https://agent.ai/agent/recipepro-agent&lt;/a&gt; (It helps to generate recipes)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;NutriBot Agent&lt;/em&gt; - &lt;a href="https://agent.ai/agent/nutribot" rel="noopener noreferrer"&gt;https://agent.ai/agent/nutribot&lt;/a&gt; (Predicts the nutritions in the requested recipe and generate cumulative summary)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;PantryPal Agent&lt;/em&gt; - &lt;a href="https://agent.ai/agent/pantrypal" rel="noopener noreferrer"&gt;https://agent.ai/agent/pantrypal&lt;/a&gt; (It helps to find relevant items on the Grocery store)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My main submission is &lt;strong&gt;MealMate&lt;/strong&gt; - &lt;a href="https://agent.ai/agent/mealmate" rel="noopener noreferrer"&gt;https://agent.ai/agent/mealmate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the demo of the working agent.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7XxW3dY4BQw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt; - You can now listen to Recipe audio in the article instead of downloading it.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5s1lc9olpv3xzp96cb7z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5s1lc9olpv3xzp96cb7z.png" alt="Image description" width="800" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent.ai Experience
&lt;/h2&gt;

&lt;p&gt;Agent.ai is very cool platform which provides great ease for the development of Agents. The documentation is really great along with video resources which helped me to ramp up quickly.&lt;br&gt;
The action types provided covers lot of area and invoking agents and connecting them was easy and a smooth process.&lt;/p&gt;

&lt;p&gt;In terms of the challenges faced was while playing around with actions I came across calling serverless functions and could not find a way to debug them from the Agent.ai platform. The hubspot blog does not seems to generate the article.&lt;/p&gt;

&lt;p&gt;Apart from the overall experience was great and I learnt a lot during the process. &lt;/p&gt;

&lt;p&gt;Huge thanks to Dev Team and Agent.ai team for conducting this hackathon.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agentaichallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Find Jobs Plugin</title>
      <dc:creator>Jasmin Virdi</dc:creator>
      <pubDate>Sun, 28 Apr 2024 22:28:19 +0000</pubDate>
      <link>https://dev.to/jasmin/find-jobs-plugin-56e9</link>
      <guid>https://dev.to/jasmin/find-jobs-plugin-56e9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-us-for-the-coze-ai-bot-challenge-3000-in-prizes-4dp"&gt;Coze AI Bot Challenge&lt;/a&gt;: Trailblazer.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Hi Everyone,&lt;/p&gt;

&lt;p&gt;As part of this challenge I have worked on creating two plugins to find the list of jobs using different public which are &lt;a href="https://findwork.dev/developers/" rel="noopener noreferrer"&gt;FindWork&lt;/a&gt; and &lt;a href="https://developer.adzuna.com/" rel="noopener noreferrer"&gt;Adzunza&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are a few plugins available on Coze plugin store which helps us get the list of Jobs like Google jobs but the results returned does not contains jobs across the web. I have created a Coze Bot called &lt;a href="https://dev.to/jasmin/job-finder-bot-finds-jobs-saves-applied-jobs-and-sends-weekly-new-jobs-post-4bgd"&gt;Job Finder&lt;/a&gt; which will help us to find all the jobs listed on these portals.&lt;/p&gt;

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

&lt;p&gt;You can find the two plugins on the Coze Plugin Store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.coze.com/store/plugin/7363010624558940166" rel="noopener noreferrer"&gt;FindJobsAdzuna&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.coze.com/store/plugin/7363025563419672581" rel="noopener noreferrer"&gt;FindJobFindWork&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The FindJobsAdzuna plugin returns list of job matching the role provided the api key, id and results per page value.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Focjku7w91ihq0u67dsdx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Focjku7w91ihq0u67dsdx.png" alt="Image description" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The FindJobFindWork plugin returns list of jobs provided the token.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6dcls46h4bbmo9ut4wh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6dcls46h4bbmo9ut4wh.png" alt="Image description" width="800" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fetch_relevant_jobs custom workflow I built for Job Finder bot uses these two plugins.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;Working on plugins helped to understand the integration process and laid a good foundation for building more complex plugin. It helped to understand the entire input and output process specially while using plugins nodes in workflow.&lt;/p&gt;

&lt;p&gt;The entire Coze platform is easy to understand the features and steps along with Coze helpbot was a big helping hand for the onboarding process with framework.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;

</description>
      <category>cozechallenge</category>
      <category>devechallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
