A skill that queries the bank balances and deposits/withdrawals of 3 entities (Korea/US/Vietnam) and updates the Google Sheets Cash Position Summary.
Automation status by data source
| Entity | Bank | Source | Automation | Option |
|---|---|---|---|---|
| US | Chase (checking ...6797) | Plaid API | Automatic (no CSV needed) (no CSV needed) | --plaid |
| US | Hanmi (checking ...3389) | Plaid API | Automatic (no CSV needed) | --plaid |
| KR | NongHyup/Woori/Shinhan, etc. | Clobe.ai Excel | Manual download required | --clobe |
| VN | Woori Bank Vietnam | Woori Bank xls | Manual download required | --vietnam |
| VN | Techcombank | CSV | Manual download required | --techcombank |
Core scripts
scripts/parse_cash_position.py
Runtime environment: /Users/ash/Documents/eoash/.venv/bin/python (plaid, pandas, dotenv installed)
Usage
1. US only (Plaid API — no file download needed)
/Users/ash/Documents/eoash/.venv/bin/python scripts/parse_cash_position.py \
--plaid --month {YYYY.MM} [--dry-run] [--skip-revenue]
If the user mentions only the US, such as "US balance" or "US cash", use this mode.
2. All 3 entities (US automatic + Korea/Vietnam files)
/Users/ash/Documents/eoash/.venv/bin/python scripts/parse_cash_position.py \
--plaid \
--clobe ~/Downloads/주식회사*.xlsx \
--vietnam ~/Downloads/ExcelSheet*.xls \
--month {YYYY.MM}
If the user requests the full set, such as "update cash position" or "all balances":
- US:
--plaidto query automatically - Korea: Check whether the Excel was downloaded from Clobe.ai → request the file path
- Vietnam: Check whether the xls was downloaded from Woori Bank → request the file path
3. CSV method (legacy — fallback in case of Plaid failure)
/Users/ash/Documents/eoash/.venv/bin/python scripts/parse_cash_position.py \
--chase ~/Downloads/Chase*.CSV \
--hanmi ~/Downloads/AccountHistory.csv \
--clobe ~/Downloads/주식회사*.xlsx \
--month {YYYY.MM}
Use only in case of Plaid API failure. Requires downloading CSV directly from Chase/Hanmi web banking.
Execution flow
- If the user does not specify a month, the current month (
YYYY.MM) is used automatically - First run with
--dry-runrun withto check the results (show them to the user) - Once the user confirms, rerun
--dry-runwithoutto actually update Google Sheets - Result summary: each entity's balance, deposits/withdrawals, US total, exchange rate
Main options
| Option | Description |
|---|---|
--plaid |
Query Chase/Hanmi via Plaid API (no CSV needed) |
--clobe |
Korea Clobe.ai Excel file path (manual download) |
--vietnam |
Woori Bank Vietnam xls path (manual download) |
--techcombank |
Techcombank Vietnam CSV path (manual download) |
--month |
Target month (e.g., 2026.03) — Required |
--skip-revenue |
Skip US revenue/Korea accounts receivable update |
--dry-run |
Output results only without updating the sheet |
--extra-kr-balance |
Manually add balances of Korean accounts not in Clobe |
Environment variables (.env)
The script automatically loads the project root .envloads:
PLAID_CLIENT_ID/PLAID_SECRET/PLAID_ENV=productionPLAID_ACCESS_TOKEN_CHASE— Chase PLAT BUS CHECKING ...6797PLAID_ACCESS_TOKEN_HANMI— Hanmi Business Regular Checking ...3389- Google Sheets SA:
finance-dashboard/.env.local
Notes
--dry-runIf run without it, Google Sheets will be modified directly — always dry-run first- The Plaid access_token is a permanent token, but reconnection is required if the bank password is changed
- Korea/Vietnam are not supported by Plaid → file download is required (automation not possible)
- When bank reconnection is required:
python scripts/plaid_link_connect.py→ localhost:8484