Having looked into this before, the big issue is actually the web scraping. If you don't mind pulling the data manually there's software like GNUCash that can do not only what Mint does but even more. Maintaining the web scraping rules for numerous banks is a full time job (probably multiple) in itself though.