# vendor_rules.py def get_category_from_rules(vendor_name: str): if not vendor_name: return None vendor = vendor_name.lower() # Food , Shopping , Bills , Travel , Entertainment , Other mapping = { # ---------- FOOD ---------- "mcdonalds": "Food", "kfc": "Food", "bakers":"Food", "hotel": "Food", "restaurant": "Food", "canteen": "Food", "dhaba": "Food", "mess": "Food", "biryani": "Food", "tiffins": "Food", "cafe": "Food", "coffee": "Food", "tea stall": "Food", "bakery": "Food", "sweets": "Food", "ice cream": "Food", "juice": "Food", "snacks": "Food", "lunch": "Food", "dinner": "Food", "food court": "Food", "catering": "Food", "canteen store": "Food", "dominos": "Food", "pizza hut": "Food", "subway": "Food", "starbucks": "Food", "cafe coffee day": "Food", "ccd": "Food", "swiggy": "Food", "zomato": "Food", "ubereats": "Food", "barbeque nation": "Food", "wow momo": "Food", "cream stone": "Food", "bikanervala": "Food", "haldiram": "Food", "paradise biryani": "Food", "behrouz biryani": "Food", "freshmenu": "Food", "burger king": "Food", "taco bell": "Food", "sagar ratna": "Food", "shs canteen": "Food", "babai hotel": "Food", "taj hotel": "Food", "itc hotel": "Food", "novotel": "Food", "radisson": "Food", "trident": "Food", # ---------- SHOPPING ---------- "mall": "Shopping", "store": "Shopping", "supermarket": "Shopping", "bazaar": "Shopping", "market": "Shopping", "mart": "Shopping", "fashion": "Shopping", "clothing": "Shopping", "footwear": "Shopping", "electronics": "Shopping", "mobile store": "Shopping", "accessories": "Shopping", "furniture": "Shopping", "home decor": "Shopping", "appliances": "Shopping", "cosmetics": "Shopping", "salon": "Shopping", "boutique": "Shopping", "jewellery": "Shopping", "stationery": "Shopping", "amazon": "Shopping", "flipkart": "Shopping", "myntra": "Shopping", "ajio": "Shopping", "tatacliq": "Shopping", "meesho": "Shopping", "snapdeal": "Shopping", "shopclues": "Shopping", "bigbasket": "Shopping", "grofers": "Shopping", "dmart": "Shopping", "reliance fresh": "Shopping", "more supermarket": "Shopping", "spencers": "Shopping", "vishal mega mart": "Shopping", "zudio": "Shopping", "pantaloons": "Shopping", "lifestyle": "Shopping", "shoppers stop": "Shopping", "westside": "Shopping", "max fashion": "Shopping", "nike": "Shopping", "adidas": "Shopping", "puma": "Shopping", "reebok": "Shopping", "levi": "Shopping", "h&m": "Shopping", "zara": "Shopping", "decathlon": "Shopping", "ikea": "Shopping", # ---------- BILLS ---------- "electricity": "Bills", "power": "Bills", "water bill": "Bills", "internet": "Bills", "wifi": "Bills", "broadband": "Bills", "dth": "Bills", "recharge": "Bills", "gas": "Bills", "cylinder": "Bills", "mobile bill": "Bills", "postpaid": "Bills", "prepaid": "Bills", "telecom": "Bills", "landline": "Bills", "sewage": "Bills", "municipal": "Bills", "property tax": "Bills", "credit card": "Bills", "loan emi": "Bills", "bescom": "Bills", # electricity "tsspdcl": "Bills", "apspdcl": "Bills", "torrent power": "Bills", "bese": "Bills", "bmtc pass": "Bills", "airtel": "Bills", "jio": "Bills", "vi": "Bills", "bsnl": "Bills", "act fibernet": "Bills", "hathway": "Bills", "den broadband": "Bills", "tatasky": "Bills", "airtel dth": "Bills", "sun direct": "Bills", "dishtv": "Bills", "dth recharge": "Bills", "gas bill": "Bills", "bharat gas": "Bills", "hp gas": "Bills", "indane gas": "Bills", # ---------- TRAVEL ---------- "cab": "Travel", "taxi": "Travel", "auto": "Travel", "bus": "Travel", "train": "Travel", "railway": "Travel", "metro": "Travel", "flight": "Travel", "airlines": "Travel", "airport": "Travel", "air ticket": "Travel", "ticket": "Travel", "boarding": "Travel", "lodge": "Travel", "resort": "Travel", "tour": "Travel", "travel agency": "Travel", "holiday": "Travel", "trip": "Travel", "taxi service": "Travel", "ola": "Travel", "uber": "Travel", "redbus": "Travel", "abhibus": "Travel", "irctc": "Travel", "indigo": "Travel", "air india": "Travel", "vistara": "Travel", "spicejet": "Travel", "goair": "Travel", "akasa air": "Travel", "makemytrip": "Travel", "yatra": "Travel", "cleartrip": "Travel", "booking.com": "Travel", "oyo": "Travel", "treebo": "Travel", "fabhotel": "Travel", "trivago": "Travel", "zoomcar": "Travel", "drivezy": "Travel", # ---------- ENTERTAINMENT ---------- "cinema": "Entertainment", "movie": "Entertainment", "theatre": "Entertainment", "concert": "Entertainment", "event": "Entertainment", "show": "Entertainment", "festival": "Entertainment", "ticketnew": "Entertainment", "games": "Entertainment", "gaming": "Entertainment", "amusement": "Entertainment", "theme park": "Entertainment", "club": "Entertainment", "pub": "Entertainment", "bar": "Entertainment", "karaoke": "Entertainment", "music": "Entertainment", "streaming": "Entertainment", "subscription": "Entertainment", "video": "Entertainment", "netflix": "Entertainment", "amazon prime": "Entertainment", "hotstar": "Entertainment", "disney+": "Entertainment", "sonyliv": "Entertainment", "zee5": "Entertainment", "aha": "Entertainment", "spotify": "Entertainment", "gaana": "Entertainment", "wynk": "Entertainment", "saregama": "Entertainment", "bookmyshow": "Entertainment", "pvr": "Entertainment", "inox": "Entertainment", "cinepolis": "Entertainment", "jio cinema": "Entertainment", "altbalaji": "Entertainment", "voot": "Entertainment", "apple music": "Entertainment", "youtube premium": "Entertainment", # ---------- OTHER ---------- "apollo pharmacy": "Other", "pharmacy": "Other", "medical": "Other", "chemist": "Other", "clinic": "Other", "hospital": "Other", "doctor": "Other", "diagnostic": "Other", "lab": "Other", "insurance": "Other", "policy": "Other", "atm": "Other", "bank": "Other", "branch": "Other", "transaction": "Other", "school": "Other", "college": "Other", "university": "Other", "coaching": "Other", "training": "Other", "service": "Other", "repair": "Other", "medplus": "Other", "1mg": "Other", "pharmeasy": "Other", "netmeds": "Other", "urbanclap": "Other", "urban company": "Other", "justdial": "Other", "olx": "Other", "quikr": "Other", "paytm": "Other", "phonepe": "Other", "google pay": "Other", "freecharge": "Other", "mobikwik": "Other", "upi": "Other", "insurance": "Other", "policybazaar": "Other", "bank": "Other" } for keyword, category in mapping.items(): if keyword in vendor: return category return None