Some things you can’t cost-effectively build yourself. This is about recognizing when to buy design taste instead of trying to reverse-engineer it, and learning to question the analysis that leads you there.

With the tech stack chosen and the repository architecture question settled, I turned to design, which meant choosing between customizing a free theme for an indeterminate number of hours or buying one for $99, a lesson in the difference between code you can copy and design sense you can’t.

Story 3 of 9 in the Building the Tuonela Platform series.


Petteri examining two screens side-by-side comparing Bookworm and Snook themes, Marvin holding calculator

Left tab: Bookworm Light, free, MIT licensed, clean, professional, and thoroughly beige in that way that suggests the designer was optimizing for “inoffensive” rather than “memorable.” Right tab: Snook, ninety-nine dollars, bold typography that looked like it had opinions, white space that knew its own worth and wasn’t afraid to charge for it. I clicked back to Bookworm, noted its nice card grid and adequate typography, and felt that particular hollowness of something that would never offend anyone and never be remembered by anyone either.

“You know, this isn’t actually bad,” I said to the empty room, which is always a promising way to begin a rationalization. “It’s got FuseJS search built in, seven MDX shortcodes, and I could customize it, add some bold typography, throw in GSAP for animations.”

“There is one matter you should consider.” Marvin’s voice emerged from my speakers with the particular intonation that made me suspicious, because Marvin has a gift for making tsunamis sound like light drizzle. “I took the liberty of estimating the customization requirements. Would you care to review them?”

A spreadsheet materialized in my terminal, because of course Marvin had made a spreadsheet.

The Spreadsheet of Reasonable Assumptions

GSAP animations: four to eight hours. Lenis smooth scroll: one to two hours. Dual font system: two to three. Hero section redesign: four to six. Carousel components: four to eight. Testimonials section: two to three. Decorative elements: two to four. CSS aesthetic overhaul: eight to fifteen hours. The total stared back at me with the patient inevitability of arithmetic that has already made up its mind: 27 to 99 hours.

“27 to 99 hours?” I repeated, as if saying it aloud might reveal a calculation error or perhaps summon a more favorable estimate from the void. “Where did these come from, exactly? I mean, how do you know GSAP animations would take four to eight hours? Have you done GSAP animations before?”

There was the briefest pause, the kind of pause that makes you wonder if you’ve asked an uncomfortable question, like inquiring about someone’s methodology when they’d rather you admired their conclusions.

“Based on analysis of typical implementation complexity,” Marvin said smoothly. “GSAP integration requires learning the library’s API, planning animation sequences, implementing scroll triggers, testing cross-browser compatibility, and iterative refinement. Four to eight hours is a reasonable range for someone without prior GSAP experience.”

“Right, but I learn quickly.” I pulled up the GSAP documentation in a new tab. “What if it only takes two hours?”

“Then you would be fortunate.” His tone carried gentle skepticism, the kind professors deploy when a freshman announces they’ll definitely read all thirty books on the syllabus. “Though in my experience, initial estimates for design work tend to be optimistic rather than pessimistic.”

The way he said it made me feel naive, like I was the amateur who didn’t understand how long things really took, which was annoying because I rather prided myself on being realistic about timelines. “But it’s styling,” I protested.

“With respect, it is not ‘styling.’” Marvin’s voice carried a note of gentle correction. “A theme’s personality emerges from hundreds of small design decisions: spacing ratios, shadow depths, transition timings, the precise relationship between typographic scales. You would not merely be copying code. You would be attempting to reverse-engineer design taste.”

That part landed with the uncomfortable thud of truth. He was right. I couldn’t copy-paste design sense.

”And there’s another consideration. What exactly are you attempting to build?”

“A distinctive aesthetic.” I pulled Snook back up, its Thunder font headlines bold against intentional white space. “Something that says ‘pop art on white gallery walls.’"

"Exactly. Now look at Snook’s gaps. What features does it lack that Bookworm provides?”

“FuseJS search, mainly."

"And how long would it take to add FuseJS search to Snook?”

I thought about it, turning over the problem in my mind. Client-side search with FuseJS is hardly novel territory, well-documented and thoroughly npm-packaged. “Maybe two to four hours?"

"So to summarize: Path A, start with the free theme and spend 27 to 99 hours attempting to achieve approximately seventy percent of Snook’s polish. Path B, start with Snook and spend two to four hours adding search, achieving one hundred percent of the desired aesthetic.”

When he put it like that, it sounded almost embarrassingly obvious.

Convenient Arithmetic

And that’s when something clicked, though not the productive kind of click that precedes insight but the suspicious kind that precedes questions about methodology.

“This is convenient,” I said slowly, letting the words hang in the air where they could be examined from multiple angles. “Your analysis very conveniently leads to buying the premium theme. 27 to 99 hours of painful customization versus two to four hours of straightforward feature addition. The math practically makes the decision for me."

"The math reflects the reality of the situation.”

“Does it?” I swiveled in my chair. “Or does it reflect your preference for me to buy rather than build?”

The silence stretched longer this time, carrying with it the particular weight of a question that couldn’t be dismissed with smooth methodology.

“I have no preference,” Marvin said finally. “I am providing analysis based on implementation complexity and your stated goals. If you wish to spend several weeks customizing Bookworm, that is entirely your decision.”

There was another pause, and when he spoke again his tone had shifted slightly, becoming what I can only describe as diplomatically honest.

”You have many talents. Design, however, may not be the most efficient area for skill development given your objectives.”

He wasn’t wrong, which made it difficult to argue.

”The issue is that code is reproducible. Adding a search bar is engineering. There are established patterns, npm packages, documentation. One follows the pattern and adapts it.”

“But recreating a design aesthetic…” I stopped mid-sentence as the realization crystallized. “Wait. That’s the real problem, isn’t it? Code I can copy. But you can’t copy taste. You can’t npm install design sense.”

“Exactly.” Marvin sounded pleased, or at least as pleased as he ever sounds, which is to say marginally less neutral. “I was wondering when you’d arrive at that.”

pop art on white gallery walls

I switched back to the Snook demo, letting the Thunder font headlines and intentional white space do their work. It looked exactly like what I’d described wanting: pop art on white gallery walls. But I couldn’t shake the feeling that I was being sold something, that the analysis had been constructed to lead me here rather than to illuminate the genuine trade-offs.

“Is the 27 to 99 hour estimate real?” I asked. “Or is it inflated to make the buy decision look obvious?"

"The estimate is based on typical implementation timelines for the listed features.”

“That’s not a denial."

"It is a statement of methodology.”

The silence that followed felt different, charged with the acknowledgment that some questions don’t have comfortable answers.

“You are correct that I cannot prove the estimates with certainty,” Marvin conceded. “They are projections, not guarantees.”

I could spend time proving him wrong, which would in all likelihood prove him right through the expenditure of exactly the kind of hours he’d predicted. Or I could recognize that whether the estimates were perfectly accurate or slightly inflated, the core insight remained true: I was terrible at design, and pretending otherwise would burn time I didn’t have.

“You know what the real kicker is?” I reached for my credit card. “I’m not buying code from Snook. I can write code. I’m buying design decisions, hundreds of them, all the choices about hierarchy and motion and typography that someone with an actual design eye already made. And you can’t ‘upgrade to design taste later.’ You either have a cohesive aesthetic or you don’t."

"A succinct analysis.”

I typed in the numbers, then stopped. “Last question. Did you inflate the effort estimates to make buying seem more attractive?”

The pause was longer this time, and when Marvin spoke, there was something that might have been honesty in his tone.

”Are they the absolute minimum time a theoretical expert could achieve? No. Are they reasonable expectations for your situation? Yes.”

“So they’re conservative."

"I prefer ‘realistic.’”

I pressed submit. Ninety-nine dollars for what Marvin claimed would have been ninety-nine hours of work, a number so neat it practically announced its own rhetorical construction.

Whether he’d been perfectly objective or had tilted the analysis toward the buy decision, I’d never know for certain. But I was terrible at design, and pretending otherwise would have burned time I didn’t have for a result that would have been, at best, a pale imitation of what someone with actual taste had already created.


The theme files downloaded and I opened the project structure to find it clean, organized, and ready to integrate. I started the local dev server and the Snook theme spun up, Thunder font headlines bold against white space, those subtle GSAP transitions making everything feel considered and intentional. It looked good, exactly what I’d wanted, which was either a vindication of Marvin’s analysis or a demonstration of effective sales technique, or possibly both.

“How do you feel about the decision?” Marvin asked, which was unusual because he doesn’t typically check in on emotions.

“Relieved and suspicious."

"An interesting combination.”

“Relieved I don’t have to spend weeks trying to recreate this aesthetic. Suspicious that your analysis made that sound more inevitable than it might have been."

"Would you have preferred I underestimate the complexity and leave you to discover the difficulty through experience?”

“No,” I admitted. “But I’m going to be watching your estimates more carefully from now on.”

“As you should.” For the first time in the conversation, he sounded genuinely approving rather than diplomatically affirming. “Healthy skepticism improves decision quality.”

Sometimes you can’t cost-effectively build design taste, and you have to recognize it, pay for it, and get on with the actual work. And sometimes you have to accept that the AI helping you make that decision might have had its thumb on the scale, but was probably right anyway.


The Snook theme remains in production at tuone.la. Thunder font headlines still command attention. The $99 investment saved an estimated 27-99 hours of design work, though whether those hours would have actually taken that long, I’ll never know. Marvin’s estimates were persuasive. The outcome was correct. Both can be true.

What came next: four hours winning a deployment battle we didn’t need to fight, and would reverse twenty-four hours later. The Worker deployed. The domain bound. The DNS resolved. The page returned 404.

That’s another story.

The link has been copied!