I am terribly bad at managing money. I don't know how much I have on myself at this particular moment, I don't know how much I have in my bank account at the moment, I don't know how much I have in my stash, I don't know where my stash is, nor I know which currencies the money in the stash is in.
I don't know how much I paid for all the bills last month, I don't know whether it was more or less than it was the month before. I have not the slightest clue how much it is compared to what I will pay this month, the one after it, or three months from now.
I don't know if the water company is being honest by charging me as much as the meter said I consumed.
I don't know if I use the most efficient Moldtelecom package, because I have no idea how many of the included minutes were not used. Maybe I should switch to a low-end package?
Am I paying too much for my Internet? Do I really need an unlimited traffic contract with my ISP, if in the past N months my needs never exceeded X GB?
This is just the tip of the iceberg; if I add all my minor expenses (5 lei here, 20 lei there) to the game, I might discover that the sum of little parts ends up being greater than the sum of the big ones!
Could it be so that it is much more efficient to buy a home theatre and invite my friends over, instead of going to the cinema?
A couple of months ago I was disconnected by the electricity company for "not paying the bill"; they didn't bother asking me whether I received it in the first place; I didn't even notice that that month I received fewer "papers" than usual. On the other hand, if they sent two papers instead of one, would I foolishly pay both invoices without noticing?
I have no clue, because I am terribly bad at managing money. And so are you, if your response for most of the above was "I don't know either"; if you think you're not, you should review your definition of "good at managing money". Things become a zillion times trickier if we add "living on my own" and "wife and kids" to the equation.
I hope I've convinced you, that there is a need for an instrument that can aid us in dealing with the points described above.
Technology will help us.
Purpose of the system:
- Manage the bill-payment process in a family
- Enhance it with statistics and other useful features, to reveal trends and make accurate predictions for consumption of resources and cost, in order to be able to optimize the available resources by cutting down the unneeded expenses
- Make sure you will never forget to pay a bill before the deadline
- Make the future as predictable as possible (ex: you know that last winter you spent X, this winter prices went up and salaries went down, therefore you must use the resources sparingly or let some of the services go, otherwise you will have a financial crisis. Fix the problem before it fixes you)
- Comprehend the actual magnitude of the expenses, by representing everything in graphical forms, making it easy to spot trends and see ratios
- See how changes in the environment affect the expenses (Moved to a new place? Temporarily hosting a relative? Bought a car? Changed jobs? Bought another computer?)
Philosophy:
- Inputting the data must be quick and painless
- The system must be easy to use, and replace the current bill management process with an easier one
- Mistakes should be tolerated or handled gracefully (ex: not entering data into an optional field will not bug the user until they decide to uninstall the program :-)
- Graphics, charts and diagrams are the future!
- Tables are the present
How it works:
- The system will collect data about the bills that must be paid monthly, store the information in a database
- Afterwards data mining will allow us to gather additional information (that would otherwise go unnoticed)
General features (descending order of importance):
- Printable reports (monthly, yearly; per bill type, general)
- Graphical (pie-charts, bars)
- Table-form
- Extendable
- Add new bill types
- Add new meta-data to a bill
- Powerful statistics engine
- Get average, minimum, maximum values
- Extrapolation (predict future expenses)
- Reminders
- Payment deadline
- Bills that haven't arrived
- Regular backups
- Multilingual interface
- Cross-platform
- Web-interface
Meta-data
- Some meta-data are common for each bill (generic meta-data)
- Bill friendly name (or tags?)
- Date
- Cost
- Debt (if yes, how much; anything else?)
- Comment
- General, for a bill type
- Individual, for a specific bill
- Each bill has a set of meta-data associated with it
- Blob (binary data associated with a transaction, ex: a scan of the receipt, the transaction log, etc)
- Different bills have different sets of meta-data
Proposed set of default bills and their custom meta-data:
- Electricity bill (Union Fenosa)
- Internet provider
- Gas (Moldova-Gaz)
- Phone (Moldtelecom)
- Minutes (local)
- Other operators
- Cable TV
- Water (Infocom)
- Heating (Infocom)
- Building services (Infocom)
Family financial input/output system (will probably be a different application, or one that can function pretty much independently; discuss):
- This module will offer a bird's eye view (with a great zoom capability) on the money flow within a family, tracking the income of each member, as well as the expenses
- Its purpose is to see how much goes in, how much goes out, and how much is left
- Further, it will be able to illustrate the amount of each expense in comparison with other expenses, thus it becomes possible to answer questions such as:
- What is the most expensive service we use?
- Who is the most avid consumer?
- Who is the most efficient income source in the household?
- Why the hell did we spend twice as much than we spent last month? (zoom in, track the expenses, see which of the particular bills or purchases was the culprit)
Below is a sample financial I/O flow in a household (naturally, the items will vary from one family to another, this is just a reference sketch)
- Input
- Each family member
- Mom
- Dad
- Me
- Salary
- Bank account interest
- One-time jobs
- Passive sources
- Output
- Bills
- Electricity
- Infocom1
- Infocom2
- Infocom3
- Moldtelecom
- Moldova-Gaz
- Starnet
- Mobile
- Cable TV
- Supplies
- Food
- Drinks
- Bread
- Meat
- Raw materials
- Hygiene
- Shampoo
- Soap
- Shower gel
- Toilet paper
- Tooth paste
- Entertainment
- Transport
- Tech
- Small gadgets
- New devices
- Upgrades
- Maintenance
- Miscellaneous
- Global statistics
- Input-to-Output ratio
- Top consumers in Output
- Deposit = Input-Output
Technical aspects:
- Complete separation between modules (GUI, data crunching, languages, etc)
- Open source
- Proposed language, Python:
- Easy to use built-in high-level data types (ex: lists can be used for bill meta-data)
- Cross platform
- Availability of libraries for various purposes (ex: graphical, data storage, networking)
- Has bindings for various GUI libraries (will look naturally in either OS)
- Should be easy to add a web-interface
- The program is intended to be used occasionally (ex: once a month), it will capture the entire area of the screen as well as all of the user's attention, therefore performance or memory use optimization is not a high priority
To do:
- Study existing systems and explore the potential of extending them, rather than re-inventing the wheel (ex: Homebank, GNUCash)
- Different currencies, and how they fit in;
- Add conversion coefficients and manage everything in a single currency
- Add currency as a meta-data field (the burden of crunching the number is now on the shoulders of the graph/stats module)
- Discuss the connection between the bill tracker and the family finances i/o module
- Find a name and a logo for the program :-)
Call for arms - this is the most important part, which is why I left it for the end. I hope this project will attract people with coding skills, who are aware of the problems described here, and are willing to participate. These specs will be reviewed, refined, and extended; feel free to join and suggest new features, point out existing flaws, provide new use cases, etc.
Once things become clear, a new project will be created on SourceForge, and so the story will begin.
I have just one minor question..
Before starting to invent the bicycle once again, have you checked out the solutions existing on the market already, like M$ BuX here for example: http://www.microsoft.com/money/ProductDetails.aspx?pid=004&active_tab=Overview
?
The surely must be open-source projects of such kind there somewhere.. =)