imag usecases

Yesterday I got asked what the usecases for imag are. I tried to explain it and afterwards thought about it the whole night.

I already wrote about the purpose of imag, but I guess some usecases would explain even better what imag is for.

So now I try to explain three usecases for the imag commandline personal information management suite.

Please keep in mind that these are the usecases how I would describe them as final goal of imag. None of the following is implemented and all of this is music from the future! But that’s the ultimate destination of the project.

Go shopping for me.

You get an Email from Sally. A hook script informed imag, so it already knows about the mail, has fetched the contact information from the email header and linked the email to the vcard of Sally. In the mail, Sally asks you if you want to cook with her and if yes, you should buy eggs. You type in a shortcut to call imag. You tell imag that you want to create a new shopping-list. imag creates a new shopping list. Because you called it from a mail, it asks you to link this mail. After you created the shopping list, imag creates a task in your todo tool for you. It asks you whether you want to create a calendar entry for the shopping list.

Later you add things to the shopping list. You add potatoes and sweet chestnuts. imag recognizes the change in the shopping list. It notices that you had similar shopping lists that contained Eggs, potatoes and sweet chestnuts and that they were linked to a recipe. Imag asks you whether you want to link that recipe to the current shopping list.

After you went to the mall, you type the cash slip into your ledger. imag recognizes that you bought stuff you had on a shopping list that isn’t marked as done yet and therefor asks you whether the shopping list can be marked as done. You mark the shopping list as done. imag links the ledger entry with the shopping list. imag asks you whether it should mark the linked todo entry as done for you. Yes, you want to close this todo entry. Because you went shopping before the calendar entry, it asks whether it should delete the calendar entry for you. You delete the entry. imag recognizes that you linked an email - but no response for that email exists. So it asks you whether you want to reply to Sally. You reply to the mail and tell Sally that you buyed the things and you’d love to come over and cook together.

You query imag for that recipe imag told you about and add it to the mail, asking Sally whether this would be appropriate. imag has already linked your response to the original mail from Sally. imag also linked the recipe to your response. imag recognizes that there are notes attached to the recipe and asks you whether they should be in the mail as well.

You type in another shortcut to create a new calendar entry “Go to Sallys, cook with her”. imag links that calendar entry. imag recognizes “Sally” in the subject of the calendar entry and asks which Sally from your contacts should be linked to the calendar entry.

New contacts and a party

You were at a party and met Amelie. You add her contact information to your contact application. imag knows that contact now, too. You tell imag that you met Amelie at the calendar entry for yesterday evening. imag links the contact with the calendar entry from yesterday evening. Because the calendar entry is linked with a location and the website of the club, imag knows that these pieces of data are in relationship with eachother.

A few weeks later you’re typing an email to Dave, asking whether he would come with you to the club. You query imag for the website of the club. imag links that email with your bookmark of the website of the club.

Your friend replies yes (imag links the reply with your mail), so you add a calendar entry. imag recognizes that you linked the website of the club and a calendar entry with mails between you and Dave. It asks you whether it should show you other contacts that are somehow in relation with calendar entries that are related to the bookmark of the club. You find out that you met Amelie some weeks ago at this club. You invite her, too.

Further, imag tells you that it knows from your ledger that you spend around 50 bucks last time you had an event that was linked with that club (on cola and water, of course). It also knows that you have about 20 bucks in your pocket right now. imag asks you whether you want to create a task “Go to bank”. Yes, you want that. imag finds out that you have time tomorrow at 4pm and asks you whether you want to create a calendar entry for this at that time. Yes, you want that. Because the other calendar entries from tomorrow are linked to locations downtown, imag infers that you are in this location and finds the best bank nearby for you, asking you whether that location should be linked to the calendar entry.

Business, Business!

You get an email from your boss, she tells you that you have to fly to another country tomorrow, to attend an important meeting with a customer. She sends you a icalendar file containing information about the flight. imag already knows that this calendar entry has to go to your business calendar, because the mail was from a contact from your business contacts.

You add the calendar entry via a shortcut from your mail client to your business calendar. imag recognizes that this is a business trip and asks you whether it should search for packing lists. It could also create a todo for you “Pack things for business trip” and link the packing list to it. Hell yeah, you want that!

Because all your flights are linked to a location that is about 50 miles away from your home, imag asks you whether you want to create another calendar entry “Drive to Airport” right before the flight. Of course you want that. Because there is another calendar entry which collides with the trip to the airport, imag asks you whether you want to create an email to the contact linked to that calendar entry. imag has already figured out an alternative date for the meeting you have to postpone.


You might call me crazy, but yes, that is exactly the way imag should work in the end. Of course, this is far far away in the future as of now, but I do not think that it is unachievable!

How the interaction with imag works in detail is not described here, of course. I don’t know it! It will grow with the project. Maybe all the above will be done via commandline calls, maybe there will be some fancy curses UI or maybe there will even be a web frontend (though this is less likely).

imag is a tool for nerds, from nerds. So it will require some scripting and fiddling to get imag integrated in all the tools. imag tries to provide a convenient interface for all these things, but not a out-of-the-box solution (maybe in 10+ years, but it is not a short- or mid-term goal).

I hope that these use cases explained some things and helped you understanding the purpose of imag.