Project · Data Science, Machine Learning and AI
Project: a UPI money report for a tiffin business
The brief
Sunita runs a tiffin service and is paid and pays almost everything by UPI. Turn two months of her bank app's JSON export into a report: money in and out per month, where the money goes, unusual payments and possible double payments.
Why it matters
Small businesses, CA firms and fintech apps (expense trackers, business banking dashboards) all turn UPI and bank exports into reports like this. It uses everything from the beginner level: reading JSON, cleaning text amounts, grouping, percentages, z-scores and careful checks.
Skills you practise
- json.loads
- datetime.fromisoformat and strftime
- grouping with defaultdict
- keyword categorisation
- z-scores
- writing a plain-text report
What you will have at the end
report.py and the printed report for August and September 2026: monthly cash flow, spending by category, flagged payments and the double-payment check.
How it is marked (rubric, 100 points)
| Correct figuresAll seven checks pass; totals, shares and flags match the export. | 40 |
|---|---|
| Careful with the dataFailed and pending payments are left out, text amounts are converted once, and flags are worded as "check this", not "wrong". | 20 |
| Reusable codeEach function does one job and the report reuses them, so next month's export runs with no changes. | 20 |
| Useful for the ownerThe report is short and plain, and you can explain each line to Sunita in one sentence. | 20 |
0/7 steps done
Step 1 of 7
Load the successful transactions
load_transactions(TRANSACTIONS_JSON) returns the 18 SUCCESS transactions, with time as a datetime and amount as a float.
json.loads turns the export into a dict; the transactions are a list under "transactions". A FAILED or PENDING payment did not move money, so keep only status "SUCCESS". The amount is text like "2,400.00": remove the comma before float(). datetime.fromisoformat reads times written like 2026-08-01T09:12:00.
Run shows what your code prints. Check runs the step's tests. Ctrl+Enter checks too.