
I got control of my spending with some no-code services and 100 lines of Python - jcp2fa
https://medium.com/@jcpeters/how-i-got-control-of-my-spending-with-a-couple-no-code-services-and-only-100-lines-of-python-code-36c8ac75f670
======
air7
> As an engineer, it is in my DNA to build things. However, it’s too easy to
> get stuck in the mindset that you have to build everything. This mentality
> often leads one stuck with a plethora of incomplete products that grew too
> complex to finish before losing interest.

This. I can relate so much. I feel my instinct is always to roll-my-own
because I can and, perhaps more importantly, because I'm not familiar with
relevant no-code services.

What other such tools/services are out there that can help "to go from idea to
proof-of-concept in only a few hours."?

~~~
stolksdorf
It's relatively new, but I've been using Coda.io to build a lot of interesting
ideas out. I've built some fantasy leagues, a very powerful task
tracker/organizer, and do all of my trip planning using it.

Definitely check out their templates,
[https://coda.io/templates](https://coda.io/templates)

------
neilv
For anyone who wants to do things like double-entry accounting with
transaction splits (e.g., properly encode an Amazon order for 5 different
items from different expense categories, that're paid for by a mix of rewards
points, Gift Card balance, and CC), there's GnuCash.

You can also do things like record transactions yourself, update with
downloaded data, and reconcile against monthly statements (as another way of
catching discrepancies).

You can make custom reports with charts. I used these, for example, for
comparing how much I spent buying coffee every day, vs. how much I spent on
every cost that goes into making coffee at home, when I tried that for a
while.

There's also features for tracking investments, including automatic updates of
market prices.

And, if you're a small business, you can build and generate invoices
(including building the invoice over multiple days), and track accounts
receivable.

Warning: GnuCash can be a significant investment of time. I eventually decided
it was no longer worth it for me, though I might someday resume it.

Other Warning: If you have retirement accounts or other investments in
GnuCash, consider hiding them from view, which GnuCash lets you do with any
account. Bogleheads-style, US people probably want to keep contributing to a
predetermined balance of total-market stocks and bonds, automatically, and not
think about it, especially when there's market fluctuations.

~~~
Havoc
Never really understood the need for double entry in the personal context.

~~~
mikekchar
Double entry accounting basically makes it easier for you to track down errors
in your accounting. It's a bit like writing tests for your code. The
advantages are: 1. You are usually alerted quickly when you make a mistake. 2.
You can reason about where you made the mistake, even if you've lost the
original documentation.

It's not so much that it's personal or business that's the issue, I think.
It's more the consequences for making a mistake. When I was very poor (but
luckily not in debt) I had a good system for controlling my spending. I would
take out X amount of money every Monday. I would try to have some left at the
end of Sunday (a couple of hungry days helped me understand the importance of
being conservative in my estimation).

That system works fine (and would even work fine in some kinds of businesses).
However, what do you do when you find that no matter what you do, you can't
seem to get to Sunday without running out of money? What if you can't figure
out where it is going? Some kind of accounting will help you figure out what
you are spending your money on.

Doing the accounting is fine and most of the time it's not a big deal if you
make a mistake here or there. However if you are _really_ pressed for cash
(like you won't eat on the weekend if you make a mistake), it's probably not a
bad idea to record your expenses in a way that allows you to detect mistakes.
If your weekly transit pass is $50 and you accidentally record $5, you might
conclude that you have $45 every week more than you actually have. You'll
eventually figure it out, but it will mean more missed meals than you probably
want to endure.

I like living a lifestyle where I make enough and spend little enough that I
naturally have enough money. For me, that's my definition of "rich". After I
got married, that state of affairs seems to have disappeared from my life ;-)
Trying to reason about where the money is going is surprisingly tricky and
double entry accounting has helped me make good conclusions without enduring
stupid mistakes. Not necessary, of course, but still useful if you are the
kind of person who likes fiddling.

------
slavoingilizov
I admire how you've managed to do this easily (and avoid writing code for
everything). But the fact that you have to do it shows how broken and
lethargic banks have become.

In the UK, they are starting to wake up. The new "challenger" banks which
exist here all do this as a hygiene feature - see Monzo, Starling, Revolut.
With Open Banking mandating open APIs for all banks, this will become the norm
soon. The fact that American banks and regulation hasn't jumped on this is a
symptom of something very wrong with the system.

I sincerely hope the launch of Apple Card or similar services disrupt consumer
finance in the US as well and set a new bar. And when the above mentioned
banks come to the US (which they are currently working on), you should
absolutely switch and delete the 100 lines of python as well.

~~~
jedberg
Banking in the US is utterly ridiculous. In Europe, if you need to move up to
100,000E in a day, you can do it with a few clicks or taps, and maybe a card
reader that they already gave you.

In the US, you have to use a wire transfer is you're moving more than about
$4,000. And wires cost a lot of money. And they aren't even instant even
though they are billed that way.

I had to move some money from one account I own to another, and I needed it
there the same day. The only way to make it happen was to drive 15 minutes to
the origin bank, spend 15 minutes filling out a paper form in the branch,
which was then _faxed_ to the central processing center. Then I had to call
the center center every hour to see if they'd gotten to it yet. When they
finally did do it, I had to call the receiving bank with the tracking number
and tell them, and then they had to find it on their side, which took a couple
minutes, before it was finally processed.

From the time I finished filling out the "instant" wire form (and paying $45!)
to the time it hit my other account was over three hours! And that was after
the initial 30 minute delay of driving to the bank and filling out a paper
form.

~~~
easymodex
I have been in a similar situation and to me it's one of the main reasons why
we need cryptocurrencies.

~~~
majewsky
Not at all. The Single European Payment Area solves these issues without
wasting a gargantuan amount of energy.

~~~
easymodex
Isn't all the infrastructure, people employed, offices and everything needed
to support something also a waste of energy if it can be replaced by some
lines of code? Also with your energy wasting straw man remark i assume you are
talking specifically about bitcoin which is just one of many cryptocurrencies
and a lot of them aren't based on proof of work.

~~~
majewsky
Sure, there is a lot of energy expended for the traditional banking
infrastructure. It also serves multiple magnitudes more transactions than any
cryptocurrency.

------
6ue7nNMEEbHcM
Hi, sorry for a bit of off-topic but perhaps someone could tell me if I'm
wrong here. I clicked on this article on medium.com and it shows me a dialog
from Google asking if I want to continue browsing medium.com authenticated
with my Google account. It shows there my name and e-mail address. I find it a
bit concerning. Can medium.com technically walk through the DOM of that page
to harvest my personal data such as e-mail address and send it to medium.com
with some API call? I guess it must be filled by some .js code linked from
google domains. Scary to see my e-mail address appear on random web page I
entered.

~~~
dwild
Medium doesn't have access to that part, even though you see it on your
screen. It use an iframe, which in the past, was accessible, but now with
crossdomain policy and all that, the iframe content is no longer accessible.

------
oldandboring
The brilliance of this is the use of email receipts as the data source.
There's so many services that use Yodlee (and/or the the Quicken-style "direct
connect" method) to fetch your transactions but they all eventually fall over:

\- your credentials change

\- your credentials require MFA authentication

\- your credentials require a password reset or security question/answer
intervention

\- the bank, Yodlee, or the service lose track of the transaction offset and
you get duplicate transactions or missing transactions

\- the service doesn't transmit all available metadata

------
gkbrk
I've done something similar recently; but instead of grabbing data from my
bank, I chose to enter data manually from receipts.

This makes it work for both cash and debit payments, and doesn't need any
maintenance for API breakage. I find doing this data entry calming, to be
honest.

I wrote about it here [https://gkbrk.com/2019/04/plaintext-
budgeting/](https://gkbrk.com/2019/04/plaintext-budgeting/)

~~~
bronco21016
I used to do this when I lived on a much tighter budget and found the data
entry was calming and provided something to do that didn’t cost money.
However, now that I have a little disposable income and a family the thought
of sitting down and entering financial transactions every couple of days
sounds horrifying. I can barely keep up with my monthly spreadsheet tracking
net worth.

------
dguo
Very cool. Using email notifications to get transaction data is a nice hack.
If you do find yourself wanting a more formal API, check out Plaid
([https://plaid.com/](https://plaid.com/)). I've never used it myself, but I
believe the free plan is enough to get your personal transactions.

~~~
heavenlyblue
My bank doesn't provide an API. So I just automated a headless browser to log
into my account and download the statements.

~~~
graphememes
Over 18,000 banks provide APIs, what bank do you use? Is it a small credit
union?

~~~
Spinosaurus
> Over 18,000 banks provide APIs

Please consider adding a source for this when you have a moment.

------
Amezarak
Just a nitpick, but the word you’re looking for is discretionary. :)

We would all do well to follow this example though - NIH and reinventing the
wheel are huge problems in our profession. Great work!

------
echion
Would love to see a .procmail rule + scripts to do this without the
significant zapier integration.

~~~
woodruffw
I do essentially this with `imapfilter` and some cronjobs.

The biggest hassle is the fact that each of my banks/financial institutions
uses _at least_ half a dozen unique addresses to send me relevant information.

------
sash_
But this way you send all your financial transactions through at least 2
additional providers (zapier and google) and your email provider. Not sure if
this is worth it.

~~~
tlarkworthy
I prefer this, the finance is lost in the noise of other traffic and no creds
to banks are shared unlike mint.

~~~
graphememes
credentials are sent to the bank servers, and a token is stored on the mint
servers, credentials are never shared _to mint_

~~~
tlarkworthy
No they store the plaintext password. Maybe more banks have oauth2 but many
don't.

1st item on their FAQ [https://www.mint.com/how-mint-
works/security](https://www.mint.com/how-mint-works/security)

------
alecgorge
An easy way to take this to the next level (and be truly no-code) is:
[https://www.tillerhq.com/](https://www.tillerhq.com/)

I love being able to continue using Google Sheets shortcuts + automation
features. It allows me to generate well-formed reports that I can analyze with
pivot tables or any of my normal processes that I use for analyzing datasets.

~~~
bluetidepro
Tiller costs $59/year, though. So yes, no-code, but it also costs money.

------
dopeboy
I'd like the capabilities of Mint without the creds hand off. BofA has
starting doing this in their portal but it's not well done.

I like the "hack" here - seems BofA supports this kind of alert too. I'd love
to follow a simple guide that lets me (1) setup the zapier instance and (2)
deploy the server side to a DO or Heroku.

------
timwis
Very creative. Love the idea of using gsheets as the back-end so you can
leverage the power of spreadsheets (which were basically designed for use
cases like aggregating transactions!)

------
ScoutOrgo
I have been wanting to do this, as I set up the Chase email notifications, but
never got motivated to tackle what you used zapier for.

One thing that it seems you could do is use Google sheets for your constants
vs coded in the repo. That way if you spend from somewhere new, you can do add
that category on the fly by updating your sheet.

------
loop0
Your idea is very nice! I’m going to try it but without the use of zapier,
instead I’m going to use python’s smtpd lib to directly receive the emails and
parse them. Thanks for sharing

------
Havoc
>[email purchase notifications ] I suspect every single major card company or
payment application has the same option.

Quick glance at my UK amex says nope

------
spking
I love this...homebrew account aggregation. This is basically what I use
Personal Capital for.

------
diminoten
What about Mint?

~~~
justusthane
From the article:

> I looked into existing budgeting software such as Mint or YNAB; they were
> feature packed but cumbersome to setup and complex to use. All I wanted was
> a simple, unified view of my transaction history across all payment
> mechanisms with a few spending categories from which I could do my own
> analysis.

------
garp
pocketsmith.com does a great job of this out of the box (no affiliation, just
a user and fan).

