No description
  • Python 82.1%
  • JavaScript 17.9%
Find a file
davidliyutong ed4910b832 feat: update puppeteer dependency to version 24.41.0
feat: add pdf_to_png.py for high-resolution PDF to PNG conversion

feat: introduce receipt_extract.py for pre-OCR processing of receipt images

docs: update reimbursement.md with new workflow and pipeline details

feat: add slug_utils.py for filename-safe slug generation and uniqueness validation

feat: implement validate_data.py for validating receipt data before PDF generation
2026-04-20 11:29:51 +08:00
.claude/skills/reimbursement fix: symlink and README 2026-04-14 22:01:01 +08:00
src feat: update puppeteer dependency to version 24.41.0 2026-04-20 11:29:51 +08:00
.gitignore init 2026-04-14 21:13:16 +08:00
CLAUDE.md fix: translation and image extraction 2026-04-14 21:35:39 +08:00
README.md fix: symlink and README 2026-04-14 22:01:01 +08:00
SKILL.md feat: update puppeteer dependency to version 24.41.0 2026-04-20 11:29:51 +08:00

Reimbursement Report Generator

Claude Code skill that processes receipt images, translates non-English text, converts foreign currencies to SGD via OANDA, and generates a consolidated PDF + CSV report.

Prerequisites

  • Node.js (v18+)
  • Python 3 (3.9+)
  • Tesseract OCR with chi_sim language pack
  • Claude Code or opencode CLI

Install Dependencies

# macOS
brew install tesseract tesseract-lang

# Ubuntu/Debian
sudo apt install tesseract-ocr tesseract-ocr-chi-sim

# Python packages
pip3 install reportlab Pillow PyMuPDF img2pdf

# Node packages (puppeteer for OANDA screenshots)
cd src && npm install

Setting Up the Skill

The skill is defined in src/reimbursement.md and needs to be symlinked into the .claude/skills/ directory. This repo ships with the symlink already committed, so cloning is enough:

git clone <repo-url> && cd reimbursment

If you need to recreate the symlink (or are setting up on a fresh copy):

mkdir -p .claude/skills/reimbursement
ln -sf "$(pwd)/src/reimbursement.md" .claude/skills/reimbursement/SKILL.md

Verify it works — open the project in Claude Code or opencode and type /reimbursement. The skill should appear in the autocomplete list.

Usage

  1. Place receipt images (PNG/JPG) or PDFs in _input/
  2. Run the skill:
    • Claude Code: type /reimbursement
    • opencode: paste the contents of src/reimbursement.md as your prompt
  3. Find the report in _output/reimbursement_report.pdf and .csv

Project Structure

_input/                   # Receipt images (gitignored)
_output/                  # Generated reports (gitignored)
src/
  oanda_screenshot.mjs    # Puppeteer — OANDA currency converter screenshot
  generate_pdf.py         # Reportlab — PDF + CSV report generation
  translate_overlay.py    # PIL — English translation overlay on receipt images
  reimbursement.md        # Skill definition (symlinked to .claude/skills/)
CLAUDE.md                 # Project instructions for Claude Code