How the misclassification risk check works, and how to read the score
On a contract's page, the Compliance card runs an AI misclassification check — the "Analyze risk" button. It returns a score out of 100 and a Low, Medium or High level, with reasoning. Three runs per contract. It is guidance, not legal advice.
Misclassification is the risk that a worker you engage as a contractor would be treated, under their country's law, as your employee. Flamingo's AI misclassification check gives you a read on that for one contract at a time.
In the app it is the Compliance card on a contractor's contract page, under the heading "Misclassification risk for [name]". The button is Analyze risk, and the dialog it opens is titled Analyze misclassification risk. If you have read the marketing site's "AI misclassification check" and gone looking for that exact phrase in the product, this card is it.
Note
Everything the check produces is an AI-generated assessment for guidance only. The app says so on the card itself: "AI-generated assessment for guidance only — not legal advice." Flamingo is not a legal consultant. Treat a result as a prompt to get advice, never as the advice.
When the check runs
Only when you ask for it. There is no automatic assessment on a new contract — the card's empty state exists precisely because contracts are analyzed on demand (flamingo-frontend/src/app/(pages)/talents/[id]/contracts/[contractId]/ContractDetailComponents.tsx:229-231).
Two things can start it:
- The Analyze risk button on the Compliance card.
- A one-time prompt, "Analyze misclassification risk?", which appears on a contract that has never been analyzed. It has Not now, Analyze now, and a "Don't remind me again" tick box. Dismissing it does not take the button away.
Once a contract has a result, the button becomes Re-analyze, with the number of runs you have left.
You need the permission to manage talent onboarding to run a check. Without it the card still shows a result that exists, but no button appears.
Note
The card is a view of the worker *for you*. It is deliberately not shown on a contractor's own profile surface, so the person being assessed does not see their own score.
What it analyses
Two sets of inputs.
From the contract itself, read automatically:
- The contract type, the job title and the department.
- The worker's country — and, for the United States and Canada only, their state or province, because employment-status law there differs below the national level.
- Your company's country, so cross-border exposure can be flagged.
- The compensation type, the hours per week and the work schedule derived from the schedule template.
- Whether the work is remote.
- The contract's start date, and its end date if it has one.
From the questionnaire, which you fill in when you run the check. Nine questions, each with Yes, No and Skip:
- Does your company direct how the work is done?
- Is the worker required to work set hours you choose?
- May the worker send a substitute to do the work?
- Does the worker actively serve other clients?
- Does the worker set or negotiate their own rate?
- Does the worker receive employee-style benefits?
- Is the role part of your core business?
- Does the worker manage or supervise your staff?
- Who provides the equipment and tools? (Client, Worker, Both or Skip.)
Every question is optional. A skipped question is reported as unanswered rather than guessed as a "no", so skipping is safe — but each answer sharpens the result, and missing information pushes a contract towards the middle of the range rather than either end.
Warning
The full text of the contract is not part of the assessment. The check reasons from the structured fields above and your questionnaire answers. A clause you have written into a custom agreement does not reach it.
Before the Analyze button is enabled you must tick the acknowledgment: "I understand this is an AI-generated assessment for guidance only. Flamingo is not a legal consultant, and this is not legal advice."
Reading the result
A completed assessment shows a level, a score out of 100, the date it was assessed, and written reasoning.
The level is derived from the score — they can never disagree:
| Level | Score | What it means | |---|---|---| | Low | 0–33 | A clear contractor relationship, or a compliant employment arrangement. | | Medium | 34–66 | Mixed signals, or missing information. Flagged as needing legal review. | | High | 67–100 | Strong indicators of misclassification. Flagged as needing action. |
Those bands are the product's own, from flamingo-backend/src/Application.Employees/Commands/AnalyzeContractMisclassificationRisk/AnalyzeContractMisclassificationRiskCommand.cs:52-54 and 242-248.
The reasoning is structured. It opens with a line reading "Legal framework applied:" followed by the statute and classification test used, then explains the factors that drove the score, then closes with concrete changes that would lower it.
Note
The worker's country governs. The check is told explicitly not to substitute another country's test — so a contractor in Germany is not assessed against a US or UK test. Where your company sits in a different country from the worker, the result may additionally flag exposure on your side, such as creating a taxable presence or falling under deemed-employer rules.
Flamingo carries curated guidance — the statutes and the leading classification test — for 38 countries (flamingo-backend/src/Infrastructure/Services/MisclassificationJurisdictionCatalogue.cs). For a country outside that set, the check applies that country's own test from the model's general knowledge and is instructed to say plainly in the reasoning where it is unsure. If a result reads hedged, that is usually why.
What to do with each outcome
- Low. Nothing to act on. Keep the working relationship matching what you answered — a Low score describes how the engagement runs today, not a permanent status.
- Medium. Read the reasoning's closing paragraph. It names the specific changes that would reduce the score: contract terms, how the work is actually run, or moving the person onto an employment arrangement. If the score is Medium because you skipped most of the questionnaire, re-analyze with answers before deciding anything.
- High. Take legal advice in the worker's country before doing anything else. The reasoning will suggest changes, which may include employing the person rather than contracting them — see Contractor vs EOR employee: what's the difference?.
Changing the arrangement and re-analyzing gives you a new score. Changing nothing and re-analyzing will not.
The three-run limit
Each contract can be analyzed three times in total: the first run plus two re-analyses. The cap is enforced on the server, before the model is called, and the button tells you how many you have left.
Once the three are spent, Re-analyze is disabled. A read-only view of the card shows "n of 3 analyses used" instead.
Warning
Spend the runs deliberately. The best use of the first one is with the questionnaire answered as fully and honestly as you can — a run with everything skipped mostly tells you that the information was missing.
If the check fails
The dialog shows the error and the button changes to Retry analysis. A failed attempt is a transient failure of the analysis itself, and retrying may well work.
If the message reads "Analysis limit reached for this contract", retrying will not help — all three runs are used.
If it keeps failing, raise a support request and include the contractor's name and the contract.