Skip to main content

AB 339 Contract Overlap Analysis

Compare a service contract against your entire class spec catalog to find the classifications with overlapping duties, and see which unions may need notice under California's AB 339.

What is the AB 339 Contract Overlap Analysis?

California's AB 339 requires public agencies to review personal services contracts and notify employee unions before contracting out work that could be performed by existing classified staff. The intent is to give unions an opportunity to respond, but the scale makes compliance difficult: manually reviewing hundreds of complex job classifications against every incoming contract is often unrealistic.

The AB 339 Report automates that review. It ingests your contract, parses through all of your class specifications to surface the classifications with overlap, categorizes each one by how much its duties align with the contract, and explains its reasoning for every result. By filtering out the noise, your team can make faster, better-informed decisions about exactly which unions need to be noticed.

Note: This tool uses AI to identify potential overlaps between your class specifications and a contract's scope of work that may trigger labor notice requirements under AB 339. Results are based on available data and may not reflect all relevant context. They are intended to support, not replace, human judgment. Holly is not responsible for actions taken based on this analysis.

Common Use Cases

Identifying Classifications You'd Never Think to Check

Job classification titles often don't reflect the actual work performed. Holly reads the full text of every published class spec, not just the title, and compares it against the contract's scope of work, surfacing overlaps that would be easy to miss manually.

For example, a contract for an annual wildlife training program at an airport may not seem related to your Environmental Specialist series. But when Holly compares the contract's duties (analyzing wildlife ecology, applying environmental regulations, preparing technical reports) against your full spec catalog, it identifies Environmental Specialists I, II, and III as high-overlap classifications, results that are difficult to reach through manual review alone in a large organization.

Replacing Manual Review of Hundreds of Pages

A full manual review of every spec for every incoming contract isn't feasible. Holly processes your entire published catalog automatically, returning a ranked list of results in minutes, so your team can focus its analytical effort on the handful of classifications that actually warrant a closer look.


Running This Report

The AB 339 Report runs from the Reports section. Select AB 339 Contract Overlap Analysis as the report type, enter a report title, acknowledge the disclaimer, and provide the contract, either pasted as text or uploaded as a PDF, Word, or Excel file. Even a brief scope of work is enough to begin, and more detail yields more precise results. For the full steps, see Running Reports for Bulk Analysis.

Note: The AB 339 Report scans only your imported or published class specifications. Draft specs in progress are excluded from the analysis.

Note: AB 339 is a California requirement, so this report is available to California jurisdictions. Your agency's configuration also determines which report types are included for your account. Questions about your configuration? Contact Holly Support at [email protected].


Understanding Your Results

Holly extracts the scope of work from your contract and compares it, duty by duty, against every duty listed in each published class spec. Rather than treating every duty equally, Holly weighs how distinctive each duty is to the role. Duties that are core to a classification, the tasks that define what the role does, count far more than duties that are generic or incidental, tasks that show up across many unrelated classifications like "prepares reports" or "represents the department at meetings." This keeps a classification from landing in a high-overlap category just because it shares boilerplate duties with the contract; the overlap has to touch what the role is actually for.

Based on this comparison, every classification is placed into one of four categories:

  • High Overlap: The contract's scope of work falls within duties that are core to this classification, a strong signal that the contracted work overlaps with duties this classification currently performs. Suggested action: include this classification in your union notification.

  • Some Overlap: A core duty, or another distinctive part of the role, overlaps with the contract. Suggested action: review the overlapping duties and decide whether notification is appropriate.

  • Minimal Overlap: The only overlap found is in duties that are generic or incidental, shared across many unrelated classifications, rather than duties that define this specific role. Holly still surfaces these matches rather than dropping them, since even generic overlap can matter depending on your agency's risk tolerance. Suggested action: review, and consider notifying if you prefer a more conservative approach.

  • No Overlap: No duties in this classification relate to the contract's scope of work. No score is shown for these results. Suggested action: none needed.

Viewing the Reasoning

Hover over any classification in the results list to see the specific duties Holly identified as overlapping, pulled directly from the class spec and compared against the contract language, along with whether that overlap falls within the classification's core duties or its more generic, shared ones. This gives you a plain-language explanation of why a classification was flagged, and where it sits on the overlap spectrum, without opening the spec itself.

Logging Your Notice Decisions

Each classification row includes a dropdown where you can log your notice decision, scoped to the relevant bargaining unit:

  • Notice provided: You've confirmed the overlap and already sent notice to the union.

  • Notice needs to be provided: You've flagged this union for notification but haven't sent it yet.

  • Notice not required: You've determined this union doesn't require notification.

Rows default to No action yet when a report runs, so you can fill in decisions as you work through your review.

Filtering Your Results

The results table gives you two filters plus search, so you can work a large catalog down to what matters:

  • Overlap Category: Filter by any combination of High Overlap, Some Overlap, Minimal Overlap, and No Overlap. Filtering to High and Some is the fastest way to set aside the classifications that don't need a decision.

  • Notice decision: Filter by the decisions you've logged: Notice provided, Notice needs to be provided, Notice not required, or No action yet. Filtering to No action yet shows what's left to work through.

Click the filter icon on either column, select the values you want, and confirm. You can also sort either column by clicking its header.

Did this answer your question?