<?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: NFTthat</title>
    <description>The latest articles on DEV Community by NFTthat (@nansel).</description>
    <link>https://dev.to/nansel</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%2F3689469%2F18e0f4e9-eb9a-4775-a3e8-2280f28d478a.jpeg</url>
      <title>DEV Community: NFTthat</title>
      <link>https://dev.to/nansel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nansel"/>
    <language>en</language>
    <item>
      <title>New Year, New Bio: Try it and lemme know what you think 💚</title>
      <dc:creator>NFTthat</dc:creator>
      <pubDate>Tue, 03 Feb 2026 15:09:24 +0000</pubDate>
      <link>https://dev.to/nansel/new-year-new-bio-try-it-and-lemme-know-what-you-think-39bg</link>
      <guid>https://dev.to/nansel/new-year-new-bio-try-it-and-lemme-know-what-you-think-39bg</guid>
      <description>&lt;p&gt;I just worked on this for the New Year Google AI Portfolio Contest and I learnt a lot by doing. Sometimes you just need to take the first step and the rest will follow. &lt;/p&gt;

&lt;p&gt;Even though i'm disappointed to noticed i missed the submission deadline, i'm still very grateful for the experience.&lt;/p&gt;

&lt;p&gt;Please read and try it out: 👇&lt;/p&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__cover"&gt;
          &lt;a href="https://dev.to/nansel/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fls6bl9vh0tmxgrqwpxgb.png" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://dev.to/nansel/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2" rel="noopener noreferrer" class="c-link"&gt;
            New Year, New Bio: I Built an AI Career Coach to Upgrade Your Portfolio - DEV Community
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This is a submission for the New Year, New You Portfolio Challenge Presented by Google AI          ...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"&gt;
          dev.to
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>discuss</category>
    </item>
    <item>
      <title>https://dev.to/nftthat/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2</title>
      <dc:creator>NFTthat</dc:creator>
      <pubDate>Tue, 03 Feb 2026 14:51:07 +0000</pubDate>
      <link>https://dev.to/nansel/httpsdevtonftthatnew-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2-57a9</link>
      <guid>https://dev.to/nansel/httpsdevtonftthatnew-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2-57a9</guid>
      <description>&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__cover"&gt;
          &lt;a href="https://dev.to/nansel/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fls6bl9vh0tmxgrqwpxgb.png" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://dev.to/nansel/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2" rel="noopener noreferrer" class="c-link"&gt;
            New Year, New Bio: I Built an AI Career Coach to Upgrade Your Portfolio - DEV Community
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            This is a submission for the New Year, New You Portfolio Challenge Presented by Google AI          ...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"&gt;
          dev.to
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




</description>
    </item>
    <item>
      <title>New Year, New Bio: I Built an AI Career Coach to Upgrade Your Portfolio</title>
      <dc:creator>NFTthat</dc:creator>
      <pubDate>Tue, 03 Feb 2026 14:11:43 +0000</pubDate>
      <link>https://dev.to/nansel/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2</link>
      <guid>https://dev.to/nansel/new-year-new-bio-i-built-an-ai-career-coach-to-upgrade-your-portfolio-kk-5hg2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hi! I’m Nansel, a builder, designer, and marketer passionate about bridging the gap between raw talent and professional presentation.&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;New Year, New You Portfolio Challenge&lt;/strong&gt;, I didn't just want to build a static page. I realized that the hardest part of updating a portfolio isn't the code it's writing about yourself. &lt;/p&gt;

&lt;p&gt;Most developers struggle to write confident bios or explain their project impact clearly and even &lt;strong&gt;worst portfolios are perceived and accepted as a dev only requirement while other professionally skilled individuals who are not code skilled suffer to present their work beyond social media, this hinders them from properly showcasing their experience and skills to land better jobs and freelancing gigs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;Workfolio&lt;/strong&gt;: A full-stack SaaS platform that doesn't just host your work—it uses &lt;strong&gt;Google Gemini AI&lt;/strong&gt; to act as your personal career coach, rewriting your content to be recruiter-ready in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;Below is my live system, fully Dockerized and deployed on Google Cloud Run:&lt;br&gt;
A view of my put to get portfolio on Workfolio:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://workfolio-app-672535567049.europe-west1.run.app/sign-in" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;workfolio-app-672535567049.europe-west1.run.app&lt;/span&gt;
          

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


&lt;p&gt;If you're reading please try it for yourself and lemme what you thing : &lt;br&gt;
&lt;strong&gt;How to Step-by-step&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the landing page click get started or create your portfolio button&lt;/li&gt;
&lt;li&gt;Sign-up&lt;/li&gt;
&lt;li&gt;Head to your gmail to verify your email P.s:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;&amp;gt; if you don't see it in your inbox, check your spam and confirm (it will redirect you to a 404 page but don't worry, close it head back to the site)&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the signing page Sign-in and you should be able to use the product.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://workfolio-app-672535567049.europe-west1.run.app/"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;
&lt;br&gt;
Note: You can log in, create a portfolio, use the AI tools, and even simulate a "Pro" upgrade via Stripe test mode!

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

&lt;p&gt;I approached this project as a real-world product, not a prototype. I wanted a system where a user could sign up, manage complex data, and deploy a professional presence without touching code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Tech Stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js 15 (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine:&lt;/strong&gt; Google Gemini API (gemini-1.5-flash)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: Supabase (PostgreSQL) + Prisma ORM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments:&lt;/strong&gt; Stripe (Webhooks &amp;amp; Checkout)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; TailwindCSS + shadcn/ui&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure:&lt;/strong&gt; Docker &amp;amp; Google Cloud Run&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🤖 The "Secret Sauce": Google AI Integration&lt;/strong&gt;&lt;br&gt;
This is where the project shines. I integrated the &lt;strong&gt;Google Generative AI SDK&lt;/strong&gt; directly into the admin dashboard to solve specific user problems:&lt;br&gt;
&lt;strong&gt;The Bio Rewriter:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Problem:&lt;/strong&gt; Developers often write humble or vague bios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; A "Magic Fix" button that sends the user's draft to Gemini with a system prompt instructing it to act as a &lt;strong&gt;Technical Recruiter.&lt;/strong&gt; It returns a confident, impact-focused version in the first person.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project Description Polish:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: Users paste rough bullet points about their projects.&lt;/li&gt;
&lt;li&gt;Solution: An AI agent that transforms raw notes into structured "Problem-Solution-Impact" narratives suitable for a resume for non-technical professionals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Smart Experience Sorting:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I use Gemini to analyze unstructured job history and suggest logical categorizations (e.g., separating "Engineering" roles from "Design" roles).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We used the &lt;strong&gt;gemini-1.5-flash model&lt;/strong&gt; for near-instant latency, ensuring the UI feels snappy rather than sluggish.&lt;/p&gt;

&lt;p&gt;☁️ &lt;strong&gt;Cloud &amp;amp; DevOps Journey&lt;/strong&gt;&lt;br&gt;
Deploying a Next.js app with a database and AI keys to &lt;strong&gt;Google Cloud Run&lt;/strong&gt; was a significant learning curve.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I containerized the application using &lt;strong&gt;Docker&lt;/strong&gt;, optimizing the build with a multi-stage Dockerfile to keep the image light.&lt;/li&gt;
&lt;li&gt;I handled complex environment variable management for Supabase and Stripe secrets within the Cloud Run revision settings.&lt;/li&gt;
&lt;li&gt;I implemented standalone output mode in Next.js to ensure smooth operation in the serverless container environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. It’s a Tool, Not a Template&lt;/strong&gt;&lt;br&gt;
Most portfolios are static HTML. This is a CMS. You can add a job in the dashboard, hit save, and your public site updates instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The AI is Functional, Not Gimmicky&lt;/strong&gt;&lt;br&gt;
I didn't just slap a chatbot in the corner. The AI is embedded in the workflow. It helps you when you are stuck writing, which is exactly when you need it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Real SaaS Architecture&lt;/strong&gt;&lt;br&gt;
This supports user accounts, secure database relationships, and tiered access (Free vs. Pro). The integration of Stripe webhooks to automatically update the database state upon payment was a technical challenge I'm proud to have solved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Resilience&lt;/strong&gt;&lt;br&gt;
During development, we faced versioning conflicts with AI SDKs and strict Docker build linting. Overcoming these to get a clean production build running on Cloud Run feels like a massive win.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;p&gt;This is just v1. In the future, I plan to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improve AI capabilities:&lt;/strong&gt; Customizable content and image generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Domains:&lt;/strong&gt; allowing users to map their own .com&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme:&lt;/strong&gt; incorporating customizable layouts and designs letting users create or pick a theme that fits or describe them.&lt;/li&gt;
&lt;li&gt;And many others :)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you to the Google AI team for the tools and the challenge! Building Workfolio pushed me to become a better full-stack vibe engineer.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
