The mobile app
One receipt, photographed at a counter, followed all the way to a reviewable entry. The same sheet of paper is on every frame below.
One capture
- On the counter
- Deskewed
- Queued
- Sending
- A reviewable entry
It scans. It does not photograph.
A native document scanner finds the edges, straightens the page and takes as many as you point it at. It uses the platform’s own scanner, and on a device that cannot run one it falls back to multi-shot camera capture rather than failing at the counter.
On a device without a platform scanner, a plain multi-shot camera, and the rest of the app behaves the same.
Edges found. Hold steady.
- Edges found
- Auto-crop
- Multi-page
The preview is the export.
Rotate a page, enhance it, or leave it alone. The enhancement you are looking at is rendered by the same code that writes the exported file, so what you approve is what leaves the phone. A preview drawn by a different code path is a guess with a picture attached.
A local duplicate warning fires before anything is queued, on the device, without asking the server.
A copy of this is already on the phone.
- None
- Document
- Greyscale
Kill the app. The queue does not care.
Pages are written to the device before anything uploads, so a batch outlives a crash, a lost signal or a phone that ran out of battery in a car park. It resumes on its own, backs off when the network is bad, and picks up again from a cold start.
Queued
- alphamega-18feb.jpg2
- petrolina-receipts.pdf6
- cyta-invoice-41207.pdf3
- boc-statement-apr.pdf20
Submission sub_9f4c1a
Recovered
- alphamega-18feb.jpg2
- petrolina-receipts.pdf6
- cyta-invoice-41207.pdf3
- boc-statement-apr.pdf20
Submission sub_9f4c1a
The same four files, the same order, and the same submission. Because the identifier is derived from the bytes rather than assigned when the app starts, a retry replays that submission instead of becoming a second one.
A batch over 50 files is split on the device rather than refused.
And here is the line it does not cross.
Review on the phone is approve, edit or reject. Posting to a ledger stays on the desktop, deliberately: a corridor between two meetings is not where an entry should reach a client’s books, and a phone is very good at making a decision feel smaller than it is.
Not a live bank connection either. A statement is a file you already have.
ΠΕΤΡΟΛΙΝΑ03/04/2026 · Νο 0413
- Νερό 1.5L x65%3.41
- Καθαριστικό υγρό19%7.10
- Ψωμί χωριάτικο0%2.10
- Net
- €12.61
- VAT
- €1.52
- Gross
- €14.13
Every rate here was inferredThe receipt printed no rate on any line. All three came from the Cyprus registry.
Five ways in.
The phone is not only a camera: most documents are already on it by the time anyone thinks about the app.
- Scan it with the camera
- Import a PDF or image the phone already has
- Share into Pileform from another app, on Android
- Pair by scanning a code from the web app
- Join from an invitation
The rest of the app, which nobody demos.
It is 26 route screens, not a capture button with a settings page behind it.
- Document library
- Jobs and processing history
- Forms and compliance
- Official portals, pinned to .gov.cy hosts
- Notification centre, per channel
Locked after 5 minutes, and never in plain storage.
Biometric or passcode lock once the app has been backgrounded. The session lives in the platform keystore and rotates, so a phone left on a table is a locked phone and a stolen one is not a standing session.
- Biometric or passcode
- Platform keystore
- Rotating session
Sample capture. The frames are drawn in markup, not screenshotted, and the file names are synthetic.
What preview means
The app is a preview on Android and iOS, and neither is a general release. Both platforms are written and both are expected to work; neither has been run on a device yet. We would rather say that than let you find it out.
- AndroidPreview
- iOSPreview
English and Greek follow the phone’s own language, and it has a dark mode.