Back to the schedule
Previous: Finding Your (In)voice: Emacs for Invoicing
Next: Productivity Dashboards with Emacs and Kindle

Budgeting, Project Monitoring and Invoicing with Org Mode

Adolfo Villafiorita


Duration: 9:37

This talk was also streamed at an alternate time for APAC hours:

If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at and we'll forward your question to the speaker.

00:01 Introduction 00:10 How we build and budget project proposals 01:42 Org mode template with embedded Emacs Lisp 02:58 The project plan 03:37 Effort 04:40 Hourly rates 06:07 Totals 07:28 Payment structure 08:21 Export 09:08 Advantages


In this talk I will present how we use Org Mode at Shair.Tech for budgeting, project monitoring, and invoicing.

We are a small company and we are still tuning and improving the process, but with a bit of Emacs Lisp, the functions Org Mode provides, and reading here and there what other users do, we implemented an effective workflow we have been using for nearly a year, now, and with which we are very happy.


IRC nick: adolfo

  • Why is Michele working more than Adolfo???
    • adolfo: I can answer that :-) because he is better than I am ;-)
  • watching this talk I really want to get the OPENED: cookie added
  • what is the difference between hledger and ledger ?
    • adolfo: implementation. hledger is in Haskell, ledger written in C++; there are also some differences in the format supported


hi i am adolfo villafraid i am the co-founder of chef tech an innovative staff a socially vocated innovative setup in italy and today i'm gonna talk about the way in which we use earth mode to budget our projects first i need to introduce the way in which we build our project budget we start from the goals and the work to be performed and we split it into different tasks which may be grouped in different ways according to our needs it could be user stories or functional groups or or packages and then for each task we compute the effort then from the effort we derive the project cost and price according to two different approaches the first approach we allocate the effort to each resource and we multiply the effort of the resource by the price of the results we sum all the efforts together and then we sum all the tasks together the prices of all the tasks together in the second approach we use a generic effort estimation for each task without allocating the effort to any specific person and we multiply this effort by the average price of the resource in both cases the price is computed by summing cost to overheads and and profit we're a small company we can choose our two chain so we decided to use our mode for writing our proposals so we built a template the template has got uh some a fixed structure which allows us to do a lot of reuse and some emacs list code and or promote the features to build the project tables let me show you without further ado the template which is shown here and basically it is a fairly standard old mod document Music there are some sections here to let me show you the structure here there are some sections some of which are not exported shown to the client because they are of no interest to them such as for instance the plaintext each ledger accounting entries we generate for the project and or some info about the detailed uh budget uh data uh while other are shared with uh with the clients to form a project proposal now the structure is not really important in the sense that the only constraint and requirement we set is that there has to be a section with an id named plan which will contain and contains the plan the project plan here for instance we have we have a project plan made of a user story whose development is split into three different tasks for each task let me show you just the structure before the application of the template for each task you need to define you need to define the effort here for instance we have an effort a generic effort not allocated to any person uh we use our mood duration 60 stands for 60 minutes and here we have an effort profiled so in task 1.2 and also we work 10 days and we kill 20 days these are working days so one working day corresponds to eight hours this is like you know stand that we might revise these to become more compliant with the definition of the given by word mode notice that you can or cannot you may or may not use to do keywords here if you want we don't usually don't use them because the final document looks nice to the customer without to do we then add them when we move to a later stage so once you define the plan with the effort allocation you can go back to the emacs list part where you can set three different variables to define the hourly rates of your team so for instance here i am taking 10 euros per hour one not real rate actually let me kill it 20 and then you can set the profit as a percentage on top of the hourly rate and profit as a percentage on top of uh hourly rates and the ballpark effort allocation here is used to compute the average type uh our average hourly rate as a weighted average so here i'm saying that on average i will work 30 percent of the effort of each task while mike will take care of the remaining 70 and the hourly rate is computed by multiplying 30 percent by 10 plus 70 by 20. um okay if i do a ctrl c ctrl c here i execute the imax list code in the uh in the source code block as you can see emacs put back the properties Music that transform the effort into a total amount namely the the effort is first transformed into working hours the rates and costs are computed overhead computed and everything contributes to the total amount same thing here the count the the cost is slightly more complex because we use profile effort and so on and so forth that this information here can be then grouped up in the to form the the project plan and project budget as you can see this is something we do not export in the project proposal to the client because we prefer to do some rounding by hand in order to build a budget which is let's say more reasonable and this table here computes what in total amounts by control c control c once again and then this table here the payment structure is used to um compute the amount to be paid according to the different payments we want to set in the project here for instance we are setting three payments with the following percentages and the table you set the dates and amounts and the table keeps track of the rest by looking at the total amount it finds here in the budget table so the payment structure and budget are then used by this piece of code here to build the entries used for our internal internal accounting which is based on age ledge ledger we did everything here by hand but it is not necessary of course in the sense uh because if you uh export the document using ctrl c ctrl e and then for instance l for latex and pip for pdf or the mode takes care of doing evaluating each piece of code in the document and generate the updated documents uh here for instance you can see that the pdf generated from the template which contains all the tables budget and payment schema everything which is you which we use to make an offer to our clients um there are various advantages uh the first the main one being that we keep all the information in one place um and that we can version the different versions you can use source control to version uh different iterations on the document if you want you can find the document here and thank you for your attention and i'm open to questions

Back to the schedule
Previous: Finding Your (In)voice: Emacs for Invoicing
Next: Productivity Dashboards with Emacs and Kindle