05Internship assignment2026
Transaction Pipeline
Cleans messy bank CSVs, flags anomalies, categorises with an LLM
- My part
- Solo
- Status
- Built
- Stack
- Python, FastAPI, Celery, Redis, PostgreSQL, Docker, OpenRouter
- Code
- GitHub ↗
Fig. — How data moves through itRead left to right
- 01Dirty CSV
- 02Celery jobRedis broker
- 03Clean + dedupe
- 04Anomaly rules3× median · currency
- 05LLMuncategorised only(model call)
- 06Postgres + summary
01Problem
Bank CSV exports are messy: different column names, mixed date formats, currency symbols in amounts, duplicates and missing categories.
02Approach
Upload returns a job ID straight away and a Celery worker runs the pipeline in stages. Plain rules do the cleaning and the anomaly checks; the LLM is used only for transactions that are still uncategorised, and for the final summary.
03What I built
- 01Built it with AI coding tools; the design decisions were mine.
- 02A cleaning stage that maps column-name variants to one schema, normalises dates and amounts, fills defaults and removes duplicates.
- 03Two anomaly rules: amounts above 3× the account’s median, and USD charges at Indian-only merchants such as Swiggy, Ola and IRCTC.
- 04Batch LLM categorisation for uncategorised transactions, and a written summary of spending behaviour.
- 05Job tracking through pending, processing, completed and failed, with a results endpoint that never returns partial data.