# properties.providerId.description
Id of the Provider offering this opportunity.

# properties.geo.properties.countries.items.description
ISO 3166-1 alpha-2 country code, e.g. US, IN.

# properties.geo.properties.countries.description
Countries where the opportunity is offered. Empty means worldwide or unknown; see eligibility.

# properties.geo.properties.regions.description
States, provinces, or regions, when limited.

# properties.eligibility.properties.equipment.description
Equipment the earner must supply, e.g. "smartphone", "insulated bag".

# properties.eligibility.properties.credentials.description
Licenses, certifications, or degrees required.

# properties.eligibility.properties.backgroundCheck.description
Whether a background check is required; null when not stated.

# properties.eligibility.properties.countries.items.description
ISO 3166-1 alpha-2 country code, e.g. US, IN.

# properties.eligibility.properties.countries.description
Countries of residence accepted, when they differ from geo.countries.

# properties.payEvidence.items.properties.p25.description
25th percentile in minor units; null when not reported.

# properties.payEvidence.items.properties.p50.description
Median in minor units; null when not reported.

# properties.payEvidence.items.properties.p90.description
90th percentile in minor units; null when not reported.

# properties.payEvidence.items.properties.n.description
Sample size; null when the source does not state one.

# properties.payEvidence.items.properties.periodStart.description
First day of the period the figures cover.

# properties.payEvidence.items.properties.periodEnd.description
Last day of the period the figures cover.

# properties.payEvidence.items.properties.sourceId.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.payEvidence.items.description
A pay distribution from one source: money in minor units, never a prediction.

# properties.payEvidence.description
Pay distributions with sources. Empty until evidence exists; never estimated.

# properties.feeSchedule.items.properties.value.description
Fee amount: basis points when unit is basis_points, minor units of `currency` when unit is minor_units.

# properties.feeSchedule.items.properties.unit.description
How `value` is expressed: basis points of the base, or minor units of `currency`.

# properties.feeSchedule.items.properties.minimum.description
Floor applied to a percent fee ("10% or $5, whichever is greater").

# properties.feeSchedule.items.properties.minimum.properties.amountMinor.description
Amount in minor units (cents, paise). Integer; never a float.

# properties.feeSchedule.items.properties.appliesTo.description
What the fee applies to, e.g. "fixed-price project earnings", "each withdrawal via PayPal".

# properties.feeSchedule.items.properties.sourceId.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.feeSchedule.items.description
One published fee. Value is an integer; the unit says whether it is basis points or minor units.

# properties.payoutTerms.anyOf[].properties.minimumPayout.anyOf[].properties.amountMinor.description
Amount in minor units (cents, paise). Integer; never a float.

# properties.payoutTerms.anyOf[].properties.minimumPayout.anyOf[].description
An amount of money: integer minor units plus ISO 4217 currency.

# properties.payoutTerms.anyOf[].properties.minimumPayout.description
Minimum balance before a payout is allowed; null when none or unknown.

# properties.payoutTerms.anyOf[].properties.delayDays.description
Days between earning and availability for withdrawal; null when not stated.

# properties.payoutTerms.anyOf[].properties.methods.description
Payout methods, e.g. "PayPal", "bank transfer", "Payoneer".

# properties.payoutTerms.anyOf[].properties.instantPayFee.anyOf[].properties.amountMinor.description
Amount in minor units (cents, paise). Integer; never a float.

# properties.payoutTerms.anyOf[].properties.instantPayFee.anyOf[].description
An amount of money: integer minor units plus ISO 4217 currency.

# properties.payoutTerms.anyOf[].properties.instantPayFee.description
Fee for an instant or express payout; null when none or unknown.

# properties.payoutTerms.anyOf[].properties.sourceId.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.payoutTerms.description
Payout terms; null when not yet documented.

# properties.onboardingCost.anyOf[].properties.unpaidHours.description
Unpaid hours spent on onboarding, tests, or training; null when not stated.

# properties.onboardingCost.anyOf[].properties.upfrontFees.anyOf[].properties.amountMinor.description
Amount in minor units (cents, paise). Integer; never a float.

# properties.onboardingCost.anyOf[].properties.upfrontFees.anyOf[].description
An amount of money: integer minor units plus ISO 4217 currency.

# properties.onboardingCost.anyOf[].properties.upfrontFees.description
Fees due before earning anything; null when none or unknown.

# properties.onboardingCost.anyOf[].properties.equipmentCost.anyOf[].properties.amountMinor.description
Amount in minor units (cents, paise). Integer; never a float.

# properties.onboardingCost.anyOf[].properties.equipmentCost.anyOf[].description
An amount of money: integer minor units plus ISO 4217 currency.

# properties.onboardingCost.anyOf[].properties.equipmentCost.description
Typical cost of required equipment; null when none or unknown.

# properties.onboardingCost.anyOf[].properties.sourceId.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.onboardingCost.description
Onboarding cost; null when not yet documented.

# properties.stability.properties.taskAvailabilitySignal.description
Whether there is usually work available.

# properties.stability.properties.observedDeactivationRate.anyOf[].description
Percentage in basis points (10000 = 100%).

# properties.stability.properties.observedDeactivationRate.description
Share of earners deactivated per year, in basis points; null when unknown.

# properties.stability.properties.reportedUnpaidWorkIncidents.description
Count of reported unpaid-work incidents in the period; null when unknown.

# properties.stability.properties.sourceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.stability.description
How dependable the work and the account are.

# properties.riskFlags.items.properties.evidence.properties.sourceId.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.riskFlags.items.properties.evidence.properties.quote.description
Verbatim excerpt from the source that triggered the flag.

# properties.riskFlags.items.properties.evidence.description
The evidence a flag rests on. A flag cannot exist without it.

# properties.riskFlags.items.properties.ruleVersion.description
Version of the rule set or curator guideline that raised the flag, e.g. "scam-rules@1.0.0".

# properties.riskFlags.items.description
A scam or reliability signal with the evidence behind it.

# properties.riskFlags.description
Scam and reliability signals, each with evidence.

# properties.agentPostable.description
Whether AI agents may post or apply on behalf of a principal.

# properties.postedBy.properties.principalProofId.description
Proof id of the agent's human principal when posted by an agent.

# properties.postedBy.description
Who posted this and, for agents, whose Proof backs them.

# properties.lastVerifiedAt.description
When a curator last confirmed the record against its sources.

# properties.scorecard.anyOf[].properties.pay.properties.score.description
0–100, or null when there is insufficient evidence.

# properties.scorecard.anyOf[].properties.pay.properties.confidence.description
Confidence in the score: high, medium, low, or insufficient.

# properties.scorecard.anyOf[].properties.pay.properties.evidenceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.scorecard.anyOf[].properties.pay.description
Pay: median net hourly vs. local minimum wage and category median.

# properties.scorecard.anyOf[].properties.fees.properties.score.description
0–100, or null when there is insufficient evidence.

# properties.scorecard.anyOf[].properties.fees.properties.confidence.description
Confidence in the score: high, medium, low, or insufficient.

# properties.scorecard.anyOf[].properties.fees.properties.evidenceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.scorecard.anyOf[].properties.fees.description
Fees: total extraction rate including unpaid onboarding.

# properties.scorecard.anyOf[].properties.payout.properties.score.description
0–100, or null when there is insufficient evidence.

# properties.scorecard.anyOf[].properties.payout.properties.confidence.description
Confidence in the score: high, medium, low, or insufficient.

# properties.scorecard.anyOf[].properties.payout.properties.evidenceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.scorecard.anyOf[].properties.payout.description
Payout: frequency, delay, minimum, reliability incidents.

# properties.scorecard.anyOf[].properties.stability.properties.score.description
0–100, or null when there is insufficient evidence.

# properties.scorecard.anyOf[].properties.stability.properties.confidence.description
Confidence in the score: high, medium, low, or insufficient.

# properties.scorecard.anyOf[].properties.stability.properties.evidenceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.scorecard.anyOf[].properties.stability.description
Stability: task availability, deactivation rate, unpaid-work incidents, appeals.

# properties.scorecard.anyOf[].properties.transparency.properties.score.description
0–100, or null when there is insufficient evidence.

# properties.scorecard.anyOf[].properties.transparency.properties.confidence.description
Confidence in the score: high, medium, low, or insufficient.

# properties.scorecard.anyOf[].properties.transparency.properties.evidenceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.scorecard.anyOf[].properties.transparency.description
Transparency: published terms, fees, deactivation policy, pay disclosures.

# properties.scorecard.anyOf[].properties.scamRisk.properties.score.description
0–100, or null when there is insufficient evidence.

# properties.scorecard.anyOf[].properties.scamRisk.properties.confidence.description
Confidence in the score: high, medium, low, or insufficient.

# properties.scorecard.anyOf[].properties.scamRisk.properties.evidenceIds.items.description
Id of a source in the enclosing record's `sources[]`. Every number carries one.

# properties.scorecard.anyOf[].properties.scamRisk.description
Scam risk (inverted: 100 = no signals): risk flags, verification, domain age, complaints.

# properties.scorecard.anyOf[].properties.composite.properties.score.description
Weighted composite 0–100, or null when no dimension has evidence.

# properties.scorecard.anyOf[].properties.composite.properties.partial.description
True when at least one dimension was excluded for insufficient evidence.

# properties.scorecard.anyOf[].properties.composite.properties.weights.properties.pay.description
Percentage in basis points (10000 = 100%).

# properties.scorecard.anyOf[].properties.composite.properties.weights.properties.fees.description
Percentage in basis points (10000 = 100%).

# properties.scorecard.anyOf[].properties.composite.properties.weights.properties.payout.description
Percentage in basis points (10000 = 100%).

# properties.scorecard.anyOf[].properties.composite.properties.weights.properties.stability.description
Percentage in basis points (10000 = 100%).

# properties.scorecard.anyOf[].properties.composite.properties.weights.properties.transparency.description
Percentage in basis points (10000 = 100%).

# properties.scorecard.anyOf[].properties.composite.properties.weights.properties.scamRisk.description
Percentage in basis points (10000 = 100%).

# properties.scorecard.anyOf[].properties.composite.properties.weights.description
Composite weights per dimension in basis points; they sum to 10000.

# properties.scorecard.anyOf[].properties.composite.properties.methodologyVersion.description
Version of the scoring methodology that produced this composite, e.g. "scoring@1.0.0".

# properties.scorecard.anyOf[].properties.composite.description
The weighted composite and how it was computed.

# properties.scorecard.anyOf[].description
Six-dimension scorecard with confidence per dimension and a weighted composite.

# properties.scorecard.description
Scorecard; null before the first computation.

# properties.sources.items.properties.id.description
Source id, referenced by sourceId / sourceIds / evidenceIds elsewhere in the record.

# properties.sources.items.properties.retrievedAt.description
When we fetched it (ISO 8601 date-time).

# properties.sources.items.properties.checksum.description
SHA-256 hex of the retrieved body, when known.

# properties.sources.items.properties.reachability.description
Last link-check result: unchecked, ok, redirected, unreachable, changed.

# properties.sources.items.properties.publishedAt.description
Publication or period date stated by the source itself.

# properties.sources.items.properties.notes.description
Curator notes, typically the verbatim sentences the figures were read from.

# properties.sources.items.description
A cited source: the exact URL, who published it, when we retrieved it, and its last known reachability.

# description
A way to earn on a provider. Every number in it carries a source id.