coffee.fetchNow();
post.History(initial, followUp);
User Scenario (for the Problem Statement)
Dave Burton has just finished working the sales forecast for the quarter. His boss, Lee Hunt, asked for the document by the end of the day. Dave switches to his Outlook window, and creates a new email. He types:
Lee,
I’ve attached the sales forecast you requested for. Please review and comment.
Dave.
Dave clicks the “Send” button, and goes out for his well deserved coffee break. When he’s back, he sees the following reply from Lee.
Dave:
I didn’t receive any document in your email. Please check and revert asap.
Lee.
“Whoa!” thinks Dave. He forgot to attach the document. This time, doubly careful, attaches the document in reply to Lee’s mail. His email body reads:
Lee,
I guess I forgot to attach the document the last time. Please find it attached here.
Dave.
The Solution
User Scenario
Dave Burton has just finished working the sales forecast for the quarter. His boss, Lee Hunt, asked for the document by the end of the day. Dave switches to his Outlook window, and creates a new email. He types:
Lee,
I’ve attached the sales forecast you requested for. Please review and comment.
Dave.
Dave clicks the “Send” button, thinking about going for a well deserved coffee break, when he sees a message pop-up.

Dave clicks on “Yes”, thinking “phew, thank you for reminding me!”
Feature Specification
Outlook should be able to automatically detect the user’s intention to send an attachment with an email by unobtrusively looking in the email body for words, which we shall call “attachment-indicating” words or phrases.
Following is the set of attachment indication words & phrases [Note: this list will be revised after the usability tests.]
- Attachment
- Attach
- Here you go
Normal Flow
The user is in the Compose Mode. The Compose mode includes New Message, Editing a Draft Message, Reply, Reply All & Forward email options.
The attachment auto-detect feature is turned on. This could be implemented as a separate thread, process or program. The spec will use “thread” as a metaphor to describe its functionality.
The thread checks whether there is an attachment to the mail already. If there is, it stops.
If there is no attachment, then the thread periodically scans the new content in the email body for any attachment indicating words or phrases. As soon as it finds one, it sets off a flag.
If the any of the email content is deleted, the thread runs its checks again, and updates the flag accordingly (if any word/phrase still exists, then keep the flag on, else turn it off).
When the user clicks on the Send button, check for the status of the flag before sending email. If the flag is on, then prompt the user with the following message.

If the user clicks
- Yes: Close the message dialog, and focus the cursor on the “Attached” field of the email. Display the “Attached” field if it wasn’t displayed earlier.
- No: Close the message dialog, and send the email.
- Cancel: Close the message box, and place the cursor in its last position in the email body.
Alternate Flows
The user decides to save the email to send later
Behavior: The flag status is stored as well, and the checks resume when the user opens up the message in the drafts folder.
The user cancels the message
Behavior: The flag status for that message is also deleted.
The user has multiple windows open in the Compose Mode
Behavior: Each message has its own flag, and each flag status is maintained even if the user switches windows.
Also Applies to:
New Appointment, New Meeting Request
p.s.: This is the first post I've written with some commercial interest. At last I'm making money by blogging.