Frequently asked questions

Your API key

What happens to my API key?

It is sent to our server only to run the extraction you asked for. It is held in memory for at most 30 minutes and then discarded. It is never written to disk or saved otherwise. Your browser might remember the key locally so you do not have to retype it the next time you visit Metalens. However, that copy of your key lives in your browser only and not on our server.

Your PDFs and extracted data

What leaves my machine when I extract a paper?

The PDF is uploaded to our server, which renders its pages and sends either the page images or the extracted text, together with the prompt, to the model provider you chose. The whole content of the document therefore reaches the provider.

If you provided your own API key, this runs through your own provider account under that provider's data policy. If you use Metalens credits via an account, it is our account at Google, and the Gemini API terms apply. Provider policies differ and change; check the current one before uploading sensitive material. If nothing may leave your machine, run the software locally with a local model (see below).

What do you store, and for how long?

If you are not logged in

Everything you upload is deleted automatically two hours after your last activity. Download your results as JSON or CSV from the review screen before then; no account is needed for that. You can also delete everything at once with the link below.

If you are logged in

Your data stays until you delete a paper or a dataset. Deleting removes the PDF, the page images, the raw model response and the records.

Where are the servers?

The hosted service runs in the United States (Fly.io, Virginia) with files in Cloudflare R2 object storage. If you are bound by an institutional data agreement that rules this out, you can run a local version of this yourself. You can find the Metalens code at github.com/johanna-einsiedler/metalens and a Python package for running MASEMiner locally at github.com/johanna-einsiedler/maseminer.

Can I use the hosted version with a model running on my own computer?

Not directly. In the hosted version the PDF is read and the model is called by our server, not by your browser. An address such as http://localhost:11434 therefore points at our server, where no model is running, and the connection fails.

Can I keep everything on my own computer?

Yes. The software is open source (MIT) and runs on your own computer as the metalens command: the same engine with an embedded database and no account. Your PDFs, page images and data stay in one folder on your machine. Use it when papers may not leave your computer, when several coders should review the same papers independently, or to work with a model that runs on your computer.

  1. Install uv, a small tool that installs and runs Python programs, with the one-line command from its installation page. You do not need Python yourself; uv fetches what it needs.
  2. Start Metalens in a terminal:
    uvx metalens
    If that reports that the package cannot be found, install it straight from GitHub instead:
    uvx --from git+https://github.com/johanna-einsiedler/metalens metalens
    The first start takes a minute. Your browser then opens http://127.0.0.1:8775. Keep the terminal open while you work; Ctrl+C in the terminal stops Metalens. Run the same command to start it again.
  3. Your data is kept in the folder .metalens in your home folder: the database, the PDFs and the page images. To keep a project in its own folder, start with --data-dir, for example uvx metalens --data-dir ~/my-review, and use the same option every time. Back up by copying the folder while Metalens is stopped.
  4. A preset someone sent you as a .json file: under Presets in My workspace, press Load preset file. Or copy the file into the presets folder inside the data folder and reload the page.
  5. Results made elsewhere (a .json file per paper next to its PDF) go in through the Import page and need no model. To extract with a model, enter your own API key on the extract page, or choose "Local / self-hosted" as provider and give the address of a model server on your computer (Ollama, LM Studio, vLLM, for example http://localhost:11434); then nothing leaves your computer.
  6. To share your work, press Export JSON on the dataset page and send the file.

To update to the newest version, start once with uvx --refresh metalens. MASEMiner, the version with the MASEM presets only, starts the same way with maseminer in place of metalens (data in .maseminer, address http://127.0.0.1:8765). Both can be installed side by side.

Who can see my data

Is my work visible to others?

No. Papers, datasets and presets are private to you until you publish a dataset. Publishing shares the extracted records, the evidence quotes, the preset and your verification history, but not the PDFs or page images.

What does publishing a dataset do?

It opens a pull request in the public datasets repository on GitHub; once merged, the dataset is listed in the data catalogue with a citation that points at the GitHub copy. A merged dataset is in git history and in any fork, so it cannot be withdrawn afterwards; corrections are published as a new version.

Am I allowed to upload these PDFs?

You are responsible for that, which is why the upload step asks you to confirm it. Two rules of thumb:

If a PDF contains personal data, data-protection law applies to the transfer to the model provider and to our servers.

Still stuck, or have an idea?

Ideas for improvements, a bug to report, or something you would like to build together? Write to the address below. Bugs and feature requests are also welcome as issues on GitHub.