How is work classified in the Labeled Investment report?
Last updated: October 27, 2026
Labeled investment sorts engineering effort into investment areas and categories your admins define, using rules that match Jira fields. The same rules and the same fields always produce the same category.
Why it matters
Labeled investment shows where engineering effort goes in the categories your business already plans with, without anyone filing a timesheet. Every category traces back to a rule your admins saved. Span doesn't read issue descriptions or code to decide a labeled category, so you can always see why an issue landed where it did.
Labeled investment or Inferred investment? Span has two investment reports, and each one classifies work on its own.
Labeled investment | Inferred investment | |
|---|---|---|
Who decides the categories | Your admins | Span |
Categories | The ones you define | New features, Maintenance, and Developer experience |
How an item gets a category | Rules on Jira fields | AI reads the issue and the pull request |
Same inputs, same result | Yes | No |
How to correct a result | Edit the rules | Reassign the item |
A rule in Labeled investment leaves Inferred investment unchanged, and a reassignment in Inferred investment leaves Labeled investment unchanged. You can turn both reports on together.
How it works
Investment areas and categories. Your organization defines both:
An investment area is one way of grouping work, such as "Roadmap vs. keep the lights on" or "Customer commitments."
A category sits inside one area, such as "Q4 launch," "Platform migration," or "On-call."
These names are yours. They're separate from New features, Maintenance, and Developer experience in Inferred investment.
Fields a rule can match. A rule checks fields on the Jira issue and on the epic and initiative above it:
Issue: Issue ID, Issue Title, Issue Type (Story, Task, Bug, Subtask, or Epic), Source Issue Type (the type name in Jira), Issue Label, Issue Priority, and Issue Field (a custom field)
Project: Project ID and Project Title
Epic: Epic ID, Epic Title, Epic Label, and Epic Field
Initiative: Initiative ID, Initiative Title, and Initiative Field
Jira Components aren't a rule field. Custom-field rules can use the Jira categorization fields selected in your Jira integration settings (up to 10).
Operators. Each condition uses one operator, and each has a negated form:
Is one of/Is not one of(ignores letter case)Contains one of/Does not contain(ignores letter case)Matches one of regex/Does not match regex(a regular expression; letter case matters)Is empty/Is not empty
Combine conditions with AND and OR.
Which category wins. Inside an area, Span checks categories from top to bottom and assigns the first one that matches. Each issue gets one category per area, so effort isn't counted twice. An issue can have one category in each area you define, and each area is its own view.
How categories pass down.
Issues under an epic or initiative can match on that epic's or initiative's fields. Epics and initiatives themselves don't get a category.
Subtasks: a subtask that matches a rule gets that category. A subtask that matches no rule takes its parent issue's category.
Commits, pull requests, and reviews: work on a pull request linked to an issue counts in that issue's category. A pull request with no linked issue shows as Unlinked.
Issues that match no rule go to the Other category if you turned it on. Otherwise they stay out of the report.
How categories update. Span syncs Jira about every 2 hours and applies your rules to each issue it syncs. Reports then update in the next processing run, which happens about every 3 hours. When an issue changes in Jira (a new label, a new epic, a changed custom field), it moves to its new category within about 5 hours. When you save a change to your rules, Span reapplies them to all your Jira issues, and the report shows the result after the next processing run.
Setup
Admins with the Manage Investment permission add areas, categories, and rules in Settings → Investment, under Investment Mix Areas. Span applies the rules you save. It doesn't write or change rules on its own.
To see the work behind a number, click a category's value in Insights → Allocation → Labeled investment. Span opens the list of activity that makes up that category.
For step-by-step setup, see Setting Up Labeled Investment in Span.
Things to know
Jira only. Linear, GitLab Issues, and Azure DevOps Boards don't feed this report.
Issues get categories; epics and initiatives don't. Work done directly on an epic or initiative isn't counted as effort anywhere in Span.
Up to about 5 hours to update. Span syncs Jira about every 2 hours and updates reports about every 3 hours, so a Jira change shows within about 5 hours.
No item-by-item overrides. To move an issue to a different category, edit the rules or the Jira field.
Unlinked work can't be labeled. Effort on a pull request with no linked issue has no Jira fields to match, so it always shows as Unlinked.
Worked example
The area "Roadmap vs. KTLO" has two categories:
Roadmap, checked first: Epic Label
Is one ofroadmap-2026KTLO, checked second: Issue Type
Is one ofBug, OR Issue LabelContains one ofoncall
Item | Category | Why |
|---|---|---|
A bug in an epic labeled roadmap-2026 | Roadmap | It matches both categories. Span checks Roadmap first. |
A subtask of that bug that matches no rule itself | Roadmap | It takes its parent's category. |
A pull request linked to that subtask | Roadmap | Linked work uses the issue's category. |
A pull request with no linked issue | Unlinked | There's no issue to classify. |
A bug whose epic label changes from roadmap-2026 to roadmap-2027 in Jira | KTLO, within about 5 hours | Its epic no longer matches Roadmap, and it's a Bug. |
If an engineer spends Monday on the first bug and a review-only pull request with no issue, Roadmap gets 0.67 FTE-days and Unlinked gets 0.33.
Related articles
Setting Up Labeled Investment in Span
How does Span define allocation categories like new features and maintenance work?
Need help?
Contact your Span account team or reach out to support@span.app.