Bob wrote this long comment that I think is worth posting:
I [Bob] have done a fair bit of consulting for my small natural language processing company over the past ten years. Like statistics, natural language processing is something may companies think they want, but have no idea how to do themselves.
We almost always handed out “free” consulting. Usually on the phone to people who called us out of the blue. Our blog and tutorials Google ranking was pretty much our only approach to marketing other than occassionally going to business-oriented conferences.
Our goal was to sell software licenses (because consulting doesn’t scale nor does it provide continuing royalty income), but since so few people knew how to use toolkits like ours, we had to help them along the way. We even provided “free” consulting with our startup license package.
We were brutally honest with customers, both about our goals and their goals. Their goals were often incompatible with ours (use company X’s software to do Y — we didn’t take that kind of job, but would send work to other people we trusted). More often, their goals were unrealistic, even if we had the big-brain count and computer power of Google, much less for a two-person company. Sometimes we had a hunch about how we could do what they were asking, but weren’t certain enough to just sell it. We found honesty up front often led to the company funding us to do some research or proof-of-concept studies (the advantage of supplying something with very little competition and desperate customers).
When we signed contracts with people and did consulting, it was a combination of technical and strategic consulting. Not that we provided business strategy consulting, but we had to work with customers from their vaguely specified goals and needs (and often over-specific preconceptions about how they wanted to do it) toward a feasible project that could actually help with their business needs.
In my experience, the downside to hiring academics to do consulting is that they tend to be fixated on 2nd or even 3rd order details of problems that are fairly simple, while ignoring the grungy details needed to make something work in the field.
In the end, we built lots of cool stuff with lots of different customers and even got some of them to fund some open research and software development.