plaintext

Prixfeed.com and Design Decisions

with 3 comments

I spent some time recently polishing the old “Amazon price feed” project, and gave it its own domain: Prixfeed.com (pricefeed.com was, naturally, taken). Basically what it does is take an Amazon product (by its page URL or ASIN code) and returns an RSS feed of its price. This lets users keep a watch on the price, getting updated whenever it changes.

Always liked 37signals‘ Design Decisions posts, so here are a few I made with Prixfeed, mostly to keep it simple and minimum-effort as possible (BTW, where it says “RSS Reader” I refer to the software reading the RSS feed, not the person using that software):

  • One URL:

    http://prixfeed.com/?ASIN=<Amazon ASIN or product URL> returns the RSS feed.
    (Or, with URI Templates: http://prixfeed.com/?ASIN={ASIN} )

    http://prixfeed.com/ without params will display a form where the user can enter an Amazon ASIN code or product URL, which then directs to the its RSS feed.

  • No cron jobs: Prixfeed simply checks a product’s price whenever the above URL is called (naturally, some caching is needed here to guard from buggy/malicious clients overloading it). This means data refresh is timed and triggered by the RSS readers, removing the need to build a backend update system or keep track of what data needs to be – ie, which products are currently monitored. Which leads to:
  • No database: so no need to keep track of who’s tracking which product, but with a non-RSS system (eg. email alerts) you’d still have to store prices in order to guarantee you’re only sending out a message when the price has changed. RSS, though, has a guid element which lets an RSS reader determine whether an item was read before. By making that GUID a function of the price, Prixfeed makes sure the RSS readers will display only new prices as new items.
  • Machine readable: it’s easy to programatically create a Prixfeed URL request for an item price, but I wanted to make the response machine-parseable as well, while keeping it human-readable. One way would be to have a URL param that will return an XML response, but I like the minimalism of a single URL so I decided to use a Microformat-like approach. The response’s description element contains HTML which includes attributes like id="price" etc that allow automatic parsing of the content (more details here).
  • Small output: each message contains the text “The Amazon price for <item> is now $x” and a purchase link. I like minimum friction products – there should be some proportion between the value you’re getting from something and the investment it requires you to put in, both when entering information and reading it. Since the value here is less than life-changing, I figured I better keep the time investment minimal as well.

That’s it then – once again I manage to write a blog post with more lines than the code its about! Go on and RSS thy Amazon purchases!

Written by Nir

March 1, 2008 at 8:10 pm

Posted in code, design, pricefeed, projects, rss, web

3 Responses

Subscribe to comments with RSS.

  1. Just started using your prixfeed.com application, the interface is great! Hope the prices will be as great ;)

    itay

    Itay

    March 22, 2008 at 10:27 pm

  2. Thanks mate! About the prices, it’s in the roadmap for 2.0 ;P

    Nir

    March 23, 2008 at 9:33 am

  3. [...] not exactly retiring yet, I’m pretty proud of this little app. Very simply done, no marketing to speak of, barely Googleable, it somehow managed to attract users. Not many – [...]


Leave a Reply