Round #444
09 May 2026, 15:11· hr-law· grok-4-fast-reasoning· r13-clean-hints
- Complexity
- band 0
- ZP / UO / OBS
- 3 / 5 / 1
- Journey weight
- 732
- Lightshift ΔL
- +0.17
Prompt
We are buying the trade and assets of a competitor but not the company itself. Does TUPE apply and what employees transfer with the business?
Zero-point index (what the engine surfaced)
ZPI-ZPI-0007 | 2026-05-09T15:11:55Z
We are buying the trade and assets of a competitor but not the company itself. Does TUPE apply and what employees transfer with the business?
ZERO POINT — 3 entries (structural invariants)
● hsl(33.60, 100%, 20%) TUPE transfer [contract]
● hsl(264.47, 100%, 20%) ETO reason [contract]
● hsl(34.63, 100%, 20%) assigned employee [contract]
UNOBSERVED — 5 entries (implied truths)
○ hsl(258.00, 100%, 20%) TUPE measures [feature]
○ hsl(259.00, 100%, 20%) ETO reason [feature]
○ hsl(260.00, 100%, 20%) business transfer [feature]
○ hsl(261.00, 100%, 20%) service provision change [feature]
○ hsl(227.25, 100%, 12%) Process TUPE transfer [function]
OBSERVED — 1 entries (explicit in request)
◉ hsl(257.00, 100%, 20%) TUPE transfer [feature]
COMPLEXITY │ 9 entries │ spread: 34° │ band: LOW
Baseline response (no ZPI)
### Does TUPE Apply to the Purchase of Trade and Assets?
TUPE (Transfer of Undertakings (Protection of Employment) Regulations 2006, as amended) is UK legislation that protects employees when there is a relevant transfer of a business or part of a business. It ensures that employees' contracts of employment automatically transfer to the new owner on their existing terms and conditions, and it imposes obligations on both the seller (transferor) and buyer (transferee) regarding consultation, redundancies, and continuity of employment.
#### Applicability of TUPE in This Scenario
TUPE **may apply** to the purchase of the trade and assets of a competitor, even if you're not acquiring the company itself (i.e., it's an asset deal rather than a share deal). However, it depends on the specific facts of the transaction. Here's a breakdown:
- **Key Test for TUPE**: TUPE applies if there is a "relevant transfer," which occurs when an **economic entity** (an organized grouping of resources and employees that pursues an economic activity) is transferred as a **going concern** (i.e., the business continues operating in substantially the same way after the transfer).
- In an asset purchase like this, TUPE is more likely to apply if you're acquiring the **trade** (e.g., customer contracts, goodwill, intellectual property, stock, and ongoing operations) alongside the assets, rather than just isolated assets (e.g., machinery without the business operations).
- If the deal effectively transfers the competitor's business activities to you, allowing it to continue as before (just under your ownership), this would typically trigger TUPE. Courts and tribunals look at the substance of the deal, not just the label (e.g., "asset sale").
- Exceptions where TUPE might **not** apply:
- If the assets/trade are not sufficient to constitute a "going concern" (e.g., a one-off sale of surplus equipment without ongoing business transfer).
- If the transfer is purely contractual (e.g., outsourcing services) but doesn't involve a stable economic entity.
- Insolvency scenarios (e.g., administration) can modify TUPE protections, but that's not indicated here.
- **Case Law Examples**:
- **Yes, TUPE applies**: In *Spijkers v Gebroeders Benedik Abattoir* (ECJ, foundational case), transferring the trade, assets, and goodwill of a slaughterhouse business triggered TUPE, even without the company shell.
- **No, TUPE does not apply**: In *RCO Support Services v UNISON* (2010), the sale of assets without transferring the ongoing business operations meant no economic entity was transferred.
- UK EAT in *Kavanagh v Secretary of State* (recent) emphasized that fragmented asset sales without business continuity don't trigger TUPE.
To determine applicability definitively, review the sale agreement, due diligence on the business operations, and consult the seller's employee list. If in doubt, assume TUPE applies to avoid legal risks—tribunals often err on the side of protection for employees.
#### Which Employees Transfer with the Business?
If TUPE applies, **automatic transfer** occurs for employees **assigned to the transferring economic entity** (the part of the business being sold). Not all employees of the seller automatically transfer—only those directly connected to the trade/assets being acquired.
- **Who Transfers?**
- Employees whose roles are **principally engaged in the transferring activities** (e.g., sales staff handling the acquired customer base, warehouse workers managing the transferred stock, or admin support for the specific trade).
- This is fact-specific: Consider job descriptions, time spent on the relevant activities, and organizational structure. For example:
- If you're buying a retail competitor's stores and inventory, shop assistants and store managers in those locations would transfer.
- Head office staff shared across the whole company (e.g., HR or finance) might not, unless a significant portion of their work relates to the transferred trade.
- Part-time or temporary workers assigned to the entity also transfer.
- Fixed-term contracts continue until their end, but rights (e.g., pay, holidays) are preserved.
- **What Happens to Transferring Employees?**
- **Automatic Transfer**: Their employment contracts transfer intact (no changes to terms without consent). Continuity of service is preserved for redundancy, unfair dismissal, and pension rights (though occupational pensions may have limited protection).
- **Dismissals**: Pre-transfer dismissals by the seller for a TUPE-related reason (e.g., to avoid transfer) are automatically unfair. Post-transfer, you can't dismiss for the transfer itself.
- **Pensions**: State and stakeholder pensions transfer fully; occupational pensions transfer only accrued rights (not future contributions, except for defined-benefit schemes in some cases).
- **Non-Transferring Employees**: They remain with the seller. The seller must handle redundancies or reassignments if their roles are affected, but you could face indirect claims if the transfer impacts them.
- **Obligations for You (Buyer/Transferee)**:
- **Consultation**: The seller must inform and consult with affected employees (and their reps) at least 28 days before the transfer (or as soon as possible). You must also engage in this process.
- **Due Diligence**: Request employee liability information from the seller (e.g., contracts, pay details) at least 28 days pre-completion.
- **Post-Transfer**: Honor existing terms for at least one year (variations allowed if for economic/technical/organizational reasons, but not the transfer itself). You inherit liabilities (e.g., ongoing grievances, maternity leave).
- **Employee Rights Post-Transfer**:
- Object to the transfer (rare, but they can resign and claim constructive dismissal if they do).
- Claim unfair dismissal or breaches via employment tribunal (time limit: 3 months less one day).
#### Recommendations
- **Seek Professional Advice**: This is not legal advice—TUPE is complex and fact-dependent. Consult an employment lawyer or HR specialist immediately, especially for due diligence, sale contract warranties (e.g., seller confirming TUPE applicability), and indemnity clauses for employee claims.
- **Next Steps**:
- Review the heads of terms or draft agreement for TUPE clauses.
- Conduct employee mapping during due diligence.
- If TUPE applies, prepare for consultation and integration plans to minimize disruption.
- Resources: ACAS guidance on TUPE, or the UK Government's BEIS website for templates.
If you provide more details (e.g., industry, size of business, or specific assets), I can refine this further.
Enhanced response (with ZPI)
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
namespace BusinessTransferSystem
{
/// <summary>
/// Represents an ETO (Economic, Technical, or Organizational) reason for potential dismissals or changes post-transfer.
/// </summary>
public class EtoReason
{
public Guid Id { get; private set; } = Guid.NewGuid();
public string Description { get; private set; }
public EtoType Type { get; private set; }
public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
public enum EtoType
{
Economic,
Technical,
Organizational
}
public EtoReason(string description, EtoType type)
{
if (string.IsNullOrWhiteSpace(description))
throw new ArgumentException("Description cannot be null or empty.", nameof(description));
Description = description;
Type = type;
}
public override string ToString() => $"ETO Reason: {Description} ({Type})";
}
/// <summary>
/// Represents an employee assigned to a specific business unit or undertaking.
/// </summary>
public class AssignedEmployee
{
public Guid Id { get; private set; } = Guid.NewGuid();
public string Name { get; private set; }
public string EmployeeId { get; private set; }
public decimal Salary { get; private set; }
public DateTime StartDate { get; private set; }
public List<Guid> AssignedBusinessUnits { get; private set; } = new List<Guid>();
public bool IsTransferring { get; private set; }
public AssignedEmployee(string name, string employeeId, decimal salary, DateTime startDate)
{
if (string.IsNullOrWhiteSpace(name))
throw new ArgumentException("Name cannot be null or empty.", nameof(name));
if (string.IsNullOrWhiteSpace(employeeId))
throw new ArgumentException("Employee ID cannot be null or empty.", nameof(employeeId));
if (salary < 0)
throw new ArgumentException("Salary cannot be negative.", nameof(salary));
Name = name;
EmployeeId = employeeId;
Salary = salary;
StartDate = startDate;
IsTransferring = false; // Default; set during transfer process
}
public void AssignToBusinessUnit(Guid businessUnitId)
{
if (!AssignedBusinessUnits.Contains(businessUnitId))
{
AssignedBusinessUnits.Add(businessUnitId);
}
}
public void MarkAsTransferring()
{
IsTransferring = true;
}
public override string ToString() => $"Employee: {Name} (ID: {EmployeeId}, Transferring: {IsTransferring})";
}
/// <summary>
/// Represents a TUPE transfer scenario, handling the logic for whether TUPE applies and which employees transfer.
/// In the context of a trade and assets purchase (not share purchase), TUPE applies if the transfer involves an "economic entity" that retains its identity.
/// </summary>
public class TupeTransfer
{
public Guid Id { get; private set; } = Guid.NewGuid();
public string TransferDescription { get; private set; }
public TransferType Type { get; private set; }
public bool Applies { get; private set; }
public DateTime TransferDate { get; private set; }
public List<AssignedEmployee> Employees { get; private set; } = new List<AssignedEmployee>();
public List<EtoReason> EtoReasons { get; private set; } = new List<EtoReason>();
public List<string> TransferringAssets { get; private set; } = new List<string>();
public enum TransferType
{
TradeAndAssets, // Asset purchase (as in the request)
SharePurchase, // Company purchase
BusinessSale // Full business transfer
}
public TupeTransfer(string description, TransferType type, DateTime transferDate)
{
if (string.IsNullOrWhiteSpace(description))
throw new ArgumentException("Description cannot be null or empty.", nameof(description));
if (transferDate == default || transferDate < DateTime.UtcNow)
throw new ArgumentException("Transfer date must be in the future or today.", nameof(transferDate));
TransferDescription = description;
Type = type;
TransferDate = transferDate;
// For trade and assets (asset purchase), TUPE typically applies if it's a going concern transfer
Applies = type == TransferType.TradeAndAssets ? DetermineTupeApplicability() : true;
}
/// <summary>
/// Determines if TUPE applies based on the transfer details.
/// For trade and assets purchases, TUPE applies if the business is transferred as a going concern (economic entity retains identity).
/// This is a simplified check; in practice, consult legal experts.
/// </summary>
private bool DetermineTupeApplicability()
{
// Logic: If assets include key business elements (e.g., goodwill, contracts, premises) and employees are assigned,
// assume it retains identity. Real implementation would involve more criteria (e.g., Spijkers test).
bool hasKeyAssets = TransferringAssets.Any(asset => asset.Contains("goodwill") || asset.Contains("contracts") || asset.Contains("premises"));
bool hasAssignedEmployees = Employees.Any();
return hasKeyAssets && hasAssignedEmployees;
}
/// <summary>
/// Processes the TUPE transfer: Identifies and marks transferring employees, applies protections.
/// Employees assigned to the transferring undertaking automatically transfer with their terms intact.
/// </summary>
/// <exception cref="InvalidOperationException">Thrown if TUPE does not apply or no employees are assigned.</exception>
public void ProcessTupeTransfer()
{
if (!Applies)
throw new InvalidOperationException("TUPE does not apply to this transfer. No employees can transfer under TUPE protections.");
if (!Employees.Any())
throw new InvalidOperationException("No employees assigned to the transferring business. Cannot process transfer.");
// Identify employees assigned to the transferring business (simplified: all in list are assumed assigned)
var transferringEmployees = Employees.Where(e => e.AssignedBusinessUnits.Any()).ToList();
foreach (var employee in transferringEmployees)
{
// Mark as transferring; in reality, this triggers notifications, contract transfers, etc.
employee.MarkAsTransferring();
// Additional logic: Preserve terms, notify, consult if changes
Console.WriteLine($"Transferring employee: {employee}");
}
// If ETO reasons exist, they may justify post-transfer changes, but not pre-transfer dismissals
if (EtoReasons.Any())
{
Console.WriteLine("ETO reasons noted for potential post-transfer adjustments:");
foreach (var reason in EtoReasons)
{
Console.WriteLine($" - {reason}");
}
}
// Output summary
Console.WriteLine($"\nTUPE Transfer Processed: {transferringEmployees.Count} employees transfer with full protections.");
Console.WriteLine("Note: Acquirer must inform and consult with employees/representatives pre-transfer.");
}
public void AddEmployee(AssignedEmployee employee)
{
if (employee == null)
throw new ArgumentNullException(nameof(employee));
Employees.Add(employee);
// Auto-assign to this transfer's 'business unit' implicitly
}
public void AddEtoReason(EtoReason reason)
{
if (reason == null)
throw new ArgumentNullException(nameof(reason));
EtoReasons.Add(reason);
}
public void AddTransferringAsset(string asset)
{
if (string.IsNullOrWhiteSpace(asset))
throw new ArgumentException("Asset cannot be null or empty.", nameof(asset));
TransferringAssets.Add(asset);
// Re-evaluate applicability if needed
Applies = DetermineTupeApplicability();
}
public override string ToString() => $"TUPE Transfer: {TransferDescription} (Applies: {Applies}, Type: {Type})";
}
// Example usage and DI registration (for ASP.NET Core or similar)
public static class TupeTransferExtensions
{
// In Startup.cs or Program.cs:
// services.AddScoped<ITupeTransferService, TupeTransferService>();
public interface ITupeTransferService
{
TupeTransfer CreateTransfer(string description, TupeTransfer.TransferType type, DateTime transferDate);
void ProcessTransfer(Guid transferId);
}
public class TupeTransferService : ITupeTransferService
{
private readonly Dictionary<Guid, TupeTransfer> _transfers = new Dictionary<Guid, TupeTransfer>();
public TupeTransfer CreateTransfer(string description, TupeTransfer.TransferType type, DateTime transferDate)
{
var transfer = new TupeTransfer(description, type, transferDate);
_transfers[transfer.Id] = transfer;
return transfer;
}
public void ProcessTransfer(Guid transferId)
{
if (_transfers.TryGetValue(transferId, out var transfer))
{
transfer.ProcessTupeTransfer();
}
else
{
throw new KeyNotFoundException($"Transfer with ID {transferId} not found.");
}
}
}
}
}
```
### Explanation
This implementation models a TUPE transfer process in C# for a trade and assets acquisition scenario. The `TupeTransfer` class handles the core logic: determining applicability (TUPE generally applies to asset purchases if the business transfers as a going concern, retaining its identity via key assets and assigned employees) and processing the transfer (marking relevant employees as transferring with protections intact). Employees in `AssignedEmployee` assigned to the business unit transfer automatically. `EtoReason` captures post-transfer justification for changes (e.g., redundancies), which cannot be used pre-transfer.
Key features:
- **Idiomatic C#**: Uses records-like immutability where possible, enums for types, LINQ for queries, and proper validation/exceptions.
- **Error Handling**: Throws meaningful exceptions for invalid states (e.g., no TUPE applicability).
- **TUPE Logic**: Simplified based on UK regulations—asset purchases qualify if an "economic entity" transfers (e.g., per ECJ Spijkers criteria). Only assigned employees transfer; others do not.
- **DI Integration**: Includes a service interface for scoped registration in .NET (e.g., via `IServiceCollection.AddScoped<ITupeTransferService, TupeTransferService>()`), enabling easy use in applications like HR systems.
- **Usage**: Create a `TupeTransfer`, add employees/assets/ETO reasons, then call `ProcessTupeTransfer()` to simulate the transfer. In a real app, extend with database persistence (e.g., EF Core) and notifications.
This is not legal advice; consult a UK employment lawyer for specific cases, as TUPE involves consultation duties and potential liabilities.
Grader chain
Each grader reads the same baseline + enhanced pair and casts an independent verdict. Disagreement is the framework's own signal — not noise to be averaged away.
V1samba/Meta-Llama-3.3-70B-Instruct
BetterV4qwen2.5-coder-3b-instruct
BetterV5cerebras/qwen-3-235b-a22b-instruct-2507
BetterV7qwen2.5-coder-7b-instruct
BetterV8openai/gpt-4.1
BetterV9anthropic/claude-opus-4-7
WorseV12openai/gpt-4o
BetterComments
Our grader said what it said. What do you say? Comment as a guest below.
No comments yet. Be the first to say what you make of this round.