From 1333c485d73f040e5c6765132839382a75b05724 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Fri, 4 Oct 2024 20:41:41 -0700 Subject: [PATCH] Create blog post for how I use Khoj as my personal AI accountant --- public/ai_accountant_abstract.webp | Bin 0 -> 22150 bytes src/components/ClickableChatCard.astro | 46 +++++++++ .../posts/khoj-ai-personal-accountant.mdx | 90 ++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 public/ai_accountant_abstract.webp create mode 100644 src/components/ClickableChatCard.astro create mode 100644 src/content/posts/khoj-ai-personal-accountant.mdx diff --git a/public/ai_accountant_abstract.webp b/public/ai_accountant_abstract.webp new file mode 100644 index 0000000000000000000000000000000000000000..b49031a7b4add3e31e2cf409d17587df594514aa GIT binary patch literal 22150 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 +
+ + + + + + diff --git a/src/content/posts/khoj-ai-personal-accountant.mdx b/src/content/posts/khoj-ai-personal-accountant.mdx new file mode 100644 index 0000000..68caf02 --- /dev/null +++ b/src/content/posts/khoj-ai-personal-accountant.mdx @@ -0,0 +1,90 @@ +--- +title: "Khoj - My Personal AI Accountant" +author: debanjum +description: Learn how I use Khoj and plain text accounting to keep my account synced and maintain an up-to-date view into all my finances. +tldr: "This post shares my personal workflow to do plain-text accounting using the Khoj app and API. I hope it inspires folks to create advanced, tailored AI workflows and share them to help everyone learn how to use these tools better." +heroImage: /ai_accountant_abstract.webp +pubDate: 2024-10-04 +keywords: ["ai accountant", "plaintext accounting", "workflows"] +--- +import ClickableChatCard from '../../components/ClickableChatCard.astro'; + +## Overview +I've been maintaining my personal finances using [Beancount](https://github.com/beancount/beancount?tab=readme-ov-file#beancount-double-entry-accounting-from-text-files), a [plain text accounting](https://plaintextaccounting.org/) tool, for the last decade. +These days [Khoj](https://app.khoj.dev) helps me keep my accounts synced and maintain an up-to-date view into all my finances. + +## Bank Statement to Beancount +I ask Khoj to convert all my transactions from a bank statement PDF into Beancount format. This makes it easy to keep my ledger synced with reality. + +Khoj intelligently extracts the transactions from the PDF statement, categorizes expenses into appropriate accounts and formats the information into Beancount format. + +The flexibility offered by using AI instead of traditional programming is the best thing about this approach. +The AI based approach can be easily adapted to work with other Bank accounts, other output formats, handle changes to the PDF statement. +You can "program" your AI accountant with just natural language. + +### Process +1. Download monthly account statements from my bank(s) as PDF +2. Start a new conversation with Khoj and add a bank statement to the conversation +3. Ask Khoj to summarize the bank statement with the following message. You should update this query to fit your ledger and bank statement format. + +{` +/summarize Extract Transaction Date, Merchant Name and Amount from all transactions in my shared credit card statement. Convert it to a Beancount format. Always assume account extracted from is CreditCard1 shown below. Choose Expense account from "Expenses:Food:Dining", "Expenses:Food:Groceries", "Expenses:Transport:Cab", "Expenses:Hardware" and "Expenses:Miscellaneous". Use the miscellaneous account if do not know which expense category to use. + +Example: \`04/01, UBER *TRIP HELP.UBER.COM, 4.20\` extracted from PDF to Beancount format: +\`\`\` +2024-04-01 * "Uber" "Cab ride" #generated + Expenses:Transport:Cab + Liabilities:CreditCard:CreditCard1 -4.20 USD +\`\`\` + +Give the transactions in a single beancount codeblock +`} + + +4. Do a quick scan to compare Khoj extracted transactions to the transactions in the PDF statement. +5. Copy the extracted transactions, paste it into my Beancount ledger and edit any transactions if required + +## Transaction SMS to Beancount +*Warning: This setup is for **advanced users only**. It requires an Android phone with [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=en&gl=US), [Termux](https://wiki.termux.com/wiki/Installing_from_F-Droid) and [Termux:Tasker](https://wiki.termux.com/wiki/Termux:Tasker) setup. A Khoj API key and ability to write single file Python (that interacts with [Khoj via API](https://app.khoj.dev/redoc)).* + +Khoj automatically adds all my [UPI](https://en.wikipedia.org/wiki/Unified_Payments_Interface) transactions into my ledger. Using the information in the UPI transaction text message: +- Khoj converts INR to USD based on today's exchange rate +- Categorizes the transaction to the most appropriate expense account based on the payee information in the message +- Compiles the above information into a transaction in the Beancount format + +### Implementation +1. Setup a Tasker profile to trigger on every transaction SMS from your UPI provider. Have it call a simple Python script via Termux. +2. The Python script interacts with Khoj over the [Cloud API](https://app.khoj.dev/redoc) to do the following: + 1. Ask Khoj to convert INR to USD. Khoj looks up today's exchange rate online for this. + 2. Ask Khoj to categorize the new transaction into the provided Expense accounts. E.g *Expenses:Food:Dining* + 3. Append the Khoj generated transaction to my local Ledger file + +*Note: I use [Syncthing](https://syncthing.net/) to keep my Ledger synced across my devices* + +## Automations +You can create [automations](https://docs.khoj.dev/features/automations) with Khoj to help get reminders, notifications for your finances. For example: +- Ask Khoj to remind you to share your bank statements and sync your ledger +- Ask Khoj to remind you to do taxes before tax day +- Ask Khoj to notify you if the stock market drops by >5% in a single day + +## Future Improvements +Khoj is getting new capabilities. Here are some future improvements I'm looking forward to that will make my workflows even more seamless: + +- **Create Your Personal Accountant Agent** + + Next week, Khoj agents will have gained new capabilities. You'll be able to: + - Create private agents. E.g Personal Financial Advisor. + - Tune agent personality for personal use-cases. E.g Chase to Ledger accountant. + - Give them access to specific documents. E.g ledger, bank statements. + - Restrict tool they can access. E.g no online search. + +- **Ability to Reply to Khoj Automation Emails** + + It'd be super convenient if you could reply and attach your Bank statements to Khoj's email reminding you to sync your ledger. This would make it even easier to keep your ledger synced. + +## Conclusion +Access to advanced AI agents means everyone can 'program' using natural language. But we're all still discovering the best way to use these powerful tools. + +My setup will not apply to most folks. And that is the point. The stuff Khoj helps me with is unique to me. This post is meant to inspire you to create tailored workflows with Khoj that fit your unique setups like a glove. + +Share your workflows so we can all learn how to better use these tools in our various endeavors.