Hey guys, I've been working on Postabon for the last few months (full time for approximately the last 2). We've been beta testing in NYC for the last few weeks - and feel we have enough content there to launch now. Any feedback (especially criticism) you have would be greatly appreciated.
The basic idea is that we want to help you find and share discounts near you. The video (click 'Watch a Video' on the left) will help explain the concept/history if you're interested.
Our iPhone app's release is pending Apple approval (hopefully just a few more days ...).
HN contributed to this in a very real way. Two years ago when I started visiting HN I had no intention of ever trying my hand at a startup. But being surrounded (at least online ...) by the entrepreneurial spirit here really inspired me.
The Lisp thing isn't actually a selling point - I just thought that the crowd here might find it interesting. If there is demand, I'd be happy to write some blog posts on the how/why of some of our architectural decisions. We're using a 'NoSQL' key-value (with btree indexing) persistence layer too :-D
The lack of real persistence in Redis (up until recently, of course) prevented me from using it. If I were to go with something else - Cassandra seems really interesting (I think I saw a cl-thrift somewhere ...). But, elephant/bdb for now ...
BDB has good recovery utilities, but just to be sure, try to keep a journal of all database updates to a flat text file, just in case, even if you push stuff to message queue (beanstalkd is my favorite and I will push my Lisp client for it when I have time to clean it up.)
Nothing like having a flat text file on a remote box, good for your sleep at night.
Hmm, do you mean saving more than the BDB .log files? Basically, I'm backing those up initially - then running a 'catastrophic recovery' (and some sanity chceks) on the data I've backed up. Once the backup checks out, I delete old .log files.
I wasn't familiar with beanstalkd, but it seems interesting. I already have an asynchronous thread-pool based job queue built on the back end that could work well for something like that ...
I would love to read about your experiences building the site using Common Lisp. I have tinkered with CL for about a year but gradually abandoned due to (mostly) lack of effort on my side to learn how to do things idiomatically, and not just coding but communicating with the community, locating libraries and evaluating their usefulness/maturity, etc.
Thanks for the interest old-gregg. I have a series of blog posts planned that can help answer those sort of questions. I'll try to publish them over the next week or two. The general topics I had in mind were:
-Why Lisp
-Overall architecture
-Deployment Specifics (libraries, source control, control scripts, etc). This stuff is pretty annoying to figure out on your own - I was lucky enough to learn in person from a great Lisp hacker at a previous job.
Some sort of layout problem with your footer when the browser window is a little short. The footer overlays the pager area. Works okay if the window is tall enough, or short enough. Only causes a problem if just a little short.
This is with Chrome 4.0.249.11.
Abandon the 'bon' word ASAP. Nobody really likes cutesy made-up words. I know that in French it means coupon, but use common language.
It's like the recommendation to not use custom UI. Same reason, nobody likes to learn something just to be able to use your site. It raises the cost of entry for new users, and hardly provides any benefit, not even for you (Brand ? Stop kidding).
The app looks good, and you've made a lot of great design decisions. However, it took me a little too long to figure out what the idea was. Three suggestions:
'shop. save. share' doesn't tell me enough right off the bat. Maybe users who aren't logged in should get a 15-word blurb ("Postabon allows you to find and share deals. Check out the (link)introduction video.(/link)")
I didn't notice the introduction video side-tab until my third glance back at your site- most new users are going to totally miss that.
The 'about' page had more words than my eyes were comfortable with. Cut the word count in order to space the text out more. And some hyphens show up as em-dashes in firefox, not sure what the deal is there.
I see an alert box with "Unable to figure out your location! Defaulting to New York City" when I load the page. It would be a nicer experience if you displayed this message above the map (or somewhere on the page) instead of a using modal dialog.
The site navigation links at the top of the page have very small hit-boxes and provide no indication that they're click-able (other than the mouse cursor changing.) Its harder than it should be to click these items.
The "Category Filter" and "Hide Result List" links are even more confusing since they display a text input cursor instead of a link cursor. This problem is also present on the result title links.
Looks nice, but goddamn... These things are always US-only.
This one actually has a reason: it takes a lot of effort to contact small business and get offers from them. Remember, once Postabon catches on it can rely on users uploading offers, but right now, at the start, smanek has to do it all by himself.
I have to disagree with you, as it showed almost the exact location of mine in Bursa (a city in Turkey) I wonder how it managed to find my location so precisely.
If you're using Firefox, we can scan the Wifi access points around you - and compare them to some dbs for ridiculously accurate geolocation. In NYC it's almost always better than smart phone GPS.
How would you prefer we degrade if there is no content in your area?
You're a Lisp shop, there should be a continuation/condition-system based error handling mechanism that teleports the user to NYC. NewLisp has a WITH-NEW-JERSEY macro.
Hey, I'm in Amherst, NH right now and since there's nothing up here it sent me to NYC. However, you have some content in Boston which is much closer and hence more useful to me.
If there's nothing in the detected area, can you move to the closest bon instead?
We have a handful of deals in Boston/Chicago/SF - but not really enough to be useful. Unfortunately, NYC is the only city with reasonable coverage right now ...
If I'm going to be showing deals not near you, I'd rather be showing great deals from 200 miles away than poor ones from 50 miles away.
In steady state, we'd definitely do some sort of 'show nearest deal' instead though ...
Looks well polished. Try to let business owners upload their own offers, that will make it easier for you; instead of hunting for bargains or waiting for users, you can just buy a mailing database and do a blast to those who care (or scrape the contact emails from Google Local, like I did.)
Also, try to define "bon's" somewhere; does it stand for bonus or coupon? The tag line could explain "shop. save. share <whatever it is we're sharing>"
One more thing, spill the beans on the architecture ;-) what do you have behind nginx? Hunchentoot? The html source doesn't look like cl-who, it has comments, perhaps a template system of sorts.
I already have most of your site's functionality somewhere in my private repo, and I am sure many people do too. It's a pity we all have to write it from scratch.
Well - that's enough for me. I'll write up some real blog posts on architecture in the coming days.
But the short version is nginx reverse proxy into hunchentoot, with elephant (and a BerkeleyDB datastore).
Edi Weitz's html-template for html (I personally love cl-who/parenscript, but I could imagine working with front end devs who don't know Lisp - and it seemed like it might be easier for them this way). The HTML is basically purely static - and everything is pulled in with AJAX (well, technically JSON, not XML). I've done some fun things to hunchentoot's sessions so they are completely stateless and, in the future, I could imagine just moving the entire site (html, css, js, etc) to some fast static file CDN, and just load balancing asynchronous API requests across a few Lisp servers. But that's a ways down the line ...
I actually found all of the pop-up divs a bit annoying. It is a nice feature to have the pages display the pop-ups that darken the remainder of the page for features where you do not feel like you should leave the page, but honestly, I would prefer some of the other pages to load. I am not sure if you know what I mean from my description so I will try saying it again. When browsing web sites, sometimes content is dynamic and it does not need to load the entire page. However, to have a pop-up div for what seemed like everything I clicked is a bit of a bother. It does not seem to flow as well I would have liked in that regard.
Also, I had no idea what the site was about at first. I had to actually search the site a bit to even figure out what was happening.
In regards to the idea, I think it is a decent idea, but this seems like a feature that may be best featured within another web application. After this is perfected, I can see the potential for a company purchasing it if only for integration within their own products; however, it does not seem like it has much potential value until you add a bit more to it. It needs to be tweaked slightly. I would continue focusing on the core concept just a tad longer before moving on to additional features.
Which pages in particular were you thinking of? We're only really using the modal displays for login, create-account, and 'flag-deal' right now.
We also added some intro words up top.
We have a pretty easy to use API that might be integrated with Centrl/Loopt/etc at some point in the future. But, I'd argue that the fact that retailmenot/slickdeals/fatwallet/etc are independent sites validates the 'deal finding' model and suggest we could surive individually as a niche site.
I figured out what the site was about when I first loaded the page, but only because the popup told me "No _deals_ around you, redirecting to...". You _need_ to have the word "deal" somewhere on the page in big bold letters. As soon as I saw that word, I immediately knew what the site was about. But it was only in a popup!
After selecting a deal on the map, drag-scrolling the map deselects it. This is especially annoying when the description text is bigger that the map view (e.g. "3 Day Bloomingdale Holiday Sale").
It was hard for me to notice the "Search Bons" button because of the way the page is laid out. The map / sidebar visually separates the page into parts, and having the search components span across those two parts feels a bit awkward. I suggest you add a separator under the search stuff, or move the categories/button to the left part of the page, under the two text fields.
I noticed on the "more info" page, you have a "save bon" link. Do you plan to have this link accessible on the main page as well?
This is just an idea, but it seems very fitting to have the results list scroll up/down when clicking next/previous.
Overall, I really like the idea, and I think it's pretty well executed. I think it has great potential once it gets more content. Time to start scraping :)
If users can log in and create entries for deals in their area, then perhaps the initial page should be more like, "No deals in your area; log in to add some!"
Two things about the community page and user pages in general...
It would be nice to see a "More..." or "All..." option to see more than just the top 25 users, in case someone wanted to see where they fell for instance.
Also, the user pages: the URL has some GET information that seems sorta odd... like the latitude and longitude to some location (theirs? mine? not sure) and a "comingfrom=..." field that seems to change nothing when modified. Not sure if you care at all about those things, but just seemed like weird information to be passing via GET on every page
'All' on the community page might be a bit of overkill. Perhaps I should just list you (and your rank) on it ...
As you seem to have guessed, comingfrom is useless now. Just a remnant of an earlier iteration. I'll get rid of it ASAP. You pass (your) latitude and longitude to every page so I can (possibly in the future) customize pages for you based on where you are. Looking up lat/long take forever - so I just do it once when you visit the site for the first time and cache the results (and pass them around as GET parameters). It may make more sense to send them as HTTP headers (via cookies) though ...
"No deals around you, redirecting to New York City"
That's my first interaction with the site, after opening it in a background tab: it created a focus-stealing window to inform me that it couldn't help me.
It's about time we got a decent location-based deal searcher. The website runs very smoothly for an initial release, and combines tech and business acumen :)
My suggestions may have already been previously suggested, but here they are
- Instead of saying "No deals around you, defaulting to NYC", you may want to look into something that implies that Postabon is on a nationwide rollout or that it's only available in NYC at this point. I'm in Chicagoland , and from the current message, I would just assume that Postabon is a failure in Chicago. Just a thought -- You may even want to embed (in the text of the webpage) something that asks the user to submit an email and/or state their location (pulldown of major metropolitan areas) if they are interested in receiving an email when Postabon launches in their area.
- Make the deals = bon equation even more obvious so that there's no way the user can miss it. I'm using Chrome, and the text blurb explanation isn't very catchy
Interesting. I recently spent a few months implementing almost exactly the same idea. It’s at http://gotosale.net/
It’s been dormant for a few months now, after I realized people wouldn’t just magically start posting sales for the benefit of random strangers, especially when practically no one knows the site exists :) Marketing isn’t my strength, I sort of lose interest after the build phase. You guys have taken it further than me, with a much more polished iPhone app and the whole karma thing - kudos.
I am pretty certain that the idea has merit - everyone I’ve talked to about it were excited and said that they would use such a site, and probably pay for an iPhone app, but getting content has proven to be difficult. I haven’t given up on it yet, and I intend to give it a fresh go very soon, with a slightly different approach. I’m sure there’s room for both of us.
A weird problem I'm getting: it focused in at the top of Brooklyn for me (where I am), and showed some restaurant deal (this: http://postabon.com/pc/deal?guid=138&lat=40.694&long...). However, it was at the top of the map. Instead of trying to click a small target, I pulled the map down so that it would be in the center. As soon as I let go of the map, the point disappeared and loaded a bunch of other pins a bit further north. It'd be great if you could make it so you didn't delete the pins that were on screen before a move and stayed on screen after the move.
Basically, I only have space for a lot of info about 9 deals - and I chose to display the 'best' 9. So when the viewport moves it checks if something better has appeared (or if one of the old best has disappeared). Deals out of the top 9 are noted by small 'dots' which you can click for more info. (Or you can paginate through results ...).
I think that those dots may not be large/noticeable enough though ... Thanks for the heads up.
Your About page has waaaay too much text on it. Pare it down to less than half that. It's hard, but you'll be forced to clarify. (Also, typo: "good dead" => "good deed".)
If I were you, I'd be thinking a lot about how to take advantage of game dynamics. If Foursquare can do that about going places, surely you can do it about finding great deals, which is inherently competitive to begin with. I'm not fond of shopping, but even I will boast about great deals when I find them. If you can get that right... wow.
How do you prevent people from posting fake deals? Is there a way for others to validate? Would it be useful for people to post not just new deals, but confirmation of deals they benefited from? That would have two advantages: 1. you'd get people participating both ways; 2. you'd get validating information about what the really good deals are. If I post something lots of people benefit from, that should earn me status.
You need to have a blog. Tell stories. True stories about deals users have found would be good. Also, a personal touch can be a big deal: consider taking the "Team" thing off the bottom of the About page and put it in its own place where you introduce yourselves. As a user, if I feel a personal connection to the people behind a site, I'm automatically more sympathetic.
The Community page doesn't draw me in. It looks like a database report right now. That page is a chance to get people to participate, so you want it to be warm and inviting. Also, it's hard to react positively to something one doesn't understand, so getting the key information across in the first 10 seconds is critical.
Don't bother putting up messages like "nothing in your location, redirecting to New York". It's obvious that you're redirecting me to NYC anyway, and a message box just irritates the pig. (Maybe put this information in some text on the actual page?) Also, when I load the page in FF I'm getting a status box overlay that says "Detecting your location" that takes a long time to go away and blocks my use of the site (plus is ugly). Drop that. You don't want any barrier to entry at that moment. People can bail on you in less than a second.
If I were you I would pay super-close attention to the psychology of how people are using the site. If you find a dynamic that works, this could be killer. It's not obvious that appealing to people's altruism ("good deed", "karma", etc.) is the right approach. Competitive shopping can be vicious! Think about that question, "What's your deadly sin?" It may not be so much greed (saving money) as vanity (winning status).
I'm afraid I don't like the name. First, it reminds me of Cinnabon. Second, American names with French roots are good for a fancy, specialty vibe (e.g. gourmet, luxury), or conveying effete sophistication, but that may not be what you want.
Summary: you guys could be on to something. Best of luck and keep us all posted about how it goes!
Thanks gruesom - that's some useful feedback. I've removed the 'alert' about the redirect, per your suggestion (still have a message on screen though).
Firefox does this cool wifi scanning thing to get the most accurate location. It's really accurate (and I cache it, so I only have to do it once), but I don't think there's any way around taking a few seconds to determine your location.
Good point about the psychology. I was worried that playing up the competitive aspect could annoy users ("You want me to compete for your benefit?!") and was trying to walk a bit of a fine line ... I think I'll be a bit more comfortable with that approach after we get some regular users and see how they use the site.
My initial thoughts are pretty much lead generation. If we know where you are, and what you're interested in buying right now, it's very easy to provide you with very relevant (and immediately actionable) ads.
In the short term, I just want to get users and work the kinks out of the user side of things though.
The basic idea is that we want to help you find and share discounts near you. The video (click 'Watch a Video' on the left) will help explain the concept/history if you're interested.
Our iPhone app's release is pending Apple approval (hopefully just a few more days ...).
HN contributed to this in a very real way. Two years ago when I started visiting HN I had no intention of ever trying my hand at a startup. But being surrounded (at least online ...) by the entrepreneurial spirit here really inspired me.
The Lisp thing isn't actually a selling point - I just thought that the crowd here might find it interesting. If there is demand, I'd be happy to write some blog posts on the how/why of some of our architectural decisions. We're using a 'NoSQL' key-value (with btree indexing) persistence layer too :-D