AWS Receipt Processing & Personal Finance Service

2023
  • Personal
  • Full stack
  • DevOps & infra

A personal finance application that uses AWS Textract to extract line-item data from receipt images stored in S3, triggers processing via a Python Lambda, and surfaces the structured data through an ASP.NET Core + GraphQL API backed by PostgreSQL — running in a self-managed Raspberry Pi k3s homelab.

Built to gain hands-on AWS and Kubernetes experience outside of work while solving a real personal need. The goal was to integrate multiple async data sources — bank OFX exports, manually uploaded receipts, and Textract OCR results — into a single coherent financial data model.

Three async data paths needed to converge into one consistent model: S3 event triggers firing Lambda functions, Textract jobs completing asynchronously, and OFX bank export files parsed on a separate schedule. IAM scoping and S3 event configuration both had failure modes that weren't obvious until they happened.

IAM roles were scoped tightly per service rather than using a single broad key, which forced explicit reasoning about each data path's permissions and made misconfiguration easy to spot. S3 event notifications trigger a Python Lambda that launches Textract and stores the parsed output. The homelab side runs on a two-node Raspberry Pi k3s cluster: a Cloud Native PG cluster for persistence, a Helm-deployed Grafana/Prometheus stack for visibility, and Redis for the finance app — all managed via Kustomize.

Fully operational in a two-node homelab. Provided the practical AWS and Kubernetes fluency that now informs professional architectural decisions.

  • AWS (S3, Lambda, Textract, IAM)
  • Python
  • ASP.NET Core
  • GraphQL
  • PostgreSQL
  • Docker
  • k3s
  • Helm
  • Redis
  • Grafana / Prometheus
  • ofxparse