

Ask HN: Freelancers how do you keep clients informed about cost? - rpwilcox

Hi guys,<p>I run my own consultancy shop (http://www.wilcoxd.com), where some of my work is hourly work on smaller projects (think 30-80 hours of work).<p>I want to make sure my clients know what the state of their project is in regard to the budget: how much money have we spent already, and keep them informed so they aren't shocked when the final bill comes in.<p>This is one of the ways I try to honor "collaboration over contract negotiation": the client can keep their eyes on the budget and reprioritize things when they get nervous.<p>My current approach to this is to log my hours in my time tracker app (http://getharvest.com) THEN send an email to the client as to how many hours I worked today, and how many univoiced hours have been accumulated so far.<p>But there's got to be a better way. What methods / sites / tools do other contractors use, here on HN?<p>TL;DR: How do you keep clients informed about what the final bill will be, or do you just surprise them with an invoice?
======
wallflower
Basecamp per client project works effectively because:

1) They can respond via email to anything in Basecamp without ever having to
login to Basecamp (after the initial registration)

2) Basecamp makes your consultancy look better if they ever do login, as it is
a pretty good looking simple project management system.

You do not necessarily have to use Basecamp, the key point is that the system
you use has email integration.

Weekly status calls (or meetings in-person, if possible) go a long, long way
to reassuring clients that you are on the same page, while at the same time
not making you

------
j45
12 years full-time, self employed in consulting, contracting, freelancing has
taught me this.

Customers just don't want surprises of poor estimates. If you can build trust
and a track record of that even the most neurotic customer will find some
peace and solace in you.

The goal for you and the easiest way is to learn:

1) When you quote, say "Up to X hours". 2) Provide updates 3) Don't go over

While you get accurate enough to do that...

Learn to understand it's about trust, and value. If you generate more value
than what you're paid (2x to 10x more), the client will never, ever care. If
the good things you say, happen, you will have a track record and leeway.

Learn to work Value based instead of hourly. To get good at it take your
estimate, and add 30-40% to it as a guess (on the side) to see how accurate
you are.

My formula is this to estimate any project:

TOTAL HRS = (estimated hours) * (number of unknowns) * (complexity of
unknowns) * (the percentage I'm usually off in my estimates) * (pain-in-the-
ass tax)

(ESTIMATED HOURS) - This is your best, educated, guess of what you KNOW and
have EXPERIENCE in ESTIMATING regularly.

(number of unknowns) - I use this as a multiplier in tenths. Ie., 2 unknowns
makes this = 1.2

(size of unknowns) - For each unknown sometimes its a small thing with a deep
possible impact, or a lot of unknowns all over the place with small impacts.
Either way, I have to put a multiplier to it in tenths. So, if each of my 2
unknowns was a small but deep item, I'd give it a .3 and the other item was
small and something I can stumble my way through, I might give it a .1 for a
total multiplier of 1.4

(accuracy adjustment) - Some people are always 5-30% off consistently in their
estimates, for each person, put in their estimate

(pain-in-the-ass -PITA tax) - Rarely used, but for high maintenance clients
who take up more time than they should. The more updates, talking, arguing and
convincing you have to do, it's billable time because you're working for them,
about their project. Factor it in as a multiplier.

My formula in this case could look like this

Total hours = 20h estimated * 1.2 (unknowns) * 1.4 (unknown impacts) * 1.1
(accuracy adjustment) * 1.2 (PITA)

Total hours = ~ 44 hours

And that's how a project ends up taking twice as long as you thought :)

Tools to use: I use a mix of Freshbooks and a case manager like Fogbugz.
Freshbooks ought to keep you sorted how you need.

------
jsavimbi
tl;dr: never surprise. Keep the communication going at all times, even if it's
one-way. Deliver the agreed upon and hold them to their [financial]
responsibilities. Never, ever work without a signed contract or billing
authorization.

It's been my experience that clients come in many shapes and forms, levels of
availability and interest along with disparate motivations to pay or not pay
their bills. There's no one answer to client as they range from laid back and
easy to completely schizo, but my practice has been to over-deliver in both
the product and the project administration side. It doesn't always work out
they way one would hope, but small improvements over time can lead to less
project-related headaches in the future.

Scope is probably the most important part of freelancing. What am I building,
how long do I have to build it and what are the assumed costs involved? Each
of those items needs to be hashed out prior to the start of the project and
the quicker you do that, the earlier the work starts.

Contract. Never start work without a contract. Not even with family. Without a
legally binding, signed agreement, you surrender most of your rights, and
work, to the client. Aside form the scoping of the project, which is usually
unpaid, not a lick of work starts.

Milestones. Establish achievable milestones with the client prior to starting
the work. If it's 80 hours of work, milestone what you can achieve at 30 and
60 hours and make sure the client is happy with the work being done and if not
use the contract and scope to keep the work on track. Generally speaking,
clients have no imagination and will only remember details or think of new
shit once someone else has started the work. Much like a product manager.
Treat them as such: yes you want that, but it's out of scope for this release;
write a story and put it in the backlog.

Documentation. You need to document everything. Every email, phone call,
tweet, design or requirement that the client sends you. Summarize all
conversations you have with the client over the phone or in person, write them
up in an email and ask the client to confirm your assumptions. It takes five
minutes here and there, it's billable time and it keeps everyone honest.

Communication. Don't disappear off the radar and surface weeks later with a
working prototype. Chances are requirements or timelines have changed and
clients don't like to be ignored. Send daily updates until they tell you to
stop, then send two during the week and one on Friday summarizing tasks
accomplished. Ask for their input and approval as you need constant buy-in.
Clients get excited in the early stages of a project but then get
bored/confused and may decide they no longer need or want the work, becoming
reluctant to participate or pay. Keep selling them the project every day.

Bill them on time. If you're on time with your code, then you should be on
time with your billing and be firm about it. I use Freshbooks
(<http://www.freshbooks.com/>) to keep the clients up to date with all of my
tasks and hours and I know if they've looked at the current invoice or not. If
they've already paid for most of the project and don't look at the final
invoice, I don't worry too much. If they're in arrears and aren't looking at
the invoice, chances are they have a pile of unopened bills on their desk.
Negotiate this part diplomatically, but don't deliver anything until payment
milestones have been achieved from the client.

Always be delivering. If the client has no/weak technical background, get
ahead of them by under-promising and over-delivering. A client that can get
ahead of you will [reluctantly] become your boss. A client who is always one
or two steps behind you but awed by your production will want to be partner
and that makes for a better client experience and future work.

Be human. Ignoring the agenda that they client may have in relation to the
project, keep in mind that the client is human and will have fears, anxieties
or misplaced excitement or expectations related to the outcome. In some cases,
a client could be asking you to build them something that they think will
eliminate their position. That's very scary to a lot of people. You'll need to
get into their mindset to visualize what a success for them will look like and
then strive towards that, reassuring them that together you're going to
succeed. That's collaboration over contract negotiation.

On a small project you won't need to dedicate much time to these activities as
long as you're able to consistently communicate a good attitude. On longer
projects you might as well pretend you're a partner and lifelong friend as the
client will often look for you for support. And then tere are some clients who
are just jerks, but knowing that you're only going to be giving them 80 hours
of your time will help assuage your heartburn.

I hope this rant helps you or anyone else reading it.

~~~
rpwilcox
Wow. Pretty much gold right here. It took me years to figure most of this out.

So I'm guessing you, like me, keep the client informed about "Today I worked N
hours, making the total amount for this milestone M hours"?

~~~
jsavimbi
Yes, it's like sending a scrum update to a teammate who's working from home.
It's routine and matter of fact after awhile. If they bitch about the amount
of communication, I just make sure the invoices are all up-to-date and send
two-day and weekly summaries. Following up with a phone call if they don't
respond to requests. If anything, at least they'll think you're diligent.

It took me years to figure out as well. It's like being a silent, technical
co-founder for a short period of time. Having some experience in the
particular business domain is good but not always required as in the case of a
marketing site, but I find it better to not try and outsmart the client and
just fulfill the business objectives that they have with a solid, appropriate
technical solution.

