Skip to content
Mirun Kaushik
← All work

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

Fig. — How data moves through it

  1. 01Dirty CSV
  2. 02Celery jobRedis broker
  3. 03Clean + dedupe
  4. 04Anomaly rules3× median · currency
  5. 05LLMuncategorised only(model call)
  6. 06Postgres + summary
Model call Rules, data, queues

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

  1. 01Built it with AI coding tools; the design decisions were mine.
  2. 02A cleaning stage that maps column-name variants to one schema, normalises dates and amounts, fills defaults and removes duplicates.
  3. 03Two anomaly rules: amounts above 3× the account’s median, and USD charges at Indian-only merchants such as Swiggy, Ola and IRCTC.
  4. 04Batch LLM categorisation for uncategorised transactions, and a written summary of spending behaviour.
  5. 05Job tracking through pending, processing, completed and failed, with a results endpoint that never returns partial data.