Skip to content

Building Your Library

Trent Bauer edited this page Jul 12, 2026 · 2 revisions

Building your film and lab library

Use this when: you want to save your own films and labs so they show up across the whole app — this is separate from contributing data to the shared public presets, which everyone importing FilmCalc for the first time gets offered. Everything here stays private in your own browser unless you export it.

This is the Library tab (Films / Labs sub-tabs).

The fast way: Add with AI

✨ Add with AI (top of the Library tab) reads a shop or lab pricing page for you and generates the entry, which you review and edit before it's saved — nothing is written until you click Add.

  1. Pick a Provider (Claude, ChatGPT, Gemini, or any OpenAI-compatible endpoint like LM Studio or OpenRouter) and paste in an API key — it's kept in memory only and discarded when you close the window, unless you're self-hosting and explicitly tick "remember".
  2. Choose 📋 Paste page (open the shop/lab page, select all, copy, paste here — most accurate, since the AI reads exactly what you see) or 🔗 Use a link (the AI fetches it itself — fewer steps, but depends on the model being able to browse, and it's more likely to get prices wrong).
  3. Generate, then check the preview against the real page before hitting Add to Library. AI-invented prices look completely convincing — always verify the numbers yourself.

Jumping here from a shop page

Under the Add with AI button, 🔖 Jump here from a shop page (bookmarklet) has a button you drag to your browser's bookmarks bar. Browsing a film or lab shop and want to add it? Click the bookmarklet — it opens FilmCalc in a new tab with Add with AI already open in 🔗 Use a link mode, that page's URL already filled in. No switching tabs to copy the link, no retyping it.

The bookmarklet is generated from whatever URL you're viewing FilmCalc at, so it always points at your instance — the public site if that's what you're using, or your own self-hosted copy if you're self-hosting. Nothing to configure; just drag a fresh one from your own instance if you ever switch.

Adding a film by hand

One film stock, saved once, with a list of bundles underneath it:

  • Name, Box Speed, Process, Format, Max Push/Pull describe the stock itself.
  • Bundles are the different ways you can buy it — a single roll vs. a 3-pack vs. a bulk 10-pack, each with its own price, store, and buy link. Add one bundle entry per pack size; don't create a second film entry for a different pack size of the same stock.

A film is identified by Name + Box Speed + Format together, not name alone — so the same stock name at two different ratings (or in two different formats) are legitimately separate entries. Saving never overwrites a different entry: to edit an existing film in place, keep its Name, Box Speed, and Format unchanged while you edit anything else.

Adding a lab by hand

One lab, saved once, with a list of service tiers underneath it:

  • Name, plus optional address, phone, email, website — the address powers a one-tap Directions link straight to your phone's maps app, so it's worth getting right.
  • Service Tiers are the different price points the lab charges — e.g. standard vs. hi-res scan, or next-day vs. same-week turnaround. A lab charging different prices for different combinations needs a separate tier for each one — don't average them into a single entry.

Each tier has its own Dev Cost, which Processes it handles, Turnaround Time, push/pull fee (flat or per-stop), and whether it offers Hi-Res scans. Tick "No push/pull available at this tier" for something like a same-day minilab that can't push or pull at all — it's automatically excluded from comparisons whenever a roll actually needs pushing or pulling, but still appears normally for box-speed rolls.

Tips for gathering accurate data

These apply whether you're typing it in by hand or checking an AI-generated entry:

  • Always use the regular price, never a sale price. If a page shows a discount with the original crossed out, use the crossed-out number — sales end, the data outlives them.
  • Include postage in the film cost if the page states a shipped price. Otherwise the per-photo cost undersells what you'll actually pay.
  • Read the lab's pricing page for every combination it charges for, not just the first number you see — process × turnaround × scan resolution often each carry their own price, and each one of those needs its own service tier to compare correctly.
  • Set Max Push/Pull conservatively. 2 stops for famously flexible stocks (Tri-X, HP5+, Portra), 1 for typical consumer colour film, 0 for stocks that shouldn't be pushed at all (Ektar). If you're not sure, 1 is a safe default — the app will only warn you, not stop you.
  • Get a full, mappable street address for labs — city + postcode + country, not just a suburb name — otherwise the Directions link may point somewhere near, but not exactly at, the lab.
  • Grab the direct product/pricing page URL, not a homepage or search result — that's what shows up as the "Buy from…" / lab website link later.

Managing what you've saved

  • Hide this film/lab from the Calculator keeps an entry manageable in its own tab without it showing up in Film Lookup or Dev Cost comparisons — useful for a stock you're not currently shooting or a lab you've stopped using, without deleting your notes on it.
  • Delete only removes your own custom entries — built-in presets you've imported can't be deleted this way, only hidden (or removed via Settings → Delete All Data, which clears everything).
  • Every saved film profile also appears grouped by Box Speed further down the Films sub-tab, with the cheapest cost-per-photo bundle at each ISO highlighted — a quick sanity check that you're buying the best-value pack size for what you actually shoot.

Clone this wiki locally