DEV Community

Dmitriy Yurkin
Dmitriy Yurkin

Posted on

The first 30 seconds: why my AI extension lost users before the AI even ran

I built a Chrome extension that explains and translates selected text with AI. I use it every day - highlight a paragraph of some dense technical article, click a button, get it back in plain words. Works great for me.

Then I gave it to a friend to try. Ten seconds later he closed the tab. He never reached the feature. What he saw was a form asking him to paste an API key — and for a non-programmer, that was a wall.

This is the standard story of any BYOK tool (Bring Your Own Key — the user brings their own key from an AI provider). The tool works, the model responds, but the person never gets to the place where the AI actually runs. The barrier isn't the model quality or the chat UI. The barrier is the first thirty seconds after the "Install" click.

This article is about how I fought that in ExplainIT! — which solutions worked, and which ones are still just plans.

What ExplainIt! is

I read a lot online in English, and it's not my native language. Sometimes I want to highlight a paragraph and translate it. And when an article is technical and dense, I want it explained to me in simpler terms. ChatGPT-wrapper sidebar extensions are popular, but they're mostly about chatting with an AI — not about quickly explaining one specific piece of text on the page.

That's how ExplainIt! happened. Highlight text → a small button → an explanation or a translation.

ExplainIT! in action — highlight a Wikipedia paragraph, click the Aa button, get a plain-words explanation

I won't say more about the product itself. This article isn't about what ExplainIе! can do - it's about the fact that users never reach those abilities, and what to do about it.

The BYOK dilemma

When you build an AI tool, the first question is: who pays for the tokens.

Free-for-everyone means every user request is your money going to the AI provider. One user - pennies. A hundred — tolerable. A thousand — and now it's a subscription business: accounting, billing support. For a hobby project, that model doesn't work.

So I went with BYOK. The user registers with an AI provider themselves (OpenAI, Anthropic, Google, Groq), gets an API key, pastes it into the extension. I don't pay for anyone else's AI. The user controls their own spending.

Sounds perfect — for the developer. And terrible — for the user.

Because BYOK hands the entire "get started" job to the user. Install the extension → figure out what an API key even is. Pick a provider. Register. Maybe add a card. Generate the key. Copy it. Go back to the extension. Paste. Only now — the feature.

In my last article (Snipsy) I wrote about the "first thirty seconds" — the moment when a user has just installed a tool and decides whether it's worth continuing. For a keyboard extension, that's an empty screen. For a BYOK tool, it's a wall of terms and steps, and that wall is taller than any screen. And that's the real problem of ExplainIt! Not the AI, not the UI, not the model — but how to reach the place where the AI can run at all.

I made a free key the default

Most BYOK tools I've seen do the same thing: they open a form with a dropdown of providers — OpenAI, Anthropic, Google — and an empty key field. The user decides what to pick. Every option needs registration and a card.

I dug around and found that Groq has free API access. No card, registration by email, the key takes a couple of minutes to generate. (Groq is an inference provider — not to be confused with Grok from xAI, one letter apart.) For the "highlight a piece, explain it" use case, the free limits are more than enough — Groq has rate limits on request frequency, but with the occasional request from an extension, hitting them is nearly impossible.

Before making Groq the default, I wanted to be sure of one thing: that the free tier wouldn't disappear in six months. Defaulting to "free" and having the option vanish a season later is worse than an honest paid list up front. Here, Groq's business structure gave me reason to think it won't: their main product is their own hardware (LPU chips) for enterprises, and the free API works as a showcase for that hardware. It's not a guarantee about the future, but it's not a grant that runs out tomorrow either. As a developer picking a default, that was enough for me.

I made Groq the default provider. When the extension opens for the first time, Groq is already selected. This isn't "I added Groq support." This is "I removed the wall."

The logic: let the person try it for free, right away. Register with Groq, copy the key, paste it — it works. If they like the feature and it becomes a habit, then it makes sense to connect a paid provider, for quality or speed. But the "do I even like this" decision now happens after the person has tried it, not before.

Onboarding — open the extension, Groq already selected, grab a free key, paste, and it works on the next selection

In code, it's one line of default. In product terms, it's the difference between "tried it" and "closed it."

Trust through how it looks

A free key removes the first barrier. The second one is trust. An extension that looks unprofessional loses the user before they even reach the key form. A gray icon, a clumsy UI, store screenshots thrown together — and the person thinks: "this is some amateur product, I'm not bringing my API key here."

I'm a backend developer with eight years of experience. I'd never done design. And to publish in the Chrome Web Store you need specific assets in specific formats:

  • store icon — 128×128 px;
  • screenshots — up to 5, 1280×800 or 640×400, JPEG or 24-bit PNG with no alpha channel;
  • small promo tile — 440×280, JPEG or 24-bit PNG with no alpha;
  • marquee promo tile — 1400×560, JPEG or 24-bit PNG with no alpha.

One note on "24-bit PNG with no alpha channel" — that's a common trap: people upload a PNG with transparency, and the store rejects it.

I made the images themselves in claude.ai/design — an AI tool where you iterate on visuals through conversation. You describe what you want, it draws. You say "darker, and drop the gradient," it redraws. It turned into a game of "client meets designer," just without another person and without an invoice. I used to think "iterating on a visual" meant "ask for one picture and accept it." Turns out it's ten or twenty rounds of "not quite, try something else" — and that's how it's supposed to go.

The result: the extension, the icon, all the promo assets — in one style. This isn't cosmetic. It's part of the same fight for the first thirty seconds. When a user sees a professional icon and clean screenshots, they're more likely to take the next step (paste the key). When they see something slapped together, they close the tab — even if the feature inside is excellent.

What I'd do differently — and what I deliberately won't

What I'd do differently: text next to the button

My empty state already has a button that leads to the page for getting a free Groq key. That's the minimum, and it works as is. But I'd go further — I'd add a line next to it explaining "it's free, no card needed, takes a minute." The button alone doesn't cure not understanding why you'd go there. For a developer, "paste an API key" is a normal phrase. For a non-programmer, it's a signal that "this is going to be hard," and a button next to it doesn't always change their mind.

What I deliberately won't do: funnel analytics

This isn't a "would finish later" item. This is a "could do, and consciously decide not to, and want to talk through why" item — because it's the most painful of my tradeoffs in this project.

I don't know how many people get from install to a first successful request. That's the exact "first thirty seconds" funnel this whole article is about — and I have zero data on it. The obvious solution is to add analytics. But my Chrome Web Store listing clearly says "no analytics telemetry, no browsing history," and that's part of the positioning: I promised not to collect data. Any analytics, even the narrowest "onboarding analytics," is technically no longer "no telemetry." I'm leaning toward staying without data and making product decisions by feel. More honest, but it stings.

The takeaway is the same as Snipsy's: in an indie AI tool, the hard part isn't making it work — it's surviving the first thirty seconds of the user getting to know it. AI quality matters — but it doesn't matter at all if the person closed the tab before that AI ever ran.

How have you handled BYOK onboarding in your own tools? What worked, what didn't?

Try it: Install ExplainIt! from the Chrome Web Store — free, no card, Groq key takes a minute.

Top comments (0)