Just add eggs

# June 8, 2025

John Duff and his molasses company patented the first recipe for cake mix in 1930s. It was a culinary innovation. Completely dehydrated powder where you just add water and bake. In the height of the Depression when people were looking to save any costs they could, cutting back on the baking supplies in the kitchen seemed like a big market opportunity.

Unfortunately for P. Duff & Sons, it was a total flop.1

People didn't like the feeling of baking without having to add any ingredients themselves. It felt unnatural. Duff's 1933 follow-up patent explicitly cited the "psychological disadvantage" of powdered eggs. So they removed them from the recipe. Make users crack a fresh one. The rest of the cooking process stayed the same: you still add water and bake. The eggs take maybe a minute more.

It's minimal effort but still gives bakers the feeling of maximum competence. And Duff was rewarded for it. Sales exploded after the war and cake mix is the go-to way to bake for most people today.

Cracking the egg is as true in software as it is in cake mix.

My LinkedIn content creation tool saywhat.ai launched Fresh last week. It's a deep research agent that figures out what you're selling, who you're selling it to, researches a novel take, then drafts you social content. It works shockingly well.2 From zero context to a full post in under 2 minutes - zero human input required.

I thought it was a pretty magical feature myself. But it was a big departure from our existing workflow. We wanted to test it out before we committed to launching. It wasn't cheap to host.

We featured flagged it to a small beta group of our most engaged users on May 1st. Since it's hard to measure feature adoption when you're just presenting something done for you, we required users to rate each post with an up or down thumb. Rating the post would clear out the slot in their inbox to receive another fresh post the next day.

After letting it run for a week we noticed the engagement numbers were really low. Only 20% of our users were rating their new posts. Which meant that 80% of users either didn't see them or didn't acknowledge the suggestions if they saw them. Either way was bad: since no acknowledgment wouldn't generate their next batch of predictions, their Fresh posts would sit there indefinitely and never improve.

Time for some changes.

First up: Originally Fresh lived on its own separate page so it was possible people were just missing it3. We had to make it more obvious.

  • We tweaked the base / URL of the webapp to redirect to this page conditionally. If users had suggestions available, they would land on the Fresh page. If they had none available, they would instead end at the normal writing interface
  • They would only see the new content when there was content to share instead of landing on an empty page some of the time
  • New badge icon by the section to show how many posts they still had to review

We let this run for a few days. Still, very little engagement.

Our second approach was to add an automatic post expiration. Maybe users just didn't like the topics that we were writing about and didn't bother giving us feedback. Or maybe there was some decision paralysis with deciding if they liked the post or wanted changes.

  • Create a countdown timer for 5 days where we show a more visible warning from 3 days until it expires
  • Treat ignored posts as an implicit rejection
  • Reload the posts with a new version if the users still haven't engaged by the end of the time

We let this run for a few week. Still, very little engagement.

Our third try was otherwise a hail mary. We'd either fix the engagement or kill the feature4. We added an arbitrary loading bar. That's it. That's the feature.

  • Hide the post until users click the Claim Post button
  • Delay for a random interval between ~10-15 seconds and add a loading bar
  • Fade in the post after this interval

The results were so dramatically better I couldn't quite believe the stats. We saw more than 4x more engagement every day when compared to the previous two feature tweaks.

Honestly: I hated the change. It required that people wait longer for results that we could have generated immediately. Every fiber of my optimization being wanted to fight it. But how valuable are instantaneous results if users don't interact with them in the first place?

What won me over were the cost savings. When the logic was fully refactored, it let us cache the research up-front so we had something to write about, but the actual last mile draft was delayed until runtime. So if people never unlock that draft we don't have to pay for the compute to generate the final draft. That coupled with higher engagement was enough for me to give the green light to a full public launch.

John Duff understood in 1933 what we're clearly still learning today: people don't just want results. They want to feel involved in creating them. They need that moment where they crack the egg, hit the button, or watch the progress bar fill up. It's not just about the time or effort. I suspect it's about agency.

The most powerful tools are often not the ones that do everything for you. They're the ones that make you feel like they gave you superpowers. They're the ones that make you feel like you did it yourself. Even when you didn't.


  1. Don't you love when the sons get involved

  2. I still occasionally hear the argument that LLMs can only generate derivative works from content that was in their input corpus. Maybe, maybe, I believe that for single shot prompt outputs. But when you have temperature > 0 over multiple loops, you're baking in some stochasticity to the message prompts for any message after the first one. The longer you loop, the higher a chance something novel does pop up. 

  3. It had a clearly visible place on the nav bar but I suspected people just weren't aware of it. 

  4. We kill features all the time. So it wouldn't have been the worst outcome, except that I was convinced the feature had some inherent potential that was currently overlooked. 

/dev/newsletter

Technical deep dives on machine learning research, engineering systems, and building scalable products. Published weekly.

Unsubscribe anytime. No spam, promise.