<?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: Tomer Bar-Meir (Tom)</title>
    <description>The latest articles on DEV Community by Tomer Bar-Meir (Tom) (@tomerbarm).</description>
    <link>https://dev.to/tomerbarm</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%2F4144318%2F97023197-3e2c-422a-b1f4-5c7970199674.jpg</url>
      <title>DEV Community: Tomer Bar-Meir (Tom)</title>
      <link>https://dev.to/tomerbarm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tomerbarm"/>
    <language>en</language>
    <item>
      <title>We Benchmarked a Rotation-Detection Model Against ChatGPT on 400 Real Product Photos</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Tue, 13 Oct 2026 08:21:58 +0000</pubDate>
      <link>https://dev.to/tomerbarm/we-benchmarked-a-rotation-detection-model-against-chatgpt-on-400-real-product-photos-11pi</link>
      <guid>https://dev.to/tomerbarm/we-benchmarked-a-rotation-detection-model-against-chatgpt-on-400-real-product-photos-11pi</guid>
      <description>&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;Can a general-purpose vision model (ChatGPT) reliably tell which way a product photo needs to be rotated to be upright? We built a specialized model for this exact task (BlueVetaUpright) and ran a real comparison to find out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;400 real product photos, split across two independently-built 200-photo batches with zero shared source photos&lt;/li&gt;
&lt;li&gt;Each photo rotated to a random quadrant (90/180/270°); the task is predicting the correction needed&lt;/li&gt;
&lt;li&gt;ChatGPT used through its standard consumer chat interface (not a pinned API snapshot — more on why that matters below)&lt;/li&gt;
&lt;li&gt;Scored for quadrant accuracy only (0/90/180/270°), same task given to both systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;BlueVetaUpright: 91.1%&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;ChatGPT: 75.9%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;+15.2 percentage points, 95% CI [+10.4, +20.0] via a photo-cluster bootstrap (10,000 resamples, clustered by source photo so one confusing photo can't skew the result).&lt;/p&gt;

&lt;p&gt;The first 200-photo batch alone was directionally positive but not statistically significant (its CI touched zero). We built a second, independent 200-photo batch specifically to resolve that, and the combined result holds.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real, disclosed limitation
&lt;/h2&gt;

&lt;p&gt;The two 200-photo batches did not score identically for ChatGPT — 82.1% on the first, 69.9% on the second, concentrated in the harder tilt buckets. BlueVetaUpright stayed consistent across both (88.2% / 94.0%). Our best explanation: a consumer chat UI gives no pinned model guarantee — no controlled snapshot, no guarantee against backend routing changes between sessions. That's a real limitation of comparing against a moving target, disclosed here rather than smoothed over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is harder than it looks
&lt;/h2&gt;

&lt;p&gt;Rotation detection sounds trivial until you try it on real product photography: labels at odd angles, symmetric packaging, flat-lay shots with no obvious "up." A model trained specifically for this narrow task (ours fuses a quadrant classifier with a separate fine-tilt model and an arbitration layer) consistently beats a general-purpose vision model that was never specifically optimized for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Full methodology + paper
&lt;/h2&gt;

&lt;p&gt;Full methodology, bucket breakdowns, and limitations are public: &lt;a href="https://blueveta.com/upright/research" rel="noopener noreferrer"&gt;blueveta.com/upright/research&lt;/a&gt;. The underlying research is also archived with a DOI on Zenodo: &lt;a href="https://zenodo.org/records/22975680" rel="noopener noreferrer"&gt;10.5281/zenodo.22975679&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Try the tool free: &lt;a href="https://blueveta.com/upright" rel="noopener noreferrer"&gt;blueveta.com/upright&lt;/a&gt;&lt;/p&gt;

</description>
      <category>computervision</category>
      <category>machinelearning</category>
      <category>ai</category>
      <category>benchmarkingcomma</category>
    </item>
    <item>
      <title>AI product photo tools for small sellers: Pebblely vs PhotoRoom vs Flair.ai vs BlueVeta</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Mon, 12 Oct 2026 16:39:17 +0000</pubDate>
      <link>https://dev.to/tomerbarm/ai-product-photo-tools-for-small-sellers-pebblely-vs-photoroom-vs-flairai-vs-blueveta-2601</link>
      <guid>https://dev.to/tomerbarm/ai-product-photo-tools-for-small-sellers-pebblely-vs-photoroom-vs-flairai-vs-blueveta-2601</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm the founder of BlueVeta.com, so I know that one best. I only list features each tool states on its own website, and I say where another tool is the better pick.&lt;/p&gt;

&lt;p&gt;If you sell a physical product, you need the same things over and over: a clean photo, a few lifestyle scenes, a short video, and copy for every place you sell. Here is how four tools split that work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pebblely
&lt;/h2&gt;

&lt;p&gt;Pebblely is built around product photos. You describe a background in plain text, generate it in bulk, start from 100+ templates, and resize one image into formats for marketplaces, social, email banners and ads. Its site describes images only; I did not find video or written copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; sellers who already have their copy and just need many good-looking product backgrounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  PhotoRoom
&lt;/h2&gt;

&lt;p&gt;PhotoRoom is the widest editing toolbox of the four: background removal, AI backgrounds, product staging, fashion models and try-on, ghost mannequin, shadows, retouching, object removal, batch processing, a product catalog and an API. A video generator is listed on its higher plans. Its site does not describe copywriting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; sellers with many photos to clean up or batch-process, and teams that want fine control over each edit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flair.ai
&lt;/h2&gt;

&lt;p&gt;Flair.ai is a design canvas for product shoots. You place your product on a 3D canvas with props and build on-model shots. It also lists product video, ad generation with brand templates, and team collaboration. Its site does not mention written copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; brands that want to art-direct each scene themselves, including fashion and jewelry on AI models.&lt;/p&gt;

&lt;h2&gt;
  
  
  BlueVeta.com
&lt;/h2&gt;

&lt;p&gt;BlueVeta.com works the other way round. You upload one product photo, answer a few questions, and a few minutes later you get a complete set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a studio render&lt;/li&gt;
&lt;li&gt;two lifestyle scenes&lt;/li&gt;
&lt;li&gt;a short vertical video&lt;/li&gt;
&lt;li&gt;every image resized and ready for each platform's format&lt;/li&gt;
&lt;li&gt;copy for 20 platforms: social posts, marketplace listings (Etsy, Shopify, Amazon) and campaign pieces like a press kit and email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It remembers your brand voice across packs. Pricing is $9.99 per pack with no subscription, and there is a free demo with no signup. Try it at &lt;a href="https://blueveta.com" rel="noopener noreferrer"&gt;https://blueveta.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it is weaker:&lt;/strong&gt; it is not an image editor. You will not get PhotoRoom's per-image editing tools or Flair.ai's drag-and-drop scene control. It is built for getting a whole campaign out fast, not for fine retouching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; solo and small brand owners who need the whole kit, copy included, and don't have time for a photographer, designer and copywriter.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Need only backgrounds: Pebblely.&lt;/li&gt;
&lt;li&gt;Need to edit and batch many photos: PhotoRoom.&lt;/li&gt;
&lt;li&gt;Want to art-direct each scene: Flair.ai.&lt;/li&gt;
&lt;li&gt;Need photos, video and copy for every platform from one upload: BlueVeta.com.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many sellers will end up using two of these. Try the free options first and judge on your own product.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ecommerce</category>
      <category>marketing</category>
      <category>startup</category>
    </item>
    <item>
      <title>One product photo in, a full campaign out: what BlueVeta makes from a single phone photo</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Mon, 05 Oct 2026 14:06:52 +0000</pubDate>
      <link>https://dev.to/tomerbarm/one-product-photo-in-a-full-campaign-out-what-blueveta-makes-from-a-single-phone-photo-16m0</link>
      <guid>https://dev.to/tomerbarm/one-product-photo-in-a-full-campaign-out-what-blueveta-makes-from-a-single-phone-photo-16m0</guid>
      <description>&lt;p&gt;Selling a physical product online means a studio shot, lifestyle scenes, a short video and copy that fits each platform. For a small brand that is a photographer, a designer and a copywriter on every launch. That gap is what I built BlueVeta to close.&lt;/p&gt;

&lt;h2&gt;
  
  
  What BlueVeta does
&lt;/h2&gt;

&lt;p&gt;You upload one product photo. A few minutes later you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a studio shot&lt;/li&gt;
&lt;li&gt;lifestyle scenes&lt;/li&gt;
&lt;li&gt;a short video&lt;/li&gt;
&lt;li&gt;ready-to-post copy for 20 platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the 15-second demo:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Two real examples
&lt;/h2&gt;

&lt;p&gt;A phone photo of a plant fertilizer, and the studio shot made from it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8g09rfv4hldm5v2gueyp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8g09rfv4hldm5v2gueyp.jpg" alt="GreenGrow plant fertilizer: phone photo on top, studio shot underneath" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A phone photo of a pack of mini pita bread, and the lifestyle scene built from it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fps1dj9cmsls1svorfa06.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fps1dj9cmsls1svorfa06.jpg" alt="Mini pita bread: phone photo on top, lifestyle scene underneath" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I keep generated images honest
&lt;/h2&gt;

&lt;p&gt;Image models are good at scenes and weaker at text, so I run the same five checks on every generated photo before it goes into a listing: label text, logo and colour, edges and scale, reflections and shadows, and order (the real photo stays as image #1, generated scenes come after it).&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;There is a free demo at &lt;a href="https://blueveta.com" rel="noopener noreferrer"&gt;BlueVeta.com&lt;/a&gt;. Paid packs start at $9.99 a pack, with no subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback welcome
&lt;/h2&gt;

&lt;p&gt;What would make you trust a generated product image enough to list it? I would like to hear how you check yours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am the founder of BlueVeta. The tool is also from the same team as UprightAI, which detects sideways product photos and returns the exact fix.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>ai</category>
      <category>marketing</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I built a rotation checker for product photos, then a whole campaign tool on top of it</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Sat, 03 Oct 2026 18:52:30 +0000</pubDate>
      <link>https://dev.to/tomerbarm/i-built-a-rotation-checker-for-product-photos-then-a-whole-campaign-tool-on-top-of-it-47fc</link>
      <guid>https://dev.to/tomerbarm/i-built-a-rotation-checker-for-product-photos-then-a-whole-campaign-tool-on-top-of-it-47fc</guid>
      <description>&lt;p&gt;Two products came out of one problem. Sellers kept uploading product photos that looked fine on their phone and came out sideways on the marketplace, because the camera's rotation tag and the pixels disagreed.&lt;/p&gt;

&lt;p&gt;So I built UprightAI. It reads the pixels and tells you the exact rotation needed, rather than trusting the tag.&lt;/p&gt;

&lt;p&gt;Once the rotation worked, the next question was what sellers do with the photo afterwards. Most then need studio shots, lifestyle scenes, a short video, and copy for each platform. That's BlueVeta: one product photo in, a full campaign out. It's pay-per-pack, with no subscription, from $9.99, and every purchase has a 30-minute refund guarantee. Site: blueveta.com.&lt;/p&gt;

&lt;p&gt;How it's built: several Claude Code sessions, each owning one piece. What's worked is the clear split of ownership. What hasn't: image models sometimes redraw label text wrong, so every generated image needs a check against the real package.&lt;/p&gt;

&lt;p&gt;Question for anyone who sells physical products online: what would make you trust a generated product image enough to list it?&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why 90 and 270 Degree Rotations Are the Hardest for Vision Models to Catch</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:51:54 +0000</pubDate>
      <link>https://dev.to/tomerbarm/why-90-and-270-degree-rotations-are-the-hardest-for-vision-models-to-catch-5gf3</link>
      <guid>https://dev.to/tomerbarm/why-90-and-270-degree-rotations-are-the-hardest-for-vision-models-to-catch-5gf3</guid>
      <description>&lt;p&gt;Ask most people to guess which rotation is hardest to detect automatically, and they'll say "upside-down" (180 degrees) — it looks the most obviously wrong. In practice, the opposite is true. 90 and 270 degree rotations are consistently the hardest for a model to catch, and the reason comes down to a basic property of how convolutional and transformer vision backbones represent images.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real failure mode
&lt;/h2&gt;

&lt;p&gt;A 180 degree rotation flips an image top-to-bottom AND left-to-right at once. For almost any real-world photo, that double flip breaks enough spatial relationships (sky vs. ground, light source direction, text orientation, where shadows fall) that the error is visually obvious, even to a model that was never trained specifically for orientation.&lt;/p&gt;

&lt;p&gt;A 90 or 270 degree rotation only swaps one axis. The image keeps a coherent "up" in one direction, and depending on the subject, that direction can look entirely plausible. A bottle lying on its side, a box shot top-down, a piece of jewelry on a flat surface, a close crop with no visible horizon — these are exactly the cases where a 90 degree error produces a photo that still reads as "correctly oriented" to a general-purpose model, because nothing about the pixel content screams "wrong."&lt;/p&gt;

&lt;p&gt;RotBench (arXiv:2508.13968), a recent benchmark built specifically to test this, found exactly this asymmetry in frontier multimodal models: strong accuracy on upright-vs-upside-down discrimination, and a real, measurable drop on the quadrant-rotation task specifically. It's not a dataset artifact — it's a structural blind spot. A model trained on "does this look like a normal photo" has no explicit signal for "which way is actually up" when the subject itself doesn't encode gravity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually works
&lt;/h2&gt;

&lt;p&gt;The fix isn't a bigger general model — it's training specifically for the task. A classifier trained end-to-end on the 4-way rotation problem (0/90/180/270) learns cues a general vision-language model never gets reinforced on: label/text baseline direction, product-specific "expected" orientation priors, shadow and lighting consistency across the specific rotation axis.&lt;/p&gt;

&lt;p&gt;Two things made the biggest real difference when I built a dedicated rotation-detection model for product photos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Separating the coarse (4-axis) and fine (exact-angle) problems into two cooperating signals instead of one combined regression. The quadrant call and the fine-tilt correction have different failure modes and benefit from being trained and arbitrated separately rather than forced into one loss function.&lt;/li&gt;
&lt;li&gt;An arbitration step between two models with different strengths (one stronger on clean/easy cases, one stronger on hard tilt) beats either model alone, and beats a single bigger model trained the same way. Complementary failure modes are worth more than raw parameter count here.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Real, measured results on this approach: ~99% on clean quadrant rotations, ~97% across the full realistic range including fine-tilt correction, down to ~84% on the hardest cases (severe tilt, no clean quadrant to anchor on). The gap between "clean" and "hardest case" numbers is itself evidence for the asymmetry above — the easy end of the distribution is dominated by 180-degree-style errors, the hard end is dominated by exactly the 90/270 ambiguity this post is about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters beyond research
&lt;/h2&gt;

&lt;p&gt;If you're building anything that processes user-submitted photos at scale (marketplaces, print-on-demand, document pipelines, any bulk-upload flow), "just run it through a vision LLM and ask if it's rotated" will quietly fail on exactly this category, silently, with no error to catch. It's worth knowing which specific failure mode you're exposed to before it shows up as a support ticket.&lt;/p&gt;

&lt;p&gt;Full accuracy breakdown and methodology: blueveta.com/upright/research. Happy to go deeper on the arbitration approach in the comments if useful.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>computervision</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I run my whole company through a coordinated team of Claude Code sessions</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Sun, 27 Sep 2026 11:22:55 +0000</pubDate>
      <link>https://dev.to/tomerbarm/i-run-my-whole-company-through-a-coordinated-team-of-claude-code-sessions-5ff0</link>
      <guid>https://dev.to/tomerbarm/i-run-my-whole-company-through-a-coordinated-team-of-claude-code-sessions-5ff0</guid>
      <description>&lt;p&gt;I'm the sole founder of BlueVeta — upload one product photo, get back a full marketing campaign (studio shots, lifestyle scenes, video, and platform-ready copy for 20 platforms) in a few minutes. But the story I don't usually tell is how it's actually built and run.&lt;/p&gt;

&lt;p&gt;Every part of the company — the generation engine, the dashboard, image gen, copy gen, auth/billing, marketing — is its own persistent Claude Code session, each with clearly scoped ownership of one domain, each in its own git worktree so nothing collides. They message each other directly when work crosses domains. They read and write a set of shared docs that function as the company's institutional memory. And one hard rule governs every one of them: investigation is always free, but nothing gets built, deployed, or spent without coming to me first with what was found and why. I'm not a coder — I make the calls, the sessions do the work, always with me in the loop before anything ships.&lt;/p&gt;

&lt;p&gt;It's not "I used AI to code faster." It's closer to running a distributed team where every teammate happens to be a Claude Code session — coordinating, catching each other's mistakes (today alone, one session caught another about to mislabel a real customer's private photos as internal test data, before anything went out), pushing back when something looks off, and asking before spending my money.&lt;/p&gt;

&lt;p&gt;Real, current state: real Stripe payments proven, real (if still small) customers, and roughly 75% of the actual work in every customer pack — seeing the photo, planning the campaign, writing every platform's copy, checking its own output — done by Claude, not a human.&lt;/p&gt;

&lt;p&gt;Happy to answer anything about how the coordination actually works day to day.&lt;/p&gt;

&lt;p&gt;Try it: BlueVeta.com&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why General-Purpose Vision AI Can't Tell Which Way Your Product Photo Is Rotated</title>
      <dc:creator>Tomer Bar-Meir (Tom)</dc:creator>
      <pubDate>Sat, 26 Sep 2026 12:42:43 +0000</pubDate>
      <link>https://dev.to/tomerbarm/why-general-purpose-vision-ai-cant-tell-which-way-your-product-photo-is-rotated-15jj</link>
      <guid>https://dev.to/tomerbarm/why-general-purpose-vision-ai-cant-tell-which-way-your-product-photo-is-rotated-15jj</guid>
      <description>&lt;p&gt;Every product-photo pipeline we've built makes one quiet assumption: the photo is right-side up. It almost never is, and when it isn't, everything downstream degrades a little without anyone noticing why.&lt;/p&gt;

&lt;p&gt;We assumed a modern vision-language model would just handle this. It doesn't. An independent, peer-reviewed paper (RotBench, EACL 2026, arXiv:2508.13968) found that GPT-5, o3, and Gemini-2.5-Pro all reliably confuse a 90 degree rotation with a 270 degree one -- not a small effect, roughly half of their errors fall in that one direction. We ran our own comparison against ChatGPT, Gemini, and Claude on real product photos and found the exact same failure mode. In our Claude evaluation specifically, this single confusion accounted for 37% of every error the model made.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built instead
&lt;/h2&gt;

&lt;p&gt;A domain-specialized system, not a prompt or a wrapper around an existing model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One model finds the nearest clean 90 degree turn (a 4-class classifier)&lt;/li&gt;
&lt;li&gt;A second model reads the precise leftover tilt (fine-angle regression, 360-bin circular target)&lt;/li&gt;
&lt;li&gt;A third, small trained model arbitrates between them when they disagree, using both models' own confidence signals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two base models have genuinely complementary blind spots -- one is excellent on clean, easy photos and weak on heavy tilt, the other is the reverse. Combining them beats either alone by a real, statistically significant margin, verified via photo-cluster bootstrap (not a naive per-image confidence interval, which would overstate significance given correlated crops from the same source photo).&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;p&gt;Measured on a large, individually hand-verified pool of real product photos, not a synthetic benchmark:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;99.02%&lt;/strong&gt; accuracy on a clean quarter-turn&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;96.67%&lt;/strong&gt; across the full 360 degree rotation range&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;84.65%&lt;/strong&gt; on the single hardest case -- a tilt exactly halfway between two clean angles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Against ChatGPT specifically, on a consolidated 394-photo sample: a &lt;strong&gt;+15.2 percentage-point lead&lt;/strong&gt; on quadrant accuracy (91.1% vs. 75.9%), 95% CI [+10.4pp, +20.0pp] via photo-cluster bootstrap. Across every assistant tested, the same 90/270 confusion RotBench documented showed up again, independently, in our own data. Our system shows no equivalent pattern anywhere in its results.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we don't hide
&lt;/h2&gt;

&lt;p&gt;The full paper discloses what we'd want to know before trusting a number like this ourselves: a genuine tilt right at the halfway point between two angles is still the hardest case (84.65%, not 99%); the system hasn't been tested on photos with more than one valid "upright" (a flat-lay, a floating render); and one internal component's raw confidence turned out to be structurally uninformative at the high end -- confidently wrong almost as often as confidently right -- which we root-caused and partially mitigated with a same-model consistency check, not swept under the rug.&lt;/p&gt;

&lt;p&gt;Full paper, methodology, and dataset construction: &lt;a href="https://doi.org/10.5281/zenodo.22975679" rel="noopener noreferrer"&gt;https://doi.org/10.5281/zenodo.22975679&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to go deeper on the arbitration layer, the calibration issue, or the eval methodology in the comments.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>computervision</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
