
Ask HN: How to price a website I'm building for a friend's company - TheBiv
Howdy, and thank you for clicking!<p>I have a buddy that works for a commercial real estate firm. A main piece of his job deals with filling out this long input form into excel. They noticed problems with this model and want me to build a website that will handle all of this form input.<p>I am curious as to how to price this work bc:<p>A. The scope of work is fairly minimal (~30-40 hr), but the business&#x27;s efficiently impact is seemingly large<p>B. His boss is willing to have all of his employees use the service<p>C. My buddy is prepared to pay me for my time<p>D. I know of they used an agency, then the price would easily be in the tens of thousands of dollars<p>E. I am used to a salary job and have never done a straight freelance gig<p>I am wondering how I should prove this type of work bc obviously there would be ongoing support and idk if I could make this a business bc of the limited niche that this problem solves.<p>Any advice on how to handle this would be greatly appreciated
======
rustyconover
Determine the demand for your product and price your solution right below the
point where people will think you're charging too much, such that they would
continue to use the old way of doing things.

The finding of that price is hard. So try to find it pragmatically. Ask
questions like how much do you pay your employees to do this task? How many
employees do this task, what is their hourly cost? How much time will the new
software/website save those employees? How will revenue or profits be
increased?

Your price should be what the market is willing to pay, not what you think
your software is worth or how long it will take you to build the solution. If
you're going to price the solution as a service with recurring revenue, make
sure you can continually justify your value to your customers on an ongoing
basis. If you want to build this solution as a one time custom project, price
it accordingly to the value delivered, the cost of your time, your opportunity
costs, and establish a rate for ongoing care and feeding of the code base
before agreeing to build the solution.

------
wikwocket
First off, read tptacek's excellent answer over and over until you can recite
it from memory. I have been doing freelance consulting for years and I know
I'm going to steal a number of his ideas.

Second, here are some additional thoughts, based on my experience doing
similarly-sized gigs for similar clients.

1) To start with, just to encourage you, this is a very doable project that
can be very lucrative to you (>$10k), helpful to the client, and can open the
door to a lot of fun side gigs. This is the best part of consulting.

2) When looking at your first side job, the temptation will be to come up with
a price based on your day job's equivalent hourly rate. _Do not do this._ This
is easily $100+/hr work. For a real estate firm, your app may be generating
millions in revenue/cost savings over a few years, and although it's a simple
little project to you, building a webapp is deep magick to a business user.
Try to pitch and charge based on _value_.

You should know your costs/equivalent hourly rate, but only as a bare minimum
so you are never working at a loss.

3) Based on the fact that this project is mostly rebuilding an existing Excel
spreadsheet (Pro Tip: you can get a lot of business from simply "rebuilding
Excel worksheets!"), it seems like you could spec it out enough where you
could offer a fixed price. You can use tptacek's approach of quoting X days at
$YYYY per day, or a total fixed price.

You always have the option of going hourly though. Some clients will prefer
this, but it can limit your total compensation. You can charge $X0,000 -
$X00,000 for a given app (remember: deep magick) but you can't charge $X000
per hour. Do quote high though. My favorite advice is "pick the most
ridiculous semi-realistic number you can think of, then double it." You can
always offer a discount for Friends & Family, New Customer, Summer Sale,
whatever.

4) Be vague about delivery times if you cannot take 1-2 weeks off work to
complete the project. But plan to have regular deliverables/signs of life to
keep them on board. Think about mockups/wireframes you can deliver.

5) Ask for at least some of the payment up-front. This will ensure they are
serious, and motivate you to deliver once you receive money. :)

Home these ramblings are helpful. Welcome to the world of Real Consulting!

~~~
rmc
> the temptation will be to come up with a price based on your day job's
> equivalent hourly rate. Do not do this.

To expand, remember that regular employment comes with way more 'compensation'
than just the salary that a freelacing gig doesn't come with. As a regular
employee, you get paid regularly, on time, based on hours, you get paid
holidays, taxes paid, etc. A freelancer/contractor has much less certaintly
and much more risk. Hence freelancers should be paid more per hour/day/week
than a regular employee.

> Think about mockups/wireframes you can deliver.

Hint: Don't make the mockup look done. Use a mockup style that looks like
drawing on a napkin (or even draw it on paper and send a photo of that paper).
Non-techies think the amount of work depends on the amount of UI changes. If
they see a pixel perfect photoshop image of a done web page, they could think
that all the work is done.

~~~
kingofspain
Second the mockup point. Even mid-fidelity mockups have caused me all kinds of
headaches. Perhaps that uncanny valley effect, but no one ever asks you to
move buttons 5px to the left, or change the title bar colour from dark blue to
a slightly darker blue with a paper sketch!

------
tptacek
The bill rate for serious end-to-end web application development in a modern
language, where the customer provides a loose spec and the outcome is
"working, usable application" is somewhere in between 100-200/hr on the very
conservative (low) end.

So, take your outside estimate of how much time the project is going to take
(you think 40 hours; maybe make it 48), and pick a bill rate in the spectrum
of 100-200/hr. Work that into a daily rate.

Provide proposal under the following terms:

* You offer to build the project on a time & materials basis, 6 days at a daily rate of ((100..200)x8).

* Prior to starting the engagement, you will complete a proposal with detailed acceptance criteria (app MUST do this, app MUST NOT do that, app MAY do this, &c). You'll interview your client (gratis, because you're a professional) to work out that acceptance criteria in advance.

* Should any of the requirements or acceptance criteria change once contracts have been signed, you'll accommodate by adding additional billable days to the project (subject to whatever scheduling constraints you may have at the time).

* Should they want to lock in additional billable days in anticipation of changing requirements out from under you, they can buy those billable days on a retainer (use-it-or-lose-it) basis at a small (~10%) discount to your daily rate. This (or some clause like it) allows them to pay you extra (ie, for days they buy but you don't work) to guarantee that if they change their mind about some goofy feature, you'll be available immediately to accommodate, and they don't have to wait 6 months.

* Your contract will specify a class of _critical_ bugs (security, things that potentially lose previously-stored data) and a class of _major_ bugs (things that make the system unusable). For a period of N months (maybe 12) after delivery, you'll commit to fixing _critical_ bugs within N days, for free if they take less than N hours to fix, and at your daily rate otherwise; repeat (but with more favorable terms for you) for _major_ bugs.

* For an annual fee of 20% of the price of the contract, you'll provide maintenance, which (a) continues the critical/major bug fix window past the N months specified above and (b) provides an annual bucket of K billable days with which you will fix non-major bugs; this is provided on a retainer (use-it-or-lose-it) basis.

The idea is simple: you want to:

(a) Give the client something that looks as close as possible to a fixed-price
project cost.

(b) Not _actually_ commit to a fixed-price project cost more than you have to.

(c) Turn the downside of long-term bugfix support into an upside of recurring
revenue.

This is just a sketch, you'd want to tune these terms. You'll also want to pay
a lawyer ~$100-$200 to sanity check the contract. (Your contract will look
like a boilerplate consulting contract, ending in a "Statement of Work" that
is a series of "Exhibits" [contract-ese for appendix] that spells out most of
the details I listed above). Pay special attention to the acceptance criteria.

Remember also that you're liable for self-employment tax, which is due
_quarterly_ , not on April 15. You might also consider registering a Delaware
LLC (~$100, online) and getting a tax ID, because liability gets sticky with
software you deliver to make someone else's business work. You probably do not
need to consult a lawyer about LLC formation; most of the trickiness of
company formation is with partnership terms and equity, which isn't your
problem.

~~~
caw
Any reason for the Delaware LLC vs a (your resident state) LLC? I thought
Delaware was really only requested for S and C corp structures accepting
outside investment.

~~~
tptacek
There are a bunch of little reasons that Delaware LLCs are easier to deal
with; for instance, your home state may have a little dance you have to go
through with running advertisements in the newspaper, or have weird rules
about SMLLCs. Mostly, though, I just know that you can get a Delaware LLC and
a TIN online in a couple days by filling out a couple forms.

~~~
falsestprophet
Won't it be necessary to register your LLC as a foreign LLC in whatever state
you are actually operating and be subjected to your states regulations anyway?

~~~
iends
You certainly have to register as a foreign corporation in my state (NC), but
state rules vary, so there may be less hoops to jump through for you.

------
galfarragem
Just as curiosity, what tool will you use? Rails?

~~~
TheBiv
Yes I will be using Rails!

