So I said I want to build a utility app for myself. And do that using the Meteor JavaScript platform. While learning it. And blogging about learning it.
OK, but what’s this utility app I’m talking about? This is the topic of this post.
I’m fanatic about my digital paperwork organization system, especially when it comes to monthly bills. I have several self-imposed requirements from my bills processing workflow (beyond “pay on time” 🙂 ) that I’d like to automate as much as possible. The purpose of the app is to enable this bills processing workflow automation.
I know, this isn’t the sexiest app out there. It is, though, a real and concrete need that I have. Solving this will save me significant time. This means I’m motivated enough to build it 🙂 .
Keep reading for more details about my plans for this bills management app.
Components of my bills processing workflow
Here’s how I process bills today, mostly manually:
- Receive bill from service provider (however the service provider chooses to deliver it – email / postal services / etc.).
- Digitize bill, if not already digital (paperless FTW). Simple desktop scanner outputs PDF files.
- Give the digitized file a name following some anal convention that contains the receiving date, bill period, and bill type. Example: “2015-11-04 AWS bill for 2014-10.pdf”.
- If the bill is not automatically paid, pay the bill. Obtain payment confirmation, and give it similar treatment.
- Archive bill (and payment confirmation) in Dropbox Bills directory, under service provider sub-directory.
Before I had kids, I used to do a couple of extra steps that I don’t do regularly these days. I hope that by automating the process I can bring back the essence of the extra steps:
- Create new note in Evernote “Family stuff” notebook for this bill cycle, and copy the bill file (and payment confirmation) into the note. Apply applicable tags (e.g. “bills, finances, service-provider-tag”).
- Open the service provider “master tracking note” in Evernote:
- Add entry to running table of received bills with link to note from previous bullet.
- Copy the sum paid to the running table.
- Review the table for patterns in paid sums. Note if there’s anything to deal with.
- Update note reminder to expected next bill cycle date, so I’m reminded in case a bill went missing.
This may sound like a lot of overhead, but the added value was significant:
- Extra backup – two different cloud services are better than one 🙂 .
- Better integration with my other workflows, given that I default to Evernote as my “external brain”. Better to have everything in the same place.
- Bigger picture – seeing patterns in bills over time is easy, as long as the tables are maintained.
- Less risk I’ll miss payments, by actively setting reminders for when I expect to receive future bills.
Description of the bills management app
The bills management app that I am going to build should support the process I described. It should streamline it, and automate as much of it as possible.
If I had the skills to do that, this is where I would come up with mock ups for the app. Lacking these skills, I’ll default to text 🙂 .
The app is going to be, at the least, a mobile responsive web app. I hear that Meteor is able to generate native Android & iOS apps from the same codebase. This could be cool, although I doubt it would work smoothly. For my use case, I’m fine with using the web app on mobile as well.
Streamline bills collection
I want the app to make it easier to collect the bills. Here are some ways that come to mind:
- Got bill by email from service provider? Forward it to me@kambatz.com. Boom.
- Scanned a paper bill? Drag and drop the PDF onto the web page. Boom.
- Scanner died? Use the mobile app to photo-scan the bill directly into the app!
- Got a bunch of archived PDF’s from “the old days”? Drag and drop the entire directory onto the web page. Or zip it and email it to me@kambatz.com. Or tell the app to crawl my Dropbox directory “Bills”. Of course, take advantage of the anal naming scheme that’s already there when moving along to the processing stage!
Automate bills processing
So I got a PDF in the system. What do I do with it?
The processing stage is responsible for attaching meaning to a collected document, and associating it with a workflow.
Upon collection, a document is just a blob of bits. By “attach it meaning”, I mean things like:
- What is this document? (e.g. bill / payment confirmation)
- Service provider
- Received date
- Bill period
- Payment due date
- Sum to be paid (or sum paid)
- etc…
These are the document metadata entries. They can vary between different kinds of bills, so the app needs to handle this variation gracefully.
Ideally, the app would automatically analyze and extract all the metadata from the collected document for me. It could use the document content (OCR?), and context (filename and forwarded email) if it helps. I have a feeling this wouldn’t be quite easy, though, so here’s what I have in mind:
- For every collected document, try to automatically analyze and populate metadata.
- Put it in a “to review” bucket, for the user to review all auto-processed documents.
- The user can approve or manually modify everything before sending items to the next stage. The review screen should include a preview of the digitized document of course.
Once a document goes from a blob of bits to a meaningful record, what’s the next stage?
That also depends on the kind of bill:
- A bill that’s also a payment confirmation for something that’s auto-paid? Just acknowledge the amount paid, and send to archiving.
- A bill that can be paid immediately, online?
- Go ahead and pay it now. Ideally – one click from the app! And automatically pull in the payment confirmation! This might be challenging, so think about how to streamline the handoff to external payment processor (e.g. direct link to service provider with details from metadata).
- Or set reminder to pay in a future date, closer to due date. This should snooze the bill from the UI until that date.
- A bill that requires some physical action outside? Bleh… Find another service provider! Until then, think about assigning the record a “status” and “next action” or something like that.
Handle bills archiving
Naturally, the app will store all the documents and their metadata, for all eternity. That’s not good enough – I’m not ready to give up my anal Dropbox bills directory, or my Evernote mirroring.
So beyond archiving all processed and dealt-with bills internally, I’d like the app to also support archiving to external destinations. For my needs at the moment, Dropbox and Evernote will do.
For every type of bill, I would like to define “rules” for external destinations. For example, a Dropbox rule for my “AWS bills” would look something like "@Dropbox/Bills/AWS/{{received_date|YYYY-MM-DD}} AWS bill for {{bill_period|YYYY-MM}}"
.
Dropbox rules should be pretty straight forward, as the mapping of documents to Dropbox files is natural.
Evernote rules, on the other hand, may be a bit more contrived, since Evernote notes are more powerful than files. For example, I want a bill and its accompanying payment confirmation to live together in the same note. I guess I’ll deal with it when I’ll get to it…
In addition, I’m also working with an accountant. He needs to receive copies of any business and household invoices and receipts. It only makes sense to treat him as “another archiving destination”, and define rules for bill types that he should receive. I will need to work with him to figure out how he wants to receive the copies from the app. Ideally, he will have viewer access into my account, and take what he needs.
Provide bigger picture, alerts, reminders, trends
With all the bills and extracted metadata in one place, it should be easy to provide the “big picture” that I lost when I stopped maintaining my “master tracking Evernote notes”.
I can create multiple dashboards and reports, detect trends, etc.
The app can also know when to expect the next bill of every type, and generate alerts if it doesn’t get it on time, so I don’t miss payments. Of course, I need to have the UI to tell the app about “planned anomalies”, like change in service providers, canceled services, or update in bill cycles. False alerts are annoying…
Summary
That sums up the bills management app I would like to build using Meteor.
It might not be the sexiest app in the block, but it’s one that I have a concrete need for, and strong motivation to build. This makes it a good app to build while learning.
It should be complex enough to allow me to dive pretty deep into Meteor and JavaScript, but focused enough to be doable. Even if some features seem challenging, I know I can apply an iterative approach, and have something working with less features.
I haven’t discussed aspects of users management and data security at all. For an app that will initially serve just me, I am not going to trouble myself with such matters. If others are interested in using such an app as well, please do let me know, so I can take this into account further down the road 🙂 .
November 17, 2015
Hi Itamar, I am certainly interested in such an app/website/service.
I document all my bills (including temp bills like one-time events and such) in google drive – according to company/year/bill (up to 12). All the bills are month.pdf or month1-month2.pdf (I do it manually). I use evernote to document and keep track of all the different programs of each company/service and evernote reminders to remind when a program is about to end and the price is going to skyrocket, so i’ll hurry and re-examine the relevance of the program/service.
The “Kambatz” sounds interesting – be sure i’ll follow your progress
Good Luck!
November 17, 2015
Good to know I’m not the only OCD one. Thanks! 🙂
What did you mean by “up to 12”?
November 18, 2015
Every bill is saved as 01.pdf, 02.pdf…12.pdf in the folder 2015 (for example), and I usually sort according to date saved. I don’t like too many bills in every folder, so for 99% of the services – I have max 12 bills in each yearly folder + maybe an agreement(terms of the program)/receipt for installation.
November 18, 2015
Ah, gotcha