The short version

Three things the extension never does

01

It sends nothing to Russolutions. Ever.

There is no Russolutions server for the extension to talk to, and there never has been. Out of the box it makes no network requests at all — no analytics, no telemetry, no licence check, no sync.

One optional feature is the single exception, and only once you switch it on: CRAFTED's Direct API. It sends your prompt to the AI provider you chose, with your key — never to me. See the note below.

02

It never watches you browse

No analytics, no telemetry, no identifiers, no accounts, no sign-in. The extension holds no site permissions at all: it can only touch the tab you deliberately opened it on, at the moment you opened it.

03

It never keeps anything I can reach

What you type is saved in your own browser's local extension storage, on your own machine. It is not synced between your devices, and there is no copy of it anywhere else. I cannot see it, and neither can anyone but you.

Technical reality

What the extension actually touches

The extension is one panel drawn over the page you are working in. R:each holds a list — one row per line — and fills a form from it. CRAFTED composes a prompt and inserts it into whatever field you are standing in. Both run entirely inside your browser.

What is stored: the list you paste in, kept as the text you typed; any lists you save and name; your CRAFTED drafts; and the panel's own settings — which app you were last in, its width, where you dragged it. That is the whole of it.

Where it is stored: chrome.storage.local — your browser profile on this device. Deliberately local and not sync: nothing travels to another machine, or through a Google account, on my behalf.

What it reads from the page: only form fields, and only on the tab you opened it on. To fill a box it has to find the box; to know whether a paste landed, it compares what arrived against the row you were on. Those comparisons happen in your browser and are thrown away immediately. It does not read, collect or transmit the content of the pages you visit.

How to delete it: clear the list from the panel, or remove the extension — uninstalling takes its storage with it. There is nothing to ask me to delete, because I never had a copy.

1
You open the panel
The toolbar button, ⌥⇧P, or the right-click entry. That gesture is what grants the extension access to that one tab — nothing runs anywhere until you ask.
On your machine
2
You paste a list, or build a prompt
Saved to your browser's local extension storage so it survives a reload and is there on the next tab. It does not leave the device.
On your machine
3
A value goes into a field
Written into the form in front of you, or put on your clipboard for you to paste. Both are your own browser handing something to itself.
On your machine
4
There is no step four
No request is made, no record is written, nothing is queued to send later — unless you switched on CRAFTED's Direct API and pressed Send, which goes straight from your browser to the provider you chose. Russolutions is not in the path either way.
Nothing sent to me
Why it asks for what it asks for

activeTab — lets the panel be drawn into the tab you opened it on, for that tab, at that moment. This is what allows the extension to request no site permissions: it cannot touch a page you did not invoke it on.
scripting — injects the panel into that tab. It goes into every frame, because a form field very often sits in an iframe and a panel in the top document alone could not fill one.
storage — saves your lists and drafts locally, as above.
contextMenus — adds one right-click entry to open the panel.
clipboardWrite — lets the Copy buttons put text on your clipboard without Chrome having to ask the website you are on for clipboard access. It is the permission that keeps the clipboard icon out of your address bar; it grants writing only, never reading.

A note on the clipboard

Copying a row puts it on your clipboard, which is the point of the button. The extension never reads your clipboard — it holds no permission to, and there is no code in it that could.

It does listen for a paste landing in a form, so it can tell whether what went in was the row you were on and move the list along. That is the paste event the page itself receives, not the clipboard: the comparison is made in your browser against the row already on screen, is never stored, and never leaves the machine — and if the text does not match, the extension simply stays where it is.

A note on Direct API — the one thing that leaves your machine

CRAFTED can be connected to an AI provider so its Send button answers the prompt instead of you carrying it somewhere else. It is off until you turn it on, and while it is off everything above holds exactly as written.

Turned on, it sends to the provider you picked (DeepSeek, OpenAI or Anthropic), authenticated with an API key you supply and pay for, and only when you press a button: Send in CRAFTED transmits the prompt you built; Fill from notes in R:each transmits the text you pasted into that box together with the field names on your list — the labels, so it knows what to fill in. Your saved lists and the values already in them are not sent. That text leaves your machine and is handled under that provider's own terms, not mine. Your list, your saved sets and the rest of the panel are never part of it.

It does not pass through Russolutions. The request goes from your browser straight to the provider; I do not proxy it, see it, log it or count it. The extension's permissions name those three API addresses and nothing else — it holds no permission for any website you browse.

Your API key stays on this machine. It is kept in your browser's local extension storage, read only by the extension's background worker, and is never shown back to you, never written into a saved list or an exported spreadsheet, and never handed to the page you are on. Settings → Direct API → Forget the key deletes it, and so does removing the extension.

A note on your side of the table

A R:each list is usually a client's details, because that is what it exists to fill a form with. That data stays your responsibility: you — or your firm — remain the party accountable under the PDPA and your client engagements for being authorised to handle it. The extension holds nothing either way, but it runs on whatever machine you install it on, and that machine's security is yours.

Contact

If something here is wrong

This page describes the extension as it is built. If you find behaviour that contradicts it, that is a bug and I want to hear about it — reach me through the contact form.

If this policy changes, the date at the top changes with it. There is no mailing list to notify, because there is no list — I do not have your email either.

The simplest data security is not holding the data at all. The web tools are built that way, and the extension goes further: it has no server side to hold anything with.

Russell