Hacker News new | past | comments | ask | show | jobs | submit login
I got control of my spending with some no-code services and 100 lines of Python (medium.com/jcpeters)
143 points by jcp2fa on May 5, 2019 | hide | past | favorite | 67 comments

> 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."?

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

The tools in the article, google sheets and zapier are quite good. A few more that might fit are airtable, webflow and stripe. Maybe even look into something like google app maker as well.

As luck would have it, I recently pulled together a list of no code tools into a market landscape: https://www.createwithoutcode.com/posts/no-code-development-...

I'll be adding more in the coming days...

To directly answer your question, I would recommend Bubble.is as a great place to start in the no code space.

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.

> 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.

Nice! But why do you need a separate report for that? Just put all the coffee-related expenses into their own subaccount of the expense account for Food, and run the standard expense reports on that account.

> 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.

Oh, I know what you mean. Especially when you first set it up.

For me, it's about 15 minutes per week, all things considered. I track all expenses, including cash expenses. The only thing I don't break down into individual items are grocery bills. Those get folded into one daily "Groceries" transaction.

I personally use beancount [1] and love it. There are also many similar alternatives [2].

1 - http://furius.ca/beancount/ 2 - https://plaintextaccounting.org/

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

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.

Bookkeeping is basically just tracking your total assets and debts separately. You can break those down into accounts, but it's optional.

In personal context, doing double-entry would have you log a credit (pay from) to your assets and a debit (pay to) to your debts. For example, when you pay your credit card bill with a check. For generic expenses (whether you pay with cash or credit) and income you wouldn't bother with double-entry.

Why would you want to do this? It's all about "balancing" your net worth; when you have expenses or income your net changes, but when you pay a debt then your worth, or "capital" in bookkeeping jargon, is a constant, and follows the basic rule of accounting: assets = liabilities + capital. Doing double-entry is the most reliable way of following this rule.

One thing I've found really helpful doing double-entry is that I can make sure nothing falls under the radar.

With single-entry (where you just key in expenses for the month), it's easy to forget that cup of coffee you paid for in a rush. It doesn't matter with double-entry since you can always just check if your wallet tallies up.

I usually just classify variances under miscellaneous expenses if it's not a large amount, but sometimes I've found myself somehow "missing" a few hundred bucks which I then would start tracking down.

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.

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.

I've given up moving large amounts of money electronically in the US. It just doesn't work. What does work? Write a paper check to yourself on the "from" bank and use the "to" bank's app on your phone to take a picture of the check for deposit, then keep the paper check in a file folder for later auditing.

Seriously. This is disgusting but it works.

It works but it doesn't clear in the same day. If you need the money today, a wire transfer is the only way.

Most banks credit the money to your account, up to a certain amount immediately.

Which is helpful in cases like this. And purely idiotic in many other cases because it enables check cashing scams which are probably the number one most popular scam in the US.

You're lucky it went in three hours.

A couple of times I've moved between $17,000 and $40,000, and Chase sits on it for up to TEN DAYS before it will release received the funds.

Chase claims it's a federal regulation, but no one in the branch or on the phone can tell me which one.

Any transfer of $10k or more (and in many cases less) requires reports by the financial institutions to the IRS and potentially other government agencies. Why that would cause huge delays I don't know. Most likely Chase just wanted to make some money on the float.

The Patriot Act kyc reporting requirements would have nothing to do with the delay. The reporting requirement is simply that. It isn't a wait and see to confirm it's ok. You just report the transaction after the fact.

It's all about the float.

The federal deposit rate for banks is 2.35% right now. That's $64 to the bank for every million dollars every day it is deposited at the fed.

Now imagine a large bank like chase is dealing with billions of dollars a day in transfers. Hold it several days when you receive a transfer and hold it several days before sending a transfer and you are making literally millions of dollars every month just for dragging your feet on transfers.

What's wrong with doing an ACH transfer for amounts of more than $4,000? Most large banks seem to have limits of $25k/day for those transfers and that can be increased pretty easily (at least on business accounts). There usually aren't any fees for those either.

You must be quite rich. Every account I've ever seen limits ACH to $4,000 unless you have at least $100,000 in the bank, and then they will up it to $25,000.

No not at all, not even 2 months rent in my bank account. Maybe try some different banks? My only experiences are with Chase, Marcus and a very small town bank.

You can now do an instant ACH transfer of 5000 or less with Chase. Takes about 5 minutes. I do it between Chase and BofA.

Yes, $5,000. In Europe it's 100,000. Big difference.

$5,000 isn't enough to cover rent in San Francisco.

Very few people in the US live in SF. For everyone else, it works a treat (I have a Chase account just for Zelle/Chase Pay transfers).

SF rent was just an example. There are many examples of needing to move money in amounts greater than $5,000 but less than $120,000. For example, I can't pay a contractor with Zelle because they almost always need more than $5,000.

Yes, Zelle is a nice stopgap solution, except it is only supported by a few banks, and still has really low sending limits.

Zelle isn’t even a stopgap solution oftentimes. With Navy Federal Credit Union I can’t transfer more than $2500 anyway through Zelle as their servicer. I really don’t understand why banks in the US kneecap services from elsewhere in the world that seem to have perfectly acceptable rates of fraud while consumer identity protection seems strong enough elsewhere there’s hardly much risk from that side. Nobody’s explained the issues unique to the US that nobody else in the world has that makes our system so backwards in comparison (much like our healthcare system, but that seems rather easy to understand in comparison).

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

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

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.

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

I'll take my government insured bank account over cryptocurrency any day of the week.

Cryptocurrencies don't solve this problem, but they do lack the regulations and baggage that cause it.

> Revolut

Note that this only applies for business accounts. Regular users as far as I can tell are unable to access the API.

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.

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.

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

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/

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.

> Or… I could use a shell script to run calculations with SQLite.

I did exactly that and I import the data from the bank’s csv-export once per month. I have a set of sql statements to run and categorize everything and then I manually enter the stuff that isn’t caught by the script. I manually enter cash transactions.

And the end of the year I run a sql statement to generate a report with all of the significant amounts for taxes.

Did you consider to use some kind of OCR?

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/). I've never used it myself, but I believe the free plan is enough to get your personal transactions.

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

May I ask how did you manage the security matters? How do store your PIN/password? Are they encrypted? If the server doing this got hacked what are your protections?

This has long been on my todo list. Do you find it breaks often? Or was it kind of a build it, set it, and (mostly) forget it type of project?

I just need to supply my bank statements to the accountant annualy (bank is TSB). They have a set of rules (less that 150 lines, not more than 3 months) that constrain how you can get the statements, and a 5-step process to open up the UI to download one, then select the dates, etc. You may imagine it's simply error-prone and repetitive.

A few years I didn't even need to change the script. But even when I needed it wasn't something too complex. As long as you constrain the expected behaviour and error early - it works perfectly well.

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

> Over 18,000 banks provide APIs

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

And how much time would that take me to register my own application to download a few statements instead of using the browser?

My bank is TSB, but at that time there was definitely not even a program to register a developer account with them.

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!

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

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.

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.

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

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

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

An easy way to take this to the next level (and be truly no-code) is: 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.

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

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.

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!)

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.

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

>[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

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

What about Mint?

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.

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

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact