Setting Up Labeled Investment in Span
Last updated: October 27, 2026
Set up Labeled investment by creating an investment area and its categories, then writing rules that map your Jira issues to them.
Why it matters
Labeled investment shows how engineering effort splits across the categories your leadership already uses, such as 60% roadmap, 25% keep-the-lights-on, and 15% customer commitments, without timesheets. You get:
A breakdown of engineering effort (FTE-days) by category
Cost per category, if cost estimates are on
Trends in your investment mix over time, per team or org-wide
It fits teams that already tag Jira consistently, because every result traces back to a field you control. This article covers Labeled investment only. Rules you set up here don't affect Inferred investment, where AI sorts work into New features, Maintenance, and Developer experience. See How is work classified in the Labeled Investment report?
How it works
You define an investment area: a top-level grouping, such as "Roadmap vs. KTLO."
Inside the area, you define categories, such as "Q4 launch" or "On-call."
For each category, you write rules on Jira fields.
Span checks each issue against your categories from top to bottom and assigns the first one that matches.
Commits, pull requests, and reviews linked to that issue count in its category.
Each issue gets exactly one category per area, so nothing is counted twice.
Setup
Before you start
Jira is connected to Span. Labeled investment reads Jira only. Linear, GitLab Issues, and Azure DevOps Boards don't feed it.
If you want rules on Jira custom fields, select those fields as categorization fields in your Jira integration settings (up to 10).
You have the Manage Investment permission in Span.
Step 1: Open Investment settings
Go to Settings → Investment. The Investment Mix Areas card lists your existing areas. Drag areas to reorder them, or use an area's menu to edit or archive it.
Step 2: Create an investment area
Click Add Area.
Enter an Investment Area Name, such as
Roadmap vs. KTLOorWork Classification.Add your categories.
Most teams need one area. Create more if different audiences slice investment differently, such as one for product and one for infrastructure.
Step 3: Define your categories
You name the categories, so use the terms your leadership already uses. Some common examples:
Category | What it captures |
|---|---|
Roadmap | Planned product work tied to this period's goals |
Customer commitments | Work promised to specific customers |
Defects | Bug resolution |
Tech debt | Refactoring, cleanup, architecture improvements |
Platform and DevOps | Infrastructure, tooling, CI/CD |
Keep the lights on | Ongoing operational work and on-call |
Security and compliance | Security hardening and compliance work |
For each category, set a Name, a color for charts, an optional Description, and its rules.
Step 4: Write matching rules
Fields you can match:
Field | What it checks |
|---|---|
Issue ID, Issue Title, Issue Priority | The issue itself |
Issue Type | Story, Task, Bug, Subtask, or Epic |
Source Issue Type | The issue type name as it appears in Jira |
Issue Label | Labels directly on the issue |
Issue Field | A Jira custom field on the issue |
Project ID, Project Title | The issue's Jira project |
Epic ID, Epic Title, Epic Label, Epic Field | The issue's parent epic |
Initiative ID, Initiative Title, Initiative Field | The initiative above the epic |
Operators, each with a negated form:
Is one of/Is not one of: exact match on any listed value, ignoring letter caseContains one of/Does not contain: the value includes any listed text, ignoring letter caseMatches one of regex/Does not match regex: a regular expression, where letter case mattersIs empty/Is not empty
Combine conditions with AND and OR. As you build rules, the Issues preview shows which issues match.
Example rules:
Category: Roadmap
Epic Label Is one of "roadmap-2026"
OR
Issue Field "Work Type" Is one of "Roadmap"
Category: Tech debt
Issue Label Contains one of "tech-debt"
OR
Epic Title Contains one of "tech debt"Span checks categories in order and the first match wins. Put specific categories above general ones, and catch-alls like "Keep the lights on" at the bottom.
Step 5: Configure the Other category (recommended)
The Other category captures all work that other categories haven't. Without it, unmatched issues drop out of the report. A growing Other share tells you your rules need work or new kinds of work have appeared.
Step 6: Save
Review your categories and save. Span reapplies your rules to all your Jira issues, and the results show in the report after the next processing run. Processing runs about every 3 hours.
View your results
Open Insights → Allocation → Labeled investment to see FTE-days by category, the trend over time, cost if cost estimates are on, and per-team or org-wide views. Click a category's value to see the activity behind it.
Things to know
One category per area. Each issue gets exactly one category in each area.
First match wins. Span stops checking at the first category that matches.
Subtasks inherit. A subtask with no match of its own takes its parent issue's category.
Issues get categories; epics and initiatives don't. Issues can still match on their epic's or initiative's fields.
Unmatched issues go to Other if it's on. Otherwise they're left out.
Unlinked work. Pull requests with no linked issue show as Unlinked.
Update timing. Span syncs Jira about every 2 hours and updates reports about every 3 hours, so a Jira change shows within about 5 hours.
Fixing a result. Edit the rules or the Jira field. Labeled results can't be changed item by item.
Worked example
An engineer's Tuesday touches two issues: ENG-1 in an epic labeled roadmap-2026, and ENG-2, a Bug with no matching epic. With the rules above plus a KTLO category (Issue Type Is one of Bug) placed below Roadmap, ENG-1 lands in Roadmap and ENG-2 in KTLO. Each gets 0.5 FTE-days. If you move KTLO above Roadmap, nothing changes for ENG-1, because it isn't a Bug.
Tips for a good setup
Audit your Jira tagging first. Inconsistent labels and custom fields mean low coverage.
Start with 4 to 6 categories. You can add more later.
Use Other as a feedback loop. If a lot of work lands there, expand your rules.
Name categories the way leadership talks.
Troubleshooting
Most issues land in Other: check that the fields you match are filled in consistently. Try
Contains one ofinstead ofIs one offor labels with variable formatting. For custom fields, confirm the field is one of your Jira categorization fields.An issue is in the wrong category: a broader category higher up may be catching it. Move the more specific category above it.
A category shows zero issues: check spelling and spacing. Letter case doesn't matter for
Is one ofandContains one of, but it does for regex. Jira Components aren't a rule field. If the field shows "This field has no synced data," resync your Jira integration.Changes aren't showing yet: a Jira change waits for the next sync (about every 2 hours) and the next processing run (about every 3 hours), so allow up to about 5 hours. A rule change shows after the next processing run.
Related articles
How is work classified in the Labeled Investment report?
Workstreams: AI-Powered Allocation, for teams without consistent Jira tagging
Need help?
Contact your Span account team or reach out to support@span.app.