STUD.com
← Objectives

Build · Create · Analysis & Finance

Compare gig-platform fees and net earnings

For each platform entry: netEarnings = round(grossEarnings * (1 - feeRatePct/100), 2); feeAmount = round(grossEarnings * feeRatePct/100, 2); winner flag on the highest-net platform.

You receive: A pure function computing each platform's fee amount, net earnings, and a highest-net flag (ties all flagged) from gross earnings and fee rates, graded on hidden cases.

Part of Choose Business Model

What's verified: STUD verifies: fee and net arithmetic, winner flag assignment, platform count, rate bounds. STUD does NOT verify: whether the fee rates are current or accurate for the named platforms, whether the gross earnings are achievable, or which platform is truly best for the freelancer's specific situation.

Opens soon

Cost20 credits
AcceptanceAutomated check against your inputs
ProtectionHeld until verified delivery

This objective is verified and ready. It opens soon, once sign-in and payments are live.

Deliverable interface

The exact vocabulary the automated check enforces: keys, tokens, entry points, and worked examples. Generated from the verification source.

{
 "constants": {},
 "entryName": "solve",
 "expectNote": "expect is the comparison-space value (your return value goes through normalize first when one is published)",
 "hiddenCaseCount": 13,
 "hiddenCaseNames": [
  "hd_fractional_rate",
  "hd_full_fee",
  "hd_zero_fee_tie",
  "hd_cents_gross",
  "hd_three_way",
  "gen0",
  "gen1",
  "gen2",
  "gen3",
  "gen4",
  "gen5",
  "gen6",
  "gen7"
 ],
 "inputKeys": [
  "feeRatePct",
  "grossEarningsUsd",
  "isHighestNet",
  "netEarningsUsd",
  "platformName",
  "platforms"
 ],
 "normalizeSource": "def _normalize_gig_platform_fee_impact_register(r):\n    if not isinstance(r, dict):\n        return repr(r)\n    try:\n        return {\"platforms\": [{\"platformName\": str(x[\"platformName\"]), \"feeAmountUsd\": round(float(x[\"feeAmountUsd\"]), 2),\n                               \"netEarningsUsd\": round(float(x[\"netEarningsUsd\"]), 2),\n                               \"isHighestNet\": bool(x[\"isHighestNet\"])} for x in r[\"platforms\"]]}\n    except Exception:\n        return repr(r)\n",
 "returnShapes": [
  [
   "platforms"
  ]
 ],
 "signature": "def solve(inp):",
 "submission": "python exposing the entry function; inp is one input object; graded on held-out cases",
 "tier": "calculator",
 "visibleCases": [
  {
   "expect": {
    "platforms": [
     {
      "feeAmountUsd": 200,
      "isHighestNet": false,
      "netEarningsUsd": 800,
      "platformName": "Upwork"
     },
     {
      "feeAmountUsd": 200,
      "isHighestNet": false,
      "netEarningsUsd": 800,
      "platformName": "Fiverr"
     },
     {
      "feeAmountUsd": 20,
      "isHighestNet": true,
      "netEarningsUsd": 980,
      "platformName": "Decentralized"
     }
    ]
   },
   "input": {
    "platforms": [
     {
      "feeRatePct": 20,
      "grossEarningsUsd": 1000,
      "platformName": "Upwork"
     },
     {
      "feeRatePct": 20,
      "grossEarningsUsd": 1000,
      "platformName": "Fiverr"
     },
     {
      "feeRatePct": 2,
      "grossEarningsUsd": 1000,
      "platformName": "Decentralized"
     }
    ]
   },
   "name": "decentralized_wins"
  },
  {
   "expect": {
    "platforms": [
     {
      "feeAmountUsd": 75,
      "isHighestNet": false,
      "netEarningsUsd": 425,
      "platformName": "A"
     },
     {
      "feeAmountUsd": 0,
      "isHighestNet": true,
      "netEarningsUsd": 500,
      "platformName": "B"
     }
    ]
   },
   "input": {
    "platforms": [
     {
      "feeRatePct": 15,
      "grossEarningsUsd": 500,
      "platformName": "A"
     },
     {
      "feeRatePct": 0,
      "grossEarningsUsd": 500,
      "platformName": "B"
     }
    ]
   },
   "name": "fee_math"
  },
  {
   "expect": {
    "platforms": [
     {
      "feeAmountUsd": 100,
      "isHighestNet": true,
      "netEarningsUsd": 900,
      "platformName": "X"
     },
     {
      "feeAmountUsd": 0,
      "isHighestNet": true,
      "netEarningsUsd": 900,
      "platformName": "Y"
     }
    ]
   },
   "input": {
    "platforms": [
     {
      "feeRatePct": 10,
      "grossEarningsUsd": 1000,
      "platformName": "X"
     },
     {
      "feeRatePct": 0,
      "grossEarningsUsd": 900,
      "platformName": "Y"
     }
    ]
   },
   "name": "tie_both_flagged"
  },
  {
   "expect": {
    "platforms": [
     {
      "feeAmountUsd": 600,
      "isHighestNet": false,
      "netEarningsUsd": 1400,
      "platformName": "Big"
     },
     {
      "feeAmountUsd": 75,
      "isHighestNet": true,
      "netEarningsUsd": 1425,
      "platformName": "Small"
     }
    ]
   },
   "input": {
    "platforms": [
     {
      "feeRatePct": 30,
      "grossEarningsUsd": 2000,
      "platformName": "Big"
     },
     {
      "feeRatePct": 5,
      "grossEarningsUsd": 1500,
      "platformName": "Small"
     }
    ]
   },
   "name": "different_gross"
  }
 ],
 "vocabulary": [
  "feeAmountUsd",
  "feeRatePct",
  "grossEarningsUsd",
  "isHighestNet",
  "netEarningsUsd",
  "platformName",
  "platforms"
 ]
}

Get early access to STUD the day it goes live.