Every professional services contract the government buys is priced through labor categories β standardized job classifications that link a role, a set of qualifications, and a billing rate. Get your labor categories wrong and you either price yourself out or set yourself up for a compliance audit. Here's how to build them correctly from day one.
A labor category β usually written as LCAT β is the building block of every professional services government contract. It defines a job role, the minimum qualifications a person in that role must have, and the hourly rate the government pays for that work. Nothing else in the pricing structure matters until you get your LCATs right.
Think of an LCAT as a contract between you and the government about who you can bill. You commit to delivering people who meet the stated qualifications. The government commits to paying the stated rate. If you bill a person who doesn't meet the category's qualifications, you've got a compliance problem β potentially a False Claims Act problem.
Labor categories appear across every major service contracting vehicle: GSA Multiple Award Schedule, OASIS+, CIO-SP4, SeaPort NxG, and almost every agency-specific IDIQ. They also define the cost structure inside task order proposals. When an agency asks you to propose on a task order, they're asking you to map labor categories to their requirements and price the hours.
The government doesn't buy people. It buys defined outputs from qualified labor. LCATs are how it specifies what "qualified" means β and how it controls what it pays.
The Core Principle
Every LCAT has three core components: a title, a seniority level, and a set of minimum qualifications. Government solicitations vary in how detailed they get, but these three elements are always present in some form.
Here's what a standard LCAT definition looks like in practice, drawn from typical federal professional services contracts:
| Component | What It Specifies | Example |
|---|---|---|
| Title | The job function being contracted | Software Engineer, Senior |
| Education | Minimum degree, field of study | BS in Computer Science or related |
| Experience | Years of relevant work experience | Minimum 8 years; 6 with MS |
| Certifications | Required or preferred credentials | CISSP, PMP, AWS Solutions Architect |
| Clearance | Security clearance level if required | Active Secret or TS/SCI with poly |
| Duties | Core responsibilities for the role | System architecture, code review, mentoring juniors |
The qualifications are the hard constraint. If a solicitation says a Senior Program Manager requires a PMP and 10 years of project management experience, you can't staff that role with someone who has 8 years and no certification β even if they're excellent at their job.
Many solicitations include substitution language that lets you swap education for experience (or vice versa). A common formula: each additional 2 years of relevant experience can substitute for a bachelor's degree, or each relevant graduate degree reduces the experience requirement by 2 years. When that language exists, use it. When it doesn't, don't assume it's available.
On GSA Multiple Award Schedule, the LCATs are yours to define β within SIN guidelines. You propose titles, qualifications, and rates, and GSA negotiates whether those rates are fair and reasonable. On structured IDIQs like OASIS+ or CIO-SP4, the government provides the LCAT structure and you price to their framework.
Tip: Read the Substitution Clauses First
Nearly every LCAT structure uses seniority tiers. The names vary β I/II/III, Entry/Mid/Senior, Junior/Journeyman/Senior β but the concept is the same. Each tier defines a band of experience, education, and responsibility. OASIS+, for example, uses Junior, Journeyman, and Senior explicitly.
These tiers do two things: they let the government buy the right level of expertise for each task, and they give you a way to price a workforce pyramid rather than always pricing your most expensive senior staff.
| Tier | Typical Experience | Typical Education | Role Characteristics |
|---|---|---|---|
| Junior / Entry | 0β3 years | BS/BA required | Works under supervision; executes defined tasks |
| Mid / Journeyman | 3β8 years | BS/BA; some MS preferred | Works independently; may lead small tasks |
| Senior | 8β15+ years | BS required; MS or certs often required | Leads work; guides juniors; owns deliverables |
| Principal / Expert | 15+ years | Advanced degree or equivalent expertise | Strategic; sets direction; cross-program leadership |
The experience-education tradeoff shows up in every tier. The contract usually states minimums β but the actual market for these people is tighter than the minimums suggest. A person who barely clears the junior threshold is not going to look the same as one who exceeds it by two years and holds a relevant certification. Contracting officers know this. Technical evaluators know this. Price your workforce accordingly.
One practical issue that trips contractors up: a person who was hired as a mid-level employee inside your company may not qualify as mid-level under the contract's LCAT definition. Internal titles mean nothing. The contract's qualifications are what matter. Before you staff a task order, run a qualification check against the actual LCAT language.
The other trap is the opposite: pricing a senior person into a junior LCAT to win on price. Technically allowable in some circumstances β but if the government later discovers your "junior" is billing at senior qualifications without the senior rate, you've created a misrepresentation issue and you're leaving money on the table that justified the higher rate in the first place.
CapturePilot's Quick Checker matches your business profile β including labor categories and set-aside status β to live federal opportunities in under 2 minutes.
The hourly rate you bill the government is not the hourly rate you pay your employee. The difference is your indirect cost structure β fringe, overhead, G&A, and profit β stacked on top of direct labor. This stacked number is your fully burdened rate, also called the wrap rate when expressed as a multiplier.
Getting the math right matters enormously. The rates are not simply added together. Each applies to the accumulated cost beneath it. Here's how a typical cascade works:
$65.00/hrWhat you pay the employee per hour
$65.00 Γ 1.30 = $84.50/hrHealthcare, retirement, payroll taxes, PTO
$84.50 Γ 1.35 = $114.08/hrFacilities, equipment, project management support
$114.08 Γ 1.12 = $127.77/hrBusiness development, executive overhead, finance, HR
$127.77 Γ 1.10 = $140.54/hrReturn on investment, risk compensation
In this example, an employee earning $65/hour fully burdened costs the government $140.54/hour β a wrap rate of approximately 2.16x. That's on the higher end of competitive. Most winning government service contractors maintain wrap rates between 1.6x and 2.2x. Below 1.6x and you're likely not covering your actual costs. Above 2.2x and you're at a persistent pricing disadvantage on price-sensitive awards.
The variables that move your wrap rate most are fringe and overhead. Fringe scales with your benefits package β a company offering rich health insurance, strong retirement matching, and generous PTO will carry a higher fringe rate than a leaner shop. Overhead scales with your facilities and support infrastructure. Remote-first companies with minimal office space tend to have lower overhead rates.
On DCAA-audited contracts β which includes most Cost Plus and Time & Materials work above the Simplified Acquisition Threshold β you'll need to disclose your indirect rates and support them with an accounting system that tracks costs correctly. If you're pursuing this work seriously, the time to get a DCAA-compliant accounting system is before you win, not after. See our guide to DCAA-compliant accounting systems for what that requires.
Wrap Rate Formula
If your contract includes service workers β janitors, security guards, food service staff, administrative assistants, IT help desk β the McNamara-O'Hara Service Contract Act (SCA) probably applies. The SCA requires you to pay at least the prevailing wage for each labor category in each geographic area where work is performed.
"Prevailing wage" is determined by the Department of Labor's Wage and Hour Division. For each SCA-covered contract, the agency obtains a Wage Determination (WD) β a document listing minimum wages and fringe benefits for dozens of specific occupations in that location. That WD gets incorporated into your contract. You must pay workers in covered occupations at least those minimums.
The SCA floor matters for your pricing in two ways. First, it sets a hard cost floor that you cannot undercut on covered positions β so your competitive pricing floor is the government's own wage determination, not your preference. Second, new determinations are issued periodically. When your contract exercises an option year, a contracting officer can incorporate a revised WD, which may increase your required wage floor and squeeze your margin if your pricing assumed stable labor costs.
On top of SCA, a second federal wage floor exists under Executive Order 13658, which still applies to some multiyear service contracts. The hourly floor under that order has been adjusted to $13.65/hour as of 2026 for non-tipped workers on covered contracts. (Executive Order 14026, which had raised the floor to $15.00, was rescinded by Executive Order 14236 in March 2025 β so the legacy order's lower rate is now the relevant floor for most affected contracts.)
SCA Compliance Risk
The SCA also affects how you define your LCATs on covered contracts. The government uses its own occupational classification system for wage determinations β a Security Guard I, for example, is a specific SCA category with its own WD rate. Your proposed LCAT titles and duties must correspond correctly to the SCA occupation classification or you risk miscategorizing workers and creating a compliance gap.
On the GSA Multiple Award Schedule, you propose your own labor categories and rates. GSA negotiates whether those rates are fair and reasonable by comparing them to commercial pricing, other schedule holders, and market data. Once approved, those rates become the ceiling for task order pricing β you can always propose less, but never more than your approved schedule rates.
The range of schedule rates across the market is wide. Based on publicly available 2025 GSA Advantage price lists and contractor disclosures, IT professional services rates for the most common SIN (54151S, IT Professional Services) run roughly:
| Role | Level | Typical GSA Rate Range |
|---|---|---|
| IT Help Desk / Support | Junior | $55 β $90/hr |
| Systems Administrator | Mid | $80 β $130/hr |
| Software / DevSecOps Engineer | MidβSenior | $120 β $200/hr |
| Program Manager | Senior | $150 β $275/hr |
| Cybersecurity SME | Senior | $185 β $340/hr |
| Data Scientist / AI Engineer | MidβSenior | $150 β $280/hr |
These ranges reflect what contractors actually approve on their schedules β they include the Industrial Funding Fee (IFF) that GSA charges and factor in annual escalation across multi-year contract terms. The 0.75% IFF is built into every GSA schedule purchase price, so your approved rate is technically all-in from the buyer's perspective.
Real task order prices often come in below these approved ceilings. Agencies use competitive ordering procedures β putting a requirement out to multiple schedule holders and selecting the best value β which creates downward pricing pressure. Your approved GSA rate establishes your ceiling; where you actually price within that ceiling is your competitive decision on each task order.
Annual escalation clauses matter here. Most GSA schedule contracts allow you to escalate your approved rates annually β tied to the Bureau of Labor Statistics Employment Cost Index or a negotiated fixed escalation percentage. On a five-year contract, the difference between a 2% and a 4% escalation rate compounds into a significant margin difference by year five. Negotiate your escalation rate as seriously as your base rates.
Not all contract vehicles let you define your own LCATs. Structured vehicles like OASIS+ provide the labor category framework and require you to price within it. Understanding how each major vehicle handles LCATs affects both your onboarding strategy and your task order pricing.
Here's how the major professional services vehicles handle labor categories:
GSA MAS (Multiple Award Schedule)
You define your own LCATs
You propose titles, qualifications, and rates under your SIN. GSA negotiates fair and reasonable pricing. Maximum flexibility β but you're competing against hundreds of other schedule holders who have already established market rate anchors.
OASIS+
Government-defined LCATs mapped to SOC 2018
OASIS+ maps its labor categories to the 2018 Bureau of Labor Statistics Standard Occupational Classification manual. Junior, Journeyman, and Senior tiers are defined by the contract. You price to those tiers during task order proposals, not during onboarding.
CIO-SP4
NIH-defined IT labor categories
CIO-SP4 uses NIH's own LCAT framework for IT and health IT services. Labor categories are specified in the contract, with defined qualification thresholds. Task order proposals map work requirements to those categories.
Agency IDIQs
Varies by agency and solicitation
Agency-specific IDIQs (DHS EAGLE, Army RS3, DISA ENCORE) each have their own LCAT structures defined in the solicitation. Some allow contractor-proposed categories; many are fixed. Always read Section B and the attachments before pricing.
On OASIS+, the vehicle expanded to 13 service domains, with five additional domains phased in through 2026. Labor categories under OASIS+ are intended to provide a standardized crosswalk across all domains, which simplifies the government's ability to compare task order proposals but requires contractors to know exactly which SOC classification their proposed personnel fall into. See our detailed OASIS+ contract guide for the onboarding requirements.
Multi-Vehicle Strategy
Labor category errors are among the most common reasons technically capable contractors lose proposals β or win them and then face post-award compliance problems. These are the mistakes that show up repeatedly:
Proposing personnel who don't meet the qualifications
Technical disqualification or False Claims Act exposure
Run a formal qualification check for every named person against the exact LCAT language before submission. Don't rely on memory or HR records β pull the resume and compare it line-by-line.
Misreading experience requirements
Proposing the wrong tier; person doesn't qualify
Experience requirements often specify 'relevant' experience. A software engineer with 8 years of experience but only 3 years in the specific technology the contract requires may not meet a Senior threshold β even if they nominally have 8 years.
Ignoring substitution language
Unnecessarily disqualifying strong personnel
Most RFPs include education-for-experience substitutions. Read them. If a senior employee doesn't have the required degree, they may still qualify with additional years of experience.
Proposing the same person under multiple LCATs simultaneously
Government flags as inflated capacity; questions personnel availability
Clearly designate each named key person to a single primary LCAT in your proposal. Non-key personnel can typically be represented as a mix, but key persons require clear, singular assignments.
Pricing LCATs inconsistently across sections
Cost volume inconsistencies; proposal is flagged for clarification or rejected
Build a master rate card before you start writing any cost volume section. Every appearance of a given LCAT should reference the same rate. Discrepancies signal a sloppy proposal to evaluators.
Not escalating rates across the period of performance
Margin erosion on multi-year contracts; may price below cost in later years
Apply an annual escalation rate β typically 3β4% depending on the labor market and contract area β to every LCAT rate for each option year in your pricing.
Most technical proposals require you to write up key personnel β specific individuals you're committing to put on the contract. How you write those sections directly affects whether evaluators score you at the top or in the middle.
The goal of every key personnel write-up is to make it undeniable that this person exceeds the LCAT requirements. You're not checking boxes β you're making a case. That means leading with the result of their experience, not just the duration.
Here's the structure that works:
State the LCAT match explicitly
Open by naming the labor category and stating that the person meets or exceeds it. 'Mr. [Name] qualifies as a Senior Program Manager under LCAT 14. He holds a PMP certification, a Master's degree in Systems Engineering, and 14 years of direct program management experience on federal contracts.' Don't make evaluators infer the match.
Lead with their most relevant accomplishment
The first substantive sentence after the qualification statement should be the most relevant thing they've done. Not where they worked. What they delivered. 'He managed a $47M modernization program for DISA from design through production cutover, delivering 4 weeks ahead of schedule and 3% under budget.'
Connect their background to this contract's specific requirements
Evaluators are comparing you against the Section M criteria. Map this person's experience explicitly to the evaluation factors. If Section M weighs 'experience managing multi-site deployments,' say they've managed multi-site deployments β and give specifics.
Address any qualification gaps honestly
If your candidate technically qualifies via a substitution clause, state it clearly. 'Under Section H.4 of the solicitation, Mr. [Name]'s 12 years of direct experience and security clearance substitutes for the required MS degree.' Don't hope evaluators figure it out β spell it out.
Include a commitment statement
Close the write-up with a clear availability commitment. 'Mr. [Name] is available for 100% of the base year and each option year. His letter of commitment is included as Attachment C.' This directly addresses the evaluator's implicit question about whether you can actually deliver this person.
On task orders where no specific personnel are required, you're proposing a labor mix β a staffing plan that shows how many hours at which LCAT levels you're proposing to allocate to the work. The key here is realism. Proposing 90% senior staff looks impressive but signals padding. Proposing 80% junior staff looks cheap but signals under-resourcing. The right mix matches the actual complexity distribution of the stated requirements.
CapturePilot's proposal intelligence tools can help you analyze past award data to see what labor mix winning contractors have used on similar task orders β giving you a data anchor instead of a guess.
A labor category structure that wins today may not win in two years. Markets move. GSA Advantage gives buyers access to every approved schedule holder's published rates. Agency contracting officers benchmark your rates against historical awards. The pricing intelligence flowing through the federal market is better than most contractors realize.
Building a competitive long-term rate structure requires three disciplines:
Regularly check what comparable schedule holders are charging for equivalent roles. GSA Advantage is public. Tools like FPDS and USASpending show what agencies actually paid. Don't set rates in isolation from the market.
Resist the urge to load rates with overhead you're not sure you can sustain. A rate structure built on projected overhead that never materializes creates an unsustainable cost model. Ground your indirect rates in actuals, not aspirations.
Decide which LCATs you need to be price-competitive in versus which ones you can command a premium for. A niche cybersecurity expertise category may justify higher rates than a generic program management category.
The contractors who consistently win on rate-sensitive vehicles aren't always the cheapest β they're the ones whose rates look defensible. An agency evaluator who sees your rates and thinks "that's reasonable for this level of work" is much more likely to select you than one who sees rates that look like a puzzling outlier in either direction.
Use market intelligence tools to track what agencies are actually awarding β by vehicle, by SIN, by NAICS code. What a competitor proposes is visible through FPDS if you know how to read the data. And our pipeline management tools can help you track which upcoming opportunities are likely to be rate-sensitive versus quality-weighted, so you can calibrate your pricing strategy per pursuit.
Finally: get ahead of option year repricing. If your wrap rate increases materially between the base year and option year 2, you need to know that before you exercise the option β not after. Build a simple model that runs your actual indirect rates against your proposed rates for each option year and flags the gap. A margin squeeze you see coming is manageable. One that blindsides you at option exercise is painful.
Rate Structure Checklist
CapturePilot pulls live award data from USASpending.gov and SAM.gov so you can see what agencies paid on similar contracts β before you price your next bid. See which vehicles, which LCATs, and which rate structures are winning right now.