AWS Receipt Processing & Personal Finance Service
2023A 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.
Motivation
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.
Challenge
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.
Solution
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.
Outcome
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