1
3 Comments

I built a browser extension with zero frameworks, zero dependencies, and $0/month infra

Shipped a Chrome/Firefox extension called JobPocket. It sits on job listing pages, scores your resume fit, and tailors it with AI. All without leaving the page.

This post is less about the product and more about the stack. I think the decisions are relevant if you're building solo.

No framework, no build step

Vanilla JS. No React, no bundler, no node_modules. Just popup.html, popup.js, popup.css, and a few modules.

Why? Chrome reviews your extension code manually. A React bundle adds 40KB+ of framework code reviewers have to wade through. Vanilla JS is readable top to bottom by a human. Chrome approved it in under 24 hours both times.

The tradeoff: no component model, lots of DOM manipulation. But for a side panel with ~10 sections? Completely manageable.

$0/month infrastructure

The full stack:

  • Supabase (free tier) for auth + one database table
  • Deno edge functions (on-demand) for four serverless endpoints
  • Stripe for payments
  • GitHub Pages for the landing page
  • OpenAI API as pass-through (user pays via credits, I pay per call)

No VPS. No Docker. No CI/CD. The entire backend is four functions and a table.

This won't stay free at scale. But for launch? $0/month while I find out if anyone wants this.

The hard part: small local models + structured JSON

JobPocket has a local AI mode that runs through Ollama on the user's machine. Default models: qwen3.5:0.8b for scoring, qwen3:4b for tailoring. Both small enough for a laptop.

The problem: small models love to "think out loud" before giving you JSON. You ask for {"fit_score": 78} and get three paragraphs of reasoning followed by malformed JSON.

What worked:

  1. Structured output schemas in the API call
  2. /no_think flags to kill chain-of-thought
  3. Post-processing that strips everything outside the first { and last }
  4. Retry with higher token limits as fallback

Not perfect. The 0.8b model hallucinates sometimes. But for triaging "is this job worth applying to?" it's genuinely useful.

Pricing

Credits, not subscriptions. Job searching is bursty. You apply to 20 jobs one week and zero the next. A $29/month sub feels wrong for that.

  • 10 free credits on signup (~3 full applications)
  • Credit packs: $5 / $10 / $25
  • $25 one-time local AI unlock. Pay once, run on your own Ollama, unlimited forever. Your data never leaves your machine.

The local unlock cannibalizes credit revenue. But it's my strongest differentiator. Every competitor is cloud-only SaaS with monthly billing. The self-hosted crowd is vocal. If they like it, they tell people.

Status

Day 1. Zero users. Zero revenue. Chrome and Firefox listings are live.

If you're building browser extensions, happy to talk about the review process, Manifest V3 quirks, or the Ollama integration. If you're job searching, try it and tell me what's broken:

Site: https://mooosik.github.io/JobPocket-Pages/

What would you do differently with this stack?

on April 22, 2026
  1. 1

    Really like the no framework approach here, makes a lot of sense for extensions, especially with review speed and transparency.

    The local AI + credit model combo is interesting too — feels like a strong differentiator vs typical SaaS subscriptions.

    I’ve been seeing a similar pattern with AI tools where people care a lot about control & flexibility in pricing rather than fixed monthly plans.

    Solid setup for validation stage..

    1. 1

      Thanks! Yeah the review speed thing was a surprise benefit. I expected it to be about bundle size but Chrome's manual review went way faster when they could just read the code.

      And totally agree on the pricing flexibility point. Job seekers especially are cost-sensitive and searching in bursts. Charging $29/month for something you use for 3 weeks felt wrong. Credits let people pay for what they use, and the local unlock gives the "I want to own it" crowd exactly what they want.

      Curious, are you building something with a similar pricing challenge?

      1. 1

        Yeah, that makes sense ,especially for bursty use cases like job searching. Credits + local option feels like a good fit there.

        I’ve seen similar patterns where flexibility matters more than subscriptions early on, especially when usage isn’t consistent.

        Solid direction

  2. 1

    This comment was deleted 19 days ago.

Trending on Indie Hackers
I've been building for months and made $0. Here's the honest psychological reason — and it's not what I expected. User Avatar 167 comments Agencies charge $5,000 for a 60-second product demo video. I make mine for $0. Here's the exact workflow. User Avatar 152 comments This system tells you what’s working in your startup — every week User Avatar 52 comments 11 Weeks Ago I Had 0 Users. Now VIDI Has Reviewed $10M+ in Contracts - and I’m Opening a Small SAFE Round User Avatar 44 comments I built a health platform for my family because nobody has a clue what is going on User Avatar 15 comments Show IH: WeProcess. Integrated platform or another all-in-one stretched too thin? User Avatar 9 comments