I'm building this in the open and shipping fast. Every entry below is something that was broken,
missing, or just not good enough. If you hit something that isn't on this list,
tell me about it.
FIXIMPROVEMENT
Four fixes for silent outfit substitutions
All four of today's fixes were the same shape: Vera picked an outfit, then a follow-up step quietly swapped something — sometimes for a worse choice. Nothing visibly broke. The outfits looked plausible. But the swaps were the kind you'd notice if they tripped you up — shorts at 59°F, a quarter-zip with no shirt under it.
Cleaner outfit logic on cool mornings
Plan My Week and Tomorrow's Look now skew conservative on days where the morning is much colder than the afternoon high. Before, if today started at 58°F and was forecast to hit 78°F, Vera might pick shorts because they suited the afternoon. Now she dresses for when you actually walk out the door.
No more quarter-zips without a base layer
Occasionally a planned outfit would get rebuilt mid-week to avoid repeating an item, and the rebuild would pick a quarter-zip or hoodie as the top — without a shirt underneath. Fixed. If a mid-layer gets picked, there's a base layer with it.
No more pants-to-shorts swaps you didn't ask for
The dedup logic that prevents wearing the same item twice in a week could occasionally swap pants for shorts when the substitution wasn't weather-appropriate. Resolved. Substitutions now check the day's temperature before picking a replacement.
Vera's name-string responses now resolve cleanly
When Vera occasionally returned an item by name instead of by ID, the response was silently dropping into a fallback path. Those responses now route through the same name-matching logic the rest of the app uses, so what Vera picked is what you see.
FEATUREIMPROVEMENTFIX
The homepage finally tells visitors what DRESSED is, the site reads better on phones, and Vera got noticeably smarter
A long week of work across three threads. The homepage got rewritten to lead with positioning instead of features. The longer-form pages got a typography overhaul that makes them readable on a phone. And Vera picked up a self-critique step plus a stack of new hard rules that catch the mistakes she used to occasionally slip past. Plus the usual round of fixes underneath.
The homepage finally tells visitors what DRESSED is
The homepage now leads with a single line: GPS for getting dressed. The page used to lead with feature lists; it now leads with what DRESSED actually does for you. The price comparison sits right under it: a personal stylist runs around $400 a session, DRESSED is $8 a month.
Mobile reading is dramatically better
All 28 longer-form pages on the site got new typography. Switched the body font to Source Serif 4 and pushed body text contrast higher. Bumped font size from 17px to 19px and line-height from 1.4 to 1.75. The result, especially on phones and especially for older eyes (mine, no joke), is that the longer essays and how-to pages actually read like something you'd want to read instead of squint at.
The homepage is faster
PageSpeed mobile score on the homepage went from 80 to 98. Self-hosted the fonts, lazy-loaded the images, hardened the rest of the page. First paint is faster, the page is interactive sooner, no design regression.
Vera critiques her own picks before showing them to you
Before this week, Vera picked the outfit and wrote the rationale in the same breath — which meant she could rationalize a bad pick mid-sentence and the result would still read as confident. Now there's an internal PICK → CRITIQUE → REVISE → FINAL flow inside her response. She picks an outfit, then specifically checks it against costume risk (wingtips with a graphic tee, blazer with athletic shorts), color clashes, formality drift, day-match, and your personal style rules. If anything is off, she replaces the offending piece before showing you the outfit. You don't see the critique — you just see the final result. Same single API call, same speed.
The hard rules engine got bigger
I added a layer of categorical checks that run after Vera responds, regardless of what she picked. Black + navy as main pieces — one of them looks like a mistake — now gets auto-corrected. Brown shoes with a black belt (or the inverse) gets the belt swapped to match the shoes. Wingtips, oxfords, and brogues paired with a graphic tee or with shorts get the shoe swapped to something casual. Sport-tagged items in non-sport contexts — workout shorts headed to brunch — get auto-replaced.
Your nine active style rules now have the same hard backing: no repeats within 14 days, layer below 65°F, rain-proof shoes when rainy, smart casual on Fridays, no t-shirts or western shirts on weekdays, no quarter zips on weekends, no sport coats with shorts, no loafers with pants or jeans. Each is a check Vera has to satisfy, not a polite suggestion she can rationalize past.
Loafers with shorts stays allowed
Worth being explicit here because earlier prompt wording lumped all formal-ish shoes with shorts into "costume" territory. Loafers + shorts is fine for casual contexts (golf, weekend errands) and is left alone. What's still blocked: leather lace-ups — wingtips, oxfords, derbies — with shorts. That combination still reads as a mistake.
Color clashes are caught more precisely
A few specific color-detection bugs got fixed mid-week. Brown belt + brown shoes was sometimes silently dropping the belt because of an over-eager match — that no longer happens. And in Plan My Week, light green trousers and 501 jeans were both getting swapped to the same stone beige chinos because the deduplication wasn't distinguishing items by enough features. Now they stay distinct.
Plan My Week is more reliable
A few things were quietly going wrong here. Mandatory slots (top, bottom, shoes) could end up empty if the dedup logic eliminated every candidate — you'd see an outfit missing its shoes. Now mandatory slots fall back to a least-recently-worn item with a logged note, even if it means a one-day repeat. The same-week dedup also got tighter: items that were quietly repeating Wed/Thu or Fri/Sat/Sun now actually get caught. And the hard rules now run last in the chain, so they can't be undone by a follow-up step accidentally re-introducing the very item they just swapped away.
Women's wardrobes get the right rule logic
Pattern-clash detection was firing on items it shouldn't have for women's wardrobes — flagging combinations that are fine in women's clothing categories. That's now correctly gated. Item creation also sets the item's gender at the moment it's added to the closet, which eliminated a category of "wrong gender" outfit picks from items that had been historically misclassified. And 81 items in the database that had been mistagged got corrected in one pass.
Better data, better diagnostics behind the scenes
The kind of work I can see but you can't. The app now logs the key user actions I need to know which features actually get used and where people drop off — so future "what should I prioritize" decisions are aimed at real friction points instead of guesses.
And inside Vera's chain, I can now tell when a hard rule fired and what it swapped, and when a parser fell back to a recovery path. None of this changes what you see in the app — it just means the next round of "Vera did something weird" reports gets diagnosed faster.
FIXIMPROVEMENT
Vera stops giving you the same outfit twice, and the screenshots on the website are actually screenshots now
Two unrelated items, both quality-of-life. One is a chat-handling bug that had been quietly bothering me; the other is a website cleanup I'd been putting off.
Asking Vera about an event no longer produces a duplicate outfit
If you asked Vera something like "what should I wear to dinner Friday?" she sometimes built the outfit twice — once for the side panel that opens with the suggestion, and again as a JSON payload inside the chat reply. Same prompt, two builders, two slightly different outfits, both shown to you. Annoying.
Now when an occasion request is in flight, the chat reply just acknowledges it and the side panel becomes the single canonical surface. One question, one outfit.
The screenshots on the website are actually screenshots
The illustrated mockups of the app on a few of the longer pages on the site were bothering me. They were stylized HTML/CSS approximations of what the app looks like, with placeholder names like "Denim shirt" and "Grey chinos." They looked fine three months ago when there wasn't anything else to put there, but increasingly they read as fake.
I replaced them with real screenshots from my phone. The closet shot has my actual closet — 76 items, my Manhattan poplin shirt, my Florsheim chukkas, the Chelsea boots, the white sneakers. The today shot has my actual outfit suggestion from this morning. The plan shot has next Sunday's calendar with the baseball game and the cafe reservation. The shopper shot has the linen button-down Vera surfaced for me earlier this week.
None of this changes the app. But the website should reflect what the app actually is, not a tidy version of it.
FIXIMPROVEMENT
Five deploys, eight bugs, mostly silent failures
A long Saturday morning of going through Vera's enforcement chain end-to-end. Each thing I found was the same shape: code that didn't crash but didn't run either. The outfit looked plausible but a rule had quietly skipped. These are the ones you'd actually have noticed if they tripped you up.
Vera's chat picks were using today's weather, even when you asked about a different day
Asking "what should I wear Wednesday?" was supposed to fetch Wednesday's forecast and build for that. Instead the date-resolver was silently failing on a hoisting quirk and Vera was building for today's weather every time. Now it actually checks the right day. If you've ever gotten a confusing answer from chat about a weekend or evening event, this was probably why.
Shorts, sandals, and short-sleeves can't sneak past on cool days anymore
Four of the nine places Vera builds outfits were missing one or more of the temperature filters that block shorts under 60°F, sandals under 60°F, and short-sleeve tops under 55°F. The today builder had them all; the week planner, day-replan, evening, and event builders did not. They do now.
The chat handler had almost no enforcement at all
When Vera suggests an outfit through chat — versus through the today card or the week planner — the suggestion was running through almost none of the rule checks the other surfaces use. No color clash check, no pattern clash, no texture clash, no quarter-zip-under-blazer check, no women's-occasion logic. Just user rules and a couple of fallbacks.
I caught this when Vera suggested a quarter-zip mock neck directly under a blazer with no collared shirt underneath. That outfit shouldn't have left the building. Now the chat handler runs the same full chain everything else does.
"Mid-layer counts as a top" was being too generous
The check that ensures you have a top under your outerwear was treating sweaters, quarter zips, and mock necks as base layers. They aren't. Now if you've got a blazer or a coat in the outfit, there has to be an actual base-layer top under it, not just another mid-layer.
FIXIMPROVEMENT
Vera reads weather for the day you asked about, and the public demo stops dead-ending
Two unrelated patches that had been bothering me for a while. One closes a quiet hole in chat; the other fixes three demo pages that were technically working but practically broken.
Vera's chat picks now respect the weather for the right day
Yesterday's update brought Vera's chat suggestions onto the same enforcement chain as her morning picks — rules, dress code, the lot. The piece I left out was temperature. If you asked her "what should I wear Friday?" on a Tuesday, the rest of her context shifted to Friday but the temperature filters still ran against today. So she might happily propose a linen top for a 48°F Friday because today's a balmy 65.
Now there's a small Haiku call that fires before Vera builds the outfit, just to resolve which day you actually meant — "Friday," "tomorrow," "the meeting on the 14th." It hands back a date, and the closet pre-filter runs against that day's forecast: shorts and sandals out under 60°F, short sleeves and tees out under 55, linen out under 60. Same thresholds the four outfit builders already use. The Haiku call is gated behind a keyword check — "hey Vera what's up" doesn't trigger it, "what should I wear" does — so it doesn't fire on every chat message.
Three public demo pages stop dead-ending
The demo wardrobe is twelve hand-picked items. That's enough for the daily outfit demo to feel real, but three other features — Closet Cleanout, Pack a Trip, and the "Try it" button on the Never Worn list in Insights — were running live Vera against that 12-item closet and producing nothing useful. Closet Cleanout would either return empty (Vera correctly judging that the curated capsule is fine) or flag every item as a candidate (because they're all marked never-worn). Pack a Trip would build a list, but a 3-night trip sourced from 12 items had nothing to choose from. The Try it button just shrugged.
All three now return curated demo content. Closet Cleanout shows two "try" verdicts — items in the demo closet that have specific styling potential, with reasons. Pack a Trip returns a hand-built 3-night list anchored on a versatile core (the navy blazer for men's, the camel sweater for women's) with a packing tip. Try it builds a complete outfit around whichever item you tap. The full live experience is still on /app/ where your real wardrobe gives Vera something to work with; only the public demos are hardcoded.
Wardrobe Audit is now Closet Cleanout in the app, too
The marketing page has been at /closet-cleanout/ for a few weeks. The in-app feature was still called Wardrobe Audit, and the URL was still /app/wardrobe-audit/. Renamed both. Old URLs redirect, so any bookmarks still work.
FIXIMPROVEMENTFEATURE
Vera understands future days in chat, respects compound rules, and stops shipping outfits without shoes
A long evening session that started as a quick parity audit and unspooled into eight separate fixes across the chat path, the rule engine, and the outfit builders. The thread connecting most of them: Vera's chat suggestions were running on a different code path than her morning outfit picks, with fewer guardrails. They’re mostly aligned now.
Vera now understands “Sunday” (and other future days) in chat
If you asked Vera “dress me for Friday cocktails” on a Tuesday, she’d build the outfit but the rest of her context — the calendar, the weather, the weekday-vs-weekend dress code — was still set to Tuesday. So she might propose a button-down because Tuesday is your smart-casual workday, even though Friday evening cocktails call for something different. Vera now reads the day-of-week reference in your message (“Sunday,” “Friday,” “tomorrow,” etc.) and adjusts: she knows what day you’re actually dressing for and applies the right dress code, calendar context, and forecast.
Wear This now goes on the right day
Tied to the change above. Before tonight, tapping Wear This on a chat suggestion always overwrote today’s outfit, even if you asked Vera about Friday. The suggestion would silently land on the wrong day. Now Wear This routes to whichever day you actually asked about — Friday cocktails land on Friday’s calendar slot, Saturday rehearsal dinner on Saturday, and so on. The toast tells you which day got updated. Same fix applies to the standalone occasion-request panel that pops up when Vera builds an outfit from chat.
Compound rules with “or” finally fire
I had a rule that said “Loafers only with shorts. No loafers with pants or jeans because I have no socks to go with them.” Vera kept ignoring it. The rule engine’s combo detector was matching the “no X with Y” pattern, but it was treating “pants or jeans because I have no socks to go with them” as one literal phrase — and no item in your wardrobe is named that. So nothing matched, and the rule never fired. Two fixes: the engine now strips trailing clauses (“because…,” “when…,” etc.) and splits on “or” / “and” / commas to get a list of terms. It also recognizes synonyms now — “pants” matches trousers, chinos, and slacks; “dress shoes” matches oxfords, brogues, derbies, etc. Compound rules with multiple banned partners now actually work.
Vera’s chat suggestions go through enforcement
The morning outfit builders run a 13-step enforcement chain after Vera responds: shoe-formality match, color clash, pattern clash, weekday dress code, your saved rules, and so on. The chat path skipped all of it. Vera could propose a blazer for casual coffee, or loafers with chinos in violation of your own rule, and the chat would just… ship it. The suggestion-card flow now runs your saved rules and the weekday dress code on whatever Vera proposes, on the day you asked about. Stylistic disagreements are still on the table for back-and-forth (the chat is supposed to be conversational), but rules are rules.
Vera always includes shoes
Sometimes Vera in chat would forget shoes entirely — the suggestion card would render with three items, no footwear. The morning builders had a force-shoes fallback for exactly this; the chat didn’t. Now if Vera’s chat suggestion comes back without a shoe, the least-worn shoe in your closet gets added automatically. Same logic for missing tops or bottoms. You won’t see four-item outfits with no feet anymore.
Tighter cool-weather filtering across every outfit flow
The linen filter that keeps summer fabrics out of cool-weather outfits had two bugs that compounded: the threshold was set to under 45°F (linen is uncomfortable well above that), and the matcher only looked at item names. Items with linen in the fabric tag but not in the name — like a polo whose tag says “linen” but whose name is just “Sunwashed Polo” — slipped through. Both fixed across every builder: linen now filters at under 60°F and checks the fabric tag in addition to the name. You shouldn’t see linen tops on a 47°F drizzly Chicago morning anymore.
Reshuffle Day, Plan This Day, and the chat occasion builder all now run the full enforcement chain
Three Vera entry points were missing all or most of the enforcement chain that runs on Today’s Look: tapping Reshuffle on a planned day, tapping Plan This Day on a future date in the calendar, and asking Vera in chat for an occasion outfit. They’ve all now been brought into parity — same 13 enforcement steps, same temperature filters, same linen check. Whatever flow you’re in, Vera’s picks should now respect your rules and your dress code consistently.
If you hit a case where Vera’s chat suggestion violates a rule you’ve set, that’s now a real bug worth telling me about — the path is supposed to handle it.
FIXIMPROVEMENT
Two stale-context bugs and a race condition that were quietly poisoning Tomorrow’s Look
Tomorrow’s Look was occasionally producing outfits that ignored your dress code or used yesterday’s weather, and I couldn’t reliably reproduce it. Three separate problems were stacked on top of each other.
Vera was sometimes getting last-loaded values, not current ones
Inside the function that builds the outfit prompt, Vera was reading some context fields (dress code, weather) from a stale snapshot that got captured the first time the function was created. So if the page loaded with no profile yet, the function captured “dress code: not set” and kept using that snapshot even after your profile loaded a second later. The same pattern was happening to weather. Both now read from a live reference that updates whenever the underlying state changes — Vera always sees the current dress code and current temperature when she builds.
Tomorrow’s Look was firing three times in a race against itself
There were three separate timers in different parts of the code that all tried to kick off Tomorrow’s Look on app load — one tied to weather loading, one tied to profile loading, one fallback after 2 seconds. Whichever one won the race fired Vera with whatever happened to be loaded at that moment, which was sometimes incomplete. Replaced all three with a single effect that waits for everything Vera needs (closet, weather, profile, calendar) to actually be loaded before firing once. No more ghost outfits built from half-loaded state.
Evening outfit suggestions now go through the same rules as the rest
The Evening Outfit suggestions on Today’s Look were running through Vera but skipping the 13-step enforcement chain that the morning outfit goes through — color clash, pattern clash, weekday dress code, your saved rules, formality matching. So the morning outfit would respect a “no graphic tees on weekdays” rule but the evening suggestion underneath might still show one. Evening suggestions now run the full chain.
Calendar reads further into the future
Plan My Week was missing calendar events that were 8+ days out because the Google Calendar fetch was capped at 250 events per request. For users with busy calendars, week 2 would just… not have data. Bumped the page size to 2500 events. The week-out networking dinner Vera didn’t know about? She knows about it now.
IMPROVEMENT
The public demo got a real upgrade
The /demo/ page is the writer-and-investor experience — the version anyone can poke at without signing up. Two things changed.
Curated outfits instead of live Vera
The demo wardrobe is twelve hand-picked items for a fictional user named Alex. It was always too small for Vera to do interesting work with — she’d filter the pool down to nothing, hit a fallback path, and produce outfits that were technically valid but visibly bad (Saturday’s “job interview” pick was a graphic tee with sneakers; Sunday’s “date night” was a tee under a turtleneck). For a 12-item demo closet that’s not really Vera’s fault — there’s nothing else to pick from. Now the demo serves six hand-vetted outfits that route based on the calendar event for that day: Saturday’s job interview at 2pm gets a blazer with brown derbies; Sunday’s date night at 7:30 gets a turtleneck with dark jeans and Chelsea boots. The full live-Vera experience is on /app/, where your real wardrobe gives her something to work with.
Secondhand eBay toggle in the demo’s AI Shopper
The blue “Find it secondhand on eBay” button that ships in the live app wasn’t in the demo’s AI Shopper. Visitors evaluating the product would only see the orange Amazon button, which sells the wrong story — a big chunk of what’s interesting about AI Shopper is that you can buy these gap-fillers used. Now the demo shows both buttons, and the eBay one returns real listings with thumbnails, just like the real app.
FEATUREIMPROVEMENT
Vera now sees patterns and refuses to pile up heavy fabrics
Two related changes that make Vera's outfit picks read as more intentional. First: there's a new Score Wardrobe Patterns button on your Style Profile, right under the existing formality scorer. Tap it once and Vera examines each item's photo to detect plaid, stripe, check, print, or texture, then writes the result back to your closet. This matters because Vera's pattern-clash logic was already in place, but the data layer was sparse: items added before the photo identifier learned to detect patterns were all tagged "solid" by default. The backfill closes that gap. Subtle heathers stay solid by design. Takes a few minutes for a typical wardrobe; new items added going forward get tagged at upload time, so the button gradually quiets down to "Re-Score" only.
Second: Vera now refuses to pile up wool, flannel, knit, and heavy fabrics in the same outfit. If three or more textured pieces show up in a build, she swaps the lowest-priority one for something lighter in the same category. Two heavy pieces is normal (wool coat with knit sweater); three is where it tips into visual noise. This sits next to the existing color-clash and pattern-clash enforcement and runs on every outfit Vera builds. You won't see UI feedback when it fires, but outfits should feel more put-together going forward, especially in cooler weather when heavy fabrics naturally stack up.
FEATURE
The demo Wardrobe Audit actually demos something now
If you ran the Wardrobe Audit on the demo wardrobe before tonight, Vera correctly returned "your wardrobe is in good shape" — the demo closet is a curated 13-piece capsule with nothing genuinely worth donating, so she had nothing to flag. Correct, but useless as a demo. Now the demo path returns two real donation verdicts mapped to actual demo items, so visitors can see what an audit actually looks like before they sign up. The in-app version still runs the real Vera audit on your real wardrobe — only the public demo is hardcoded.
While I was in there, I also wired up ThredUp affiliate tracking on the donation pile's "Send Them Off" panel. Same publisher attribution as the Closet Cleanout marketing page. Doesn't cost you anything; just helps cover the API bills.
FEATUREIMPROVEMENT
Heirloom Stories, Closet Cleanout, Rate My Outfit, and a rewritten About page
A handful of new and refreshed pages went up over the weekend. Heirloom Stories is for marking specific pieces in your wardrobe with where they came from and what they mean — the wedding suit, your dad's leather jacket, the dress from a trip. Closet Cleanout is the marketing companion to the in-app Wardrobe Audit, with a six-step walkthrough and a partnership with ThredUp for the actual sending-off step. Rate My Outfit lets you snap a photo of what you're wearing and get Vera's take — a lighter-weight version of the full closet flow. The About page got a rewrite that's more honest about why I'm building this: I find getting dressed a chore, not a creative outlet, and Vera is what I'd want for myself.
Also fixed: the eBay integration on AI Shopper was rendering blank product cards because the rover.ebay.com URL format I was using was deprecated in 2021. Now uses the current EPN tracking format, so the affiliate links actually work.
FIXIMPROVEMENTFEATURE
Vera sees your whole closet, outfits update themselves when the rules change, and other fixes that had been hiding for weeks
A long session. Fourteen changes to the app, one change to the eBay integration, and one fix to the home-screen icon. Four of those changes were latent bugs -- things that looked like they were working but weren't. Here's what's different.
AI Shopper now sees your whole closet, not just what's clean
AI Shopper was recommending items you already own. The cause: the list of your wardrobe that got sent to Vera filtered out anything currently in your laundry basket or seasonal storage. So if your olive chinos were in the wash, Vera thought you didn't own any olive chinos and suggested buying more. If your winter coat was stored for summer, Vera would tell you to buy a winter coat. Now Vera sees every item you own, with a note next to anything temporarily unavailable ("currently in wash" or "currently in seasonal storage"). She treats them as owned and won't recommend duplicates.
Shorts blocked on smart casual weekdays
If your dress code is set to smart casual or business, Vera was still suggesting shorts on weekdays when the weather allowed it. The weekday dress code filter blocked graphic tees and band tees, but nothing was stopping her from pairing a collared shirt with shorts and calling it smart casual. Fixed -- shorts, joggers, sweatpants, and athletic pants are now blocked on weekdays when your dress code is smart casual or above. Applies across every outfit builder (Today's Look, Plan My Week, Tomorrow's Look, Surprise Me).
Tomorrow's Look was quietly keeping tees you didn't want
A filter in Tomorrow's Look was meant to prefer collared shirts over tees on weekdays when you have a smart casual dress code. The logic was inverted: it was keeping the tee and dropping the collared shirt. Every day this ran, you'd get a tee exactly when you didn't want one. Fixed -- now the collared shirt wins when one is available.
Outfits update themselves when the rules change
If you opened the app and Today's or Tomorrow's outfit was already saved from yesterday, it would show that saved outfit -- even if the rules behind it had changed. For example: you add a "no shorts on weekdays" rule in the evening, and Monday morning your Tomorrow's Look still shows the shorts outfit it picked the day before. Now Tomorrow's Look and any unconfirmed outfit check themselves on every page load. If the stored outfit violates a current rule -- wrong formality combination, tee on a smart casual weekday, shorts when they're no longer allowed -- it's discarded and Vera builds a fresh one. You'll see the new rules take effect immediately instead of having to manually reshuffle.
Tomorrow's Look now uses tomorrow's weather, not today's
The temperature filters in Tomorrow's Look were reading today's current temperature instead of tomorrow's forecast high. In Chicago spring, that's a meaningful difference -- today 38°F, tomorrow 68°F. The filter that kept sandals out of the outfit was using the wrong number. Fixed -- Tomorrow's Look now pulls the actual forecast for tomorrow's date before deciding what's allowed.
Plan My Week catches up to the other builders
Several filters that existed in Today's Look didn't exist in Plan My Week: the filter that keeps tees out of cold weather, the one that keeps linen out of cold weather, the one that keeps shorts out when it's below 60°F. Your weekly plan would have shorts on a 34°F Tuesday. All four temperature filters are now running in Plan My Week and Tomorrow's Look, matched across every builder.
Vera Says no longer goes missing from the weekly plan
When you ran Plan My Week, Vera's short explanation for each day's outfit sometimes wouldn't appear. The Haiku call that generated the explanation was being kicked off without waiting for its response -- the outfit got saved before Vera finished speaking. Fixed -- the explanation now waits and saves with each day's outfit.
Weather data consistency across builders
Different outfit builders were reading weather from different places. Today's Look used the current temperature from open-meteo; Plan My Week and Tomorrow's Look used daily forecast highs. Sometimes those two sources disagreed by 20°F or more. Vera was getting different temperatures in different contexts for the same physical moment. Every builder now reads from the correct source for the day it's building -- Today's Look uses the current temp, Plan My Week uses each day's forecast high, and Tomorrow's Look uses tomorrow's forecast high.
Unworn-item tracking works correctly again
Several features that track how long it's been since you wore something -- the "unworn 30+ days" dashboard alert, the Wardrobe Audit, and the candidate list sent to Vera -- were reading a stale cached field instead of calculating the actual days since the item was last worn. If that cached field hadn't been updated, the tracker would show wrong numbers, sometimes for items you'd worn just yesterday. Fixed -- every tracker now computes days-since-worn fresh from the actual last-worn date.
Rules no longer multiply
When you told Vera about a new style rule in chat, or pinned a feedback comment as a permanent rule, she sometimes saved duplicates. You could end up with five copies of "no t-shirts on weekdays" in your rules list without realizing it. Now Vera checks if a rule already exists before saving -- if it's there but off, she turns it on; if it's already on, she just confirms. Duplicates can't be created anymore.
"Dinner," "society," "foundation" now recognized as formal
Calendar events with words like "dinner," "banquet," "gala," "lecture," or "society meeting" weren't always triggering Vera's formal-event detection, meaning she'd suggest a casual outfit for a work dinner at a private club. Formal-event language expanded -- Vera now recognizes more of the real words people use for dressed-up events.
AI Shopper recommends the right gender
When AI Shopper searched for items to fill a gap, it was passing a gender-neutral query to Amazon. Users with a men's wardrobe would see some women's items in their recommendations and vice versa. Queries now include "mens" or "womens" prefix based on your wardrobe preference, so what you see matches what you wear.
eBay secondhand search now pays to keep the lights on
The "Find it secondhand on eBay" button that shipped on April 12 was working for you -- it showed real listings with real prices -- but the links weren't being routed through eBay's affiliate program. No commission tracking, no partnership revenue. That was a silent oversight from the first launch. Now every eBay link is a proper affiliate link that credits DRESSED when you buy. Same listings, same prices, same button. If you buy a secondhand piece through AI Shopper, a small commission helps keep DRESSED free.
Saved outfits follow the weather
When Tomorrow's Look saved an unconfirmed outfit, it had no expiration. If you closed the app Monday night and came back Wednesday morning, it might restore Monday's pending outfit -- including shorts -- for a cold Wednesday. Now saved outfits carry a timestamp and the weather conditions they were built for. If the stored outfit is more than 24 hours old, or the temperature has shifted more than 15°F since it was saved, it's discarded and Vera builds a fresh one for current conditions.
Home screen icons fixed
The app icon kept disappearing when you added DRESSED to your home screen. Turned out to be a macOS file quarantine flag silently blocking the icons from reaching the CDN on some deploys. Fixed at the source. The home screen icon and installable web app manifest now survive every deploy.
FIXIMPROVEMENT
Vera sees your full closet, and sees it in a different order every time
Two compounding fixes to the outfit engine, plus calendar events now reach Vera's weekly planner.
Vera's response budget raised 5x
Every Vera outfit builder was set to a 200-token response budget -- barely enough for a 3-item outfit and a one-sentence reason. On larger closets, Vera's JSON response was getting truncated mid-sentence. The truncated response failed to parse silently, and a fallback mechanism filled in missing categories from your least-worn items. The result: outfits that looked like Vera picked them but were actually a deterministic safety-net synthesis from a small subset of your closet. Every outfit builder (Today's Look, Plan My Week, Tomorrow's Look, Surprise Me, the chat occasion builder, the unworn-item feature, and the evening look builder) is now set to 1000 tokens. Vera's full response reaches the app intact.
Uniform shuffling within each wear tier
The sort that Vera sees before building each outfit used Math.random() - 0.5 inside a comparator -- a classic broken JavaScript shuffle that produces biased, non-uniform distributions. Middle-index items got an unfair advantage, which compounded with Vera's natural position bias to produce the same "favorite" items over and over. All four shuffle call sites (Today's Look, Plan My Week, Tomorrow's Look, and the day-level week planner) now use Fisher-Yates -- a genuinely uniform randomization. The wear-tier prioritization (never-worn items first, then 1-2x, then 3-5x, then 6+) still works the same way, but within each tier you get actual randomness instead of V8's TimSort deciding for you.
Calendar events now reach the weekly planner
Plan My Week was the only one of Vera's five builders missing calendar event references -- if you had "Client Dinner Thursday" on your calendar, Plan My Week had no idea while the other four builders did. Every day of the week plan now includes that day's calendar events in Vera's context, the same way Today's Look and Tomorrow's Look already did. If you're planning a week with a formal event in it, Vera now dresses you accordingly for that specific day.
Google OAuth consent screen
Google Calendar integration still shows an "unsafe app" warning during sign-in for users who connect their calendar. Branding has been verified (green checkmark from Google). The data access scope is still under review. No user action needed -- the integration works fine once you click through the warning.
FIXFEATURE
Vera stops recommending t-shirts on weekdays, a smarter tomorrow, and secondhand shopping
Bug fixes and improvements carried over from yesterday, plus a new enforcement fix for Tomorrow's Look.
Vera now enforces dress code in Tomorrow's Look
Vera was recommending graphic tees and band tees for weekdays in Tomorrow's Look even when your dress code is set to smart casual. The weekday dress code filter was running on cached outfits but not on fresh Vera picks. Now it runs in code after Vera returns her suggestion -- if you have smart casual set, a collared or structured top is guaranteed.
Move today's outfit to tomorrow
New button on Today's Look alongside Surprise Me: "→ Tomorrow." Tap it and today's outfit moves to Tomorrow's Look, and Vera builds a fresh look for today. Useful when you like what Vera picked but want to wear it tomorrow instead.
Vera chat suggestions route to the right day
When you asked Vera in chat to suggest an outfit for tomorrow and tapped "Wear This," it was updating today's look instead. Fixed -- if your message mentioned tomorrow, the suggestion now goes to Tomorrow's Look.
Plan My Week first day no longer times out
The first day of the week plan was occasionally timing out while the rest of the week built fine. The cause: Plan My Week was starting while Tomorrow's Look was still loading, and both were competing for Vera simultaneously. The week planner now waits for Tomorrow's Look to finish before it starts.
Tomorrow's Look shows a loading state instead of collapsing
When Vera was building tomorrow's outfit, the card would collapse to nothing instead of showing a loading state. It now shows a spinner while the outfit loads.
Find it secondhand on eBay
The AI Shopper now shows a "Find it secondhand on eBay" button under each wardrobe gap. Tap it to see matching secondhand listings -- same item, fraction of the price.
FIXIMPROVEMENTFEATURE
Badge wall, sandals in the cold, and a smarter tomorrow
A full day of fixes, new Insights features, and outfit routing improvements.
Badge wall and Insights stats
Thirteen achievements are now live on the Insights page — tied to real wardrobe behavior like adding 25 items, confirming 10 outfits, or maintaining a 7-day streak. Each badge shows earned vs. locked state. Also new on Insights: a Closet Completion Score (gender-aware — men's users don't need dresses to score 100%), a Cost Per Wear motivation stat showing total value worn per wear across confirmed outfits, and milestone toasts at 5, 10, 25, 50, and 100 items added.
Badge wall no longer shows on every page
The Achievements section and CPW stat were rendering at the top or bottom of every view in the app — Today's Look, Vera's Rules, Closet, everywhere. They're now correctly scoped to the Insights page only.
Vera Gets Better messaging
When your wardrobe is sparse (under 10 items), Vera now shows a note explaining that her suggestions improve as you add more pieces — rather than silently producing repetitive outfits.
Sandals blocked in cold weather
Vera was suggesting open-toe shoes and sandals on 40°F days. The temperature filter that already blocked short sleeves and shorts below 55°F wasn't applied to footwear. Fixed — sandals, slides, and open-toe shoes are now blocked below 60°F in Today's Look, Plan My Week, and Tomorrow's Look.
Outfit safety fixes
Two edge cases fixed: the filter that strips bad tops when a dress is in the outfit now has a safety check so it never removes all tops and leaves the outfit topless. And the shoe requirement check now skips gracefully if your closet has no shoes, rather than silently breaking the outfit builder.
Vera explains herself when enforcement changes the outfit
When code-level enforcement swaps or removes items from Vera's original suggestion, the outfit reason is now regenerated in Vera's voice to describe the actual outfit — not the one she originally picked. Applies to all three builders.
More item data sent to Vera in Plan My Week and Tomorrow's Look
Pattern, formality score, occasions, and gender were already included in Today's Look's item list — but not in Plan My Week or Tomorrow's Look. Now all three builders send the same complete item data to Vera.
Tomorrow's Look shows a loading state instead of collapsing
When Vera was building tomorrow's outfit, the card would collapse to nothing instead of showing a loading state. It now shows a spinner while the outfit loads.
Plan My Week first day no longer times out
The first day of the week plan was timing out while the rest of the week built fine. The cause: Plan My Week was starting while Tomorrow's Look was still loading, and both were competing for Vera simultaneously. The week planner now waits for Tomorrow's Look to finish before it starts.
Vera's chat suggestions now route to the right day
When you asked Vera in chat to suggest an outfit for tomorrow and tapped "Wear This," it was updating today's look instead. Fixed — if your message mentioned tomorrow, the suggestion goes to Tomorrow's Look.
Move today's outfit to tomorrow
New button on Today's Look: "→ Tomorrow." Tap it and today's outfit moves to Tomorrow's Look, and Vera builds a fresh look for today. Useful when you like what Vera picked but want to save it for a different day.
PWA icons now stay on the CDN
A _headers file was added to prevent the app icons from being evicted from Netlify's CDN cache — they were occasionally 404ing when you added DRESSED to your home screen.
FIXIMPROVEMENTFEATURE
Vera gets smarter, dresses stop breaking, and annual billing is live
A long day of fixes and improvements. Here's what changed.
Vera now reads who you are before she reads your wardrobe
Style memory and life context used to get appended at the end of Vera's instructions — after she'd already read through 70 items. Now both lead the prompt in all three builders (Today's Look, Plan My Week, Tomorrow's Look). Vera reads who you are before she reads what you own. The suggestions feel more like they're coming from someone who knows you.
Day-of-week style rules now enforced in code
If you have a rule like "no quarter-zips on weekends," Vera was reading it but treating it as a suggestion. Now the app enforces it in code — if the rule says no, the item doesn't appear. Applies to any rule with day-of-week language.
Dresses now work correctly across all builders
Three bugs fixed: (1) Vera was pairing dresses with separate bottoms — skirts, trousers, shorts — because the check that strips bottoms was only running in Today's Look. Now runs in Plan My Week and Tomorrow's Look too. (2) Pullovers, crew necks, quarter-zips, and hoodies were appearing over dresses. Blocked. (3) Items with "dress" in the name — like slip dresses — that were miscategorized as tops are now auto-corrected on login.
Cold-weather shorts blocked in Tomorrow's Look
Shorts were appearing in Tomorrow's Look on 48°F days. The temperature filter was only blocking short-sleeve tops, not shorts. Fixed — shorts are now filtered out below 55°F the same way short sleeves are.
Plan My Week dress code now uses the correct day
The weekday dress code filter was using today's day when building the week plan — so if you ran Plan My Week on a Friday, every day of the week was getting Friday's rules applied. Sunday was getting the smart casual filter. Fixed — each day in the plan now gets its own correct day-of-week check.
Belt swap now searches your full wardrobe
When Vera picked a belt that didn't match your shoes, the swap looked for a replacement only in the items already pulled for that day's outfit — a small subset. If your matching belt wasn't in that subset, the belt got dropped entirely. Now the swap searches your full wardrobe. If a matching belt exists anywhere in your closet, it gets used.
Annual plan: $80/year
Pro is now available annually at $80/year — two months free compared to monthly. The upgrade screen now shows both options side by side. Monthly is still $8.
PWA icon restored
The app icon was 404ing when you added DRESSED to your home screen. Fixed — both sizes are back on the CDN.
FIX
Outfit quality fixes across all builders
Three bugs that were causing bad outfit suggestions. All fixed.
Two tops in one outfit. Vera was occasionally returning two items from the same category — a knit shirt and a performance shirt, for example — and nothing was catching it before the outfit rendered. A category deduplication pass now runs after all enforcement: one top, one bottom, one shoe. Accessories and outerwear can still stack.
Black belt with brown shoes. The belt/shoe color match enforcement existed but was running in the wrong function — it ran during color clash detection, not during outfit building, so it never saw Vera's final outfit. Now it runs inside the outfit builder directly. If you have a matching belt it swaps in. If you don't, the belt drops entirely. No belt is better than the wrong belt.
Parity across builders. Both fixes now run in Today's Look, Plan My Week, and Tomorrow's Look.
FIXIMPROVEMENTFEATURE
Milestone 1 complete: Vera stops embarrassing herself
Five sessions planned over two weeks. Done in one night. Here's everything that shipped.
Women's shoe enforcement. A new enforcement function runs for every outfit built for women's items. Athletic trainers are blocked at formal and smart casual events. Flip-flops are blocked at anything that isn't casual or beach. Previously Vera simply skipped men's shoe rules for women's items — she wasn't applying anything in their place. Now she is.
Women's occasion enforcement. Two hard rules added for women's items: mini skirts are blocked at business formal events, and white or ivory items are blocked at weddings. These are the rules every stylist knows. Vera now knows them in code, not just in her prompt.
Gender toggle in item editor. You can now set the gender on any closet item — Men's, Women's, or Unisex — directly from the add and edit forms. Previously gender was assigned automatically from your profile setting and couldn't be changed per item. Now it can.
Outfit combination tracking. Vera now sees the last 14 days of your wear history before building today's outfit. If you wore the same combination on Monday, that's in her context as a do-not-repeat instruction. She won't serve you the same outfit twice in a two-week window.
Outerwear enforcement in today's look. When the temperature is below 45°F, Vera now guarantees a coat is included in today's outfit — the same enforcement that already existed in Plan My Week and Tomorrow's Look. The gap was in the main daily builder. Closed.
Favicons restored. The favicon was 404ing — the icon files weren't in the repo. Both the browser favicon and PWA icon are back.
FIXIMPROVEMENT
Women's outfit intelligence, style rules research, and six hours inside a JavaScript error
A long session. The honest version: one JavaScript bug — a brace count mismatch introduced during a previous fix — took six hours to diagnose and resolve. The deploy pipeline kept producing a syntactically broken file that Chrome's V8 engine rejected silently. Finding it required diffing good and bad deploys byte by byte. No shortcut. That's vibe coding without the sugarcoating.
Here's what actually shipped.
Belt now drops when no color-matching belt exists. Previously if Vera picked a belt and no matching one existed in your wardrobe, the mismatch stayed. Now the belt is dropped entirely. No belt is better than the wrong belt.
Vera now tells you when she changed the outfit. When code-level enforcement swaps or removes items from Vera's original suggestion, a small note appears: “Items were adjusted to match your style rules.” Previously the outfit silently changed with no explanation.
Quarter-zip base layer fix. The auto-injected base layer was occasionally inserting a mid-layer (sweater, knit) underneath a quarter-zip instead of a proper base. Fixed — only true base layers are injected now.
Comprehensive style rules documented. Before writing more enforcement code, I researched and documented the actual consensus across menswear and womenswear authorities — Gentleman's Gazette, Emily Post Institute, Corporette, Karen Millen, Klodsy, and others. 14 sections covering formality hierarchy, layering, shoe rules, belt rules, color rules, pattern mixing, occasion codes, and accessory rules. The document distinguishes what has strong cross-source consensus (enforce in code) from what's subjective or body-type-dependent (leave to Vera's judgment).
Women's outfit quality improvements. The enforcement suite was built for men's clothing and was silently applying men's rules to women's wardrobes. Four changes to fix this:
A gender field added to every closet item. Existing items for women's users were migrated automatically — 271 items updated.
New items now default to the user's clothing type preference, not a hardcoded mens default.
Men's shoe formality rules no longer apply to women's items. A woman wearing heels was getting flagged incorrectly. Stopped.
Men's belt/shoe color matching rules no longer apply to women's items.
Vera's system prompt now knows whether she's dressing a man or a woman, and uses appropriate terminology and outfit logic accordingly.
This is the foundation for women's-specific enforcement — mini skirt at business formal, white at a wedding, trainers with a formal outfit — which comes next.
FIXIMPROVEMENT
Belt-drop enforcement, homepage performance, and deploy pipeline hardening
A long debugging session focused on code-level enforcement and infrastructure reliability.
Belt now drops when no color-matching belt exists. Previously, if Vera picked a black belt with brown shoes and you only owned one belt, the enforcement found no brown belt to swap in and left the mismatch in place. Now the belt is dropped entirely rather than worn mismatched. No belt is better than the wrong belt.
Facebook Meta Pixel moved out of the critical render path. The pixel initialization was running synchronously in the <head>, blocking first paint while the browser waited for Facebook's servers. It now loads after the page's load event fires. This recovered several points of mobile PageSpeed score.
Font and asset cache headers added. Fonts, mockup images, and OG images now get long-lived cache headers (1 year, immutable) so repeat visitors don't re-download them on every page load.
Deploy pipeline hardened. All file writes in the deploy script now use atomic replace (write to .tmp, then rename) and explicit UTF-8 encoding, preventing truncation of the compiled app source on deploy.
FEATUREIMPROVEMENT
Interactive weekly planner, Meta Pixel, share buttons, and content updates
A second build session the same day. Content improvements, a new interactive tool, and distribution infrastructure.
Weekly Outfit Planner is now an actual tool, not just an article
Enter your city at Weekly Outfit Planner and get a 7-day outfit formula based on the real weather forecast -- no account needed. Each day shows a top, bottom, shoes, outer layer if needed, and a practical tip. The planner auto-loads for Chicago on page open and works for any city worldwide. This is what separates the page from every printable PDF planner out there.
What to Wear Today page significantly expanded
Added a weather condition grid (rainy, hot, transitional, cold) to /what-to-wear-today/, a Generic App vs. DRESSED comparison table showing exactly why stock-photo weather tools fall short, and a new rainy day section. The page now answers the question more completely.
Meta Pixel installed across the entire site
Starts building a custom audience from existing traffic immediately -- the foundation for future paid distribution.
Share buttons updated sitewide
Added Threads and Email (opens your mail client with the link pre-filled -- no list required). Removed X. Facebook retained. Final set: Threads, LinkedIn, Facebook, Email, Copy link.
FEATUREIMPROVEMENTFIX
Vera learns who you are, wardrobe intelligence, enforcement overhaul, and history fixes
The biggest single-day improvement to Vera's outfit quality since launch. Seven significant changes across enforcement, personalization, and data integrity.
Vera now knows your life, not just your clothes
A new Life Context section in About You lets you tell Vera what you do for work, what you do outside work, and what you're trying to achieve with how you look. That context flows into every outfit suggestion -- so Vera can suggest looks that fit your actual life, the way a personal stylist who knows you would. This is the gap that separated Vera from conversational AI stylists. It's now closed.
Wardrobe formality scoring
Every item in your closet now gets a formality score from 1 (gym wear) to 5 (formal) -- assigned automatically when you scan new items, or via the Score Wardrobe Formality button in About You. Vera uses these scores to enforce outfit consistency: no more wingtip oxfords with band tees, no more blazers with hoodies. The score is based on item type, category, and visual descriptors -- not just the name.
Color clash enforcement
Four new hard rules enforced in code: (1) navy and black together is blocked -- looks like a mistake, not a choice; (2) denim on denim (Canadian tuxedo) is blocked; (3) athletic/sport shoes with dress trousers are swapped out automatically; (4) hoodies under blazers are replaced with appropriate mid-layers. These rules cannot be overridden by Vera's reasoning -- they're caught before she ever sees the outfit.
Brown shoes with black bottoms blocked
The cognac brogues + black jeans problem. Now caught and corrected in code. A non-brown shoe is substituted automatically. Jeans also now count as a casual bottom for formality scoring purposes, so wingtip brogues with any denim get flagged.
Wear history and streak now working correctly
Two separate Supabase issues were silently blocking all history writes: a missing formality column on the closet table (causing all wear count saves to fail), and no unique constraint on (user_id, date) in the history table (causing upsert to fail silently). Both are fixed. History now records every confirmed outfit. The streak counter builds correctly from today forward.
Swap picker now shows shackets when swapping a western shirt
The swap picker previously filtered strictly by category. Terminal-layer tops (western shirts, shackets, flannel worn open) and outerwear now cross-pollinate in the picker -- when you swap a western shirt, shackets appear as options, and vice versa. Graphic and plain tees are excluded from terminal-layer swap options.
About You renamed consistently throughout the app
"Style Profile" is now "About You" everywhere -- nav, page headers, help references. The dynamic style title (which was truncating in the sidebar) is replaced with the consistent label. The Score Wardrobe Formality button moved from Wardrobe Audit (wrong home) to About You (right home), with a WARDROBE INTELLIGENCE section label to distinguish it from the style discovery section.
FEATUREIMPROVEMENTFIX
Video call mode, life chapter awareness, Supabase fixes, UI mockups, and launch prep
A full build session. Five significant improvements across the app, content, and infrastructure.
Video call mode
Vera now auto-detects Zoom, Teams, Google Meet, and other video events in your calendar. When she sees one, she adjusts her recommendations: solid colors and simple textures (fine stripes and herringbone cause moiré on camera), medium-to-dark tones that read well on screen, and collared or V-neck tops that frame the face. Applies to Today's Look, Plan My Week, and Tomorrow's Look. Previously, video calls scored as casual -- now they get their own tier with camera-specific guidance.
Life chapter awareness
Vera now scans the next 14 days of your calendar for high-stakes events -- presentations, interviews, weddings, client dinners, board meetings. When something important is approaching, she conserves your key formal pieces rather than burning your blazer on a casual Monday. The forward note names the specific items to hold back and how many days until the event.
Gap exclusions and Gmail scan date now saving correctly
Two Supabase profile columns -- gap_exclusions (dismissed AI Shopper suggestions) and last_gmail_scan (Gmail receipt scan date) -- were being referenced in code but silently dropped before reaching the database. Both are now in the safeKeys whitelist and the corresponding columns were added to the profiles table. AI Shopper dismissals now persist across sessions.
App UI mockups added to two content pages
/digital-wardrobe-app/ now has an inline closet grid mockup showing the wardrobe catalog. /cost-per-wear-calculator/ has a new CPW ranking mockup showing items ranked by cost-per-wear with color-coded value ratings. Both inlined as SVG to avoid CDN caching issues.
/wardrobe-paralysis/ meta description rewritten
The old description explained a feeling everyone already knows they have. The new one leads with data ("You own 80 items and wear fewer than 20% of them") and reframes the problem more specifically -- better click signal at position 7.
Product Hunt launched
Scheduled for April 8. A promo code for first month of Pro free is live for launch day. First comment submitted. Gallery screenshots uploaded.
FIXIMPROVEMENT
Confirmed outfits now stick on login, tees blocked on smart casual weekdays, and the site got a significant content overhaul
Two Vera bugs that had been there a while, plus a large batch of content improvements across all articles.
"I'm wearing this" wasn't sticking after a reload
A race condition was causing the geolocation effect to fire before your confirmed outfit had finished loading from the database -- it would see an empty state, call buildOutfit, and overwrite whatever you'd confirmed. Fixed: the effect now waits for the profile load to fully complete before checking confirmed state.
Tomorrow's Look was showing tees on smart casual weekdays
Two problems: the tee filter's blocklist was too narrow (it caught "graphic tee" and "t-shirt" but missed items named things like "White Tee" or "Navy Tee"), and the threshold to activate the filter required at least two collared tops -- so if you only had one, tees came back anyway. Both fixed: blocklist broadened, threshold lowered to one collared top. The hardened prompt instruction now explicitly says plain t-shirts are not acceptable on smart casual weekdays.
Cached tee outfits now self-heal
Even after fixing the filter, a saved week plan in Supabase could still restore a bad outfit on login, bypassing the new filter entirely. When tomorrow's cached outfit contains a tee on a smart casual weekday, the cache entry is now wiped and a fresh build triggered automatically. One-time correction -- after that it saves a compliant outfit and never needs to do it again.
5 new articles added to the style guide hub
Small wardrobe, build an online wardrobe, what colors should I wear, AI outfit generator, and what to wear to a wedding were missing from /style-guide/. All added, numbered correctly (cards now run 1--23).
FEATURE
The Story -- share the piece, not just the photo
Most of the clothes people love most have a story. This feature lets you tell it.
Every closet item now has a story field
Open any item in your closet and you'll see a text field: "The story behind this piece." Where you got it, why you still have it, how long it's been in rotation. Optional, but it's what makes the shared page worth reading.
One tap to share
There's a share icon in the corner of every photo in your closet. Tap it and DRESSED generates a public page at trydressed.com/closet/[your-item-slug] and opens the native share sheet. No extra steps.
The public page shows everything worth knowing
The photo, name, brand, colors, cost per wear, and your story. Plus a link to find something similar in the AI Shopper.
Make it private any time
Open the item in edit mode and tap "Make private." The page disappears immediately.
FIXIMPROVEMENTFEATURE
Vera got smarter, the closet got easier to use, and a bunch of things that were silently broken got fixed
Long session today. A lot of it was Vera quality -- she was making outfit mistakes that any stylish person would catch, and she was ignoring your dress code on weekdays despite the setting existing. Also fixed a closet bug that was eating shirts you tried to add.
Vera now knows how clothes actually layer
She had the philosophy of good style but not the practical knowledge. She now knows that western shirts and flannels go over a tee, not over a knit. That quarter-zips need a base layer. That a blazer over a band tee is intentional but a blazer over a wrinkled henley is just a mistake. This is baked into her identity, not a list of rules she can ignore.
Vera now knows what embarrasses people
Brown shoes with a black belt. Double denim in matching washes. Short sleeve dress shirts at anything formal. Cargo shorts with anything elevated. Graphic tees with dress trousers. She knows these things look bad and won't suggest them.
Vera now prioritizes clothes you haven't worn
She was anchoring on the same 5-6 familiar pieces every day. The closet list she sees is now weighted toward items worn 0-2 times, with heavily worn items appearing last. She also has an explicit instruction that high wear count means look elsewhere first.
Weekday dress code tee filter was using today's day for tomorrow
When it was Sunday, the filter thought tomorrow was also Sunday and skipped dress code enforcement entirely. Fixed -- Tomorrow's Look now correctly checks Monday's dress code, not Sunday's.
Plan My Week now stays consistent with Tomorrow's Look
If Tomorrow's Look already had an outfit, Plan My Week was rebuilding Monday from scratch and showing something different. Now it uses whatever Tomorrow's Look already picked for the first day, keeping Vera's recommendations consistent across views.
Thumbs down added to Plan My Week
You can now tap 👎 on any day in the week plan, type what's wrong, and Vera saves it as a permanent style rule and reshuffles that day. It was only available on Today's Look before.
Adding duplicate shirts no longer silently eats them
When you tried to add multiple shirts Vera flagged as similar, they were getting silently deleted -- either by the duplicate check in the add flow, or by a startup routine that removed same-name items on login. Both are fixed. The duplicate warning now shows an editable name field directly in the card so you can rename the item before adding. The startup dedup now only removes items that are truly identical (same photo URL), not items that happen to share a name.
Add Anyway actually works now
Previously tapping Add Anyway ran another duplicate check that blocked the item anyway. Fixed -- Add Anyway bypasses all duplicate checks.
Photo identification was failing with an API error
The app was calling a model string that doesn't exist. Fixed -- now using the correct model.
No more 30 seconds of silence after scanning a photo
The spinner now stays visible through the full identification and duplicate check process. The status text explains what's happening: analyzing photo, checking for duplicates, saving.
Sticky + Add Item button at the bottom of the closet on mobile
Previously you had to scroll all the way back to the top to add another item. Now there's a gold button that follows you as you scroll.
JSON-LD schema fix on /weekly-outfit-planner/
A raw HTML link inside a FAQ schema block was causing a Google Search Console parsing error. Fixed -- the link was removed from the schema.
Deploy pipeline fixed
The deploy script wasn't pulling the latest code from GitHub before deploying, which meant many fixes were going live hours late or not at all. The script now clones fresh from GitHub on every run.
FIXIMPROVEMENTFEATURE
Vera was ignoring your dress code, the demo was broken, and the homepage got a lot faster
A long session fixing things that were silently wrong. Some of these bugs have been there since launch -- Vera was reading your dress code preference from the wrong place in the database, which means she was ignoring it entirely. Here's everything that changed.
Dress code was being read from the wrong field
weekdayDressCode lives at profile.fitProfile.weekdayDressCode, not profile.weekdayDressCode. Vera was silently falling back to business casual for everyone regardless of what you'd set. Fixed across all five outfit builders.
Dress code wasn't saving after logout
The fit_profile column didn't exist in Supabase. Every save was failing silently and the setting was gone on next login. Column added, saving works now.
Weekday dress code now enforced in code
Previously it was just a prompt instruction -- Vera could ignore it. Quarter-zips, hoodies, and fleeces are now filtered from the available pool on weekdays when dress code is Smart Casual or above, as long as other mid-layer options exist.
Dress code card added to Style Profile
It was only available during onboarding before. You can now update it any time from Settings → Style Profile, and the selected option highlights clearly when saved.
Shoe formality was missing from the main daily builder
enforceShoeFormality was already running in Plan My Week, Tomorrow's Look, and Surprise Me -- but not in the core buildOutfit function that runs every morning. Dress shoes could still appear with casual outfits. Fixed.
Quarter-zip layering enforcement added to all builders
Quarter-zips and mock necks now always get a collared shirt underneath. If Vera picks a quarter-zip without one, the tee gets swapped for the least-worn collared shirt in your closet.
"Not Today" now accumulates rejections properly
Tapping Not Today multiple times in a session now blocks all previously rejected items -- Vera can't serve an outfit containing anything you've already said no to until you confirm something.
Three outfit builders were crashing the app
Day-of-week logic was embedded inside string literals, which Babel can't handle. The app was failing silently for all users on those builders. Pre-computed as named variables and fixed.
Demo was showing your real closet
If you were logged in and visited the demo, you'd see your own wardrobe instead of the sample one. The demo now bypasses auth entirely -- it always shows Alex's synthetic closet regardless of login state, with mock calendar events, real outfit photos, and CTAs to sign up.
Swipe cards in Style Profile now show real clothing photos
The swipe discovery feature was using emoji placeholders. It now shows actual product photography (Ideogram-generated flat lays) for each item.
Homepage performance: 78 → 99 on mobile PageSpeed
Self-hosted all fonts (no more Google Fonts round-trip), added direct woff2 preload for the LCP element, removed a non-composited shimmer animation, and deferred Google Analytics past first paint. FCP went from 3.0s to 0.9s.
Homepage accessibility: 95 → 100
Several low-contrast elements across the page and sidebar were below WCAG AA threshold. All fixed.
Sidebar "Try Free" button was going to the demo
It now goes to the app.
FEATUREIMPROVEMENTFIX
Mobile overhaul, light theme, and AI Shopper improvements
Spent the evening working through a full mobile audit and a design pass on the content pages. A lot changed. Here's what's different.
Light theme on all content pages
The dark background was too hard to read -- especially on mobile in daylight. All articles, guides, and content pages are now on a warm white background with DM Sans body text. The app and homepage stay dark.
Hamburger menu on mobile
The sidebar navigation now collapses into a slide-in drawer on small screens. Tap ☰ to open, tap the overlay or ✕ to close. Desktop is unchanged.
Sticky nav on all pages
The DRESSED logo, hamburger, and Try Free button now stay locked to the top as you scroll on every page.
Horizontal scroll fixed
Something was making the page wider than the screen on mobile. Tracked it down and fixed it across all pages.
Font sizes bumped sitewide
Body text was running at 14--15px across most content pages -- below the readable threshold on mobile. Everything is now at 16px minimum, with article body text at 1.05rem/weight 300 for proper reading comfort.
AI Shopper is now seasonal
Vera was recommending heavy wool sweaters in late March. She now knows what season it is, what's coming next, and what the current temperature is before making shopping recommendations.
Women's products filtered from men's feed
Gender-ambiguous product titles (like "Everlane Cashmere Sweater") were slipping through with female models. The visual check is now stronger and every search term is prefixed with "mens" to prevent it upstream.
Shoe formality enforcement rewritten
The old version only caught formal shoes with shorts. The new version scores the entire outfit -- graphic tees, band tees, sweatshirts all signal casual. If the outfit is casual, wingtips stay in the closet.
Russ quote moved above the CTA
The testimonial was getting cut off below the fold on mobile. It now sits above the Sign in button where it belongs.
FIXIMPROVEMENT
A lot got fixed this morning
Launched publicly three days ago. Spent this morning before work finding and fixing things that were wrong. Here's the honest version of what happened and what I did about it.
Short sleeves in freezing weather
Vera was recommending short-sleeve shirts in 31-degree weather. Fixed -- short sleeves are now filtered out in code when it's under 55°F, regardless of what Vera thinks looks good.
The same 5 pieces every day
Vera kept suggesting the same 5 pieces even with 48 items in the closet. Fixed -- the closet list is now shuffled on every call so Vera doesn't anchor on the same items every time.
Plan My Week was only planning 4 days
Fixed -- it now plans all 7.
Tomorrow's look wasn't auto-populating
It should show up the same way Today's Look does -- without you having to ask. Fixed.
"Not Today" was only swapping shoes
It now demands a completely different look and removes the rejected items from Vera's available pool entirely.
Week plan was scheduling today's outfit for tomorrow
Fixed -- today's confirmed outfit is excluded before the week plan runs.
Dress shoes with shorts
I know. Fixed in code -- the app now detects formal shoes paired with casual bottoms and swaps the shoes automatically.
Shacket without a shirt underneath
Fixed -- any mid-layer or open layer without a base top now gets one injected automatically.
Today's look was auto-refreshing when weather data arrived
Then showing the same outfit. Fixed -- weather arriving no longer overwrites an outfit that's already been built.
Removed some hardcoded preferences
Some hardcoded style preferences were affecting every user's experience. None of that should have been in there. Removed.
Streak counter in the top bar
Replaces the redundant weather display since weather now shows on both outfit cards.
Confirmation modal after tapping WEARING THIS
Reassurance that the outfit is logged, with an optional photo prompt instead of a mandatory file picker.
LAUNCH
DRESSED is live
Built this over two weeks of nights and weekends. The pitch is simple: you shouldn't have to think about getting dressed. Add your clothes once, and every morning Vera builds you an outfit based on the weather, your calendar, what's clean, and what she knows about your style.
It's free to try. No credit card. Sign in with Google. Pro is $8/month and unlocks Plan My Week, Pack a Trip, and unlimited daily looks.
GET IN TOUCH
Something's broken? Feature you want? Something Vera did that made you laugh or made you
look bad? Email feedback@trydressed.com.
I read every one.