[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"home-work":3},[4,92,156],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":8,"client":10,"year":11,"role":12,"summary":13,"result":14,"tech":15,"featured":20,"order":21,"cover":22,"body":23,"_type":86,"_id":87,"_source":88,"_file":89,"_stem":90,"_extension":91},"\u002Fwork\u002Fatlas-home","work",false,"","A storefront that finally sold after hours","Atlas Home",2025,"Website + storefront","Atlas had a beautiful shop and a website that leaked customers at checkout. We rebuilt the storefront around the way they actually sell.","38% more completed checkouts in 90 days",[16,17,18,19],"Nuxt","Stripe","Tailwind","TypeScript",true,1,"atlas",{"type":24,"children":25,"toc":79},"root",[26,35,41,46,52,57,63,68,74],{"type":27,"tag":28,"props":29,"children":31},"element","h2",{"id":30},"the-problem",[32],{"type":33,"value":34},"text","The problem",{"type":27,"tag":36,"props":37,"children":38},"p",{},[39],{"type":33,"value":40},"Atlas Home makes furniture people fly in to see. Online, the story fell apart. Product pages were slow, the cart felt like a different company, and mobile shoppers bounced before they could picture the piece in a room.",{"type":27,"tag":36,"props":42,"children":43},{},[44],{"type":33,"value":45},"They didn’t need more pages. They needed a store that behaved like the showroom: calm, specific, and easy to buy from.",{"type":27,"tag":28,"props":47,"children":49},{"id":48},"the-approach",[50],{"type":33,"value":51},"The approach",{"type":27,"tag":36,"props":53,"children":54},{},[55],{"type":33,"value":56},"We sat on the sales floor for a day. We wrote down the questions staff actually answer — lead time, fabric, delivery radius — and made those first-class on every product. Then we stripped the template chrome and designed a path from photograph to checkout that a tired thumb could finish.",{"type":27,"tag":28,"props":58,"children":60},{"id":59},"the-solution",[61],{"type":33,"value":62},"The solution",{"type":27,"tag":36,"props":64,"children":65},{},[66],{"type":33,"value":67},"A Nuxt storefront with honest photography, tight copy, and a Stripe checkout that doesn’t dump people into a generic form. Filters that match how customers think (“for a small dining room”), not how a PIM is structured. A quiet content system so the team can add a new collection without calling us.",{"type":27,"tag":28,"props":69,"children":71},{"id":70},"the-result",[72],{"type":33,"value":73},"The result",{"type":27,"tag":36,"props":75,"children":76},{},[77],{"type":33,"value":78},"Checkout completions rose 38% in the first 90 days. Support tickets about “where’s my order \u002F does this come in oak” dropped, because the site finally said it. Atlas stopped treating the website as a brochure and started treating it as a second showroom.",{"title":8,"searchDepth":80,"depth":80,"links":81},2,[82,83,84,85],{"id":30,"depth":80,"text":34},{"id":48,"depth":80,"text":51},{"id":59,"depth":80,"text":62},{"id":70,"depth":80,"text":73},"markdown","content:work:atlas-home.md","content","work\u002Fatlas-home.md","work\u002Fatlas-home","md",{"_path":93,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":94,"description":8,"client":95,"year":11,"role":96,"summary":97,"result":98,"tech":99,"featured":20,"order":80,"cover":103,"body":104,"_type":86,"_id":153,"_source":88,"_file":154,"_stem":155,"_extension":91},"\u002Fwork\u002Fharbor-freight","The ops tool that retired the spreadsheet","Harbor Freight Co.","Web app","A regional freight shop was running the week from a shared workbook and a group chat. We built the board they already had in their heads.","Dispatch time cut from hours to a morning pass",[100,101,102,19],"Vue","NestJS","PostgreSQL","harbor",{"type":24,"children":105,"toc":147},[106,110,115,120,124,129,133,138,142],{"type":27,"tag":28,"props":107,"children":108},{"id":30},[109],{"type":33,"value":34},{"type":27,"tag":36,"props":111,"children":112},{},[113],{"type":33,"value":114},"Harbor moved freight well. The office did not. Jobs lived in a spreadsheet, driver notes lived in WhatsApp, and by Thursday nobody trusted the numbers. The owner was the integration layer.",{"type":27,"tag":36,"props":116,"children":117},{},[118],{"type":33,"value":119},"They didn’t want a “logistics platform.” They wanted Thursday to stop being a fire.",{"type":27,"tag":28,"props":121,"children":122},{"id":48},[123],{"type":33,"value":51},{"type":27,"tag":36,"props":125,"children":126},{},[127],{"type":33,"value":128},"We mapped one real week — every status change, every phone call, every “just put it in the sheet.” Then we designed a board that matched their language, not a SaaS glossary. Drivers got a simple view. Dispatch got the truth.",{"type":27,"tag":28,"props":130,"children":131},{"id":59},[132],{"type":33,"value":62},{"type":27,"tag":36,"props":134,"children":135},{},[136],{"type":33,"value":137},"A Vue and NestJS app: jobs, drivers, customers, and a live board with permissions that match the room. Exceptions are loud. The happy path is quiet. We migrated the old workbook in slices so the team never ran two systems for long.",{"type":27,"tag":28,"props":139,"children":140},{"id":70},[141],{"type":33,"value":73},{"type":27,"tag":36,"props":143,"children":144},{},[145],{"type":33,"value":146},"Dispatch is a morning pass, not an afternoon scavenger hunt. The owner still checks the board. They don’t have to rebuild it from memory. Harbor’s words: “We came in with a messy ops spreadsheet and left with a tool the whole team actually opens.”",{"title":8,"searchDepth":80,"depth":80,"links":148},[149,150,151,152],{"id":30,"depth":80,"text":34},{"id":48,"depth":80,"text":51},{"id":59,"depth":80,"text":62},{"id":70,"depth":80,"text":73},"content:work:harbor-freight.md","work\u002Fharbor-freight.md","work\u002Fharbor-freight",{"_path":157,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":158,"description":8,"client":159,"year":160,"role":161,"summary":162,"result":163,"tech":164,"featured":20,"order":165,"cover":166,"body":167,"_type":86,"_id":211,"_source":88,"_file":212,"_stem":213,"_extension":91},"\u002Fwork\u002Fnorthline","An MVP customers understood on day one","Northline",2024,"SaaS product","Northline had a sharp idea for usage-based analytics and a feature list that would have taken a year. We shipped the wedge.","Paid pilots in week six",[16,101,19,102],3,"northline",{"type":24,"children":168,"toc":205},[169,173,178,182,187,191,196,200],{"type":27,"tag":28,"props":170,"children":171},{"id":30},[172],{"type":33,"value":34},{"type":27,"tag":36,"props":174,"children":175},{},[176],{"type":33,"value":177},"Northline’s founders could demo the vision in a notebook. In software, it was a pile of dashboards nobody would pay for yet. They needed a first version a specific buyer could use without a guided tour — and they needed it before the runway got interesting.",{"type":27,"tag":28,"props":179,"children":180},{"id":48},[181],{"type":33,"value":51},{"type":27,"tag":36,"props":183,"children":184},{},[185],{"type":33,"value":186},"We killed half the roadmap in the first workshop. The product became one job: show a team where their usage is leaking money, in a view a CFO can forward. Everything else went on a dated list.",{"type":27,"tag":28,"props":188,"children":189},{"id":59},[190],{"type":33,"value":62},{"type":27,"tag":36,"props":192,"children":193},{},[194],{"type":33,"value":195},"A Nuxt app with a NestJS API, auth, a billing hook, and three screens that do the job. Empty states that teach. Export that doesn’t feel like an afterthought. We left seams for the features they still want — without pretending those features were in v1.",{"type":27,"tag":28,"props":197,"children":198},{"id":70},[199],{"type":33,"value":73},{"type":27,"tag":36,"props":201,"children":202},{},[203],{"type":33,"value":204},"Northline ran paid pilots in week six. Customers described the product accurately in their own words, which is the only test that matters. The founders still have a long list. They also have revenue, and a codebase that can take the next slice without a rewrite.",{"title":8,"searchDepth":80,"depth":80,"links":206},[207,208,209,210],{"id":30,"depth":80,"text":34},{"id":48,"depth":80,"text":51},{"id":59,"depth":80,"text":62},{"id":70,"depth":80,"text":73},"content:work:northline.md","work\u002Fnorthline.md","work\u002Fnorthline",1789251914391]