why-i-built-frunklab
title: Why I built FrunkLab excerpt: I noticed Tesla shipped a feature most owners didn't know about, and a $3K market that didn't need to exist. Here's the founder story. tags: [founder, story]
I'm Jared. I own a Tesla, and sometime in late 2024 I noticed something in the in-dash UI that nobody around me had mentioned. The car's display could render a custom wrap image on the little Tesla illustration. You could upload a PNG and your car, in the display, would wear it.
That's it. That's the whole spark.
The $3,000 problem nobody was solving
Physical vinyl wraps run $3,000 to $8,000 depending on installer and material. People love them. They also live with them for years, scratch them on the curb, watch them fade, and pay again to remove them when they sell the car. It's a real product and a real market, and I don't want to pretend otherwise. If you want your Model 3 to actually be matte midnight green in the driveway, you need vinyl.
But the display wrap is a different product. It's the digital twin of your car that the car itself shows you every time you park it. It's the image other drivers don't see, but the one you see most. And as far as I could tell in 2025, nobody had built a real design surface for it. There were a few subreddit threads of people exporting PNGs from Photoshop and crossing their fingers. That was the state of the art.
The first version was bad
I started with a Fabric.js canvas, a top-down template I traced over from Tesla's wrap repo, and a save button. It worked, technically. You could drag a photo onto a Model 3 and download a 1024x1024 PNG. Then you'd plug a USB into the car, copy the file, and watch the in-dash illustration update.
The problem was the result usually looked terrible. Photo-heavy designs (a repeating Top Ramen package wrap, in one of my test runs) exported over 1MB and the car rejected the file outright. Anything with sharp text scaled weirdly because the template UV doesn't behave like a flat image. You'd put your logo on the hood and it'd come out smeared across the windshield.
The 2D editor wasn't the hard part. The hard part was making people believe a 2D template would look good on a 3D car.
The 3D preview broke me three times
I tried Sketchfab GLTF models first. They look fantastic. They also have UV coordinates designed for product renders, not wraps, which means your design lands in random splotches on random body panels. Useless.
Then I tried generating my own UVs procedurally with a directional-projection approach. The code was clever. The output was wrong. Wraps would flip on the passenger side. Text on the roof would render upside down on the trunk. I spent three weekends on this before admitting the math wasn't the problem; the source models were.
The fix was switching to OBJ/MTL Tesla models that ship with wrap-ready UV coordinates already mapped to the 2D template space. The mapping itself had a few quirks per variant that cost me a day to untangle, but once the source meshes were right, the 3D preview finally matched what people drew in 2D.
There are still vehicles I can't preview in 3D. Model S 2021, Model S 2025 Plaid, and Model X 2021 don't have good upstream OBJ models with usable wrap UVs. For those, you get a 2D-only flow. I'd rather ship the honest version than fake a 3D render on the wrong body.
AI generation took prompt tuning, not magic
The other half of the studio is AI wrap generation. You type "midnight forest with bioluminescent moss" and a few seconds later you have a wrap for your Model Y.
This sounds like the easy part. It wasn't. The models I tried first ignored the template entirely and gave me beautiful images that didn't respect the no-go zones (windows, lights, bumpers). I tested a handful of image models and ended up on Gemini 3.1 Flash Image Preview because it was the only one that consistently respected the black-mask conditioning at a price that made sense (~$0.067 per image, 4-6 second latency).
Even Gemini drifts. It paints into the no-go zones maybe 5-10% of the time. So we post-process every output: the black areas of the AI template get re-stamped pure black, pixel by pixel. The AI's creativity stays; the car's hard constraints stay. That post-processing step is load-bearing and I won't be removing it.
The mobile editor was the last thing I wanted to do
I'm a desktop person. The first three months of this project, the editor was desktop-only and I told myself mobile was "later." Then I started watching analytics and ~60% of traffic was phones.
Building a Fabric.js editor that works with touch, on a small screen, while showing a 1024x1024 template, was painful in a way I didn't expect. Multi-touch zoom fighting native browser zoom. The toolbox eating half the screen. Saving designs without blocking the UI on a name prompt. It took multiple iterations and I still consider it the weakest part of the product.
Why this exists
FrunkLab exists because Tesla shipped a small, weird feature and nobody built a real tool for it. That's the entire pitch. You can design unlimited digital wraps for less than the price of one physical wrap install, see them on your car immediately, and change them whenever you want. If you also want a vinyl wrap, get one; this isn't an either-or. But for $5 to $15 a month you can have a digital wardrobe for the car you already own.
What I learned
A few things, in no particular order. Tesla owners skew technical and notice details, which is great because they'll tell you exactly what's broken. Pre-trained 3D models are almost never good enough for a specific use case; you'll spend more time on the model pipeline than on the UI. AI image generation needs deterministic post-processing if you have hard constraints; never trust the model to "just listen." And mobile is not a checkbox, it's a separate product.
If you want to see what the community has been making, the gallery has the public designs. If you're trying to decide whether you actually want a digital wrap instead of a physical one, I wrote a comparison guide.
Otherwise, open the studio and make something.
Ready to design your own?
Open the studio