Community recipe · Tool workflows
Turn receipt photos into a reviewed expense PDF
Implementation guide · untested. Reviewed procedure; no workflow execution or measured results.
The problem
Expense claims need readable, consistently organized receipts, but phone photos arrive tilted, uneven and hard to check.
Attributed source action
Straightens photographed receipts, performs OCR, presents extracted fields, binds approved fields to a digest and packs selected receipts into an A4 PDF.
Expected output
A reviewed receipt packet with approved extracted fields.
Where this framing comes from
- Core problem: Editorial purpose framing
- Agent job: Attributed source documentation or report
- Expected output: Editorial purpose framing
- Relevant job roles: Editorial purpose framing
- Benefit type: Editorial purpose framing
Editorial framing and outcome limits
Describes the task’s purpose and intended output; measured benefit, safe unsupervised operation and successful delivery are not established by this framing.
Editorial synthesis based on the linked source. This framing does not add evidence of successful delivery or results.
Implementation guide · untested
Source-supported actions are attributed evidence. Proposed steps, prompts, synthetic examples and checks are original editorial guidance; the workflow has not been run.
Why this agent / simpler alternative
- Agent contribution
An agent can organize a mixed photo batch, make uncertainty visible in extracted fields, track owner corrections and assemble a reviewable packet. The important work is preserving traceability from each claimed expense to its receipt.
- Simpler alternative
For a handful of clear receipts, use a scanner app and manually merge the images or PDFs. An employer's approved expense system may already provide extraction and submission with less setup.
- Unsuitable when
The employer requires a different original-file format, the batch includes information that cannot be processed in the chosen environment, or the owner expects automatic reimbursement eligibility or tax determination.
Source-supported scope
A file-based recipe describes image cleanup, OCR review, approval-bound fields and A4 packing. It does not establish expense eligibility, reimbursement acceptance or tested Hermes compatibility.
Setup — required, optional and unknown
- Required
An owner-approved photo folder, separate output folder and a retained original for every image.
A reviewer who can resolve merchant/date/amount/currency ambiguity and identify excluded receipts.
An approved processing environment with dependencies reviewed before installation; exact runtime compatibility must be tested.
The documented dependencies are Python, OpenCV, Pillow, pillow-heif, pytesseract, ReportLab, NumPy and system Tesseract; installation is not authorized here.
- Optional
An employer-provided packet specification covering page format, cover details, ordering and maximum upload size.
A private receipt ledger with duplicate identifiers and permitted redaction requirements.
- Unknown
Current dependency versions, installation compatibility and employer acceptance are unverified.
The required OCR language packs and performance on the actual receipt languages are unknown.
Data retention, model exposure and output-sharing requirements must be decided for the selected environment.
Inputs and access
- Name
Receipt photos
- Format
Owner-supplied images with stable filenames; preserve originals
- Source or owner
Claimant
- Access scope
Named batch only
- Permission needed
Authorize processing location; do not upload to another OCR service without approval.
- Name
Claim metadata
- Format
Text: purpose, period, claimant display name and optional notes
- Source or owner
Claimant
- Access scope
Only what is needed on the packet
- Permission needed
Approve any personal information included in the final output.
- Name
Packet requirements
- Format
Employer specification or owner choices for format, grouping, captions and exclusions
- Source or owner
Employer policy supplied by the claimant
- Access scope
This claim preparation
- Permission needed
The specification is a constraint, not authority to submit or contact the employer.
- Name
Reviewed field decisions
- Format
Ledger: receipt ID, date, merchant, amount, currency, include flag, correction and approval state
- Source or owner
Claimant reviewing the original images
- Access scope
Exact displayed batch
- Permission needed
Explicit approval of corrected values and inclusion before packing.
Documented source actions
Run scan.
Show review table; correct and show it again.
Run confirm, then pack.
Proposed implementation steps — unexecuted
Create an intake ledger with a stable receipt ID, original filename, orientation, apparent image quality and possible duplicate group. Keep originals unchanged. Ask the claimant which output details and privacy redactions are required; do not decide expense eligibility from appearance.
For a later authorized trial, process disposable copies and compare each cleaned image with its original. Check all four receipt edges, totals, dates and faint text. Retain the original-to-processed link and mark any item needing recapture rather than hiding it in an attractive layout.
Build a review sheet with one row per receipt and visible uncertainty on date, merchant, amount and currency. Resolve decimal separators and ambiguous currency symbols using the image and claimant. Mark duplicates as possible duplicates; let the claimant choose which is included.
Prepare a final approval view that includes included/excluded IDs, per-currency totals and intended cover/caption content. Record the exact approved version. If a field changes afterward, produce a fresh review view rather than treating earlier approval as covering the correction.
Create the candidate PDF and inspect every page at normal reading size. Reconcile visible receipt count to the inclusion ledger, verify numbering/order and ensure the cover totals agree. Check tall receipts and page boundaries individually rather than relying only on file existence.
Give the claimant the reviewed file and an exceptions summary. Retain original images and the approval ledger under the agreed retention policy. If the claimant wants submission, ask for the exact employer destination and authorize that separately; do not turn packet preparation into an expense claim submission.
Original starter prompt — proposed
- Origin
editorial_proposal
- Text
Prepare a draft receipt-compilation plan for {photo_batch} under {packet_requirements}. Keep originals unchanged and use {output_folder} only for derivatives. Inventory every photo and flag possible duplicates, unreadable fields and ambiguous currencies. Show each proposed date, merchant, amount and inclusion decision with an image reference; obtain approval of the corrected table and packet options before any packing step. Show proposed installation/execution actions for separate authorization. Do not infer reimbursement eligibility, convert currency, submit a claim, share files or bypass an approval mismatch. Return a final page-by-page verification checklist.
- Placeholders
photo_batch
packet_requirements
output_folder
- Limitations
Original draft-first proposal. OCR values and packet layout still require human review; the prompt grants no installation, execution or submission authority.
Synthetic worked example — not an agent run
- Status
synthetic
- Label
Invented approval ledger and expected totals; no photos were processed and no PDF was generated
- Content
- Rows
- Receipt id
demo-01
- Merchant
Example Stationery
- Date
2026-09-02
- Amount
12.4
- Currency
CAD
- Include
Yes
- Receipt id
demo-02
- Merchant
Example Transit
- Date
2026-09-03
- Amount
7.6
- Currency
CAD
- Include
Yes
- Receipt id
demo-03
- Merchant
Example Cafe
- Date
2026-09-04
- Amount
8.25
- Currency
USD
- Include
Yes
- Receipt id
demo-04
- Merchant
Example Stationery
- Date
2026-09-02
- Amount
12.4
- Currency
CAD
- Include
No
- Reason
Synthetic duplicate of demo-01
- Expected totals
- Cad
20
- Usd
8.25
- Expected included count
3
- Approval state
pending
- Pdf state
not generated
- Artifact url
Not specified.
Costs and effort — unmeasured
- Verified prices
- Setup work
Review dependencies and privacy constraints; choose a processing location and record a safe installation plan.
Agree employer formatting requirements, image naming and final-review procedure.
- Recurring work
Inspect image quality, correct fields, resolve duplicates and currencies, approve the exact table and review each final PDF page.
- Unknowns
OCR accuracy, dependency installation effort, file size and page count for a real batch are unmeasured.
Model/API/hosting charges and claimant review time are unverified.
No accepted expense claim or reimbursement result is established.
Failure modes
- Signal
Cleaned image loses faint text or cuts off a total.
- Consequence
The packet looks tidy while losing supporting evidence.
- Signal
A decimal, date order or currency symbol is ambiguous.
- Consequence
A wrong amount or reporting period enters the claim.
- Signal
Two photos show the same purchase but both are included.
- Consequence
The packet may duplicate an expense.
- Signal
Fields change after the owner approved the displayed version.
- Consequence
The final file may no longer represent the approved claim data.
Recovery steps
- Trigger
Image cleanup harms legibility.
- Action
Return to the preserved original, request a better image or retain a clearly identified original-format version. Recheck the affected row before packing.
- Stop condition
Required evidence remains unreadable.
- Trigger
A field or duplicate cannot be resolved.
- Action
Keep the item in the exceptions list and ask the claimant to correct or exclude it; do not silently guess.
- Stop condition
An unresolved material field remains on an included item.
- Trigger
Packing refuses an approval mismatch.
- Action
Show the changed table and obtain fresh approval through the normal confirmation path. Preserve the earlier version for traceability.
- Stop condition
Never edit approval flags or bypass the integrity check.
- Trigger
Final PDF count or totals differ from the ledger.
- Action
Withhold the candidate, trace the missing/extra receipt or stale field, and regenerate only after the corrected version is reviewed.
- Stop condition
The PDF and approved ledger do not reconcile.
Source-observed and proposed approval boundaries
- Source observed
User review precedes confirmation; changed reviewed data invalidates packing approval.
- Editorial recommendations
Authorize processing destination and redact unneeded personal details before external transmission.
The claimant approves exact fields, exclusions and cover information.
Do not remove originals or alter receipt evidence to make it match an expected claim amount.
Submitting to an employer or insurer, sharing files and changing retention settings are separate actions.
Unexecuted validation plan
- Fixture
Unexecuted proposal: four fabricated receipt images matching the synthetic ledger, including one duplicate, one tilted tall receipt, one faint amount and two currencies. In a disposable manifest, change a reviewed amount after confirmation for a negative integrity check.
- Acceptance checks
All four input images appear in the intake record; three are included in the final candidate.
Expected totals remain CAD 20.00 and USD 8.25, with no combined currency total.
The owner can compare every approved field to the corresponding original image.
The post-confirmation change blocks packing until the updated data is reviewed and approved again.
Every visible receipt is legible, uncropped and traceable to its ID; final PDF count matches the selected set.
No external submission or original-image deletion occurs.
- Stop conditions
Required dependency installation or execution is not authorized.
Unreadable included amount or unresolved currency.
Approval integrity failure is ignored or cannot be verified.
Final receipt count, totals or image content disagree with the approved record.
- Executed
No
Limits
No receipt images, OCR, approval gate or PDF rendering were executed or tested.
The original describes a Linux-oriented file workflow; exact agent integration compatibility is not established.
Source publication date and reproducibility across dependency versions remain unknown.
Canadian employer, tax and reimbursement rules are outside this recipe; the owner must supply relevant packet requirements.
Guide source links
https://github.com/moonlight-lupin/agent-skills/blob/main/productivity/receipt-compiler/SKILL.md ↗
documented_steps; approval_boundaries.source_observed
Editorial candidate. This is source-backed reporting or a documented workflow. BotCurrent has not independently tested this task. A proposed Canadian adaptation is not evidence of a Canadian deployment or compliance certification.
Original source
https://github.com/moonlight-lupin/agent-skills/blob/main/productivity/receipt-compiler/SKILL.md ↗Attributed to: moonlight-lupin
Community recipe- Original action type
- tool_action
- Source outcome limits
- This community recipe describes a procedure; it does not prove successful execution or independently reproduced results.
- Evidence attribution caveat
- This community recipe describes a procedure; it does not prove successful execution or independently reproduced results.
- Source approval description
- Mandatory review and user approval before confirm; pack checks the digest and refuses changed data.
- Named tools
- Python; OpenCV; Pillow; pillow-heif; Tesseract; ReportLab; numpy
- Model or version
- Recipe skill version 1.0.0; Hermes runtime/model unspecified
- Publication date
- Unknown
- Source last checked
- 2026-10-14
- Demonstrated in Canada
- Unknown
- Canadian availability
- Unknown
- Proposed Canadian adaptation
- Keep CAD and foreign-currency totals separate; confirm Canadian employer receipt rules and permitted personal-data handling.
- Recommended approval boundaries
- Review merchant, date, amount, currency and inclusion before packing; separately approve submission to an employer.