DEV Community

Cover image for My Code Worked. Excel’s "Protected View" Killed It.
Varun Krishnan
Varun Krishnan

Posted on

My Code Worked. Excel’s "Protected View" Killed It.

I am building a Micro-SaaS called SpeakSheet. The premise is simple: You speak (or type) a prompt, and it generates a structured Excel file.

The stack is solid: NextJS, Tailwind, Supabase, and Gemini on the backend.

This week, I tackled the hardest part of the MVP: Formulas.

Teaching an LLM to understand "Profit Margin" is tricky. It knows the math, but it doesn't know the context. After hours of tweaking the JSON schema and refining the prompt, I finally got a green light in the console.

The logic was perfect. The schema was validated. I downloaded the generated file to test it.

Profit Margin: 0.

I stared at the screen. I felt that specific mix of confusion and anger that only developers know. I checked the backend logs—the calculation was correct. I checked the cell data—the formula was there.

But the cell displayed 0.

I spent an hour debugging a bug that didn't exist.


The Invisible Villain
Then, I looked at the top of the Excel window. A thin yellow bar:

Protected View: Be careful—files from the Internet can contain viruses.

Because my software generated the file programmatically, Excel didn't trust it.

It blocked the execution.
It suppressed the formula results.
It made my product look broken.
This is the reality of building Micro-SaaS. You spend 20% of your time writing logic in NextJS, and 80% of your time fighting edge cases in the tools your customers actually use.

I realized that for a user with low Excel literacy (my target audience), this is a dealbreaker. They won't click "Enable Editing." They will just churn.

I had to refactor the user journey to account for a security feature I have no control over.


Landing Page of SpeakSheet - An excel helper better that excel.
The Design Pivot (feat. Gemini 3.0)
Once the logic was fixed, I looked at the UI. It was functional, but it looked like a Bootstrap template from 2015.

I am a developer, not a designer. Usually, this is where I stall.

I decided to test Gemini 3.0 Flash. I gave it a simple instruction: Design a modern, clean landing page for a SaaS that converts text to Excel.

I expected the usual generic AI slop.
Instead, it one-shot a layout that actually looked... premium. It understood whitespace. It utilized the ShadCN components correctly.

It saved me two days of CSS wrestling.


The Lesson
Building SpeakSheet has taught me that code is only half the product.

Your logic can be perfect, but if Excel's UI hides it, you failed.
Your backend can be robust, but if the frontend looks cheap, you failed.
I am building this in public to show the messy reality of shipping a product.


Follow me here for the next update.
@NotVarunKV

Watch Demo of the working here:
Demo Working

Top comments (1)

Collapse
 
not_varunkv profile image
Varun Krishnan

Thanks for reading, everyone! 👋

I’m documenting the entire build including the code failures and the wins over on X/Twitter. If you want to see the MVP in action (or roast my code), let's connect: @NotVarunKV