be2ween
A Chrome extension that turns the time spent waiting on AI into a programmable, user-controlled media channel.
Browser extension · Content system · Programming console · Signed publishing pipeline · Privacy architecture

When ChatGPT, Claude, or Gemini starts generating, be2ween airs short text programming and hands the tab back when the model finishes. It reads model state, not prompts or answers.
AI generation routinely creates twenty to fifty seconds of dead time. The model cannot be made faster by redesigning the loading state, so the product question is what that time can become without taking control away from the user.
- 01
A browser extension detects only whether a supported AI is thinking or finished, then yields immediately when the answer is ready.
- 02
Channels, schedules, casting, pacing, and controls turn isolated cards into a coherent programming model.
- 03
A typed content store, validators, submissions queue, and Ed25519 signing produce data-only bundles the extension can verify.
- 04
A legibility guard checks read time against hold time before content can air.


- Chrome extension for ChatGPT, Claude, and Gemini
- Sign-on, channel casting, scheduling, and playback controls
- Programming and publishing console
- Content schema, validation, pacing, queue, and signed feed
- Privacy documentation and Chrome Web Store release
Diego Medina
- Product strategy
- Programming model and system architecture
- Interaction and visual design
- Extension and web implementation
- Content operations and publishing tooling
- Launch and iteration
Collaborators
No human collaborators are recorded in the repository. AI agents were used within the production process; Diego retained product direction, integration, verification, and final judgment.
Public beta in the Chrome Web Store.
Free public-beta Chrome extension; no account required.
Build notes
What changed while building it.
The deeper record: decisions, failures, revisions, and open questions.
The itch
Your AI takes twenty to fifty seconds to generate. You watch it.
That's the whole thing. It isn't a loading state problem — you can't make a model faster by designing around it — it's unclaimed time that belongs to you and gets spent on a spinner. The time was going to pass anyway.
The build
The framing that made it work was television. Not "loading screen content" — programming. Channels, a schedule, a sign-on, casting, a back room.
Channels are the unit: THE WIRE for real headlines filed minutes ago, ORIGINS for where words came from, THESAURUS REX, FULL STACKER, MISCONCEPTIONS, CASUAL COMEDY. Carry the ones you want, mute the rest. A control bar sits under the screen the whole time — skip a card, cut one, drop a channel. Not in a reading mood? One tap flips to a calm field that just keeps you company.
You can also make your own. Hand your LLM the skill and a topic and it writes a whole channel — your exam, your team's runbook, a quote pack. You run casting; the keepers air in your gaps.
It's content-free by design. be2ween reads only whether your AI is thinking or done — never your prompts, never its answers. No account, nothing uploaded. Works with Gemini, Claude and ChatGPT.
The programming desk
The part nobody sees is the biggest part. There's a full control surface behind the product for building and scheduling content: a typed store, validators, pacing, a submissions queue, and Ed25519 signing so published bundles can be verified.
The piece I like most is the legibility guard. Cards hold the screen for three, five or seven seconds depending on tier, and content arrives at volume from places that can't be trusted to tier themselves — LLM-generated decks, community submissions, the wire. A mistagged card airs unreadable, which breaks the only promise that matters. So the guard checks read-time against hold-time at the tightest reading speed any viewer will ever see: clear that, and you clear every speed. Nobody can eyeball this across that volume. The tooling refuses instead.
The surprise
I put it in front of r/chrome_extensions and got taken apart, correctly.
The headline: nobody could tell what it was. "80% of page visitors don't read overview. Try to ask people, could they understand what it does? I couldn't." The name means nothing to someone searching — people look for functional terms, and I'd led with a coined word. The store copy talked about what be2ween is instead of what you get.
Two more that stung because they were obviously right. I'd been leading with make-your-own, because authoring is the interesting part to build — but a new user doesn't want to face a JSON file, they want news and jokes and tips ready to go, with authoring as the small door round the side. And shipping as 0.1.1 tells people they're beta testers for something unfinished.
None of this was about the product. All of it was about the gap between the thing and how the thing announces itself, which I'd spent almost no time on because it wasn't the fun part.
What's next
In beta. The content pipeline runs whether or not anyone's watching, which is the right way round for a network. The open question is whether channels can come from outside — the submissions queue and the casting flow are the bet that they can.