Scanning
Scanning is the fast way to get things into Cobblr. Point your phone at a barcode or take a photo, and Cobblr works out what it is so you can add it in a tap, instead of typing every field by hand.
Two ways to identify something
- Barcode. Scan a product barcode and Cobblr looks it up in product catalogs, coming back with a name, an image, and a category. This is the quick path for anything with a barcode.
- Photo. For things without a barcode, take a picture and Cobblr uses vision to identify it and suggest a name and details.
Either way you get a suggestion, not a commitment. You review and correct before anything is saved.

The camera
You scan with your phone. The camera runs continuously: hold it on one barcode after another and it keeps reading, with no shutter to press and no mode to switch.
Reading a barcode also keeps the picture from that same instant, so one scan gives you the code and a photo of the thing in your hand. A code only says the product exists; the photo says which one you are holding. Cobblr checks the name it resolved against what is in the frame, tells a single unit from the nine-pack that carries the very same UPC, and reads whatever else is printed nearby, a serial number or a service tag, straight off the label.
Press the shutter only for something with no barcode at all.
Everything you capture lands in the inbox; the camera itself never files anything, so you can shoot a whole shelf without stopping to make decisions.
The capture drawer. After every shot, a drawer above the shutter shows the photo you just took, the name as soon as it is identified, a quantity stepper, and an Undo for a mis-scan. Check the shot came out, set "I have 3 of these", and keep scanning without leaving the camera. A photo that fails to save stays in the drawer with a Retry, so a dead spot costs you nothing. The drawer never asks anything and never covers the shutter; ignoring it entirely is fine.
Swipe the drawer up (or tap its grip) for the full sheet: the shot full-size, every photo on the item with a tap to choose the cover, and the fields worth setting while the thing is still in your hand, name, quantity, and location. The location starts from where you are standing (the session's location) and the picker here overrides it for that one item only. While the sheet is open the viewfinder dims and barcode reading pauses, so a stray code can't interrupt an edit; swipe down to put it away, and the next capture always starts with the sheet closed. Looks right clears the drawer so you can move on; either way the item stays in the inbox, where filing happens.
More than one photo. + Photo arms the shutter so your next shot joins the item you just captured instead of becoming a second record. Take the informative shot first (the label, the writing on the box), then the nice one. The shutter turns gold while armed, the drawer says whose photo it is joining, barcode reading pauses (the label you are photographing usually carries a barcode of its own), and Cancel gets you out. Retake replaces the photo and identifies it again, so a name derived from a blurry frame doesn't outlive the frame.
A scanned barcode. A barcode result appears in the same place, as a Scanned sheet above the shutter, with the camera frozen behind it. It asks for a decision: Save & next (it stays in the inbox), Discard, or Not it, retake, which arms the shutter so vision re-identifies the item from your own shot. Every button is there from the moment the sheet opens and works immediately, even while the lookup is still running: press Discard the instant the sheet appears and the action runs the moment the scan lands. While any sheet is open the shutter becomes a plus; pressing it puts the sheet away and attaches your next shot to that item, as the display photo on a barcode item or as an extra photo on a photo item. A code that isn't a product barcode (a serial, an asset tag) doesn't get a guessed name from the web; the name stays blank and the photo does the identifying.
Light, zoom, and angle. Scanning in the dark turns the flashlight on by itself, and off again when the scan lands, the lighting improves, or you close the scanner. It waits out passing shadows and never flickers; turn it off by hand and it stays quiet for the rest of the session. The top-left flash button switches auto-flash on and off, and a small manual flashlight button sits next to the shutter. The scanner also zooms in on its own when a code is too small in view to read, stepping gently, holding still while a code is reading, and widening back out when nothing is in view. Barcodes read at any angle, so there's no need to square the phone to the label.
If scanning misbehaves on a particular device, add ?diag=1 to the scanner
URL for a readout of what it is actually doing: the decode engine, the camera
lenses, whether autofocus was accepted, zoom and torch support, and live
decode timings, with one tap to copy. Setting ?zoom=N fixes the zoom by hand
(which turns auto-zoom off), and ?scandelay=N and ?lens=... let you try a
different attempt cadence or lens.
Scanning a VIN
A car's door-jamb barcode is its VIN: 17 characters that identify that exact car. The year, make, and model are not in the code itself, they come from a lookup. Point the camera at it and Cobblr decodes it against the free NHTSA database, then hands you a record already named "2022 Toyota Corolla Hatchback" with the make, model, year, body, trim, and fuel filled in. The color comes too, read from the paint code on the same label. It runs through the same flow a product barcode does (camera, inbox, confirm); the code's shape decides where it goes, so a UPC still heads to the product catalogs and a VIN to the vehicle database.
The filled fields are a suggestion. Only empty ones are touched, so nothing you typed is overwritten, and a bad or partial VIN says so instead of guessing. If a scan garbles the label, Cobblr repairs it when the VIN's own check digit can prove the fix and leaves it alone when it can't. You can also type a VIN into a vehicle form to fill the same fields. This works on the built-in Vehicles bundle and on any table you build with make, model, and year fields.
Serial numbers
When a serial number or service tag is printed on a thing and the photo can read it, Cobblr files it into the item's Serial number field, taken exactly as printed rather than guessed. It's a real field on parts, assets, and machines, and you can relabel it per table ("Service tag", "VIN", and so on).
The other direction works too. Scan a serial you already track and Cobblr opens that record, even a serial you marked yourself rather than one Cobblr printed, and with no rule to set up first. If two things carry the same serial, it asks which one you're holding instead of guessing.
The inbox
Scans land in an inbox. Each item shows what Cobblr found, and you confirm it into one of your own tables (the picker lists what your workspace actually has, like Yarn or Parts), with a location. You can work through them one at a time or add a batch at once. Scan the same barcode twice and it won't pile up: the existing row's count bumps to ×2, with a +/- stepper on the card to fix a miscount.
The inbox header is one row. The counts read as a sentence, "8 pending · 5 ready · 3 to review · 2 waiting 2d+", and each number is a filter: tap ready for the confident ones, to review for what needs a human look, waiting 2d+ for what has gone stale. Set location says where the next scan will file, and offers to set the same location on items already in the inbox that have none. One box does both search and intake: type words to filter the list, paste a UPC or several links to add them, or drop a file on it, where images become a photo capture and a PDF or CSV becomes a receipt.
Uploading from your device is one button on the header row, and it takes both kinds. You do not answer "is this a photo or a receipt?" before choosing a file, because the file settles it: a PDF or spreadsheet can only be a receipt and goes to the line-item parser, while pictures go to the photo pipeline. On a desktop that button sits beside the camera on purpose, since the camera opens the live scanner and the picture icon reaches shots you already have; on a phone the row carries no camera at all, because the app's own top bar already has one.
Rarer actions sit behind the ⋯ menu, grouped by what they act on: this inbox (fill missing photos, export, and Import an export, which lives next to Export because an export file is neither a photo nor a receipt), elsewhere (things you already track with no location), capture setup (pair phone, auto-pick photos), and Live Sort. The switch between By session and the Sorting plan, and between list and gallery, sits just above the items.
While the AI is still refining a session, its header shows a live "N finishing…" pill. Once everything settles it becomes a filing button that names both the count and the batch's category: File all 3 into Clothing. Filing needs a category and a place, so when some items have no location yet the button reads Place & file all instead and asks first: tap a room or bin and the whole session files there, items that already have a location of their own keep it, and File without a location is one tap if you'd rather place things later. The session header also shows where its items are headed and lets you set one location for the whole session before filing. Items that still need a manual look aren't swept in.
Expanding an item shows just what you need to review it. The full add-to-a-table form, with every field of the destination, appears once you pick a destination, so a suggestion you did not want no longer buries you in the wrong table's empty boxes. The tools you reach for rarely (Split into items, Retake for catalog, Turn into a bin, box state) live in one More menu, and the photo controls sit on the photos themselves: rotate and use as catalog on your own photo, back to original on the catalog's, and an add tile at the end of the strip.
The card is also honest about how it got a guess. A route that came only from incidental keyword matches renders as an outlined, tentative chip with no one-tap Add, and filing a whole session skips it, so a weak guess never rides along with the confident ones. When the workspace has AI configured but the model did not answer, the card says that plainly and offers a one-tap retry rather than quietly falling back.
Turning a tote into a bin
When a scan looks like a storage container, its card offers Turn into a bin, which is also always in the More menu. One tap creates a container location named for you as the next free "Bin N", which you can rename, and the product's photo, barcode, and brand stay on the bin's record as its identity. That identity rides underneath: your name for the bin is never overwritten by the product name. Create & scan into it does the same and makes the new bin the standing file location, so the next things you scan land inside it.
When one photo holds several different things, the card says so ("2 different items in this photo") and offers to split them into separate entries, each cropped out and sent to find its own product image. Several of the same thing stays one row with a quantity. Scan a stack from one series (a run of Little House books, say) and the inbox spots it and offers to tag the whole set at once. And a whole inbox can move between workspaces or Cobblr installs: Export it to a file and Import it on the other side. The whole item travels, not just its current state: photos, history, your typed hints, and the session each item belongs to, receipt and all.
Once things are captured, putting them away has its own page: the sorting plan, the put-away walk, and Live Sort.
Categories
Scan five electrical parts and they land in one table, told apart by a category, instead of scattering across four look-alike tables. A difference in kind is recorded as a category on the record rather than by sending it somewhere else, so things you would file together stay together. Anything Cobblr can't place with confidence goes to whichever table you nominate as your catch-all, tagged with its category. The category list is yours: it starts empty and grows only from values you confirm, and a near-miss snaps onto a value you already use instead of spelling it a second way.
Within one session, Cobblr also agrees on a single category for the batch, so three shirts identified with different words for the same thing ("apparel" and "clothing") still file into one section, under the broader label. Differences of case and plural count as the same category, and the identify is shown the categories your workspace already uses so it reuses one instead of inventing a synonym. Filing one item at a time still uses that item's own category, so you can always override the batch by opening its card. A category that outgrows the table can later be promoted into a table of its own.
Things you already track
Scan something you already have and Cobblr notices, showing an "Already tracked" banner rather than quietly making a duplicate. What it offers depends on the thing. For everyday stock it's +N to it (add to the count), Move here (file it into the bin you're standing at), or Link barcode (teach the existing item the code you just scanned, so the next scan matches at once). For a one-of-a-kind thing like a vehicle or a tool, it asks "is this the same one?" and offers to merge what the scan learned into the record you already have: a license-plate photo of a car you first added by its VIN fills in the plate and color. Only blank fields are filled, so nothing you already entered is overwritten.
Buying more of something
For things you restock, adding to the count asks one short question: this buy was as usual, a one-off, a stock-up, or going quicker lately. That answer is what keeps a party's worth of one item from being read as your new weekly rate, so the reminders that follow are paced to how you actually shop.
If the numbers say you should still have some left, it asks a second question before that one: what happened to the ones you had? Answer still have them, gone, used them faster, or they went bad. The last answer is the one that earns its keep, because food you threw out and food you ate look identical in a stock count and mean opposite things about how much to buy next time.
Correcting a scan
If the AI got something wrong, type a research hint ("it's the 5 mm one", "this is an RA200 headset") and hit Re-run AI: the words override the picture and it identifies again with your correction folded in. A hint is a standing correction, not a one-off: it keeps applying to every later re-run of that item, so you never type the same fix twice. Corrections also build on each other. Say "color: black" and later "it's the loose fit" and both keep applying; give two different colours and the newer one wins. The item's history shows which runs used a hint and what it was, so you can always see what Cobblr is going on.
The barcode itself is a fact you can correct. Cameras and photo reading sometimes get a digit wrong, and a wrong code re-resolves to the wrong product on every re-run. Tap the pencil next to the code on a pending item (or Add barcode on a photo item that never got one), type the digits off the label (spaces and dashes are fine), and Save & re-run replaces the code and re-runs the lookup against it; the old code stays in the item's history. A hint that names the code works too ("correct barcode 5060218983330"), and a bare 12 to 14 digit number in a hint counts when its check digit proves it is a real barcode. An added photo can drive a re-identify as well: each photo you add carries a ↺ button that identifies the item from that shot, for when the first one was too dark or you want the label rather than the box.
When Cobblr knows an item's colour, it puts it in the name ("…T-Shirt, Black"), and correcting the colour corrects the name too, so a title never contradicts the photo beside it. A brand whose own name contains a colour word is left alone: the colour you give is appended after the name, never written into the brand.
A re-run is a gamble, though, and a second look can come back worse than the first. When it does, the card kept what it had before and offers Put it back. Beside Re-run sits Replay (no AI), which redoes everything except the model call and reuses the last answer: handy when the identification was fine but a field or a table wasn't, and it costs nothing.
The item's history says which of those a run actually was, and whether it worked. A re-run that no model answered is marked the AI didn't answer, so a disappointing result reads as "nothing replied and the keyword match stood in" rather than "the AI looked and this is its best". That is precisely when you want to know, since the two call for different fixes: one wants a retry, the other wants a hint.
Nothing you decide is a dead end. Discard a scan and it drops into Recently deleted with a Restore. File one into the wrong table and Recently committed has a Send back that returns it to the inbox to redo and removes the record it created.
Where a scan result comes from
A barcode is resolved by working down a chain, and the first tier that answers wins. Knowing the order explains why the same code can come back rich on one install and empty on another.
- A code that cannot be a product code is refused outright. The check digit is verified first, so a transposed digit becomes an honest miss instead of a confident wrong product.
- What this install already knows, so a code scanned twice costs nothing the second time. Simultaneous scans of the same code are collapsed into one lookup.
- A shared resolver on your own network, if the operator runs one. Its answer is final: one cache and one quota for every install behind it.
- The barcode network, if the operator joined it. Open data plus corrections from other installs. A hit wins; a miss simply falls through, so joining never costs you an answer you would otherwise have got.
- Third-party catalogs, each switchable and each taking its own key. This whole step is behind a master switch an operator can turn off, in which case no barcode ever leaves the box.
A tier being throttled is not the same as a product not existing, and Cobblr keeps them apart: a throttle is never remembered as a miss, so a rescan later tries again properly. Without that distinction one busy moment would poison a real product's record permanently.
Choosing the catalog photo
An identified item comes with a strip of product photos to choose from, ordered best first. That ordering understands colour now: when your item records a colour, a photo whose title names that colour is preferred and one naming a different colour is pushed down, so a red variant stops winning for something you know is black. This ranking is free and always runs.
For a harder call, tap ✨ Pick best (AI). A vision model looks at the actual candidate photos and picks the cleanest catalog shot, weighing the product on its own (no hands, faces, or a photo of just the tag) first, then the correct colour (using your own scan photo as the reference), then a clean studio look over a lifestyle shot. It uses what the scan already knows, so it treats a garment or a boxed grocery product the right way. The photo it picks gets a ✨ badge and a one-line note on why; tap any other photo to override it. This uses more of your AI allowance than the free ranking, so it runs only when you press it, and it needs an AI provider configured under Configuration → AI.
If you'd rather not press it every time, Auto-pick photos is a workspace switch (owner and admin only) that picks the catalog photo the same way for every newly identified item. It lives in two places that are the same setting: the Scan photos section of the AI configuration page, and the inbox's ⋯ menu under capture setup. It is off until you turn it on, because it spends AI on every scan rather than only when you ask, and once on it is careful about when it pays: it never replaces a photo you picked yourself, it never pays twice for the same item (a re-run only re-picks when your correction actually changed the question, so fixing a colour gets you a new photo), and it skips items already filed or discarded, items with no name yet, and searches that found only one photo.
Receipts and email
A barcode or a photo is one thing at a time. A receipt is a whole haul. Hit Receipt on the scan page and pick a CSV, a PDF, or a photo of one, and Cobblr reads out the vendor, date, and every line item, dropping each into the inbox to confirm like any other scan.
Most receipts read without any AI. A CSV or a ruled table parses directly, and even a plain till receipt with no neat table is read line by line for free. Cobblr only trusts that read when the line items add up to the receipt's own subtotal, so it can't hand you a confident wrong price. A photo falls through to a vision read, and a text receipt whose arithmetic doesn't reconcile falls through to an AI text read instead.
Each receipt becomes its own labeled session in the inbox rather than scattering into whatever else you were scanning. The header names the vendor when it can ("Receipt · Northside Hardware"), adds the order or invoice number when the receipt states one ("Receipt · Northside Hardware #384602"), and marks an emailed one with the time it arrived. The line items are grouped underneath, so a whole receipt reads and triages as one thing. If the parser missed the order number or read it wrong, + PO# in the header lets you set or fix it, so two receipts from the same store stay distinct.
The session keeps the original it was read from. Original opens the source (the PDF, the photo, or the emailed receipt) full screen, and Re-parse runs the reader over it again and replaces the still-pending lines, handy when the first read was weak or you turned on AI afterward. A receipt line that has only a name can still fetch a product image or re-identify from its own re-run button.
When a line abbreviates a name the way a till printer does ("SHRD MOZZ 8Z"), Cobblr matches it to the part you already have ("Shredded Mozzarella") and offers to add to it, instead of creating a second part every shopping trip. Forward or upload a receipt you already imported (same store and order number) and it won't silently duplicate either: Cobblr tells you it is already in your inbox and offers Import anyway if you really want a second copy. A receipt with no order number is never treated as a duplicate.
If you run the Purchases module, one tap rolls a receipt into a purchase order. With several receipts waiting, they collapse into a single line ("3 receipts to confirm as purchase orders") with Confirm all, or you expand it to confirm each on its own.
You can also forward receipts in by email. The scan page shows a receipts+…@
address (tap Copy); forward a receipt there and it runs through the same parser
into your inbox. This works even when the receipt is the email body itself with
nothing attached, which is how a lot of store receipts arrive: Cobblr reads the
body (and its HTML), splits an item list into rows, and saves anything it can't
split as a single note to sort. Either way you always hear back, with a reply that
says what landed: how many items imported, that it was already imported, that it
was saved as one note, or that no receipt was found. An emailed receipt is stored
the moment it arrives, so it is never lost even if something hiccups while it is
being processed.
A workspace admin can go further and wire up a standing inbound address that
vendors and systems send to on their own, so order confirmations and shipping
notices arrive as confirm-ready rows with nobody forwarding anything. Both the
receipts+…@ address and the standing address need setting up by an admin or the
operator; until then they simply don't appear.
A hardware scanner
Plug in a USB or Bluetooth barcode scanner and every Cobblr page picks it up. There's nothing to configure and no particular screen to be on: scan an item's UPC from anywhere in the app and it lands in the inbox, with a toast that jumps you there.
Get a 2D scanner rather than a laser-only 1D model. It reads QR codes as well as barcodes, so the same scanner that captures items also reads your location labels and drives the filing funnel. For picking and setting one up, see Barcode & QR scanners.
Your phone and your desktop
Working at a desktop? Hit Pair phone: your signed-in desktop shows a QR code, you scan it with the phone, and the phone is signed in to that workspace on the spot, no password typed on the phone at all. From then on it's the camera: everything it scans lands in the same inbox your desktop is showing.
Capture first
You don't have to set anything up before you start. Scan a pile of stuff, and Cobblr helps sort it into the right place afterward. Structure can come once you see what you've got.
Privacy
Barcode lookups reach third-party product catalogs. On a self-hosted install you control exactly which ones, or turn them off entirely. You can also opt in to an optional shared barcode reference that Cobblr consults when you enable it, so a fresh install resolves more products without configuring its own catalog lookup keys; it is off by default. See Self-hosting -> Privacy.