# How allocation percentages work

Neo.Tax calculates the percent of time each person spent on each project and on nonproject time.

Neo.Tax calculates the percent of time each person spent on each project and on nonproject time. This is done by month and then aggregated for the quarter/year. 

This ensures that all time for person is accounted for.

**This is a multi step, bottoms-up process.**

1. **Calculate the effort for each task/ticket in each month.** 

This is done using a multi-factor model that looks at:

- Change logs - when it was started, in progress, in review, completed
- Weighted by the content of the task (eg: minor bug fix vs a large architecture design)

1. **Sums up the effort by person for the month**
1. **Normalize the data so that the total effort for each person matches the business days in the month**

This involves accounting for a wide range of data quality issues like:

- Differences between people/teams in volume of tickets/effort in a period
- Bulk actions/mass updates
- Tasks that are stuck and left in progress, but no actual work is happening

1. **Allocate remainder of effort to Nonproject time**

   1. People with no effort in the month will have 100% nonproject time.
1. **Calculate the percent of time spent on each project and nonproject time in the month**

   1. Sum up the effort for each task in the project
   1. Divide by business days in the period
1. **For a larger period like quarter/year, then average the project percents by month.**

   1. This approach ensures that the allocation by month does not change as the year goes on, so prior periods remain accurate and always add up to the total at the end of the year.
   1. The result will almost always match recalculating the percents by summing effort for the entire period, while avoiding the above issue.

### **Detailed Example:**

**Dmitry’s Tickets in March**

|  |  |  |  |
| --- | --- | --- | --- |
| **Ticket ID** | **Project Name** | **Effort (Days)** | **Assignee** |
| RUBY-2371 | Ruby Driver Enhancement | 1.2 | Dmitry Rae |
| RUBY-2296 | Ruby Driver Enhancement | 1.3 | Dmitry Rae |
| RUBY-1700 | Ruby Driver Enhancement | 1.5 | Dmitry Rae |
| RUBY-2575 | Ruby Driver Enhancement | 1.8 | Dmitry Rae |
| MONGOID-4668 | Improving Mongoid Compatibility and Functionality | 6.1 | Dmitry Rae |
| MONGOID-4669 | Improving Mongoid Compatibility and Functionality | 7.21 | Dmitry Rae |

**⇒ Dmitry’s Allocation by Project for March**

|  |  |  |
| --- | --- | --- |
|  | **Effort (Days)** | **% of Time** |
| Ruby Driver Enhancement | 5.8 | 26% |
| Improving Mongoid Compatibility and Functionality | 13.31 | 61% |
| Non-project Time | 2.89 | 13% |
| **Total** | **22** | **100%** |

**⇒ Dmitry’s Allocation for Q1**

|  |  |  |  |  |
| --- | --- | --- | --- | --- |
| **Project** | Jan | Feb | March | **Q1 Total** |
| Ruby Driver Enhancement | 0% | 47% | 26% | **24%** |
| Improving Mongoid Compatibility and Functionality | 85% | 24% | 61% | **57%** |
| Nonproject | 15% | 29% | 13% | **19%** |

**What about non-project time?**

The system calculates time spent not working on projects. It does this by calculating the gap between a full month of effort and actual effort.
