8
41 Comments

Built a Chrome extension to stop getting cut off by Claude — 70 users in 4 weeks, zero marketing budget

The problem I was solving for myself

Eight weeks ago I was two hours deep into a debugging session with Claude when it just stopped. Rate limit hit. No warning. No countdown. Two hours of context gone and I had to start over.

I looked for a tool that would show me how close I was before it happened. I found nothing that worked across more than one AI platform without requiring an API key.

So I spent six weekends building one.

What I built

TokenPulse is a Chrome extension (MV3) that injects a live token bar above the input box on Claude, ChatGPT, Gemini, DeepSeek and Grok. It shows:

  • Context window percentage in real time
  • Claude's actual 5-hour and 7-day rate limit utilization (pulled directly from Claude's internal API — exact numbers, not estimates)
  • Reset countdowns to the minute
  • Estimated cost per conversation, per day, per week
  • Daily usage history

No API key. No account. No data leaves your device. Install and open Claude — it just works.

The technical architecture

The extension runs a content script on each supported domain. Claude is the only platform that exposes real rate limit data through an internal API endpoint — the others use client-side token estimation (~4 chars per token, ±8% accuracy).

The biggest technical challenge was Chrome's Manifest V3 requirements. No inline scripts, no eval, service workers instead of persistent background pages. The service worker can be killed by Chrome at any time, which means everything goes through chrome.storage.local — no in-memory state between messages.

The in-page bar injection uses a MutationObserver to detect when the input box appears in the DOM, then inserts a container immediately above it. Platform DOM structures change without notice so every selector has multiple fallbacks.

Open source: github.com/anu-ship-it/TokenPulse

The numbers after 4 weeks

  • 70 active users (Chrome Web Store weekly active)
  • Zero marketing budget
  • Zero paid installs
  • 128 Google Search Console impressions in 10 days of indexing
  • Average position 16.6 — page 2, working on it

Traffic sources so far: mostly direct Chrome Web Store search and a few Reddit comments where I answered genuine questions about Claude rate limits.

What worked

Building for a real pain I had.** I use Claude heavily for development work. Every decision about what to show in the popup came from "what would I want to see right now?" That constraint produced better UX decisions than any user research I could have done upfront.

Shipping before it was polished. The first version had a broken notification system and no cost tracking. I published anyway. The feedback from early users told me exactly what to build next — cost tracking and weekly summaries were the top two requests.

The in-page bar over the popup. My initial instinct was to make the popup the primary interface. Users taught me the bar is what they actually use — the popup is for depth when they want it. If I had designed popup-first I would have built the wrong thing.

What did not work

Posting on company social accounts with no followers.** I posted on the TokenPulse Twitter and LinkedIn company page for weeks. Near-zero reach. The right channel was my personal LinkedIn (7.2k followers) — the first post there drove more installs in one day than a month of company posts.

Building the tips panel. I spent two days building a collapsible panel with token optimization advice. Nobody uses it. It adds code complexity and visual weight for zero user value. I should have shipped that time as more platform support.

Designing for 100 users before having 10. I spent too long on the architecture for Pro features (cross-device sync, 90-day history) before I had validated that people wanted the free version. The right order is: prove the core value, then build the infrastructure to scale it.

What's next

Pro tier** — 90-day history with graphs, rate limit predictions ("~45 min left at this pace"), cross-device sync across Chrome, Edge, Brave, Arc and VSCode, unlimited platforms, weekly email reports. Waitlist open at token-pulse.in.

VSCode extension — so the tracking follows you from the browser to the editor.

AI usage timeline — a single chronological view of every AI interaction across all tools. Nobody has built this yet. It's the feature that turns TokenPulse from a rate limit tracker into something that helps you understand your entire AI workflow.

The one thing I would do differently

Build the content script test harness first. Testing content scripts requires opening Chrome, loading the extension, navigating to the target platform, and observing behavior — a 3-minute loop per test. A mock DOM environment for unit testing would have paid back the setup time within the first week.


Happy to answer questions about the Chrome extension architecture, the MV3 constraints, or how to read Claude's internal usage API. This community has helped me think through a lot of product decisions — returning the favor.

Install TokenPulse free — works on Claude, ChatGPT, Gemini, DeepSeek and Grok.

on August 25, 2026
  1. 1

    The company-account-vs-personal-account thing hit close to home. I've been stuck on a similar wall — every "official" channel I try (subreddits, ads) either gets rate-limited by self-promo rules or costs money before I even know if it's the right audience. Haven't tried leaning on a personal account yet, but this makes me want to.

    Also, the GSC numbers you shared are basically the same thing I was staring at this week — impressions barely showing up, average position stuck way down the list. Good reminder that "it's indexed" and "anyone can actually find it" are two very different problems.

    Curious how you picked which platforms to support first (Claude, ChatGPT, Gemini, etc.) — did you build for the one you personally used most, then add the rest once people asked, or did you map it out ahead of time?

    1. 1

      I started with Claude because that was the actual pain point I was experiencing myself. The first version was essentially built around Claude's rate-limit data.

      Then I added ChatGPT, Gemini, DeepSeek and Grok because I realized the broader problem wasn't really "Claude limits" — it was visibility into AI usage across different tools.

      So it was mostly pain-first rather than a big platform roadmap upfront. Claude validated the problem, and the other platforms came afterward.

      1. 1

        That "pain-first, platform-list-came-after" order makes a lot of sense, feels like the same logic that kept my SimpleClause from becoming a bloated everything-tool early on. Started narrow (translate one confusing document), and I'm still resisting the urge to expand into a dozen directions before the core thing is solid. Good luck scaling out the other platforms. Curious if Claude's usage numbers stay your biggest signal, or if that shifts once you have more users across the other tools.

        1. 1

          Yeah, I expect Claude to remain an important signal simply because it was the original pain point, but I don't want to optimize the product around Claude specifically.

          What I'm more interested in is whether the signals become useful across platforms — e.g. total usage, remaining capacity, which tool is approaching its limit, and when switching to another tool actually makes sense.

          If that pattern holds as the user base grows, then the product becomes less of a “Claude limit tracker” and more of an AI usage/availability layer. If users only care about Claude, that's also useful to know because it would mean I should stay narrower.

          Still too early to know which direction the data will support.

  2. 1

    Great example of solving your own pain point and shipping fast. 70 users with zero marketing is a strong start 🚀

    1. 1

      Appreciate it. The 70 users are actually more useful to me than the number itself because they're giving me a signal that the problem is worth solving before I put serious time into monetization.

  3. 1

    I'd make the difference between Claude's actual limit data and outside estimates impossible to miss in the UI. For each number, show whether the platform reported it or someone estimated it. Also show when it was last updated. Estimates can still help, but people may make bad decisions if they look as reliable as the actual data.

    1. 1

      That's a very good point. Right now the distinction is documented, but it should be visible at the point where someone is looking at the number.

      I'm going to make the data source and confidence much more explicit in the UI — especially distinguishing Claude's reported values from the estimates used on the other platforms, along with the last update time.

      That's a better UX than expecting users to read the documentation first.

  4. 1

    The personal LinkedIn beating the company page isn't a fluke, it's the default state before you've earned any brand equity. People trust a name they can picture over a logo with zero history, so a founder's own account is almost always the fastest distribution channel available in the early days. I'd put the VSCode extension and timeline feature on hold and keep posting from your personal account, one good post from you will out-convert a quarter of roadmap work right now.

    1. 1

      Exactly. I initially assumed the company account needed to exist first and eventually build its own audience. That turned out to be a pretty expensive assumption in terms of time.

      The personal account already had trust and distribution, so it was dramatically more efficient. I'm putting much more effort into that channel now and treating the company account as secondary for the early stage.

  5. 1

    Your sharpest lesson isn't in the "what worked" list, it's a fault line running under the whole thing, and naming it changes what you build next. Your single differentiator, "exact Claude numbers pulled directly from Claude's internal API," is also your single biggest fragility, because they're the same fact. Every other platform is client-side estimation; only Claude gives you real data, through an undocumented internal endpoint you don't control and weren't handed. Your moat is real, but it's rented from a landlord who doesn't know you're a tenant. That endpoint can change shape or close any week, no warning, exactly like the rate limit that started this.

    That's fine as a wedge, it's why you stand out at install. It's dangerous as a foundation for Pro. Picture the churn moment: someone pays for "exact Claude tracking," the endpoint shifts, and their paid feature silently degrades to the same estimate the free tools give. That's the worst possible time to break a promise, right after money changed hands.

    But your own roadmap already contains the escape, you just have it sequenced behind the risk. The "AI usage timeline across every tool" is the durable product, and you said it yourself, that's the thing that stops being a rate-limit tracker and starts being AI-workflow understanding. Notice what it doesn't need: Claude's internal endpoint. A timeline of your own interactions is data you can capture client-side, equally, on every platform, with no landlord. The exact-numbers wedge gets people in the door; the cross-tool layer is what you actually own.

    So the question I'd weigh before building Pro: how much of the paid tier leans on the one number Anthropic can take away, versus the workflow view nobody can? Shift the weight toward the second and the fragility becomes a feature you grew out of.

    1. 1

      This is probably the most important criticism in the thread.

      I agree that relying too heavily on Claude's internal endpoint would be a bad foundation for the paid tier. It's a strong wedge because the data is much more accurate, but it's not an asset I control.

      The usage timeline is interesting precisely because it moves the product toward data that I can collect and structure independently of any one platform. I'm going to think about the Pro roadmap with that distinction in mind: exact rate-limit data as the acquisition wedge, but cross-tool workflow intelligence as the longer-term product.

      The "rented moat" analogy is painfully accurate.

      1. 1

        That's the whole move — wedge and durable product don't have to be the same thing, they just can't be reversed. Exact-numbers-to-acquire, workflow-to-retain is a clean split. Curious to see where the timeline goes; it's the part with no ceiling on it.

  6. 1

    70 users in 4 weeks with zero ad spend is a pretty strong signal that you’re solving a real problem. I also liked the point about users preferring the in-page bar over the popup — a good reminder that the simplest part of a product can end up being the most valuable.

    1. 1

      Thanks. The in-page bar was definitely one of those cases where the users basically told me what the product was supposed to be. I would have bet on the popup being the main interface when I started.

  7. 1

    the personal-vs-company-account data point is the one I needed to read today honestly. I've been building a branded account from zero (not a personal one) for a few weeks now, which is precisely the "company account with no followers" pattern you're describing as the thing that didn't work for you. makes me wonder if I should be posting some of this from my own personal account too, borrowing whatever existing trust/audience I have, rather than assuming a clean brand account earns attention on its own from a standing start

    "designing for 100 users before having 10" is also a pattern I recognize from a thread earlier this week about a much more ambitious project than yours, seems like a universal trap regardless of scope, infrastructure work feels like progress and is much easier to justify than sitting with the discomfort of not knowing if the core thing works yet

    question on TokenPulse itself: does the rate-limit percentage ever create a perverse incentive, does showing someone "you're at 85%" change their actual usage behavior (rationing) versus just informing them after the fact? curious if you've noticed the visibility itself altering the thing it measures

    1. 1

      I haven't measured that properly yet, so I don't want to pretend I have an answer.

      My intuition is that it probably does change behavior for heavy users — especially when they see something like 85% instead of suddenly hitting a hard limit with no warning. In that sense, the product isn't only measuring usage; it can also change how people manage it.

      That's actually something I'd like to test rather than assume. It would be interesting to compare usage patterns before and after people start seeing the limit data.

      1. 1

        that's the right instinct, testing beats assuming here since the direction of the effect isn't even obvious upfront, showing 85% could just as easily cause someone to burn through the rest faster ("might as well use it now") as it could cause rationing. genuinely curious which way it goes once you look

        appreciate the honest "I don't know yet" too, that's a better answer than a confident guess would've been

  8. 1

    The part about building for 100 users before having 10 really hit home for me.

    I’ve been building an Android music platform with an AI-assisted workflow using Codex, and I’ve noticed the same temptation: once development becomes dramatically faster, it’s very easy to keep adding features because suddenly they feel “cheap” to build.

    But the hidden cost shows up later in testing, regressions and product complexity. In my case, features like persistent playback, gapless transitions, synchronized lyrics and interactive controls all work together, so a seemingly small change can affect something that was already stable.

    Your point about the content-script test harness is especially interesting. AI can make implementation extremely fast, but if the testing loop is still slow, that quickly becomes the real bottleneck.

    Also interesting that the in-page bar ended up being more valuable than the popup. That’s a great example of users deciding what the actual product is.

    For the DOM integrations across Claude, ChatGPT, Gemini, DeepSeek and Grok: do you have any automated way of detecting when one of the platforms changes its DOM and breaks a selector, or do you currently discover those failures through users/manual testing?

    1. 1

      Currently it's a combination of manual testing and failures reported by users. I don't have a proper automated DOM-change detection system yet.

      That's one of the things I underestimated with multi-platform extensions: the code isn't necessarily the hard part; maintaining integrations against constantly changing UIs is.

      The content-script test harness I mentioned in the post is the first thing I'd build before trying to get fancy with automated detection. Once the DOM behavior is testable reliably, detecting regressions becomes much easier.

  9. 1

    The lesson about designing for 100 users before having 10 really stood out to me. It’s very easy to keep adding advanced features because they make the roadmap look impressive, even when the basic workflow has not been validated yet.

    I’m currently building an early backtesting project, and this is a useful reminder to get a small number of people through the complete workflow before investing heavily in features such as multi-asset analysis or Monte Carlo simulations.

    The in-page bar is also a great example of users revealing the real product. The popup contained more information, but the lightweight element shown at exactly the right moment delivered more value.

    How did you collect feedback from the first users—direct conversations, Chrome Web Store reviews, or usage analytics?

    1. 1

      Mostly direct feedback and conversations, with some Chrome Web Store feedback as well. I haven't built a sophisticated analytics pipeline around it yet.

      The most useful feedback was surprisingly simple: people telling me what they wished the extension showed while they were actually using it. That's how cost tracking and the weekly summaries ended up on the roadmap.

      I'm deliberately trying not to over-engineer analytics before I have enough users for the data to actually mean something.

  10. 1

    Clever solve for a genuinely annoying problem — losing context mid-debug is brutal.

    Since you're shipping a browser extension that touches multiple AI platforms, one thing worth keeping an eye on: manifest and content-script permissions can become security debt fast (especially MV3). If you ever want a second pair of eyes on the codebase — we built SecondRead specifically to audit AI-built projects for non-technical founders. Security holes, cost sinks, scaling bottlenecks. Happy to run a free beta audit on TokenPulse if useful — no strings attached.

    1. 1

      That's a fair point. Extensions touching multiple AI platforms definitely deserve scrutiny around permissions and content-script boundaries, especially with MV3.

      I'll take a closer look at the security surface as the extension grows. Appreciate the offer as well.

  11. 1

    Love the idea, always feel stuck when it stops midway. Claude should simply allow the last prompt to finish instead of stopping midway like Codex.

    1. 1

      Exactly. That's what frustrated me enough to build this in the first place. The worst part isn't even the limit itself — it's getting no useful warning that you're approaching it.

      If the platform isn't going to prevent the interruption, at least give me enough visibility to plan around it.

      1. 1

        Guess what, Codex just started stopping midway as well today, just great.

  12. 1

    The ±8% line is the best part of this post, publishing the error band on an estimate instead of pretending it's exact. One suggestion: put that ±8% in the UI itself, not just the writeup. People trust a meter more when it admits its precision. 70 users in 4 weeks on zero budget is real traction.

    1. 2

      Agreed. The error range shouldn't be buried in the documentation if the number is being shown directly to the user.

      I'll add the estimation/accuracy information to the UI so it's obvious that the non-Claude numbers are estimates rather than exact measurements. That's especially important because a clean-looking percentage can imply much more precision than it actually has.

      1. 1

        That's exactly the right call. And the sentence you just wrote, that a clean-looking percentage implies more precision than it has, is the whole argument in one line. I'd put that sentence itself in the UI copy. Looking forward to seeing it shipped.

  13. 1

    The zero-marketing-budget path you took is the interesting part here - 70 users in 4 weeks from just showing up in threads like this one is a real signal. One suggestion from watching hardware-adjacent communities: the people who hit rate limits mid-session are the loudest, but the bigger audience is people who don't know a limit is coming until their workflow dies. A landing section that shows the bar working in a GIF might convert that second group better than the story does. Congrats on shipping six weekends of work - MV3 alone deserves a medal.

    1. 1

      That's a good point. The current page explains the problem, but a GIF showing the bar actually appearing and tracking usage would communicate the value much faster.

      The second audience you mentioned is also important: people who don't realize they're going to hit a limit until it happens. Showing the product in action may explain that problem better than another paragraph of text.

  14. 1

    So I ran tokenpulse through a tool i built, the full read: https://kasspian.com/marketing/share/d4923610-707e-45fd-993b-e18ce80130a8

    The blunt bit is thatit led with; you have 70 real installs and zero of them CAN pay you, there's literally nothing to buy yet. the growth question and the monetization question are different problems and the second one is now the urgent one. it also mapped where your next users already complain about rate limits in public (r/ClaudeAI is louder than you'd think)

    1. 1

      That's fair criticism. 70 active users validates that there's some demand, but it doesn't validate the business yet. Those are two very different milestones.

      The current priority is figuring out what people would actually pay for before building a large Pro infrastructure. The features I'm considering are things like longer history, cross-device sync, predictions and broader platform support, but I don't want to assume those are valuable just because they sound useful.

      And yes, the public rate-limit discussions are probably a better acquisition channel than trying to manufacture demand from scratch. That's something I'm exploring now.

  15. 1

    Really smart approach with the in-page bar over popup. I had the same realization building my API platform — context-aware UX wins every time. The MV3 Service Worker lifecycle is brutal; we ended up using chrome.storage.local with a write-then-read pattern to avoid race conditions. 70 users in 4 weeks with zero marketing is solid validation that the problem is real.

    1. 1

      Yes, MV3's service-worker lifecycle forces you to think differently about state.

      I'm also using chrome.storage.local as the persistent state layer rather than relying on the service worker staying alive. The annoying part is that you have to design around the worker disappearing between events instead of treating it like a traditional persistent background process.

      That was one of the bigger architectural lessons from this project.

  16. 1

    Chrome extension distribution is a different beast — no app store, no search traffic. 70 users in 4 weeks with zero marketing is the real signal. The install flow (manual ZIP, chrome://extensions) filters for high intent. That's the moat: users who jump through hoops actually use it.

    1. 1

      One small correction: TokenPulse is distributed through the Chrome Web Store, so users don't have to go through the manual ZIP / chrome://extensions installation flow.

      But I agree with the broader point about intent. Someone who actively searches for a tool to solve a rate-limit problem is already much higher intent than someone who randomly sees an ad.

  17. 1

    The strongest part is that the product came directly from a recurring workflow failure you experienced yourself. The in-page token bar also seems like a strong UX decision—showing the information where the work is happening rather than hiding it behind another popup.

    1. 1

      Thanks. The in-page bar ended up being one of the clearest lessons from the first users: the best interface wasn't the one with the most information, it was the one that appeared exactly where the problem was happening.

      1. 1

        That makes sense. The fact that the first users shaped where the interface appears is an interesting part of the product’s evolution.