Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Following the formal user story style:

As <user>, I want <goal> so that <benefit>.

How can stories be written when there isn't an obvious user-interaction taking place, as in the case of automated processes like nightly invoicing?

share|improve this question
up vote 14 down vote accepted

What's wrong with e.g.:

As a sales assistant, I want the system to generate my invoices raised during the day, that night without my interaction so that time is saved.

Think of who will use the results of the process.

share|improve this answer
Also "As an accountant, I want to review the invoices generated nightly to confirm the dollar volume and count" and "As a sales associate I want to review the invoices generated nightly to confirm that all my sales are invoiced correctly" or "As a customer service rep I want to see the automatically generated invoices so that I can review them with a customer." There are an unlimited number of stories based on an internal, automated process. The details of the automated process are an appendix to the story. – S.Lott Feb 1 '12 at 10:49
Hmm, do we even need to specify overnight? i.e. As a user I want the system to generate my invoices automatically – Murph Feb 1 '12 at 12:47
@Murph, depends on what Programming Hero's users need. – StuperUser Feb 1 '12 at 13:24
@Murph: Excellent observation. They have to be generated just before the person wants to look at them. Whether that's overnight or "just in time" is a separate set of decisions. – S.Lott Feb 1 '12 at 15:22
@StuperUser hmm, there may be constraints that suggest that things need to be done overnight - that I have no issue with... its more that one needs to avoid making any assumptions – Murph Feb 1 '12 at 21:27

Just give the thing a name as "AutomaticInvoicer". See it as a robot that acts as a person. No big difference there. Maybe use "it" instead of "I" to make the distinction clear.

As <AutomaticInvoicer>, it wants to search for open invoices so that
it can initiate booking.
share|improve this answer
I bet if they looked for what started Skynet, they'd find a story that sounded like this :) – DXM Feb 1 '12 at 18:42

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.