<?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: gxlbfc</title>
    <description>The latest articles on DEV Community by gxlbfc (@gxlbfc_d039fe229d0c50aa9e).</description>
    <link>https://dev.to/gxlbfc_d039fe229d0c50aa9e</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3988567%2Fcc556ab2-c2ce-415c-bae9-1d3cb056b4dc.png</url>
      <title>DEV Community: gxlbfc</title>
      <link>https://dev.to/gxlbfc_d039fe229d0c50aa9e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gxlbfc_d039fe229d0c50aa9e"/>
    <language>en</language>
    <item>
      <title>I Tried Five Completely Different Outfits With AI - Here's What It Taught Me About Personal Style</title>
      <dc:creator>gxlbfc</dc:creator>
      <pubDate>Mon, 13 Jul 2026 02:35:55 +0000</pubDate>
      <link>https://dev.to/gxlbfc_d039fe229d0c50aa9e/i-tried-five-completely-different-outfits-with-ai-heres-what-it-taught-me-about-personal-style-1lni</link>
      <guid>https://dev.to/gxlbfc_d039fe229d0c50aa9e/i-tried-five-completely-different-outfits-with-ai-heres-what-it-taught-me-about-personal-style-1lni</guid>
      <description>&lt;p&gt;Finding your personal style sounds simple until you try to describe it.&lt;/p&gt;

&lt;p&gt;Most of us can point to outfits we like. We save photos, follow fashion accounts, build Pinterest boards, and occasionally buy something because it looked perfect on someone else.&lt;/p&gt;

&lt;p&gt;But liking an outfit is not the same as wanting to wear it.&lt;/p&gt;

&lt;p&gt;That difference explains many of the clothes sitting untouched in our wardrobes. They looked exciting on a model, mannequin, or product page, but never felt natural once they became part of our own visual identity.&lt;/p&gt;

&lt;p&gt;I wanted a better way to tell the difference, so I tried a small experiment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I used the same photo to preview five deliberately different style directions with AI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was not trying to find one permanent aesthetic. I wanted to see which colors, silhouettes, and levels of formality consistently felt right—and which ones felt like costumes.&lt;/p&gt;

&lt;p&gt;The results were more useful than I expected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aiclotheschanger.me/en/closet/fashion-lab?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=fashion_lab_cover" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwj40fdakciqgi7mejiz7.webp" alt="Five different AI outfit directions for exploring personal style" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I chose outfits that were completely different
&lt;/h2&gt;

&lt;p&gt;A common mistake when exploring personal style is comparing clothes that are too similar.&lt;/p&gt;

&lt;p&gt;If I try five neutral sweaters with slightly different necklines, I may discover which sweater I prefer, but I learn very little about my broader style.&lt;/p&gt;

&lt;p&gt;For this experiment, I wanted contrast.&lt;/p&gt;

&lt;p&gt;I chose five directions with noticeably different visual languages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Minimal casual&lt;/li&gt;
&lt;li&gt;Y2K&lt;/li&gt;
&lt;li&gt;Techwear&lt;/li&gt;
&lt;li&gt;Polished office style&lt;/li&gt;
&lt;li&gt;Elegant qipao&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are not supposed to compete for the same occasion. That is the point.&lt;/p&gt;

&lt;p&gt;The experiment was designed to reveal my reactions to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fitted versus relaxed silhouettes&lt;/li&gt;
&lt;li&gt;quiet versus expressive styling&lt;/li&gt;
&lt;li&gt;warm versus cool palettes&lt;/li&gt;
&lt;li&gt;structured versus soft clothing&lt;/li&gt;
&lt;li&gt;modern versus heritage-inspired details&lt;/li&gt;
&lt;li&gt;practical versus decorative outfits&lt;/li&gt;
&lt;li&gt;understated versus attention-grabbing looks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the options are far apart, preferences become easier to notice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup: one photo, five style directions
&lt;/h2&gt;

&lt;p&gt;I used one clear, front-facing photo throughout the experiment.&lt;/p&gt;

&lt;p&gt;The photo had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;even lighting&lt;/li&gt;
&lt;li&gt;a neutral standing pose&lt;/li&gt;
&lt;li&gt;most of the body visible&lt;/li&gt;
&lt;li&gt;no oversized coat hiding the torso&lt;/li&gt;
&lt;li&gt;no objects covering the clothes&lt;/li&gt;
&lt;li&gt;a simple background&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using the same photo matters.&lt;/p&gt;

&lt;p&gt;If the angle, pose, lighting, and facial expression change for every outfit, it becomes difficult to tell whether I am reacting to the clothing or simply to a better photograph.&lt;/p&gt;

&lt;p&gt;I also tried to evaluate each result as a direction rather than an exact product simulation.&lt;/p&gt;

&lt;p&gt;AI virtual try-on can help visualize a general outfit idea, but it cannot reliably predict how a real garment will fit, move, or feel. I treated each result as a visual sketch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look 1: Minimal casual
&lt;/h2&gt;

&lt;p&gt;I started with the safest-looking option: a minimal casual outfit built around clean lines, relaxed tailoring, and soft neutral colors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aiclotheschanger.me/en/closet/urban-streetwear/everyday-street/minimal-casual?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=minimal_casual" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd5hyjx3ll8av66p39hxx.webp" alt="Minimal casual outfit with relaxed tailoring and neutral colors" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My first reaction was not excitement. It was recognition.&lt;/p&gt;

&lt;p&gt;The outfit felt easy to imagine in real life. I could see myself wearing it to work, meeting a friend, traveling, or spending an ordinary weekend in the city.&lt;/p&gt;

&lt;p&gt;That taught me something important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A personal style does not always create the strongest first impression. Sometimes it creates the least resistance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The useful signals were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;low-contrast colors&lt;/li&gt;
&lt;li&gt;clean trousers&lt;/li&gt;
&lt;li&gt;simple layering&lt;/li&gt;
&lt;li&gt;comfortable proportions&lt;/li&gt;
&lt;li&gt;very little decorative detail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was not the most dramatic result, but it felt the most immediately wearable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look 2: Y2K
&lt;/h2&gt;

&lt;p&gt;The Y2K outfit moved in the opposite direction.&lt;/p&gt;

&lt;p&gt;It introduced a more playful silhouette, stronger trend references, and a younger, more attention-seeking energy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aiclotheschanger.me/en/closet/fashion-lab/modern-aesthetics/y2k-vibes?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=y2k_vibes" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewqb1m72nr6j3q3ts0w0.webp" alt="Y2K-inspired outfit with playful proportions and nostalgic styling" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visually, it was more exciting than the minimal outfit.&lt;/p&gt;

&lt;p&gt;But when I asked myself where I would wear it, the answer became less clear.&lt;/p&gt;

&lt;p&gt;I liked specific elements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the playful accessories&lt;/li&gt;
&lt;li&gt;the contrast between fitted and loose pieces&lt;/li&gt;
&lt;li&gt;the nostalgic color choices&lt;/li&gt;
&lt;li&gt;the confidence of the overall styling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I did not like was wearing all those signals at once.&lt;/p&gt;

&lt;p&gt;This distinction was useful. The experiment did not tell me that I dislike Y2K style. It told me that I prefer borrowing one Y2K element rather than wearing a complete head-to-toe Y2K look.&lt;/p&gt;

&lt;p&gt;That is a much more practical conclusion.&lt;/p&gt;

&lt;p&gt;Instead of buying an entire trend-driven outfit, I might add one bag, one fitted top, or one nostalgic accessory to an otherwise simple wardrobe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look 3: Techwear
&lt;/h2&gt;

&lt;p&gt;Techwear was the most surprising test.&lt;/p&gt;

&lt;p&gt;The darker palette, utility details, structured layers, and futuristic mood created a much stronger identity than my everyday clothes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aiclotheschanger.me/en/closet/fashion-lab/subculture/techwear?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=techwear" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpeo1iuj1alioj0ouw23i.webp" alt="Dark techwear outfit with utility layers and futuristic styling" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I expected it to feel like a costume.&lt;/p&gt;

&lt;p&gt;Instead, parts of it worked surprisingly well.&lt;/p&gt;

&lt;p&gt;The darker colors created a stronger frame, while the structured outer layers made the outfit feel deliberate. However, too many straps, pockets, and tactical details quickly became overwhelming.&lt;/p&gt;

&lt;p&gt;My takeaway was not “I should become a techwear person.”&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;darker monochrome outfits work better than I expected&lt;/li&gt;
&lt;li&gt;I like structured outerwear&lt;/li&gt;
&lt;li&gt;I enjoy functional details in moderation&lt;/li&gt;
&lt;li&gt;I prefer one statement layer over several competing layers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where testing a complete aesthetic becomes useful. Even when the full look is too much, it can reveal ingredients worth keeping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look 4: Polished office style
&lt;/h2&gt;

&lt;p&gt;The polished office outfit introduced softer tailoring, a more defined silhouette, and a higher level of formality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aiclotheschanger.me/en/closet/career-professional/smart-casual/office-lady?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=office_lady" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr0l6vitp5xmi7zrf42o6.webp" alt="Polished office outfit with soft tailoring and neutral colors" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This result looked composed, but it also raised a useful question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do I like this outfit, or do I like what this outfit communicates?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Professional clothing can communicate competence, organization, and confidence. Sometimes we respond to that message more than the clothes themselves.&lt;/p&gt;

&lt;p&gt;I liked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the cleaner shoulder line&lt;/li&gt;
&lt;li&gt;the coordinated palette&lt;/li&gt;
&lt;li&gt;the polished shoes and accessories&lt;/li&gt;
&lt;li&gt;the sense of intention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was less comfortable with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;excessive formality&lt;/li&gt;
&lt;li&gt;delicate pieces that require constant adjustment&lt;/li&gt;
&lt;li&gt;outfits that only make sense in a narrow range of situations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best version for me would keep the tailoring but reduce the formality—perhaps a structured blazer with a knit top, relaxed trousers, and simpler shoes.&lt;/p&gt;

&lt;p&gt;Again, the most useful result was not a complete outfit. It was a formula.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look 5: Elegant qipao
&lt;/h2&gt;

&lt;p&gt;The final experiment was an elegant qipao-inspired look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aiclotheschanger.me/en/closet/heritage/chinese-guofeng/elegant-qipao?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=elegant_qipao" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2rm9idjxoosm1f6rvac.webp" alt="Elegant qipao with refined Chinese heritage details" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was clearly different from the everyday outfits. It carried more cultural meaning, decorative detail, and occasion-specific formality.&lt;/p&gt;

&lt;p&gt;I would not treat a heritage garment as just another temporary aesthetic. Its construction and cultural context deserve more care than a trend label.&lt;/p&gt;

&lt;p&gt;Still, previewing the direction helped me notice several preferences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I like clean, elongated silhouettes&lt;/li&gt;
&lt;li&gt;rich colors can work when the shape remains controlled&lt;/li&gt;
&lt;li&gt;one area of detailed decoration is more appealing than decoration everywhere&lt;/li&gt;
&lt;li&gt;high collars create a very different visual balance&lt;/li&gt;
&lt;li&gt;occasion wear feels strongest when it does not imitate everyday fashion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result also reinforced an important boundary: an AI image may suggest a visual direction, but choosing and wearing a real qipao should involve attention to proper construction, context, and fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern I found
&lt;/h2&gt;

&lt;p&gt;After looking at all five results, I stopped asking which outfit “won.”&lt;/p&gt;

&lt;p&gt;Instead, I wrote down the elements that repeatedly felt right.&lt;/p&gt;

&lt;p&gt;My list looked something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mostly clean silhouettes&lt;/li&gt;
&lt;li&gt;one structured element per outfit&lt;/li&gt;
&lt;li&gt;low or medium visual contrast&lt;/li&gt;
&lt;li&gt;limited accessories&lt;/li&gt;
&lt;li&gt;darker colors or warm neutrals&lt;/li&gt;
&lt;li&gt;one expressive detail rather than many&lt;/li&gt;
&lt;li&gt;polished, but not overly formal&lt;/li&gt;
&lt;li&gt;enough practicality for ordinary life&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That description is far more useful than choosing a single aesthetic label.&lt;/p&gt;

&lt;p&gt;It gives me a filter I can use across different situations.&lt;/p&gt;

&lt;p&gt;A work outfit, weekend outfit, evening outfit, and cultural occasion outfit do not need to look identical. They can still share the same underlying preferences.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple personal-style scorecard
&lt;/h2&gt;

&lt;p&gt;If you want to repeat this experiment, do not judge each result only as “good” or “bad.”&lt;/p&gt;

&lt;p&gt;Score every outfit from 1 to 5 in these categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Recognition
&lt;/h3&gt;

&lt;p&gt;Does this feel like a more intentional version of you?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Wearability
&lt;/h3&gt;

&lt;p&gt;Can you imagine at least three realistic situations where you would wear it?&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Comfort with attention
&lt;/h3&gt;

&lt;p&gt;Does the outfit attract more or less attention than you enjoy?&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Compatibility
&lt;/h3&gt;

&lt;p&gt;Would it work with clothes, shoes, and accessories you already own?&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Specific attraction
&lt;/h3&gt;

&lt;p&gt;Can you identify exactly what you like—the color, silhouette, neckline, outer layer, or styling?&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Real-world effort
&lt;/h3&gt;

&lt;p&gt;Would wearing this require uncomfortable shoes, constant adjustment, difficult care, or an unrealistic amount of styling?&lt;/p&gt;

&lt;p&gt;The last question is easy to ignore when looking at a beautiful image.&lt;/p&gt;

&lt;p&gt;A style may suit your visual identity while conflicting with your actual life.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI virtual try-on can help with
&lt;/h2&gt;

&lt;p&gt;Used carefully, AI can help you explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;broad color directions&lt;/li&gt;
&lt;li&gt;general silhouettes&lt;/li&gt;
&lt;li&gt;levels of formality&lt;/li&gt;
&lt;li&gt;styling intensity&lt;/li&gt;
&lt;li&gt;outfit combinations&lt;/li&gt;
&lt;li&gt;unfamiliar aesthetics&lt;/li&gt;
&lt;li&gt;which visual elements repeatedly appeal to you&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can also reduce the temptation to buy an entire trend before discovering whether you actually enjoy seeing yourself in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it cannot tell you
&lt;/h2&gt;

&lt;p&gt;AI virtual try-on cannot reliably determine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your correct clothing size&lt;/li&gt;
&lt;li&gt;whether a real garment will pull, gap, or restrict movement&lt;/li&gt;
&lt;li&gt;fabric quality&lt;/li&gt;
&lt;li&gt;actual color accuracy&lt;/li&gt;
&lt;li&gt;how material drapes while walking or sitting&lt;/li&gt;
&lt;li&gt;whether an item is well constructed&lt;/li&gt;
&lt;li&gt;whether a specific product matches the generated result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those decisions still require measurements, material information, reviews, return policies, and real-world fitting.&lt;/p&gt;

&lt;p&gt;The healthiest way to use AI is as an exploration tool—not as proof that a real product will fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I ran the experiment
&lt;/h2&gt;

&lt;p&gt;I used the curated &lt;a href="https://www.aiclotheschanger.me/en/closet/gallery?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=closet_gallery" rel="noopener noreferrer"&gt;Dressora AI Closet&lt;/a&gt; to compare ready-made style directions.&lt;/p&gt;

&lt;p&gt;Disclosure: I am involved with Dressora, so this is not an independent product review. I built the experiment around it because the closet makes it easy to test visibly different aesthetics without searching for and uploading a separate clothing image every time.&lt;/p&gt;

&lt;p&gt;For a specific piece of clothing found elsewhere, Dressora also has an &lt;a href="https://www.aiclotheschanger.me/en/ai-clothes-changer?utm_source=medium&amp;amp;utm_medium=organic_article&amp;amp;utm_campaign=five_style_experiment&amp;amp;utm_content=custom_clothes_changer" rel="noopener noreferrer"&gt;AI clothes changer&lt;/a&gt; where you can provide your own clothing reference.&lt;/p&gt;

&lt;p&gt;The important part is to keep the two workflows clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The AI Closet is useful for exploring curated style directions.&lt;/li&gt;
&lt;li&gt;The clothes changer is useful when you already have a specific garment reference.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither replaces checking the real product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;The experiment did not give me one perfect aesthetic.&lt;/p&gt;

&lt;p&gt;It gave me something more useful: a list of patterns.&lt;/p&gt;

&lt;p&gt;I learned that I prefer clean silhouettes but not boring ones. I like structure, but not excessive formality. I enjoy trend elements when they appear one at a time. I am more comfortable with controlled contrast than with several competing statement pieces.&lt;/p&gt;

&lt;p&gt;That is what personal style may actually be.&lt;/p&gt;

&lt;p&gt;Not one label.&lt;/p&gt;

&lt;p&gt;Not one Pinterest board.&lt;/p&gt;

&lt;p&gt;Not a commitment to dress the same way every day.&lt;/p&gt;

&lt;p&gt;It is a collection of repeated decisions about color, shape, detail, practicality, and how much attention you want your clothes to attract.&lt;/p&gt;

&lt;p&gt;AI did not make those decisions for me.&lt;/p&gt;

&lt;p&gt;It simply made the differences easier to see.&lt;/p&gt;

</description>
      <category>fashion</category>
      <category>ai</category>
    </item>
    <item>
      <title>I Started Using an AI Closet Before Buying Clothes — Here’s What It Can and Can’t Tell You</title>
      <dc:creator>gxlbfc</dc:creator>
      <pubDate>Mon, 29 Jun 2026 08:45:00 +0000</pubDate>
      <link>https://dev.to/gxlbfc_d039fe229d0c50aa9e/i-started-using-an-ai-closet-before-buying-clothes-heres-what-it-can-and-cant-tell-you-55hf</link>
      <guid>https://dev.to/gxlbfc_d039fe229d0c50aa9e/i-started-using-an-ai-closet-before-buying-clothes-heres-what-it-can-and-cant-tell-you-55hf</guid>
      <description>&lt;p&gt;I used to shop in one of two ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I saw an outfit on someone else and tried to recreate it.&lt;/li&gt;
&lt;li&gt;I found one item I liked and convinced myself I would somehow build outfits around it later.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both methods produced the same result: a wardrobe full of individually nice pieces that did not always work together — or feel like me.&lt;/p&gt;

&lt;p&gt;So I added a step before buying anything:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I test the style direction with AI first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not the exact size. Not the fabric quality. Not whether a particular pair of trousers will pinch at the waist.&lt;/p&gt;

&lt;p&gt;I use AI virtual try-on to answer a simpler question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this style worth exploring on me before I spend money on it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That distinction matters, because AI can be surprisingly useful as a visual filter — and very misleading if you treat it like a fitting room.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aiclotheschanger.me/closet/fashion-lab" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwj40fdakciqgi7mejiz7.webp" alt="A fashion closet with multiple style directions" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The shift: test a direction, not a product
&lt;/h2&gt;

&lt;p&gt;The biggest improvement came when I stopped asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Would this exact jacket look good on me?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and started asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do I actually like myself in this silhouette, palette, and level of formality?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first question is difficult for AI. It requires accurate sizing, construction, material behavior, and product fidelity.&lt;/p&gt;

&lt;p&gt;The second question is much more realistic. It is about visual direction.&lt;/p&gt;

&lt;p&gt;For example, an “old money” look is not just one camel coat. It is a combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;restrained neutral colors&lt;/li&gt;
&lt;li&gt;clean tailoring&lt;/li&gt;
&lt;li&gt;longer, quieter silhouettes&lt;/li&gt;
&lt;li&gt;low-contrast accessories&lt;/li&gt;
&lt;li&gt;polished rather than trend-heavy styling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://aiclotheschanger.me/closet/fashion-lab/modern-aesthetics/old-money" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8erkv3wc41y9wdwgulpk.webp" alt="Old money outfit with camel coat, cream knit and pleated skirt" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If I like that complete direction on myself, I can shop more intelligently. I may not buy the exact AI-generated outfit, but I now know that camel, cream, soft knitwear, straight tailoring, and brown leather are useful signals.&lt;/p&gt;

&lt;p&gt;That is already more valuable than adding another random “nice top” to a cart.&lt;/p&gt;

&lt;h2&gt;
  
  
  My 10-minute pre-shopping test
&lt;/h2&gt;

&lt;p&gt;Here is the workflow I use.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Start with one neutral photo
&lt;/h3&gt;

&lt;p&gt;I use the same clear, front-facing photo for every test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;natural standing pose&lt;/li&gt;
&lt;li&gt;arms not covering the torso&lt;/li&gt;
&lt;li&gt;even lighting&lt;/li&gt;
&lt;li&gt;most of the body visible&lt;/li&gt;
&lt;li&gt;no oversized coat hiding the original silhouette&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keeping the person photo fixed is important. If the pose, camera angle, and lighting change every time, I end up comparing photographs instead of comparing clothes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Test several clearly different style lanes
&lt;/h3&gt;

&lt;p&gt;I do not begin with ten versions of almost the same outfit. I choose directions that are far enough apart to teach me something.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;minimal casual&lt;/li&gt;
&lt;li&gt;denim casual&lt;/li&gt;
&lt;li&gt;polished office wear&lt;/li&gt;
&lt;li&gt;old money&lt;/li&gt;
&lt;li&gt;date night&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to crown one permanent personal aesthetic. Most people need more than one.&lt;/p&gt;

&lt;p&gt;The useful question is: &lt;strong&gt;Which directions feel natural, and which feel like a costume?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aiclotheschanger.me/closet/urban-streetwear/everyday-street/minimal-casual" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd5hyjx3ll8av66p39hxx.webp" alt="Minimal casual outfit in soft neutral colors" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Look for repeated signals
&lt;/h3&gt;

&lt;p&gt;One AI image means very little. Repeated preferences are more useful.&lt;/p&gt;

&lt;p&gt;After several tests, I write down what keeps working:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do I prefer a defined waist or a straighter silhouette?&lt;/li&gt;
&lt;li&gt;Do warm neutrals suit the overall impression better than cool grey?&lt;/li&gt;
&lt;li&gt;Do I like sharp shoulders or softer layers?&lt;/li&gt;
&lt;li&gt;Do ankle-length trousers feel better than wide, floor-length shapes?&lt;/li&gt;
&lt;li&gt;Do high necklines make the look feel refined or restrictive?&lt;/li&gt;
&lt;li&gt;Do I consistently prefer low-contrast outfits?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These observations turn a vague reaction — “I like it” — into a shopping filter.&lt;/p&gt;

&lt;p&gt;Instead of searching for “cute work clothes,” I can look for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;warm-neutral blazer, softly structured shoulder, single-breasted, hip length&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much better starting point.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Separate admiration from identification
&lt;/h3&gt;

&lt;p&gt;This was the most useful lesson.&lt;/p&gt;

&lt;p&gt;There are outfits I love looking at but do not want to wear.&lt;/p&gt;

&lt;p&gt;AI makes that difference obvious because it moves the outfit from a model, mood board, or product page onto something closer to my own visual context.&lt;/p&gt;

&lt;p&gt;Sometimes the reaction is immediate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Beautiful, but not me.”&lt;/li&gt;
&lt;li&gt;“I like the color, not the silhouette.”&lt;/li&gt;
&lt;li&gt;“This works only because of the styling.”&lt;/li&gt;
&lt;li&gt;“I would wear this if the jacket were shorter.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is not a failed result. That is the result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aiclotheschanger.me/closet/career-professional/smart-casual/office-lady" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr0l6vitp5xmi7zrf42o6.webp" alt="Polished office outfit in cream and blush neutrals" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI can tell you
&lt;/h2&gt;

&lt;p&gt;Used carefully, AI virtual try-on can help with four things.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Whether a color direction is worth testing in real life
&lt;/h3&gt;

&lt;p&gt;It can give a rough sense of whether an outfit feels harmonious, heavy, washed out, too severe, or surprisingly balanced.&lt;/p&gt;

&lt;p&gt;This is not professional color analysis. Screens, lighting, image processing, and the model itself can all shift colors.&lt;/p&gt;

&lt;p&gt;But it can tell me whether “more warm beige” is a promising direction before I order four beige items.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Whether a silhouette feels like you
&lt;/h3&gt;

&lt;p&gt;AI is useful for comparing broad shapes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cropped versus long outerwear&lt;/li&gt;
&lt;li&gt;fitted versus relaxed&lt;/li&gt;
&lt;li&gt;structured versus draped&lt;/li&gt;
&lt;li&gt;high-waisted versus low-rise&lt;/li&gt;
&lt;li&gt;minimal versus heavily layered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Again, it is directional. It does not know the actual garment measurements or how the fabric behaves on your body.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Whether a style works with your existing identity
&lt;/h3&gt;

&lt;p&gt;Clothing is not only about body shape. Hair, posture, personal energy, work environment, and how formal you like to feel all matter.&lt;/p&gt;

&lt;p&gt;Seeing yourself near a style can expose whether you enjoy wearing it or only enjoy the idea of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. What is missing from your wardrobe
&lt;/h3&gt;

&lt;p&gt;If several successful looks depend on the same type of item — perhaps a cream blazer, straight-leg denim, or a simple dark evening dress — that repeated item may be a genuine wardrobe gap.&lt;/p&gt;

&lt;p&gt;That is much more actionable than buying whatever happens to be trending.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI cannot tell you
&lt;/h2&gt;

&lt;p&gt;This is the part every virtual try-on article should include.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Your correct size
&lt;/h3&gt;

&lt;p&gt;A generated image is not a measurement tool. It cannot reliably tell you whether a real garment will button, pull, gap, or need tailoring.&lt;/p&gt;

&lt;p&gt;Always use the retailer’s measurements, garment dimensions, reviews, and return policy.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fabric quality
&lt;/h3&gt;

&lt;p&gt;AI can render beautiful wool, silk, denim, or linen. That says nothing about the item arriving at your door.&lt;/p&gt;

&lt;p&gt;It cannot detect thin lining, scratchy knitwear, weak seams, cheap hardware, or fabric that becomes transparent in daylight.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Real drape and movement
&lt;/h3&gt;

&lt;p&gt;A still image cannot tell you what happens when you sit, walk, lift your arms, or wear the garment for six hours.&lt;/p&gt;

&lt;p&gt;This is especially important for fitted dresses, trousers, occasion wear, and anything made from stiff or very light fabric.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Exact color
&lt;/h3&gt;

&lt;p&gt;Product photography is already affected by lighting and editing. AI adds another interpretation layer.&lt;/p&gt;

&lt;p&gt;Treat color as a family — warm cream, muted blue, deep burgundy — rather than an exact match.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Whether the real item is well made
&lt;/h3&gt;

&lt;p&gt;AI can help decide whether a design direction makes sense. It cannot inspect construction.&lt;/p&gt;

&lt;p&gt;That still requires product details, close-up photos, material composition, customer reviews, and sometimes seeing the item in person.&lt;/p&gt;

&lt;h2&gt;
  
  
  The buying checklist I use now
&lt;/h2&gt;

&lt;p&gt;Before purchasing, I separate the decision into two passes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pass 1: visual direction
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Does the color family work?&lt;/li&gt;
&lt;li&gt;Does the overall silhouette feel natural on me?&lt;/li&gt;
&lt;li&gt;Can I name at least three occasions where I would wear it?&lt;/li&gt;
&lt;li&gt;Does it work with pieces I already own?&lt;/li&gt;
&lt;li&gt;Am I attracted to the outfit, or only to the model and photography?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can help here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pass 2: physical reality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Are the garment measurements right?&lt;/li&gt;
&lt;li&gt;Is the fabric appropriate for the season and use?&lt;/li&gt;
&lt;li&gt;Do reviews mention shrinking, pilling, transparency, or poor construction?&lt;/li&gt;
&lt;li&gt;Can I move comfortably in this cut?&lt;/li&gt;
&lt;li&gt;Is the return policy reasonable?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI cannot answer these questions.&lt;/p&gt;

&lt;p&gt;I only buy when both passes make sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the AI closet fits
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://aiclotheschanger.me/" rel="noopener noreferrer"&gt;Dressora&lt;/a&gt; around this style-first workflow.&lt;/p&gt;

&lt;p&gt;Instead of requiring people to find and upload a clothing image for every experiment, the &lt;a href="https://aiclotheschanger.me/closet/gallery" rel="noopener noreferrer"&gt;AI Closet&lt;/a&gt; includes ready-made directions such as minimal casual, office wear, old money, Y2K, denim, date-night looks, wedding outfits, Hanfu, streetwear, and fantasy styles.&lt;/p&gt;

&lt;p&gt;You can start broad, notice what works, and then narrow down.&lt;/p&gt;

&lt;p&gt;For a specific garment you found elsewhere, you can switch to the &lt;a href="https://aiclotheschanger.me/ai-clothes-changer" rel="noopener noreferrer"&gt;AI clothes changer&lt;/a&gt; and upload your own outfit reference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aiclotheschanger.me/closet/occasions/special-moments/date-night" rel="noopener noreferrer"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs7zyc9pqhakscpdgbumv.webp" alt="Burgundy date-night dress with a cream blazer" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The important part is not generating the most impressive picture.&lt;/p&gt;

&lt;p&gt;It is reducing uncertainty before spending money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;AI virtual try-on did not replace shopping for me. It inserted a useful pause before shopping.&lt;/p&gt;

&lt;p&gt;It helps me move from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“That outfit looks great.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I like the warm palette and long outer layer, but I need a straighter skirt and a less formal shoe.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a better question to take into a store, a product page, or a tailor.&lt;/p&gt;

&lt;p&gt;Use AI to explore style, eliminate weak ideas, and build a more specific shopping list.&lt;/p&gt;

&lt;p&gt;Then use measurements, materials, reviews, and real-world try-on to make the final decision.&lt;/p&gt;

&lt;p&gt;That is the boundary where AI becomes genuinely helpful — without pretending it knows more than it does.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building an AI Clothes Changer: provider abstraction, async jobs, and a credit system that won't lose money</title>
      <dc:creator>gxlbfc</dc:creator>
      <pubDate>Wed, 17 Jun 2026 08:16:53 +0000</pubDate>
      <link>https://dev.to/gxlbfc_d039fe229d0c50aa9e/building-an-ai-clothes-changer-provider-abstraction-async-jobs-and-a-credit-system-that-wont-2cc1</link>
      <guid>https://dev.to/gxlbfc_d039fe229d0c50aa9e/building-an-ai-clothes-changer-provider-abstraction-async-jobs-and-a-credit-system-that-wont-2cc1</guid>
      <description>&lt;p&gt;I recently launched &lt;a href="https://aiclotheschanger.me/" rel="noopener noreferrer"&gt;Dressora&lt;/a&gt;, an AI clothes changer that swaps outfits onto a single photo for virtual try-on. The product side is fun, but the parts I actually sweated over were the boring backend bits: orchestrating multiple AI providers, handling long-running generation jobs, and building a credit system that never double-charges or loses money. Here's what I learned.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; (App Router) + React 19 + TypeScript&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL + Drizzle ORM&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare R2&lt;/strong&gt; for media storage&lt;/li&gt;
&lt;li&gt;Multiple AI image/video providers behind one interface&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Don't marry a single AI provider
&lt;/h2&gt;

&lt;p&gt;AI providers change pricing, rate limits, and quality constantly. Hardcoding one is a trap. I put everything behind a small factory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;evolink&lt;/span&gt;&lt;span class="dl"&gt;"&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;task&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;provider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createTask&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;aspectRatio&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each provider implements the same interface (&lt;code&gt;createTask&lt;/code&gt;, &lt;code&gt;handleCallback&lt;/code&gt;, status mapping). Swapping or adding a provider is a new file, not a refactor. When one provider had an outage, switching the default was a one-line env change.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Generation is async — embrace callbacks
&lt;/h2&gt;

&lt;p&gt;AI generation takes 10s–minutes. Blocking a request is a non-starter. The flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;generate()&lt;/code&gt; — create a DB record, &lt;strong&gt;freeze credits&lt;/strong&gt;, call the provider with a callback URL&lt;/li&gt;
&lt;li&gt;Provider processes and hits my webhook when done&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;handleCallback()&lt;/code&gt; — download the result, re-upload to R2, mark complete, &lt;strong&gt;settle credits&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The frontend just polls a lightweight status endpoint. The webhook is the source of truth.&lt;/p&gt;

&lt;p&gt;A gotcha: &lt;strong&gt;always re-upload the provider's output to your own storage.&lt;/strong&gt; Provider URLs expire. Downloading and pushing to R2 on completion saved me from dead links later.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The credit system was the hardest part
&lt;/h2&gt;

&lt;p&gt;Money + concurrency + async failures = the scariest combination. The pattern that worked: &lt;strong&gt;freeze → settle / release.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On request: &lt;code&gt;freeze(credits)&lt;/code&gt; — move credits to a "held" state&lt;/li&gt;
&lt;li&gt;On success: &lt;code&gt;settle()&lt;/code&gt; — actually consume them&lt;/li&gt;
&lt;li&gt;On failure/timeout: &lt;code&gt;release()&lt;/code&gt; — give them back
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;freeze  -&amp;gt; hold created, balance reserved
settle  -&amp;gt; hold consumed (success)
release -&amp;gt; hold returned (failure)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way a failed generation never costs the user, and a user can't fire 10 concurrent jobs with credits for one. I also did &lt;strong&gt;FIFO consumption across credit packages&lt;/strong&gt; so credits with the nearest expiry get used first — fairer for users and simpler for accounting.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Lessons
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Put external dependencies behind interfaces &lt;em&gt;before&lt;/em&gt; you think you need to.&lt;/li&gt;
&lt;li&gt;For async jobs, design the failure path first (release credits, retry, timeout) — the happy path is easy.&lt;/li&gt;
&lt;li&gt;Re-host anything an external API generates.&lt;/li&gt;
&lt;li&gt;A "frozen" intermediate state for credits/money is worth the extra table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to see the end result, it's live at &lt;a href="https://aiclotheschanger.me/" rel="noopener noreferrer"&gt;aiclotheschanger.me&lt;/a&gt;. Happy to answer questions about the architecture in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>saas</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
