Our project lifecycle consists of four phases. First three of them can be estimated:

Thinking hours oops!
Building hours oops!
Fixing hits of code oops!

This is an estimate of a total budget:

SAAnalysis ({{ thinking }} hours, $75/hour){{ dollars(sa) }}
APrototype ({{ building }} hours, $100/hour){{ dollars(a) }}
PPaid to programmers{{ dollars(p) }}
TMTechnical margin (100% of P){{ dollars(tm) }}
Total{{ dollars(sa+a+p+tm) }}

These are some key performance indicators:

TTasks completed{{ round(t) }}
PRPull requests merged{{ round(pr) }}
HTotal hours spent{{ round(h+thinking+building) }}
RAvg. hourly rate of a programmer{{ dollars(r) }}
CTCost per hit-of-code{{ dollars((p+tm+pm+mf+sa+a) / hoc, 2) }}
CHCost per hour{{ dollars((p+tm+pm+mf+sa+a) / (h+building+thinking), 2) }}

P: Each member of the team has its own hourly rate. We pay them directly and then ask you to reimburse these expenses. We may also charge a few percents on top of these for PayPal, oDesk, wire transfer fees we have when trasferring money to programmers.

TM: This is our margin on top of what programmers get. Each project has a project manager who also works remotely and manages the entire team. His responsibilities include task tracking, project planning, schedule/budget control, recruiting/discharging programmers, etc. This money covers all our expenses and investments into new technologies we develop in campus, mostly open source. There are a few important tools that we use to optimize the development and make this entire distributed model of work possible, including rultor, pdd, qulice static analyzer, set of jcabi libraries, etc. Besides that, we pay for build servers, continuous integration environment, test environments, etc.