Inspiration
Focused work gets interrupted by the same small tasks over and over.
You ask an AI chat to explain something again, or give an example, or test you. Every time, you type the whole sentence out by hand. You copy one paragraph from your notes, change window, paste it, change back, then do it again for the next paragraph. Half the time the words you need are inside a photo or a locked PDF, so you cannot select them and you type them out yourself. You open Instagram to reply to one message and the feed appears first.
None of that is the real work. It is time spent around the work, and it adds up to hours a week. I kept hitting the same three walls, so I built tools that remove them instead of working around them forever.
What it does
Lock In Tools is three free, open source tools. All three run on your own device. No accounts, no servers, nothing tracked.
HyperKeypad is a Chrome extension. It puts a small keypad on top of any AI chat. Press one key to send a prompt you saved. Turn on paste mode and one key sends whatever you copied, inside a template if you want, so "Explain this" plus your copied text goes out in a single key press. It works on eighteen chat sites already, including Claude, ChatGPT, Gemini, Grok, DeepSeek, Perplexity and Copilot, and you can add any other site yourself.
Multi-Copy is a Chrome extension. Draw a box around anything you want to keep, as many times as you like, then paste it all together in one go. In Image mode it reads words out of pictures, diagrams and locked PDFs, the kind you normally cannot select at all.
Feed Blur is an Android app. It hides the Instagram feed, Reels and Explore, and turns the sound off while they are hidden. Messages, Stories, profiles and search keep working exactly as before. Turning a block on is instant. Turning one off needs a fifteen step puzzle, so switching it off is slower than just closing the app.
The AI inside it. Multi-Copy includes the Tesseract LSTM recognition model compiled to WebAssembly, about 22 MB of model and runtime, and runs it inside a Chrome offscreen document. A picture of the area you selected is cropped, made larger if the text is small, and read on your own machine. Nothing is uploaded, including the picture.
That choice matters. The easy way to build this is to send the picture to a cloud service. That would mean every page of notes and every private document passing through someone else's server. Running the model on the device removes that completely, at the cost of a much bigger download.
HyperKeypad solves the other half. It is not a model. It is the layer that makes a model faster to actually use, which is where most of the daily friction with AI sits.
How we built it
Multi-Copy is Chrome Manifest V3. A content script draws the selection box and reads text. A service worker takes the screenshot. An offscreen document runs the OCR model, because a service worker has no DOM for the engine to use. Collected pieces live in chrome.storage.local, so your list survives page loads and stays in sync across tabs.
HyperKeypad uses one adapter per chat site to find the message box and the send button. If a site changes its layout, it falls back to the last box you clicked into. Keys and settings stay in local extension storage, and the clipboard is read only at the moment you press a paste key.
Feed Blur is Kotlin. An accessibility service tells the app which Instagram screen is open, which is the only way to tell your messages apart from your feed. An overlay permission draws the blur on top. It also takes audio focus while a screen is covered and puts your volume back when you leave.
The website at lockintools.com is plain HTML, CSS and JavaScript. No framework, no build step, no dependencies, about 100 KB. The product pictures on the landing page are drawn in code rather than saved as images, so they stay sharp at any size and cost about 6 KB instead of 400 KB.
Built with AI. I used Claude throughout, and it changed what I could finish alone. It helped most on the parts where I did not know what I did not know: getting Tesseract to start under Manifest V3 took several rounds of working out why the worker was hanging, and writing eighteen site adapters meant reasoning about eighteen different page structures.
Challenges we ran into
Getting Tesseract to run under Manifest V3. Service workers have no DOM, so the engine cannot live there. The fix was an offscreen document, a content security policy that allows wasm-unsafe-eval, and loading the worker file directly instead of as a blob URL.
Reading small text. Running OCR on a screenshot at its normal size gives poor results. Cropping to the selection and making it up to 3x bigger before reading made a large difference.
Eighteen chat sites, all different. Every one has a different page structure and several changed while I was building. Fixed selectors alone were too fragile, so the keypad falls back to the last box you clicked.
A 22 MB extension. The model is nearly all of that. I first made OCR an optional download after install, and it was worse, because a setup step people have to complete is a feature most of them never turn on. Including it was the right call even though the download got big.
Making Feed Blur hard to defeat. A blocker you can switch off in two taps does nothing. The fifteen step puzzle exists so that turning a block off takes longer than simply closing the app.
Accomplishments that we're proud of
Running a real neural network fully on the device inside a browser extension, with no server and no API key, so text from private documents never leaves the user's machine.
Three tools finished and working, not prototypes. All three install and run today, and the site, install guides and help pages are written for people who are not developers.
Eighteen AI chat sites supported, with a fallback that keeps the tool working when a site quietly changes its layout.
Choosing the harder architecture. Cloud OCR would have been a hundred lines instead of several days of WebAssembly debugging, and I would have had a faster demo and a worse product.
What we learned
The gap between a model being capable and a model being useful is mostly interface. None of these tools train anything, and two of them are a few hundred lines, but they remove real friction from work people already do every day.
Privacy and convenience genuinely trade off. Local OCR cost 22 MB of download and several days of debugging. The bigger download was the right call, but it was a real cost, not a free win.
AI does not replace judgment about what to build. Every decision that mattered, including bundling the model instead of calling an API, making unblocking harder than blocking, and dropping a feature because a required setup step meant nobody would turn it on, was a product call.
What's next for Lock In Tools
Firefox and Edge builds, so the extensions are not Chrome only.
More OCR languages, since the model included today reads English only.
Letting one HyperKeypad key run a series of prompts instead of just one.
Chrome Web Store listings, which would remove the manual install step completely.
Log in or sign up for Devpost to join the conversation.