1
📥
Parse bank CSVExtract transactions, dates, amounts
2
🧮
Classify via keywords/rulesMatch descriptions to categories
3
🔢
Assign GL codesMap categories to GL accounts
4
📊
Generate journal entriesCreate GL postings automatically
import csv, json
BANK_CSV = "bank_statement.csv"
GL_MAP = {"payment": "7001", "transfer": "1002", "deposit": "1001"}
def parse_bank_csv(file):
with open(file) as f:
return list(csv.DictReader(f))
def classify_entry(desc):
desc = desc.lower()
if "payment" in desc or "pay" in desc: return "Purchase", GL_MAP["payment"]
if "transfer" in desc: return "Transfer", GL_MAP["transfer"]
return "Sales", GL_MAP["deposit"]
def generate_journal(entries):
lines = []
for e in entries:
cat, gl = classify_entry(e["desc"])
lines.append({"date": e["date"], "category": cat, "gl": gl})
return lines
entries = generate_journal(parse_bank_csv(BANK_CSV))
print(json.dumps(entries, indent=2))