<?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: Ifihanagbara Olusheye</title>
    <description>The latest articles on DEV Community by Ifihanagbara Olusheye (@ifihan).</description>
    <link>https://dev.to/ifihan</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%2F391850%2Fc0e55989-5645-4686-92ac-3410ec526996.jpg</url>
      <title>DEV Community: Ifihanagbara Olusheye</title>
      <link>https://dev.to/ifihan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ifihan"/>
    <language>en</language>
    <item>
      <title>Blog Cover Generator - AI-Powered Cover Images in Seconds</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 05 Jan 2026 01:05:59 +0000</pubDate>
      <link>https://dev.to/ifihan/blog-cover-generator-ai-powered-cover-images-in-seconds-519p</link>
      <guid>https://dev.to/ifihan/blog-cover-generator-ai-powered-cover-images-in-seconds-519p</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mux"&gt;DEV's Worldwide Show and Tell Challenge Presented by Mux&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Blog Cover Generator is an AI-powered web application that creates professional blog cover images in seconds. Instead of spending hours in design tools or paying for stock images, content creators can simply enter their article title, choose a visual style, and get multiple AI-generated cover options tailored to their preferred blogging platform.&lt;/p&gt;

&lt;p&gt;The app generates 2 unique images per request using Google's Gemini AI, offers 6 distinct visual styles (Creative, Cinematic, Minimalist, Professional, Abstract, and Tech), and automatically resizes images for Hashnode, Dev.to, Medium, or custom dimensions. Users can also add text overlays with customizable fonts, positioning, and shadow effects.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Pitch Video
&lt;/h2&gt;

&lt;p&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__body flex items-center justify-between"&gt;
        &lt;a href="https://stream.mux.com/jC9b6WQlEo1K2evUn01UFiFkzFwDXTLZ3q01cW5XUfmAc.m3u8" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;stream.mux.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live App&lt;/strong&gt;: &lt;a href="https://blog-cover-generator-912048666815.us-central1.run.app" rel="noopener noreferrer"&gt;https://blog-cover-generator-912048666815.us-central1.run.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/ifihan/blog-cover-generator" rel="noopener noreferrer"&gt;https://github.com/ifihan/blog-cover-generator&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Testing Instructions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Visit the live demo link&lt;/li&gt;
&lt;li&gt;You can generate covers without creating an account&lt;/li&gt;
&lt;li&gt;Enter any blog title (e.g., "Building Scalable APIs with Python")&lt;/li&gt;
&lt;li&gt;Select a style (try "Cinematic" or "Tech" for striking results)&lt;/li&gt;
&lt;li&gt;Click Generate and wait for your AI-generated covers&lt;/li&gt;
&lt;li&gt;Select an image, choose your target platform, and download&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Optional: Create an account to save your generation history and access previous covers from your dashboard.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Story Behind It
&lt;/h2&gt;

&lt;p&gt;As a developer who writes technical articles, I constantly faced the same frustrating workflow: spend hours writing quality content, then scramble to find or create a decent cover image. Stock photos felt generic. Canva templates looked like everyone else's. Custom designs took too long.&lt;/p&gt;

&lt;p&gt;I wanted something that understood the context of my article and generated visuals that actually matched the content - not just random tech imagery slapped together. That's when I decided to build Blog Cover Generator.&lt;/p&gt;

&lt;p&gt;The core idea is simple: your article title already contains the essence of what you're writing about. Why not use AI to transform that into a visual representation? A post about "Building Microservices" should look different from one about "CSS Animation Tips" - and now it can, automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Makes It Special
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context-aware generation&lt;/strong&gt;: The AI interprets your title's meaning, not just keywords&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform-optimized&lt;/strong&gt;: One-click export to exact dimensions for Hashnode (1600x840), Dev.to (1000x420), or Medium (1500x750)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Style variety&lt;/strong&gt;: From corporate presentations to cyberpunk aesthetics, there's a style for every type of content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text overlay engine&lt;/strong&gt;: Add your title directly on the image with professional typography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No design skills needed&lt;/strong&gt;: Get results that would take hours in Photoshop, delivered in seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technical Highlights
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;

&lt;p&gt;The application is built with a Python/Flask backend and vanilla JavaScript frontend, deployed on Google Cloud Run with PostgreSQL (Neon) for persistence.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend (Vanilla JS) → Flask API → Google Gemini AI
                                  → Google Cloud Storage
                                  → PostgreSQL (Neon)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AI Image Generation
&lt;/h3&gt;

&lt;p&gt;The core magic happens in the prompt engineering. Each style has carefully crafted prompt templates that guide Gemini to produce consistent, high-quality results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;STYLE_PROMPTS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cinematic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dramatic lighting, high contrast, movie poster aesthetic,
                  depth of field, professional color grading&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tech&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cyberpunk aesthetic, neon accents, circuit patterns,
             futuristic elements, dark background with glowing highlights&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;# ... more styles
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system combines the user's title with style-specific descriptors and negative prompts to avoid common AI image pitfalls (no text, no watermarks, no distorted elements).&lt;/p&gt;

&lt;h3&gt;
  
  
  Intelligent Image Processing
&lt;/h3&gt;

&lt;p&gt;One of the trickier challenges was handling different aspect ratios without awkward cropping. The image processor uses aspect ratio calculations to determine optimal crop regions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;resize_and_crop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target_height&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Calculate aspect ratios
&lt;/span&gt;    &lt;span class="n"&gt;target_ratio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;target_width&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;target_height&lt;/span&gt;
    &lt;span class="n"&gt;current_ratio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;

    &lt;span class="c1"&gt;# Smart crop: center-weighted for most content preservation
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;current_ratio&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;target_ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Image is wider - crop sides
&lt;/span&gt;        &lt;span class="n"&gt;new_width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;target_ratio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;new_width&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;crop&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;new_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="c1"&gt;# ... handle other cases
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Text Overlay Engine
&lt;/h3&gt;

&lt;p&gt;The text overlay system supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;9 positioning options (3x3 grid)&lt;/li&gt;
&lt;li&gt;Automatic line wrapping for long titles&lt;/li&gt;
&lt;li&gt;Shadow effects for readability on any background&lt;/li&gt;
&lt;li&gt;Font fallback system (works on both macOS and Linux deployments)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance Optimizations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lazy initialization&lt;/strong&gt;: Heavy services (AI client, cloud storage) only initialize on first use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-memory caching&lt;/strong&gt;: Generated images stored temporarily before user saves, reducing API calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficient queries&lt;/strong&gt;: SQLAlchemy joinedload prevents N+1 query problems in the dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech Stack Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Flask, SQLAlchemy, Gunicorn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Google Gemini 2.5 Flash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;PostgreSQL (Neon)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Google Cloud Storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image Processing&lt;/td&gt;
&lt;td&gt;Pillow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Docker, Google Cloud Run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;Flask-Login, Werkzeug&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;Future improvements I'm considering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch generation for multiple articles&lt;/li&gt;
&lt;li&gt;Template saving for consistent branding&lt;/li&gt;
&lt;li&gt;API access for headless CMS integration&lt;/li&gt;
&lt;li&gt;Additional AI models for style variety&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Thanks for checking out Blog Cover Generator! If you write technical content and hate the cover image hunt, give it a try. I'd love to hear your feedback.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>muxchallenge</category>
      <category>showandtell</category>
      <category>video</category>
    </item>
    <item>
      <title>Briefen.me - AI-Powered URL Shortener That Actually Makes Sense</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 05 Jan 2026 00:46:42 +0000</pubDate>
      <link>https://dev.to/ifihan/briefenme-ai-powered-url-shortener-that-actually-makes-sense-1pgm</link>
      <guid>https://dev.to/ifihan/briefenme-ai-powered-url-shortener-that-actually-makes-sense-1pgm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mux"&gt;DEV's Worldwide Show and Tell Challenge Presented by Mux&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Briefen.me is an AI-powered URL shortener that generates readable, meaningful short links instead of random character strings. Instead of getting &lt;code&gt;bit.ly/x7k9p2&lt;/code&gt;, you get &lt;code&gt;briefen.me/flask-authentication-guide&lt;/code&gt; - a link that actually tells you where it leads.&lt;/p&gt;

&lt;p&gt;The app uses Google Gemini to analyze webpage content and suggest intelligent slug options, giving users the power of choice while eliminating the mental overhead of coming up with creative short links.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Pitch Video
&lt;/h2&gt;

&lt;p&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__body flex items-center justify-between"&gt;
        &lt;a href="https://stream.mux.com/J9am4mfnkXzmIUoOvrHyvi4yE1GO741Jpe3hCBB67j00.m3u8" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;stream.mux.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live App&lt;/strong&gt;: &lt;a href="https://briefen.me" rel="noopener noreferrer"&gt;https://briefen.me&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Ifihan/briefen-me" rel="noopener noreferrer"&gt;https://github.com/Ifihan/briefen-me&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chrome Extension&lt;/strong&gt;: &lt;a href="https://chromewebstore.google.com/detail/briefenme-url-shortener/dleadfoeincjmiiligkcamdjgoogejmn" rel="noopener noreferrer"&gt;Chrome Extension&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing Instructions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit the live site&lt;/li&gt;
&lt;li&gt;Paste any URL (try a news article or blog post)&lt;/li&gt;
&lt;li&gt;Watch the AI analyze the content in real-time&lt;/li&gt;
&lt;li&gt;Pick your favorite slug from 3 AI-generated options&lt;/li&gt;
&lt;li&gt;Your smart short link is ready!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No login required - anonymous link creation is supported.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Story Behind It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;We've all been there: you need to share a link, so you head to a URL shortener. You paste your long URL and get back... &lt;code&gt;xyz.co/a8f2kp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;What does that even mean? Nothing. It's just random noise.&lt;/p&gt;

&lt;p&gt;Or maybe you want something memorable, so you try to think of a custom slug. You sit there for five minutes trying to come up with something clever, only to find it's already taken. Then you settle for something generic like &lt;code&gt;my-link-123&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real problem isn't shortening URLs - it's making them meaningful without the cognitive burden.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;What if AI could do the thinking for you?&lt;/p&gt;

&lt;p&gt;Briefen.me scrapes the webpage content, feeds it to Google Gemini, and generates contextually relevant slug suggestions. The AI understands what the page is about and proposes slugs that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Descriptive and memorable&lt;/li&gt;
&lt;li&gt;SEO-friendly&lt;/li&gt;
&lt;li&gt;Actually available (it checks the database)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You get 3 options to choose from, so you're in control without doing the mental heavy lifting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I Built This
&lt;/h3&gt;

&lt;p&gt;As a developer, I share links constantly - to documentation, tutorials, GitHub repos, Stack Overflow answers. I wanted my shared links to be self-documenting. When someone sees &lt;code&gt;briefen.me/react-hooks-explained&lt;/code&gt;, they know exactly what they're clicking before they click it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Highlights
&lt;/h2&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User submits URL
       ↓
   URL Validation (SSRF protection, tracking param removal)
       ↓
   Web Scraping (with Twitter/X fallback via Nitter)
       ↓
   AI Analysis (Gemini 2.0 Flash)
       ↓
   Slug Generation (5 candidates per batch)
       ↓
   Availability Check (filter taken slugs)
       ↓
   User Selection (pick from 3 options)
       ↓
   Short Link Created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Real-Time Streaming with Server-Sent Events
&lt;/h3&gt;

&lt;p&gt;One of the most satisfying parts of the UX is watching the AI "think" in real-time. This is powered by Server-Sent Events (SSE):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend (Flask):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;progress&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Fetching webpage...&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="c1"&gt;# ... scrape content ...
&lt;/span&gt;    &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;thinking&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Analyzing content...&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="c1"&gt;# ... AI generates slugs ...
&lt;/span&gt;    &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;success&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;slugs&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt; &lt;span class="n"&gt;slugs&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;stream_with_context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt; &lt;span class="n"&gt;mimetype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text/event-stream&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Frontend (Vanilla JS):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api/generate-slugs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;formData&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;reader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getReader&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;done&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;done&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;// Parse SSE chunks and update UI in real-time&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Smart Web Scraping with Fallbacks
&lt;/h3&gt;

&lt;p&gt;Not all websites play nice. Twitter/X, for example, requires JavaScript to render content. Briefen.me handles this gracefully:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Primary&lt;/strong&gt;: Direct fetch with BeautifulSoup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitter Fallback&lt;/strong&gt;: Nitter mirror (no JS required)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Last Resort&lt;/strong&gt;: Jina's text-proxy service
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_is_js_blocked&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;indicators&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enable javascript&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;javascript is required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;js-disabled&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;indicator&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;indicator&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;indicators&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Security-First URL Validation
&lt;/h3&gt;

&lt;p&gt;URL shorteners can be abused for SSRF attacks. Briefen.me blocks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Private IP ranges (127.x, 10.x, 192.168.x, 172.16-31.x)&lt;/li&gt;
&lt;li&gt;Localhost patterns&lt;/li&gt;
&lt;li&gt;File:// and other dangerous schemes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also strips 40+ tracking parameters (utm_*, fbclid, gclid, etc.) to keep your links clean.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI-Powered Slug Generation
&lt;/h3&gt;

&lt;p&gt;The Gemini integration uses a carefully crafted prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Generate 5 unique, SEO-friendly URL slugs for this webpage.

Title: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
Description: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
Content: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

Rules:
- Max 50 characters
- Lowercase letters, numbers, hyphens only
- Descriptive and memorable
- Each slug should be semantically different
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI generates 5 candidates per batch, and if all are taken, it retries up to 3 times with instructions to generate different options.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chrome Extension
&lt;/h3&gt;

&lt;p&gt;For power users, there's a Chrome extension that adds a right-click context menu: "Shorten with Briefen.me". It uses JWT authentication to sync with your web account and streams the same real-time progress updates.&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Flask (Python)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;SQLite / PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Google Gemini 2.0 Flash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Vanilla HTML/CSS/JS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;Flask-Login + JWT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streaming&lt;/td&gt;
&lt;td&gt;Server-Sent Events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extension&lt;/td&gt;
&lt;td&gt;Chrome Manifest V3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>muxchallenge</category>
      <category>showandtell</category>
      <category>video</category>
    </item>
    <item>
      <title>JobFlow AI: Your Personal AI Job Hunt Assistant</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 07 Jul 2025 06:59:30 +0000</pubDate>
      <link>https://dev.to/ifihan/jobflow-ai-your-personal-ai-job-hunt-assistant-4fcf</link>
      <guid>https://dev.to/ifihan/jobflow-ai-your-personal-ai-job-hunt-assistant-4fcf</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;p&gt;As a software engineer, finding the right jobs to apply to can be an absolute nightmare. You spend hours scrolling through hundreds of listings sites like Indeed and AngelList, only to find that most positions either require skills you don't have, pay far below your expectations, or turn out to be poorly disguised scams. Even worse, by the time you find a great opportunity that matches your profile, it's already been posted for weeks and has hundreds of applicants.&lt;/p&gt;

&lt;p&gt;I used to spend 2-3 hours every evening after work just searching for jobs, bookmarking interesting positions, and trying to keep track of where I'd applied. I'd often miss great opportunities because I wasn't checking the right sites at the right time, or I'd waste time applying to roles that were clearly not a good fit. The whole process felt like a second full-time job.&lt;/p&gt;

&lt;p&gt;That's when I realized: this is exactly the kind of repetitive, time-consuming workflow that AI should handle. Why am I manually parsing job descriptions when an AI could do it better? Why am I spending my evenings on job boards when an AI could monitor them 24/7 and only surface the best matches?&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;JobFlow AI&lt;/strong&gt; is an intelligent job hunting prompt specifically designed for software engineers targeting remote opportunities in the tech startup ecosystem. It acts as your personal startup recruiter, automatically discovering, evaluating, and ranking job opportunities that match your technical profile and career goals.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnb7qw748s6axo9ws2v6q.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%2Fnb7qw748s6axo9ws2v6q.png" alt="In progress..." width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I leveraged Runner H's file reading capabilities to create a comprehensive profile analysis:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Created a New Task&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Runner H’s dashboard, clicked &lt;strong&gt;“Run”&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Pasted my full job-hunting prompt into the instructions pane.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Connected Integrations&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linked Google Drive to access &lt;code&gt;my_resume.pdf&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Linked Google Docs &amp;amp; Sheets for output (&lt;code&gt;Job Opportunities – [DATE]&lt;/code&gt; doc and &lt;code&gt;Job Application Tracker&lt;/code&gt; sheet).
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Prompt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I need you to become my personal AI job hunting assistant. Here's exactly what I want you to do:

**INITIAL SETUP:**
1. Read my resume file: "my_resume.pdf" 
2. Analyze and extract:
   - My key skills and technologies
   - Years of experience in each area
   - Previous job titles and industries
   - Education and certifications
   - Notable achievements and projects

**JOB SEARCH PARAMETERS:**
- Target Role: "Software Engineer" OR "AI Engineer" OR "Backend Developer"
- Experience Level: Mid-level (3-7 years)
- Location: Remote
- Industry Focus: Tech startups

**JOB HUNTING ROUTINE:**
I want you to:

1. **Search Job Boards:**
   - Search Indeed.com for relevant positions
   - Check AngelList (angel.co) for startup opportunities
   - Browse RemoteOK.io for remote positions
   - Search Glassdoor for additional listings

2. **For Each Job Found:**
   - Read the full job description
   - Rate it 1-10 based on how well it matches my resume:
     * Skills match (40% weight)
     * Experience level fit (30% weight)
     * Company quality/reputation (20% weight)
     * Location and benefits (10% weight)
   - Note specific requirements I meet vs don't meet
   - Identify red flags (unrealistic requirements, vague descriptions)

3. **Create Daily Report:**
   - Make a new Google Doc titled "Job Opportunities - [TODAY'S DATE]"
   - List TOP 10 highest-scoring jobs (8+ rating only)
   - For each job include:
     * Company name and job title
     * Direct application link
     * Match score with brief explanation
     * Key skills they want that I have
     * Any gaps in requirements
     * Why this company seems appealing
     * Application deadline (if mentioned)
     * Estimated salary range

4. **Send Summary:**
   - Email me a brief summary with the top 3 opportunities
   - Include direct links to apply
   - Mention any urgent deadlines (applications closing soon)

**QUALITY CONTROLS:**
- Skip jobs requiring security clearance
- Avoid obvious scams or MLM schemes
- Don't include jobs requiring 10+ years experience for "entry level"
- Flag any jobs that seem too good to be true

**TRACKING &amp;amp; FOLLOW-UP:**
- Create/update a Google Sheet called "Job Application Tracker"
- Include columns: Date Found, Company, Position, Applied (Y/N), Status, Notes

**SPECIAL INSTRUCTIONS:**
- Research the company briefly - check their recent news, funding, glassdoor reviews
- Note if the company is actively hiring multiple similar roles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;h3&gt;
  
  
  Who Benefits from JobFlow AI?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Primary Users:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Software Engineers&lt;/strong&gt; transitioning into AI/ML roles at startups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote-first Professionals&lt;/strong&gt; who want access to global startup opportunities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Career Pivoters&lt;/strong&gt; moving from enterprise to startup environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Secondary Users:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Startup Recruiters&lt;/strong&gt; looking to automate candidate pipeline sourcing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Career Coaches&lt;/strong&gt; specializing in startup placements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bootcamp Graduates&lt;/strong&gt; ready for mid-level remote positions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Impact
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Time Savings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduces daily startup job search from 2-3 hours to 10-15 minutes of report review&lt;/li&gt;
&lt;li&gt;Eliminates manual company research with automated funding/review analysis&lt;/li&gt;
&lt;li&gt;Prevents missed opportunities with consistent daily monitoring of key startup boards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quality Improvements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher application success rate through better startup-profile matching&lt;/li&gt;
&lt;li&gt;Reduced wasted applications to unstable or poorly-funded companies&lt;/li&gt;
&lt;li&gt;More strategic targeting of companies actively scaling their engineering teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Career Acceleration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster discovery of new remote opportunities in emerging startups&lt;/li&gt;
&lt;li&gt;Better understanding of in-demand skills in the AI/startup ecosystem&lt;/li&gt;
&lt;li&gt;More organized approach leads to better preparation for startup interviews&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Posted on &lt;a href="https://x.com/hcompany_ai/status/1930682526856843340" rel="noopener noreferrer"&gt;X&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>runnerhchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>PaperPulse—Your daily heartbeat on the latest research</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Sun, 06 Jul 2025 21:51:06 +0000</pubDate>
      <link>https://dev.to/ifihan/paperpulse-your-daily-heartbeat-on-the-latest-research-46ko</link>
      <guid>https://dev.to/ifihan/paperpulse-your-daily-heartbeat-on-the-latest-research-46ko</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;As a researcher, I’ve often found myself drowning in endless alerts and overflowing inboxes just to stay abreast of the latest publications. Mornings would start with manual searches, copy-pasting titles into documents, and wrestling with inconsistent formats—time I could have spent on deeper analysis. That’s why I created &lt;strong&gt;PaperPulse&lt;/strong&gt;: to transform my daily literature review from a chore into a single, seamless routine.&lt;/p&gt;

&lt;p&gt;I crafted &lt;strong&gt;PaperPulse&lt;/strong&gt;, an Autonomous Research Digest Bot powered by Runner H. A summary of how it works&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Queries arXiv and PubMed for new papers published in the last 24 hours on keywords I provide
&lt;/li&gt;
&lt;li&gt;Extracts each paper’s title, authors, date, and abstract.
&lt;/li&gt;
&lt;li&gt;Summarizes abstracts into 3–5 bullet points covering the problem, methods, and findings.
&lt;/li&gt;
&lt;li&gt;Creates or updates a Google Doc named &lt;code&gt;Daily Research Digest – YYYY-MM-DD&lt;/code&gt; in my “Research Digests” Drive folder, organizing content under “arXiv” and “PubMed” headings with timestamps.
&lt;/li&gt;
&lt;li&gt;Emails me a one-sentence highlight plus the Doc link (Subject: “Your Daily Research Digest – YYYY-MM-DD”).
&lt;/li&gt;
&lt;li&gt;Handles “no new papers” days gracefully by still generating a doc marked “No new papers found today,” and appends a “Digest generated by PaperPulse on YYYY-MM-DD at HH:MM” footer.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All steps run hands-free!&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqjz65t7mgyqbw31qdoy.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%2Foqjz65t7mgyqbw31qdoy.png" alt="In Progress..." width="800" height="420"&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%2Fp00rk26xvteay8hd7vg0.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%2Fp00rk26xvteay8hd7vg0.png" alt="In Progress..." width="800" height="424"&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%2Fk6bdph8cxq9rqmvrc8lf.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%2Fk6bdph8cxq9rqmvrc8lf.png" alt="Final Product" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I brought &lt;strong&gt;PaperPulse&lt;/strong&gt; to life in three simple steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Crafted a Single Prompt&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
I wrote one comprehensive Runner H prompt that describes every step—from querying arXiv/PubMed to summarizing abstracts and creating the Google Doc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connected Google Docs&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
In Runner H’s integrations, I granted access to my Google Drive and pointed it at a &lt;code&gt;Research Digests&lt;/code&gt; folder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Watched It Run Live&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Every morning I could see Runner H execute the prompt: it performed the search, generated a PDF-style summary in a new Google Doc, and emailed me the link.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it—no code, no manual clicks. I simply built the prompt, hooked up my Docs, and let Runner H handle the rest.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt Template
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I need you to create my daily research digest. Here's what I want you to do:

**Step 1: Search for New Papers**
- Go to arXiv.org and search for papers published in the last 24 hours using these keywords: [INSERT YOUR KEYWORDS HERE, e.g., "machine learning", "neural networks", "artificial intelligence"]
- Also search PubMed for recent papers using the same keywords
- Focus on papers from the last 1-2 days to ensure freshness

**Step 2: Filter &amp;amp; Prioritize**
- Look for papers that match my research interests: [INSERT SPECIFIC RESEARCH AREAS]
- Prioritize papers with high citation potential (from reputable institutions/authors)
- Aim for 10-15 most relevant papers total

**Step 3: Summarize Each Paper**
For each selected paper, create a bullet-point summary including:
- Title and authors
- Main contribution/finding (1-2 sentences)
- Methodology used (brief)
- Key results or implications
- Relevance score (1-10) based on my interests

**Step 4: Create &amp;amp; Share Digest**
- Create a new Google Doc titled "Research Digest - [TODAY'S DATE]"
- Format it cleanly with headers, bullet points, and paper links
- Share the doc with my email: [YOUR EMAIL]

**Additional Instructions:**
- Skip papers that are clearly outside my field
- Flag any papers that seem particularly groundbreaking
- Include direct links to the papers for easy access
- Use clear, professional formatting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;strong&gt;Who benefits?&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Researchers &amp;amp; Academics&lt;/strong&gt; get a zero-effort snapshot of emerging work in their niche, ensuring they never miss a breakthrough.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clinicians &amp;amp; Healthcare Teams&lt;/strong&gt; stay current on medical AI and bio-computational methods without spending hours on searches.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product Managers &amp;amp; Engineers&lt;/strong&gt; track innovations in optimization and AI to inform roadmaps and R&amp;amp;D priorities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How it improves workflows&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
By automating literature monitoring and standardizing summaries, PaperPulse replaces manual paper hunts with a single, shareable Google Doc each morning. Teams can collaborate in real time on insights, accelerate decision-making, and dedicate saved hours to deep analysis, experimentation, and writing—turning what was once a tedious chore into a seamless daily ritual.  &lt;/p&gt;

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

&lt;p&gt;I posted it on X - &lt;a href="https://x.com/Ifihan_/status/1941978588472918280" rel="noopener noreferrer"&gt;view here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>runnerhchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 03 Mar 2025 11:01:11 +0000</pubDate>
      <link>https://dev.to/ifihan/-g78</link>
      <guid>https://dev.to/ifihan/-g78</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/ifihan" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2F391850%2Fc0e55989-5645-4686-92ac-3410ec526996.jpg" alt="ifihan"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/ifihan/fine-tuning-a-foundation-model-for-a-specific-task-with-vertex-ai-1mkc" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Fine-tuning a Foundation Model for a Specific Task with Vertex AI&lt;/h2&gt;
      &lt;h3&gt;Ifihanagbara Olusheye ・ Mar 3&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Fine-tuning a Foundation Model for a Specific Task with Vertex AI</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 03 Mar 2025 10:59:40 +0000</pubDate>
      <link>https://dev.to/ifihan/fine-tuning-a-foundation-model-for-a-specific-task-with-vertex-ai-1mkc</link>
      <guid>https://dev.to/ifihan/fine-tuning-a-foundation-model-for-a-specific-task-with-vertex-ai-1mkc</guid>
      <description>&lt;p&gt;In the rapidly evolving landscape of artificial intelligence, foundation models—large pre-trained systems like GPT-4, BERT, or Vision Transformers, have reshaped how developers approach machine learning tasks. These models, trained on vast datasets spanning text, images, or multimodal inputs, capture broad patterns and knowledge.&lt;/p&gt;

&lt;p&gt;But how do you get this model to understand domain-specific needs? This is where fine-tuning, a process that adapts these general-purpose models to excel at specialized tasks comes in. Whether summarizing legal documents or analyzing sentiment in customer feedback, fine-tuning bridges the gap between a model’s generic capabilities and domain-specific needs.&lt;/p&gt;

&lt;p&gt;In this article, we will go over how to fine-tune foundation models using Vertex AI. We will go through the steps, from setting up your environment and preparing your data to deploying your fine-tuned model for inference.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Fine Tuning?
&lt;/h2&gt;

&lt;p&gt;Fine-tuning is a machine learning technique that involves taking a pre-trained model and adapting it to perform a specific task. This process uses the knowledge the existing model has already acquired during its initial training on a large dataset, allowing it to be reused for a new, related task with potentially limited data. By adjusting the model's parameters using task-specific data, fine-tuning enables the model to specialize in the desired application, enhancing its performance and efficiency.&lt;/p&gt;

&lt;p&gt;In practice, fine-tuning is valuable when resources for training a model from scratch are constrained. It allows developers to build upon existing models, saving time and computational power while achieving high accuracy in specialized tasks. This approach is widely used across various domains, including natural language processing and computer vision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Vertex AI for fine-tuning?
&lt;/h2&gt;

&lt;p&gt;Vertex AI is a Google Cloud platform that helps developers and data scientists build, train, and deploy machine learning models all in one place. It offers tools and resources to make working with AI easier and more efficient, whether you are starting from scratch or fine-tuning an existing model.&lt;/p&gt;

&lt;p&gt;One of the main reasons to use Vertex AI for fine-tuning a model is its &lt;strong&gt;unified environment&lt;/strong&gt;. Instead of jumping between different tools for data preparation, model training, and deployment, you can do everything within Vertex AI. This setup not only saves time but also reduces the chances of errors when moving data or models between different systems.&lt;/p&gt;

&lt;p&gt;Another great feature of Vertex AI is its &lt;strong&gt;scalability&lt;/strong&gt;. Whether you are working on a small project or handling large amounts of data, Vertex AI can handle it. It runs on Google's infrastructure, meaning you can scale up your processing power as needed without worrying about the underlying hardware.&lt;/p&gt;

&lt;p&gt;Vertex AI also offers &lt;strong&gt;pre-built models and AutoML tools&lt;/strong&gt;, which can be really handy if you don't want to build a model from scratch. You can take a pre-trained model and fine-tune it for your specific needs, like customizing a language model for sentiment analysis or adapting a vision model for specific image classification tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fine Tuning a Model on Vertex AI
&lt;/h2&gt;

&lt;p&gt;In this section, we'll explore how to fine-tune a foundation model using Vertex AI's &lt;a href="https://cloud.google.com/model-garden?hl=en" rel="noopener noreferrer"&gt;Model Garden&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selecting a Pre-trained Model
&lt;/h3&gt;

&lt;p&gt;Before we proceed, we will pick a model that will be used. For this tutorial, we are using the &lt;a href="https://ai.stanford.edu/~amaas/data/sentiment/" rel="noopener noreferrer"&gt;IMDb Movie Reviews Dataset&lt;/a&gt;. We will be using the Gemma 2 model in the Model Garden.&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%2Fjsynzl9c69ojndqwq23s.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%2Fjsynzl9c69ojndqwq23s.png" alt="Gemma dashboard" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prepare The Dataset
&lt;/h3&gt;

&lt;p&gt;Preparing the dataset is the next step in fine-tuning a machine learning model. It involves gathering relevant data, cleaning it to remove errors or inconsistencies, and organizing it into a structured format suitable for training. This process ensures that the model learns effectively from accurate and representative examples, leading to better performance on the intended task.&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%2Fms6a1eqh2moi0gvy2kdr.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%2Fms6a1eqh2moi0gvy2kdr.png" alt="Preparing the dataset" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To include the data, we will have to create a bucket in the “Output directory”. Follow the steps and create a bucket to uplaod the dataset that will be needed.&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%2Fhgkpm71eqeieuvbynt1r.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%2Fhgkpm71eqeieuvbynt1r.png" alt="Create a bucket" width="800" height="1227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating the bucket, upload the &lt;code&gt;jsonl&lt;/code&gt; files to the bucket directory. Search for “bucket” in the search bar and navigate to the “Cloud Storage” service. To convert the &lt;code&gt;txt&lt;/code&gt; files to &lt;code&gt;jsonl&lt;/code&gt; , I wrote this simple script to follow the file format from the example. Then merge all the &lt;code&gt;pos&lt;/code&gt; and &lt;code&gt;neg&lt;/code&gt; into a single &lt;code&gt;jsonl&lt;/code&gt; file (e.g. the &lt;code&gt;pos&lt;/code&gt; and &lt;code&gt;neg&lt;/code&gt; folders under the &lt;code&gt;train&lt;/code&gt; folder will all be merged into a general &lt;code&gt;train.jsonl&lt;/code&gt; file ).&lt;/p&gt;

&lt;h3&gt;
  
  
  Initiate the Fine-Tuning Process
&lt;/h3&gt;

&lt;p&gt;After passing in the remaining parameters and have clicked on “Start tuning”, the process of tuning will begin and it is possible to view and track the progress.&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%2Fdb5xpz37m43as6zajrxh.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%2Fdb5xpz37m43as6zajrxh.png" alt="Training dashboard" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the fine-tuning process is done, you should be notified via email. Unfortunately for me, my model took days to train and I even cancelled it.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Deploy the Fine-Tuned Model&lt;/strong&gt; (Optional)
&lt;/h3&gt;

&lt;p&gt;Once you’re satisfied with the model's performance, deploy it to an endpoint making it accessible for inference in your applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, we've explored the meaning and process of fine-tuning foundation models using Vertex AI, demonstrating how to adapt pre-trained models to specific tasks such as sentiment analysis with the IMDb Movie Reviews Dataset.&lt;/p&gt;

&lt;p&gt;By following the steps outlined in this tutorial, you can effectively fine-tune foundation models to meet your unique requirements, harnessing the power of Vertex AI to deliver robust and customized AI solutions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Fri, 28 Feb 2025 21:50:28 +0000</pubDate>
      <link>https://dev.to/ifihan/-2b1c</link>
      <guid>https://dev.to/ifihan/-2b1c</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/ifihan" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2F391850%2Fc0e55989-5645-4686-92ac-3410ec526996.jpg" alt="ifihan"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/ifihan/few-shot-learning-for-gemini-on-vertex-ai-13nj" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Few-Shot Learning for Gemini on Vertex AI&lt;/h2&gt;
      &lt;h3&gt;Ifihanagbara Olusheye ・ Feb 28&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#vertexai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#google&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#googlecloud&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>vertexai</category>
      <category>google</category>
      <category>googlecloud</category>
      <category>ai</category>
    </item>
    <item>
      <title>Few-Shot Learning for Gemini on Vertex AI</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Fri, 28 Feb 2025 21:49:26 +0000</pubDate>
      <link>https://dev.to/ifihan/few-shot-learning-for-gemini-on-vertex-ai-13nj</link>
      <guid>https://dev.to/ifihan/few-shot-learning-for-gemini-on-vertex-ai-13nj</guid>
      <description>&lt;p&gt;In recent years, Google's advancements in Generative AI have redefined how we interact with machine learning models, particularly through the potential of Vertex AI and the powerful Gemini models. Traditionally, machine learning models required vast amounts of labelled data to perform well on specific tasks. However, with the introduction of &lt;strong&gt;few-shot learning&lt;/strong&gt;, these generative AI models can now achieve impressive performance with a handful of examples.&lt;/p&gt;

&lt;p&gt;Few-shot learning offers a new approach, allowing models to generalize and adapt quickly, even with limited data. This is beneficial in scenarios where acquiring large datasets is impractical or costly.&lt;/p&gt;

&lt;p&gt;In this article, we'll dive into the practical steps of implementing few-shot learning on Vertex AI using Gemini. We'll explore how to craft effective prompts, configure the environment, and generate meaningful outputs with just a few examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Few-Shot Learning?
&lt;/h2&gt;

&lt;p&gt;Few-shot learning is a type of machine learning technique that uses very small data to learn and adapt to tasks. This is in contrast to traditional machine learning models, which typically require large datasets to achieve good performance.&lt;/p&gt;

&lt;p&gt;Few-shot learning uses pre-trained models, often through transfer learning or meta-learning techniques. The model is first trained on a broad dataset to learn general patterns and representations. When introduced to a new task, it applies this prior knowledge along with the few provided examples to make predictions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of Vertex AI
&lt;/h2&gt;

&lt;p&gt;Google's Vertex AI is a comprehensive, fully managed machine learning (ML) platform designed to streamline the development, deployment, and scaling of ML models and AI applications. By unifying various Google Cloud services under one umbrella, Vertex AI simplifies the entire ML workflow, enabling both beginners and experts to build robust AI solutions efficiently. Key features of Vertex AI include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unified Interface&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integration with Open-Source Frameworks (TensorFlow, PyTorch)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AutoML Capabilities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pre-Trained APIs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;End-to-End Integration with Google Cloud Services&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MLOps Support (Monitoring, Versioning, Model Management)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for Custom and Pre-Trained Models&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Experiment Tracking and Model Training&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hyperparameter Tuning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feature Store for Data Management&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Model Deployment and Serving&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability and High Performance&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up Vertex AI
&lt;/h2&gt;

&lt;p&gt;Setting up Vertex AI involves a couple of configurations. To have a more detailed set-up, head over to the &lt;a href="%5Bhttps://cloud.google.com/vertex-ai/docs/featurestore/setup%5D(https://cloud.google.com/vertex-ai/docs/featurestore/setup)"&gt;Vertex AI docs&lt;/a&gt; to explore various ways of setting up and installing. An overview of setting up Vertex AI includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Head over to &lt;a href="%5Bhttps://console.cloud.google.com/%5D(https://console.cloud.google.com/)"&gt;Google Cloud Console&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Vertex AI API by navigating to “APIs &amp;amp; Services" &amp;gt; "Library” and then search for “Vertex AI”.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on “Enable” to activate the API.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To use locally, the Vertex AI SDK can be downloaded via pip using the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  pip &lt;span class="nb"&gt;install &lt;/span&gt;google-cloud-aiplatform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To learn more about the Vertex aI SDK or Interfaces, refer to the &lt;a href="%5Bhttps://cloud.google.com/vertex-ai/docs/python-sdk/use-vertex-ai-python-sdk%5D(https://cloud.google.com/vertex-ai/docs/python-sdk/use-vertex-ai-python-sdk)"&gt;documentation.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Few-Shot with Gemini on Vertex AI
&lt;/h2&gt;

&lt;p&gt;While various models like Google's PaLM and third-party options such as Anthropic's Claude and Kodi support this approach, this article focuses on using &lt;strong&gt;Gemini&lt;/strong&gt;, Google's advanced multimodal model available on &lt;strong&gt;Vertex AI&lt;/strong&gt;. Gemini excels in handling diverse inputs—including text, images, and videos—making it a versatile choice for implementing few-shot learning.&lt;/p&gt;

&lt;p&gt;You can interact with Gemini through the &lt;strong&gt;Vertex AI SDK&lt;/strong&gt; for Python or the user-friendly &lt;strong&gt;Vertex AI Studio&lt;/strong&gt; interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the Vertex AI SDK
&lt;/h3&gt;

&lt;p&gt;To use Vertex AI via its SDK, the library has to be downloaded first using the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;google-cloud-aiplatform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installing, import the necessary packages&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;vertexai&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;vertexai.generative_models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;GenerativeModel&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the point where vertex AI and model are initialized.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;vertexai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;project-id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;location&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-2.0-pro-exp-02-05&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s set up some examples for the few-shot task. This example is based on the analysis of the sentiment of a movie watched.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;examples&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Input: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;This movie was amazing!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
Output: Positive

Input: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;I hated this film.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
Output: Negative

Input: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The acting was okay, but the plot was boring.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
Output: Negative
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let’s use the examples and take in a user’s input to get the output/sentiment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# The Sentence We Want to Analyze
&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;I absolutely loved the story and the characters!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Combine Examples and the User Input into a Single Prompt
&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;examples&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Input: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Output:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Get the Response from Gemini
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Print the Result
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sentiment: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To find the project id and location, go head over to the home page of the project on your console.&lt;/p&gt;

&lt;p&gt;The output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Sentiment: Output: Positive
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Moving to using the beautiful Vertex AI Studio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Vertex AI Studio
&lt;/h3&gt;

&lt;p&gt;Vertex AI Studio is an integrated development environment within Google Cloud's Vertex AI platform, designed to improve rapid prototyping, testing, and deployment of machine learning models, including generative AI models like Google's Gemini. It offers a user-friendly interface that allows developers and data scientists to interact with models, craft and refine prompts, and evaluate outputs without extensive coding requirements.&lt;/p&gt;

&lt;p&gt;Here’s a peek at the studio&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%2Fsunx97vew6s4goqx6xl3.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%2Fsunx97vew6s4goqx6xl3.png" alt="Vertex AI Playground" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use the Vertex AI Studio for the few-shot task, let’s write some prompts in the “Prompt” Section and run.&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%2Fx65ncguab5bfruiahul1.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%2Fx65ncguab5bfruiahul1.png" alt="Few-Shot in vertex AI" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Images can also be passed for the few-shot task&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%2Fx7isidpr0z05mwvjqm7p.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%2Fx7isidpr0z05mwvjqm7p.png" alt="Few-shot with images" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, we've explored the implementation of few-shot learning using Gemini on Vertex AI, highlighting its versatility in handling diverse data inputs and the flexibility offered through both the Vertex AI SDK and Vertex AI Studio. By effectively using these tools, developers and data scientists can build robust AI models capable of learning from minimal examples, thereby accelerating the development of intelligent applications.&lt;/p&gt;

</description>
      <category>vertexai</category>
      <category>google</category>
      <category>googlecloud</category>
      <category>ai</category>
    </item>
    <item>
      <title>AI Meme Generator: Where Humor Meets Virality</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 27 Jan 2025 07:56:01 +0000</pubDate>
      <link>https://dev.to/ifihan/ai-meme-generator-where-humor-meets-virality-1k00</link>
      <guid>https://dev.to/ifihan/ai-meme-generator-where-humor-meets-virality-1k00</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;Introducing the AI Meme Generator &amp;amp; Viral Predictor, a groundbreaking agent that merges humor with analytics to craft memes that don’t just entertain but also trend!&lt;/p&gt;

&lt;p&gt;Ever scrolled through social media and thought, “I could totally make a better meme”? Well, now you can – without breaking a sweat. This agent takes a trending topic, generates a witty caption, creates a matching visual, posts it to social platforms like Bluesky, and even predicts how viral it might go. It’s like having a meme factory with a built-in crystal ball!&lt;/p&gt;

&lt;p&gt;Why did I build this? Let’s face it, memes have become a universal language, breaking barriers and sparking conversations. I envisioned this agent being used by content creators, brands, or even meme enthusiasts who want to combine creativity with strategy. Whether it’s for laughs or marketing, this agent ensures your memes hit the mark every time.&lt;/p&gt;

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

&lt;p&gt;Here's the link to my agent - &lt;a href="https://agent.ai/agent/ai-meme-generator" rel="noopener noreferrer"&gt;ai meme&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%2Ford3inaf17qw61ysgdgd.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%2Ford3inaf17qw61ysgdgd.png" alt="Landing page of my agent" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Part of my build&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%2F5z5honcppp48qs5dr4td.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%2F5z5honcppp48qs5dr4td.png" alt="My build" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Building this agent was like a wild creative ride combined with a crash course in AI-powered workflows! The tools provided by Agent.ai made it super intuitive to bring my vision to life.&lt;/p&gt;

&lt;p&gt;The Use GenAI action was a star player, effortlessly coming up with hilarious captions that had me giggling as I tested. Pairing it with the Generate Image action was like adding sprinkles to an already great dessert – DALL-E 3 turned captions into visuals with stunning accuracy and humor.&lt;/p&gt;

&lt;p&gt;One challenge was setting up the Call Serverless Function for the virality predictor. It required training a basic model on historical engagement data to predict potential likes and shares. It was tricky but immensely satisfying when it worked!&lt;/p&gt;

&lt;p&gt;All in all, this project combined the fun of meme-making with the analytical power of AI, giving me a newfound appreciation for the synergy between creativity and technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Conclusion,
&lt;/h3&gt;

&lt;p&gt;The AI Meme Generator &amp;amp; Viral Predictor showcases the perfect fusion of creativity and technology. It’s not just about making memes but about crafting content that resonates and predicting its potential impact in the vast world of social media. Whether you're a brand trying to engage your audience or just someone who loves spreading laughter online, this agent offers the perfect toolkit.&lt;/p&gt;

&lt;p&gt;Building this agent was not just a technical challenge but also a creative adventure. From generating captions that made me chuckle to seeing those captions transform into engaging visuals, every step was a delight. And with the ability to predict virality, it takes memes to the next level—where humor meets strategy.&lt;/p&gt;

&lt;p&gt;This is just the beginning of what AI can do for creative workflows. Memes have never been this smart, and the future of content creation just got a little more exciting. Now, the question is: what will you meme next?&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agentaichallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Revolutionizing Curated Content with AI</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 27 Jan 2025 07:42:23 +0000</pubDate>
      <link>https://dev.to/ifihan/revolutionizing-curated-content-with-ai-23b</link>
      <guid>https://dev.to/ifihan/revolutionizing-curated-content-with-ai-23b</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;The Personalized Newsletter Generator is an AI-driven tool designed to simplify the process of curating and sending tailored newsletters to users based on their unique interests. With the rise of information overload, this agent helps users stay informed by delivering only the most relevant content, summarized and formatted in an engaging way.&lt;/p&gt;

&lt;p&gt;I built this agent to address the challenge of staying updated in today’s fast-paced world. Whether it’s AI trends, financial updates, or healthcare innovations, users can effortlessly receive a personalized digest straight to their inbox. I envision it being used by individuals, businesses, and organizations aiming to provide curated, relevant content to their audience without the hassle of manual curation.&lt;/p&gt;

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

&lt;p&gt;Here's the link to my agent - &lt;a href="https://agent.ai/agent/personalized-newsletter" rel="noopener noreferrer"&gt;personalized newsletter&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%2F9j1y83zcuvziyh8u81kc.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%2F9j1y83zcuvziyh8u81kc.png" alt="Image" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of the steps I took in building&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%2Ff26thzm20jg3lphgqd9u.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%2Ff26thzm20jg3lphgqd9u.png" alt="Actions" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Building this agent with Agent.ai was an incredible journey. The platform’s intuitive builder, combined with its powerful integrations like Google News Data and GenAI, made implementing complex workflows seamless.&lt;/p&gt;

&lt;p&gt;Some delightful moments included seeing the Use GenAI action craft professional summaries and headlines, which added an engaging touch to the newsletters. Formatting the newsletter into clean HTML with the Format Text action was also surprisingly easy.&lt;/p&gt;

&lt;p&gt;However, there were challenges too. Setting up the Invoke Web API action for email delivery with Mailgun required careful debugging to ensure the correct headers and body structure. I wasn't able to complete this step, unfortunately.&lt;/p&gt;

&lt;p&gt;Overall, this project showcased how AI agents can transform mundane tasks into automated, delightful experiences.&lt;/p&gt;

&lt;p&gt;The Personalized Newsletter Generator demonstrates the power of AI in simplifying complex workflows and enhancing user experiences. By leveraging Agent.ai's advanced tools, I was able to create an agent that not only curates relevant content but also delivers it in a seamless, personalized, and aesthetically pleasing format.&lt;/p&gt;

&lt;p&gt;This project highlights the potential of AI to save time, reduce information overload, and provide value to users in an efficient and engaging way. Whether for personal updates or professional applications, this agent is a step toward a more connected and streamlined digital experience.&lt;/p&gt;

&lt;p&gt;I'm excited to see how this tool evolves and how it inspires others to build similar solutions using AI.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agentaichallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Deep Research in Few Minutes with Agent.ai</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Mon, 27 Jan 2025 00:30:58 +0000</pubDate>
      <link>https://dev.to/ifihan/deep-research-in-few-minutes-with-agentai-163f</link>
      <guid>https://dev.to/ifihan/deep-research-in-few-minutes-with-agentai-163f</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;I built an AI agent that automates academic and market research by scraping data from the web, summarizing findings, and generating structured reports. This agent solves the problem of time-consuming manual research by aggregating and analyzing data from multiple sources (Google, YouTube, news articles) in minutes. Researchers, students, or professionals can use it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track trends in their field.&lt;/li&gt;
&lt;li&gt;Generate summaries of complex articles.&lt;/li&gt;
&lt;li&gt;Compile reports with actionable insights.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://agent.ai/agent/ai-powered-res" rel="noopener noreferrer"&gt;AI-Powered Research Assistant&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%2Fxs3ojsnqtc1aic5lqvh9.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%2Fxs3ojsnqtc1aic5lqvh9.png" alt="Demo" width="800" height="605"&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%2Fgrlkzxft7r3b7sfojsku.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%2Fgrlkzxft7r3b7sfojsku.png" alt="ILanding page" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;It was a great experience so far. The drag-and-drop workflow builder made it easy to connect actions like &lt;code&gt;Use GenAI&lt;/code&gt; and &lt;code&gt;Call Serverless Function&lt;/code&gt; without coding making it accessible and easy to pick up.&lt;/p&gt;

&lt;p&gt;My main challenge was using the serverless function. The variable handling and debugging variable mismatches (e.g., clean_text in serverless functions) required trial and error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This project demonstrated how Agent.ai empowers users to build end-to-end AI workflows that solve real-world problems efficiently. By combining web scraping, GenAI summarization, and automated reporting, the Research Assistant reduces hours of manual work into minutes. While challenges like variable management tested my patience, the platform’s flexibility and AI integrations made the process rewarding.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agentaichallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>How ContentCraft Repurposes Your Blog Posts with AI</title>
      <dc:creator>Ifihanagbara Olusheye</dc:creator>
      <pubDate>Fri, 24 Jan 2025 09:58:26 +0000</pubDate>
      <link>https://dev.to/ifihan/how-contentcraft-repurposes-your-blog-posts-with-ai-573g</link>
      <guid>https://dev.to/ifihan/how-contentcraft-repurposes-your-blog-posts-with-ai-573g</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: Productivity-Pro 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;I built &lt;strong&gt;ContentCraft&lt;/strong&gt;, an AI-powered content repurposing agent designed to transform long-form blog posts into bite-sized, platform-specific content. Whether it's a Twitter thread, LinkedIn post, or email newsletter, ContentCraft generates multiple formats for you to use.&lt;/p&gt;

&lt;p&gt;The idea behind ContentCraft is to help content creators, marketers, and businesses maximize the value of their content without spending hours reformatting and republishing. By leveraging AI for content transformation, ContentCraft makes content publicizing seamless, efficient, and impactful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features of ContentCraft
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automated Content Repurposing&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
ContentCraft takes your long-form blog posts and transforms them into multiple platform-specific formats, such as Twitter threads, LinkedIn posts, and email newsletters, ensuring your content reaches a wider audience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI-Powered Summarization&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
With advanced AI capabilities, ContentCraft extracts key points from your blog and rewrites them into concise, engaging formats tailored to each platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customizable Outputs&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Whether you prefer a professional tone for LinkedIn or a conversational style for Twitter, ContentCraft adapts its outputs to suit your target audience and platform requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Link to my demo - &lt;a href="https://agent.ai/profile/s3x9qqbj6bezl5ug" rel="noopener noreferrer"&gt;ContentCraft&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/tWGLIJFD-k4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&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%2Fy4s83eohtlzhatgig3h6.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%2Fy4s83eohtlzhatgig3h6.png" alt="Screenshot of the landing page for ContentCraft" width="800" height="517"&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%2F8egbx5xg49zm8g5i95dt.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%2F8egbx5xg49zm8g5i95dt.png" alt="Result" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Using the Agent.ai Builder was a fantastic experience! This is my first time building AI agents and the wide range of actions made it easy to build and refine ContentCraft. Some of the moments that stood out for me was the ease I was able to make the AI agent. With the "Actions," I was able to articulate my thought process into steps and processes.&lt;/p&gt;

&lt;p&gt;One challenge that stood out for me was using the documentation. I would suggest having a visual example of what the action depicts. I believe it will help people that are getting started with the platform.&lt;/p&gt;

&lt;p&gt;Overall, the platform's flexibility and tools enabled me to build an agent that can save hours for content creators. ContentCraft is proof of how AI can revolutionize content workflows!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agentaichallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
