M P Retail is a website that helps you manage your gift and card buying. It's a startup created by a friend with a history of success in such things, and actually it's something I was going to persue at some future point so I think it's a great idea.
The project, however, has gone through a few twists. It started out as a relatively simple idea .. let people store the names of their relatives along with their birthdates and then remind them of forthcoming birthdays and offer to send a gift and card.
But as I got into the analysis stage of the project, which I suppose is what 'analysis' is for, I started to root out some real problems with that simple view.
For a family, for instance, you might buy something for both parents together and then something individual for each of the kids. If the system is supposed to register that a birthday has been 'dealt with', when the user deals with the parent's birthday, they are going to have to be able to tell the system that usually those people are dealt with together.
Then there's Christmas. The system is based on adding 'events' such as birthdays and anniversaries. Almost everyone on someone's list of relatives and friends is going to need something at Christmas, but clearly we don't want to have to add a separate Christmas 'event' for everyone, that would be too much hard work.
What happens then if one of the children goes to university, and during that time the parents move house? Can we separate off the student, who only lives at their new university address in term time, and handle the change of address, without messing the whole thing up, and do that in a simple way?
Through my white western eyes Christmas seems quite important but I'm sure Jewish people and Indians and Pakistanis and everyone else have other gift-buying festivals that I've never heard of, so the system needs to allow people to add those.
I haven't seen anything that handles this sort of complexity easily, and I'm not necessarily saying I've done it here, but I've had a good go within the available budget and I think I've done better than anything else I've seen. Rooting out these issues is becoming a bit of a trademark of mine.
Try it, see what you think.
Because of its complexity this project took about 115 hours, so just over £4,000.
The client said "that is brilliant, thanks.".