FTE & FTE-d Calculation
Last updated: January 7, 2026
Setup
Let’s assume a simple setup:
we have one team comprised of three members: Tom, Anna, and Steve.
there are two investment categories: “New features”, and “Bug fixes”
Let’s consider a 7 days period of time, from Monday through Sunday (included) of any week.
Calculations for 1 person
Let’s start with a single person’s calculation.
Let’s say that Tom did the following work during the targeted week:
Mon | Tue | Wed | Thurs | Fri | Sat | Sun |
Merged PR for Issue 1 (Bug fixes) | Commented on PR for Issue 2 (New features) | Issue in progress for Issue 3 (New features) | Merged PR for Issue 5 (Bug fixes) | Merged PR for Issue 6 (Bug fixes) | ||
Commit For Issue 1 | ||||||
(Bug fixes) | Merged PR for Issue 4 (Bug fixes) | Commit for Issue 5 (bug fixes) | ||||
Issue in progress for Issue 6 (New features) |
FTEs on a single day
On any day, a person has 1 full FTE day, and we divide it between the different focus categories they worked on. Each event by a person is linked to an issue (either the action is on the issue itself, or on a PR that is linked to an issue), and multiple events for an issue are coalesced as one event for that day for that issue. So if there are 3 events in a day where two are for issue 1 with category 1 and the other is for issue 2 with category 2, category 1 will get 0.5 FTEs for the day, and the other one will get 0.5 FTEs.
For this example Tom has:
Monday:
1 FTE on “Bug fixes”
1 FTE total
Tuesday:
1 FTE on “New features”
1 FTE total
Wednesday:
0.5 FTEs on “Bug fixes”
0.5 FTEs on “New features”
1 FTE total
Thursday: No work - 0 FTEs
Friday:
0.5 FTEs on “Bug fixes”
0.5 FTEs on “New features”
1 FTE total
Saturday: No work - 0 FTEs
Sunday:
1 FTE on “Bug fixes”
1 FTE total
FTEs for any period of time
For any time period of any length, each person still has 1 full FTE corresponding to the total amount of work they can do in the period. So when showing FTEs for a period larger than a day for a single person, the values will 99% of the time be ≤ 1.
The logic here involves summing the daily values of FTEs (following the logic above for reach day in the period), and then dividing by the total number of business days. Work done on weekends are considered “extra credit”.
There is a potential for FTE to be > 1 if work was done on a weekend. Take for example someone who did work on Friday and Saturday. If the FTE time range requested was Friday-Saturday, then the FTE for that person would be 2: 2 FTE for Friday and Saturday / 1 day (Friday).
For instance, in the example above the result would be
For “Bug fixes”: (1 + 0.5 + 0.5 + 1) / 5 = 3 / 5 = 0.6 FTEs
(1 FTE on Monday + 0.5 FTEs on Wednesday + 0.5 FTEs on Friday + 1 FTE on Sunday)
For “New features”: (1 + 0.5 + 0.5) / 5 = 2 / 5 = 0.4 FTEs
(1 FTE on Tuesday + 0.5 FTEs on Wednesday + 0.5 FTEs on Friday)
Total: 5 / 5 = 1 FTEs
The reason why the total value (across all categories) is 1 despite work not being done on Thursday is because of the extra credit work done on Sunday.
The reason why the denominator is 5 is because there are 5 business days in the period (Monday through Friday).
The same logic would apply to any period both smaller or larger than a single week.
Calculations for a group of people
Let’s add the activity for the same week displayed above for Tom for the other two members of the team: Anna and Steve:
Anna’s week:
Mon | Tue | Wed | Thrs | Fri | Sat | Sun |
Merged PR for Issue 10 (New features) | Commented on PR for Issue 12 (Bug fixes) | Issue in progress for Issue 15 (New features) | Closed issue 14 (New features) | Merged PR for Issue 12 (Bug fixes) | Merged PR for Issue 13 (Bug fixes) | |
Commit for Issue 11 | ||||||
(Bug fixes) | Commented on PR for Issue 13 (Bug fixes) | Merged PR for Issue 14 (New features) | Issue in progress for Issue 16 (New features) | |||
Commit for Issue 14 (New features) |
Steve’s week:
Mon | Tue | Wed | Thrs | Fri | Sat | Sun |
Commit for Issue 20 (Bug fixes) | Issue in progress for Issue 20 (Bug fixes) | Issue in progress for Issue 20 (Bug fixes) | Issue closed for Issue 20 (bug fixes) | Merged PR for Issue 22 (New features) | ||
Merged PR for Issue 21 | ||||||
(New features) | Merged PR for Issue 20 (Bug fixes) | Commit for Issue 22 (New features) | ||||
Commented on PR for Issue 22 (New features) |
FTEs on a single day
When looking at group of size N, the total FTEs value for a day will be an integer number between 0 and N (for a single person the value can be 0 or 1, which is just a particular case of this). The total value being N means that all the people in the group has work tracked for the day.
In our example of size 3 we have:
Monday:
1.833 FTEs on “Bug fixes”
1.166 FTEs on “New features”
3 FTEs total
Tuesday:
1.666 FTEs on “Bug fixes”
1.333 FTEs on “New features”
3 FTEs total
Wednesday:
1.5 FTEs on “Bug fixes”
1.5 FTEs on “New features”
3 FTEs total
Thursday:
0.5 FTEs on “Bug fixes”
1.5 FTEs on “New features”
2 FTEs total
Friday:
1 FTEs on “Bug fixes”
2 FTEs on “New features”
3 FTEs total
Saturday:
1 FTE on “Bug fixes”
1 FTE total
Sunday:
1 FTE on “Bug fixes”
1 FTE total
FTEs for any period of time
Similar to the calculation for a single person, the total FTEs calculation for a group of size N for any period of time will yield a value between 0 and N, where the result is the division between the total FTEs for each day in the period, divided by the total number of business days in the period plus the number of non-business days with activity on that period.
So:
For “Bug fixes”: (1.833 + 1.666 + 1.5 + 0.5 + 1 + 1 + 1) / 5 = 8.5 / 5 = 1.7 FTEs
For “New features”: (1.166 + 1.333 + 1.5 + 1.5 + 2) / 5 = 7.5 / 5 = 1.5 FTEs
Total: 16 / 5 = 3.2 FTEs
The reason why the total value (across all categories) is greater than 3 here is because there are days in the period where work happened on the weekend.
The same logic would apply to any period both smaller or larger than a single week.
Summing FTE Days
Some times we’ll show a number of “FTE Day”s. This is just the direct sum of the FTEs on each day, without normalizing it by dividing it for the number of available days in the period.
Tracked work events
In order to determine what type of work each person did on any given day, we rely on tracking work events from the information we have available. These events are:
PR merged
The point in time in which a PR is merged into the main branch of a repository
Commit
A commit made that is associated to a PR opened over a non-excluded branch
PR review
A review made over some other person’s PR
Issue in progress
An issue assigned to the person that is in an “in progress” state during a day. If the issue remains in progress for more than one day, the event is tracked for every day in which the issue is opened, for up to seven days. This logic excludes non business days.