Skip to content

Every count leaves a photograph.

Tabulora counts the tray from an iPad camera, checks the bottle against the prescription, and keeps what it saw. Six months later somebody hands you an Rx number, and the count, the variance and the picture are still there.

Counting runs on the iPad’s own neural engine. No frame of your bench is sent anywhere to be counted.

30tablets countedCount is stable
How a count works

Four things happen, in one order, every time.

The four lines on the right are what the screen actually says.

  1. Scan the prescription (script) barcode

    The label carries the NDC, the Rx number and the quantity to fill. Tabulora reads all three off one scan, so nobody types a drug code at the bench.

  2. Scan the stock bottle to verify the drug

    The bottle has to be the prescribed drug before a count can start. If it is not, the screen says which way it is wrong and the count does not begin.

  3. Place the pills on the tray — hold steady

    A dot lands on every tablet as the camera finds it. The number moves while the tray does, and settles when it stops.

  4. Count is stable

    Only then can the count be confirmed. Confirming saves the number, the tray photograph and everything read off the two barcodes, together.

The record

Counting is the part you watch. The record is the part you keep.

Almost every time somebody opens Tabulora at a desk, it is because they have an Rx number in their hand and need to know what happened. A patient disputes a count. An inspector asks about a fill. A discrepancy surfaces on a Thursday about a Tuesday.

So the dashboard is a lookup, not a wall of charts. One box takes an Rx number, an NDC, a scanned barcode or a drug name — because the person using it has a label in their hand and should not have to know which of those they are holding.

Saved with every count
The tray photograph, clean and with the detections drawn on it.
Never edited
Counts are create-once. A correction is a new count, not a rewrite.
Kept in the bench’s timezone
A 7pm count is dated where it was counted, not where it is read.
Scoped to one pharmacy
A pharmacy sees the records it made, and no others.
Rx 66249Example record
The tray
What was counted
30tablets counted

Matches the
required quantity

Prescription
66249
NDC
68180-0992-03
Required
30 tablets
Counted by
Jamie Okafor
Counted at
4 Sep 2026, 6:42 pm
Mode
Validation
What it refuses

The bottle in your hand has to be the drug on the script before anything gets counted.

When the scanned bottle’s NDC is not the one on the prescription, Tabulora looks the two drugs up, compares active ingredient, strength, dosage form and route, and checks the Orange Book. Only an A-rated substitute is ever offered, and offering is all it does — a person accepts it.

  • Wrong drug

    Blocked

    The bottle is a different drug from the one on the script.

  • Wrong strength

    Blocked

    Same ingredient, different strength.

  • Not a valid substitute

    Blocked, with no override

    Same ingredient and strength, different form or route — plain against enteric coated, immediate against extended release, tablet against capsule.

  • Pharmacist must approve

    Held for a pharmacist

    A true pharmaceutical equivalent that carries no A rating in the Orange Book.

  • Equivalent drug

    Offered, never assumed

    A different NDC that is both a pharmaceutical equivalent and A-rated against the prescribed drug.

  • Couldn’t verify the bottle

    Blocked, and says so

    The drug database could not be reached, or does not know the NDC.

One case can be overridden: a pharmaceutical equivalent with no A rating. It takes a press-and-hold, it states three specific warnings first, and the override is written onto the fill under the pharmacy’s name.

Controlled substances get counted twice, and the second one is blind.

The first total is banked and hidden. The tray has to physically empty before the second count starts — Tabulora waits for the camera to see it clear, so a “second count” cannot be the first count confirmed twice. If the two disagree, nothing saves until somebody recounts.

Which fills need this is your pharmacy’s rule, read off the Rx number, so it does not depend on a lookup succeeding.

A short fill is recorded as a short fill.

Count 26 against a 30 and Tabulora asks whether the remaining four are owed. Say yes and the prescription carries the balance. Next time that Rx is scanned — on any station — it says what is still owed and offers to fill exactly that.

Counting past the required quantity does not save at all.

The back room’s wifi is not part of the count.

A technician who has just confirmed a count needs that record to exist now, not once a connection comes back. So the save is local and immediate, and the upload is a consequence of it. The record and both photographs queue on the iPad’s disk, survive a relaunch, and drain when the network returns.

Detection never needed the network in the first place — the model runs on the iPad’s own neural engine. Unlocking a station with a staff PIN does not need it either, which is the point: a lock that stranded a technician on dead pharmacy wifi would be switched off inside a week.

Who was at the bench

One pharmacy, one login, shared by everyone — which was always fine for access and never fine for attribution. Turn on the PIN lock and every count carries the name of the person who was standing there.

Managed from the desk

The staff roster and the idle timeout are set on the dashboard and sync to every station. A lock a technician can switch off from the bench they are standing at is not a lock.

Scanning without pairing

A handheld scanner plugs into the iPad’s USB-C port and types what it reads. Pull the trigger and the scan lands wherever the workflow is waiting for one. The camera reads barcodes too, and manual entry is always there for a torn label.

Limits, stated up front

You will get a more useful answer out of this page than out of a number nobody can check.

It cannot count a tablet it cannot see.

A pill completely underneath another pill has no pixels in the frame, and no single camera solves that. Tabulora is built for a tray spread into one layer, and it will not guess at a pile.

It reads the bench, not the person.

A staff PIN records who was at the station. It is an honest account of an afternoon, not evidence against somebody who already holds the pharmacy’s password.

It does not decide anything.

Tabulora blocks, flags and asks. Every substitution, every override and every short fill is a person’s call, recorded as theirs.

It is not a regulated device.

This is a counting and record-keeping tool for pharmacy staff. It does not carry a clearance and it does not claim one.

Tabulora is set up one pharmacy at a time.

There is no self-serve sign-up, on purpose. A pharmacy gets an invite code, redeems it once to create its account, and that account is what the iPads and the dashboard both use. Getting the camera, the tray and the lighting right takes a conversation first.

A bench station
An iPad, landscape, on the counting bench. It can use its own camera or an overhead USB-C one.
A plain tray
Light, matte and evenly lit from above. Not a lightbox — the counting was built against top light.
A scanner, if you want one
Any USB-C or Bluetooth handheld that types what it reads. Optional; the camera can scan instead.

Ask for an invite

Tell us the pharmacy, roughly how many fills a day it does, and whether you already have an iPad at the bench.

access@tabulora.com

Already set up? Sign in to your dashboard.