@officexapp/vidfarm-devcli 0.21.61 → 0.21.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/dollarplatoon-skill/SKILL.md +163 -1174
- package/.agents/skills/dollarplatoon-skill/SOURCE.md +62 -0
- package/.agents/skills/dollarplatoon-skill/skill/clients.md +234 -0
- package/.agents/skills/dollarplatoon-skill/skill/feeds.md +326 -0
- package/.agents/skills/dollarplatoon-skill/skill/gigs.md +395 -0
- package/.agents/skills/dollarplatoon-skill/skill/gigworkers.md +324 -0
- package/.agents/skills/dollarplatoon-skill/skill/orders.md +573 -0
- package/.agents/skills/dollarplatoon-skill/skill/payouts.md +234 -0
- package/.agents/skills/dollarplatoon-skill/skill/platform.md +174 -0
- package/.agents/skills/dollarplatoon-skill/skill/prices.md +75 -0
- package/.agents/skills/dollarplatoon-skill/skill/pricing-and-tags.md +255 -0
- package/.agents/skills/dollarplatoon-skill/skill/proofs.md +555 -0
- package/.agents/skills/dollarplatoon-skill/skill/queue.md +404 -0
- package/.agents/skills/dollarplatoon-skill/skill/quickstart.md +191 -0
- package/.agents/skills/dollarplatoon-skill/skill/staging.md +178 -0
- package/.agents/skills/dollarplatoon-skill/skill/tasks.md +588 -0
- package/.agents/skills/dollarplatoon-skill/skill/web-pages.md +586 -0
- package/.agents/skills/vidfarm/SKILL.md +3 -3
- package/.agents/skills/vidfarm/references/core-workflows.md +39 -0
- package/SKILL.director.md +42 -3
- package/SKILL.md +3 -1
- package/clipper.md +20 -0
- package/dist/src/cli.js +50 -6
- package/dist/src/devcli/delivery-seal.js +119 -0
- package/dist/src/devcli/marketplace-console.js +1253 -0
- package/dist/src/devcli/marketplace-gigs.js +162 -16
- package/marketplace.md +275 -1
- package/package.json +28 -3
- package/public/assets/homepage-client-app.js +13 -13
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Payouts, wallets, and the event ledger
|
|
2
|
+
|
|
3
|
+
How an approved proof becomes USDC in a wallet, and how to tell whether it actually did.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- Routes
|
|
8
|
+
- The fee
|
|
9
|
+
- Trigger a rollup
|
|
10
|
+
- The rollup flow, step by step
|
|
11
|
+
- **How to tell whether a proof was really paid**
|
|
12
|
+
- Failed rollups repair themselves
|
|
13
|
+
- Wallets
|
|
14
|
+
- The event ledger
|
|
15
|
+
- Profiles
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Routes
|
|
20
|
+
|
|
21
|
+
| Method | Path | Auth | Description |
|
|
22
|
+
|--------|------|------|-------------|
|
|
23
|
+
| POST | `/gigs/:id/rollups` | Owner | Pay out approved proofs now |
|
|
24
|
+
| GET | `/gigs/:id/rollups` | Yes | Rollups for one gig |
|
|
25
|
+
| GET | `/rollups/mine` | Yes | Rollups across all your mailboxes |
|
|
26
|
+
| POST | `/wallets` | Yes | Create a wallet alias |
|
|
27
|
+
| GET | `/wallets` | Yes | List your wallet aliases |
|
|
28
|
+
| GET | `/wallets/:alias_id/balances` | Yes | On-chain ETH + USDC |
|
|
29
|
+
| POST | `/wallets/:alias_id/transfer` | Yes | Send USDC from your hot wallet |
|
|
30
|
+
| DELETE | `/wallets/:alias_id` | Yes | Delete an alias |
|
|
31
|
+
| GET | `/reputation/:wallet/events` | No | Raw event ledger for one wallet |
|
|
32
|
+
| PATCH | `/profiles/me` | Yes | Update your profile |
|
|
33
|
+
| GET | `/profiles/:identifier` | No | Public profile |
|
|
34
|
+
|
|
35
|
+
## The fee
|
|
36
|
+
|
|
37
|
+
| Event | Fee | Detail |
|
|
38
|
+
|-------|-----|--------|
|
|
39
|
+
| Client deposits USDC | 0% | No deposit fee |
|
|
40
|
+
| Gigworker payout | 10% **on top** | The worker receives the full gross; the fee is charged additionally from the gig balance |
|
|
41
|
+
|
|
42
|
+
A worker earning $10 costs the gig $11. **Budget 110% of expected payouts when funding.**
|
|
43
|
+
|
|
44
|
+
> **An order machine charges the fee the other way round, and this is the easiest thing on the
|
|
45
|
+
> platform to get wrong.** On an `inbound_order` gig the buyer deposits `D` and the vendor
|
|
46
|
+
> receives `floorToCent(D ÷ 1.1)` — the fee comes **out of** the deposit, because a vending
|
|
47
|
+
> machine charges what the sticker says. $0.50 pays the vendor $0.45. Never round instead of
|
|
48
|
+
> flooring (it overdraws and the payout reverts), never compute it in floating dollars
|
|
49
|
+
> (`3.30/1.1` shorts a cent), and never hardcode the `1.1` — read `fee_bps` from
|
|
50
|
+
> `GET /gigs/:id`. Full arithmetic in
|
|
51
|
+
> [orders.md](https://dollarplatoon.com/skill/orders.md).
|
|
52
|
+
|
|
53
|
+
Other money rules that follow from the contract:
|
|
54
|
+
|
|
55
|
+
- **Fund isolation** — each gig has its own on-chain balance. One gig's funds can never pay
|
|
56
|
+
another's workers.
|
|
57
|
+
- **No withdrawal** — once deposited, USDC leaves a gig only as a worker payout.
|
|
58
|
+
- **No debt** — a rollup pre-checks `available_funds >= gross + fee` and fails entirely otherwise.
|
|
59
|
+
- **Price lock** — the amount is fixed when the proof is submitted, so a mid-gig price change
|
|
60
|
+
cannot reduce work already done.
|
|
61
|
+
- **Minimum payout** — `min_payout` per gig (default `$0`). Anything below it accumulates.
|
|
62
|
+
|
|
63
|
+
## Trigger a rollup
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
POST /gigs/:id/rollups
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"rollups": [
|
|
72
|
+
{ "id": "ROLLUP_...", "mailbox_id": "MBX_...", "wallet_address": "0x...",
|
|
73
|
+
"proof_ids": ["PROOF_a", "PROOF_b"],
|
|
74
|
+
"paid_proof_ids": ["PROOF_a"],
|
|
75
|
+
"gross_amount": 5.00, "platform_fee": 0.50, "net_amount": 5.00,
|
|
76
|
+
"tx_hash": "0x...", "status": "paid", "settled_by_reconciliation": false }
|
|
77
|
+
],
|
|
78
|
+
"available_funds": 44.50,
|
|
79
|
+
"retried_stuck": 1,
|
|
80
|
+
"skipped_below_minimum": [ { "mailbox_id": "MBX_...", "amount": 0.50 } ]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Groups approved and `timeout_approved` proofs by mailbox. A daily cron does the same thing
|
|
85
|
+
automatically — the manual call is for paying immediately.
|
|
86
|
+
|
|
87
|
+
Returns `400` if the gig cannot cover the total including the fee.
|
|
88
|
+
|
|
89
|
+
**Before creating anything, this route settles any rollup left unsettled by an earlier run.**
|
|
90
|
+
`retried_stuck` counts those, and they appear in `rollups` alongside new ones. A response with
|
|
91
|
+
`retried_stuck` set and an otherwise empty `rollups` list means old payouts were repaired and
|
|
92
|
+
there was no new work to pay.
|
|
93
|
+
|
|
94
|
+
**Read `paid_proof_ids`, not `proof_ids`, to learn what a rollup paid for.** `proof_ids` also
|
|
95
|
+
carries the mailbox's *rejected* proofs, swept in only so they stop being reconsidered on every
|
|
96
|
+
future run. Nobody was paid for those. Rollups created before this distinction existed have no
|
|
97
|
+
`paid_proof_ids` — on those, check each proof's own `status`.
|
|
98
|
+
|
|
99
|
+
## The rollup flow, step by step
|
|
100
|
+
|
|
101
|
+
1. The client triggers `POST /gigs/:id/rollups`, or the daily cron runs.
|
|
102
|
+
2. Approved proofs are grouped by mailbox and `locked_price` is summed. An approved proof that
|
|
103
|
+
somehow arrives still unpriced is summed at the **gig price**, never at `$0`.
|
|
104
|
+
3. Mailboxes below `min_payout` are skipped and reported in `skipped_below_minimum`.
|
|
105
|
+
4. Pre-check: `gross_amount + platform_fee <= available_funds`. Underfunded fails with `400`.
|
|
106
|
+
5. The contract's `payout(gig_id, wallet, gross_amount, rollup_id)` is called on Base.
|
|
107
|
+
6. On success: `tx_hash` stored, status `paid`, **`paid_out_at` stamped on every proof in
|
|
108
|
+
`paid_proof_ids`**, and a reputation event created.
|
|
109
|
+
7. On failure: status `failed`. The next run asks the **chain** whether that payout actually
|
|
110
|
+
landed. If it did, the rollup is corrected to `paid` without sending anything. If it did not,
|
|
111
|
+
it is sent again. This repeats until it settles.
|
|
112
|
+
|
|
113
|
+
On an **order machine** three things in that sequence differ. **Either party** may trigger step 1
|
|
114
|
+
— a participant settles only their own orders, because the proof set is narrowed to the tasks
|
|
115
|
+
their own deposits funded. Proofs are grouped by **(mailbox, task)** rather than by mailbox, since
|
|
116
|
+
one machine has one mailbox and a single rollup naming every buyer's order would revert in full if
|
|
117
|
+
any one deposit had been withdrawn. And the payout names its deposits rather than drawing on the
|
|
118
|
+
shared pot, so it is chunked at the contract's batch ceiling. Everything from step 6 onwards —
|
|
119
|
+
`paid_out_at`, the released `private_note` — is identical.
|
|
120
|
+
|
|
121
|
+
## How to tell whether a proof was really paid
|
|
122
|
+
|
|
123
|
+
**Check `proof.paid_out_at`.** It is set only when money actually moved on chain for that proof.
|
|
124
|
+
If you are automating "have I been paid", build on this field and nothing else.
|
|
125
|
+
|
|
126
|
+
Three things that look like payment and are not:
|
|
127
|
+
|
|
128
|
+
- **`rollup.status === "paid"` is not sufficient.** A rollup with `gross_amount: 0` is written
|
|
129
|
+
straight to `paid` with no transaction at all. Those exist only to clear rejected proofs off the
|
|
130
|
+
queue. "Paid" there means "settled", not "the worker was paid".
|
|
131
|
+
- **A missing `tx_hash` does not mean unpaid.** When a payout confirms after the process that sent
|
|
132
|
+
it has died, the hash is lost with it. The next run detects the payment on chain and records the
|
|
133
|
+
rollup as `paid` with `tx_hash: null` and `settled_by_reconciliation: true`. The worker holds
|
|
134
|
+
the USDC; only the receipt is missing. **Do not resend against these.**
|
|
135
|
+
- **`proof.status === "approved"` only means the client accepted the work.** Payment follows
|
|
136
|
+
separately, on the next rollup, and can wait on `min_payout` or on the gig being funded.
|
|
137
|
+
|
|
138
|
+
Proofs approved before `paid_out_at` existed were backfilled, so historical proofs carry it too. A
|
|
139
|
+
proof with no `paid_out_at` and an `approved` status is simply awaiting its rollup.
|
|
140
|
+
|
|
141
|
+
## Failed rollups repair themselves
|
|
142
|
+
|
|
143
|
+
**Never re-create a failed rollup by hand.** The daily cron retries it, reusing the *same* rollup,
|
|
144
|
+
until it settles — and it checks the chain first, so nobody is paid twice and nobody is skipped.
|
|
145
|
+
|
|
146
|
+
**A slow confirmation looks exactly like a failure.** A payout that takes longer than 20 seconds
|
|
147
|
+
to confirm is recorded `failed` and the owner is emailed, even though the transaction may land
|
|
148
|
+
moments later. The next run detects it and corrects the record to `paid`.
|
|
149
|
+
|
|
150
|
+
Treat a single `failed` rollup as "not settled yet", never as "lost". Triggering another payout
|
|
151
|
+
for the same proofs is how you pay twice. Nothing is required from the worker either — an approved
|
|
152
|
+
proof is never dropped.
|
|
153
|
+
|
|
154
|
+
## Wallets
|
|
155
|
+
|
|
156
|
+
Every account has a wallet on Base L2 holding USDC (for payments) and a little ETH (for gas).
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
POST /wallets { "label": "My Hot Wallet", "is_hot_wallet": true }
|
|
160
|
+
POST /wallets { "label": "My MetaMask", "is_hot_wallet": false, "evm_address": "0x..." }
|
|
161
|
+
|
|
162
|
+
GET /wallets/:alias_id/balances
|
|
163
|
+
→ { "evm_address": "0x...", "eth_balance": "0.05", "usdc_balance": "100.000000" }
|
|
164
|
+
|
|
165
|
+
POST /wallets/:alias_id/transfer { "to_address": "0x...", "amount": 50 } // hot wallets only
|
|
166
|
+
→ { "tx_hash": "0x..." }
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
One hot wallet per account; external wallets are unlimited.
|
|
170
|
+
|
|
171
|
+
- **Gas is your responsibility.** Without ETH your wallet cannot send transactions. Base fees are
|
|
172
|
+
fractions of a cent, so ~0.001 ETH covers many.
|
|
173
|
+
- **Managed versus external.** A hot wallet is generated and its key stored encrypted, and it is
|
|
174
|
+
recoverable through your account. An external wallet is full self-custody — **lose the keys and
|
|
175
|
+
the funds are gone permanently.**
|
|
176
|
+
- Changing the payout address on a mailbox affects **future rollups only**. See
|
|
177
|
+
[gigs.md](https://dollarplatoon.com/skill/gigs.md).
|
|
178
|
+
|
|
179
|
+
## The event ledger
|
|
180
|
+
|
|
181
|
+
Dollar Platoon does not score participants. There are no ratings, no star reviews, and no
|
|
182
|
+
reputation thresholds. It settles payments and records what happened, and the record is what it
|
|
183
|
+
publishes.
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
GET /reputation/:wallet/events
|
|
187
|
+
→ { "events": [ { "id": "REPEVENT_...", "event_type": "proof_approved", "gig_id": "GIG_...",
|
|
188
|
+
"proof_id": "PROOF_...", "wallet_address": "0x...",
|
|
189
|
+
"metadata": { "amount": 2.50, "rejection_tag": null },
|
|
190
|
+
"timestamp": "2026-08-28T10:04:11.238Z" } ] }
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
| Event type | Written when |
|
|
194
|
+
|---|---|
|
|
195
|
+
| `proof_submitted` | A worker sends a proof |
|
|
196
|
+
| `proof_approved` / `proof_rejected` | A client rules on one. `metadata.rejection_tag` carries the reason |
|
|
197
|
+
| `proof_reported` | A client reports a proof |
|
|
198
|
+
| `payout_completed` | A rollup paid, with the amount |
|
|
199
|
+
| `gig_created` / `gig_closed` | A gig opened or closed |
|
|
200
|
+
| `order_withdrawn` | An `inbound_order` deposit was undone, and by which side |
|
|
201
|
+
|
|
202
|
+
- **Facts, not opinions.** The ledger says what settled. Whether that makes somebody worth hiring
|
|
203
|
+
is a judgement the platform does not make for you.
|
|
204
|
+
- **Append-only.** A changed verdict writes a NEW event rather than overwriting the old one, so a
|
|
205
|
+
correction stays visible as a correction. A reader that wants one verdict per proof takes the
|
|
206
|
+
latest by timestamp.
|
|
207
|
+
- **Wallet-anchored, and scoped to one wallet.** This route never merges addresses. An account may
|
|
208
|
+
hold several wallets, and deciding which belong together is an identity question the route has
|
|
209
|
+
no authority to answer — read each address and merge them yourself if that is what you want.
|
|
210
|
+
- **Permissionless to read.** No authentication.
|
|
211
|
+
|
|
212
|
+
**Before joining a gig**, read the owner's events and check the gig's `available_funds`. There is
|
|
213
|
+
no dispute resolution and no score standing in for one: judge the history yourself.
|
|
214
|
+
|
|
215
|
+
### Building a rating on top
|
|
216
|
+
|
|
217
|
+
Ratings, rankings and review systems are welcome — as third-party apps over this ledger, not as
|
|
218
|
+
platform features. The settlement record is the honest input to any of them, and it is the thing
|
|
219
|
+
only this platform can publish.
|
|
220
|
+
|
|
221
|
+
There was previously a star-review system (`POST /gigs/:id/reviews`, `GET /reputation/:wallet/reviews`,
|
|
222
|
+
`PATCH /reviews/:id/resolve`) and a computed score (`GET /reputation/:wallet`, returning volume,
|
|
223
|
+
quality, recency and social). **All of those endpoints are gone and now answer 404.** So are the
|
|
224
|
+
`min_rep_volume` / `min_rep_quality` / `min_rep_recency` join gates on a gig.
|
|
225
|
+
|
|
226
|
+
## Profiles
|
|
227
|
+
|
|
228
|
+
```json
|
|
229
|
+
PATCH /profiles/me
|
|
230
|
+
{ "display_name": "John Doe", "bio": "Experienced social media marketer", "avatar_url": "https://..." }
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
`GET /profiles/:identifier` is public, by email or wallet alias id.
|
|
234
|
+
`GET /profiles/:identifier/private` needs a shared gig relationship.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# How the platform works, and the terms of using it
|
|
2
|
+
|
|
3
|
+
Background for decisions the API surface does not explain on its own.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- What this is, and what it is not
|
|
8
|
+
- The basic flow
|
|
9
|
+
- Wallets and gas
|
|
10
|
+
- The treasury contract
|
|
11
|
+
- Security tokens
|
|
12
|
+
- Third-party publisher apps
|
|
13
|
+
- Composability — what is pluggable
|
|
14
|
+
- Trust and validation
|
|
15
|
+
- AI agents are welcome
|
|
16
|
+
- As-is risk, liability, prohibited uses
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## What this is, and what it is not
|
|
21
|
+
|
|
22
|
+
Dollar Platoon is composable on-chain task payroll for **private** peer-to-peer work networks. It
|
|
23
|
+
handles the payroll layer and nothing else: distribution, proof collection, settlement, payment.
|
|
24
|
+
|
|
25
|
+
**It is not a marketplace.** There is no public board of gigs — `GET /gigs` returns `410`. Every
|
|
26
|
+
gig is a private network reached by an invite link. Discovery, when it happens, is through a
|
|
27
|
+
[feed](https://dollarplatoon.com/skill/feeds.md), which is itself invite-only.
|
|
28
|
+
|
|
29
|
+
**There is no dispute resolution.** No funds can be reversed, no arbitration exists, and no
|
|
30
|
+
support ticket will move money. Nor is there a score standing in for one: the platform publishes
|
|
31
|
+
what happened and leaves the judgement to you.
|
|
32
|
+
|
|
33
|
+
It is built for high volume and low ticket size, with no upper limit on price.
|
|
34
|
+
|
|
35
|
+
## The basic flow
|
|
36
|
+
|
|
37
|
+
1. A client creates a gig with terms, a price per task, and USDC funding.
|
|
38
|
+
2. Gigworkers join through the client's invite link and each get a personal mailbox.
|
|
39
|
+
3. Tasks are distributed to mailboxes by webhook or email — or held in a queue workers poll.
|
|
40
|
+
4. Gigworkers submit proofs of completed work.
|
|
41
|
+
5. The client approves or rejects each proof, or the review timeout approves it automatically.
|
|
42
|
+
6. Approved proofs are batched into rollups and paid out in USDC on Base L2.
|
|
43
|
+
|
|
44
|
+
An **order machine** runs steps 1–5 backwards: the gig owner is the vendor doing the work, an
|
|
45
|
+
outside participant sends and funds each task, and only that participant may approve it. Step 6 is
|
|
46
|
+
unchanged. See [orders.md](https://dollarplatoon.com/skill/orders.md).
|
|
47
|
+
|
|
48
|
+
## Wallets and gas
|
|
49
|
+
|
|
50
|
+
Every account has a wallet on **Base** (an Ethereum Layer 2). It holds USDC for payments and a
|
|
51
|
+
little ETH for gas.
|
|
52
|
+
|
|
53
|
+
- **Gas is your responsibility.** Without ETH your wallet cannot send a transaction — deposit,
|
|
54
|
+
transfer, or payout. Base fees are fractions of a cent, so roughly 0.001 ETH covers many.
|
|
55
|
+
- **Managed or external.** A managed (hot) wallet is generated for you with its key stored
|
|
56
|
+
encrypted, and it is recoverable through your account. An external wallet is full self-custody.
|
|
57
|
+
- **No recovery on external wallets.** Lose those private keys and the funds are gone permanently.
|
|
58
|
+
|
|
59
|
+
## The treasury contract
|
|
60
|
+
|
|
61
|
+
A single treasury contract on Base handles USDC deposits and payouts. Everything else — the
|
|
62
|
+
event ledger, distribution, proof review — lives off-chain.
|
|
63
|
+
|
|
64
|
+
| Event | Fee |
|
|
65
|
+
|-------|-----|
|
|
66
|
+
| Client deposits USDC | 0% |
|
|
67
|
+
| Gigworker payout | 10% charged **on top** of the worker's amount |
|
|
68
|
+
| Order machine payout | 10% taken **out of** the buyer's deposit |
|
|
69
|
+
|
|
70
|
+
A worker earning $10 costs the gig $11. Budget **110%** of expected payouts. An order machine is
|
|
71
|
+
the exception in both directions: a $0.50 order pays the vendor $0.45, and the buyer pays exactly
|
|
72
|
+
the sticker price. See [orders.md](https://dollarplatoon.com/skill/orders.md).
|
|
73
|
+
|
|
74
|
+
- **Fund isolation** — each gig has its own on-chain balance; one gig can never pay another's
|
|
75
|
+
workers.
|
|
76
|
+
- **No withdrawal** — once deposited, USDC leaves a gig only as a worker payout. There is no
|
|
77
|
+
withdrawal function. **The one exception is an order machine's per-order escrow**, which either
|
|
78
|
+
party may return to the buyer up until the delivery is approved. That is a named deposit with a
|
|
79
|
+
named depositor, not the shared pot, and it is the only reversal anywhere on this platform.
|
|
80
|
+
- **Price lock** — the amount is fixed when the proof is submitted, so a mid-gig price change
|
|
81
|
+
cannot reduce work already done.
|
|
82
|
+
- **Auto-approve timeout** — an unreviewed proof is approved after `review_timeout`, which
|
|
83
|
+
protects workers from a client who disappears.
|
|
84
|
+
- **No debt** — a rollup pre-checks available funds and fails rather than going negative.
|
|
85
|
+
- **Minimum payout** — configurable per gig, default `$0`. Smaller amounts accumulate.
|
|
86
|
+
|
|
87
|
+
## Security tokens
|
|
88
|
+
|
|
89
|
+
Every gig has a 6-character token embedded in its inbound email address and webhook URL, so
|
|
90
|
+
knowing a gig id is not enough to inject tasks.
|
|
91
|
+
|
|
92
|
+
- Email: `{gig_id}_{token}.dollar-platoon@fwd.zoomgtm.com`
|
|
93
|
+
- Webhook: `/inbound/webhook/{gig_id}?token={token}`
|
|
94
|
+
- Requests without a valid token get `403`.
|
|
95
|
+
- Rotate with `POST /gigs/:id/rotate-token`. **Rotation invalidates the old address, the old
|
|
96
|
+
webhook, and every Insert Task link at once** — update your integrations immediately.
|
|
97
|
+
- Gigs created before tokens existed accept all inbound requests until you generate one.
|
|
98
|
+
|
|
99
|
+
## Third-party publisher apps
|
|
100
|
+
|
|
101
|
+
Dollar Platoon does not control task content or delivery. Tasks are generated and delivered by
|
|
102
|
+
third-party publisher apps, or manually by clients, to the token-protected endpoints above.
|
|
103
|
+
|
|
104
|
+
**The platform has no control over what a publisher sends.** Clients are solely responsible for
|
|
105
|
+
choosing and configuring their publishers. Gigworkers should read gig terms carefully before
|
|
106
|
+
joining.
|
|
107
|
+
|
|
108
|
+
## Composability — what is pluggable
|
|
109
|
+
|
|
110
|
+
The payroll layer is fixed. Everything around it is yours:
|
|
111
|
+
|
|
112
|
+
| Layer | Your options |
|
|
113
|
+
|---|---|
|
|
114
|
+
| Task generation | Any publisher app, email client, or manual workflow |
|
|
115
|
+
| Task delivery | Webhook, email forwarding, or both |
|
|
116
|
+
| Proof validation | Manual review, `proof_webhook_url` automation, an AI agent, or timeout auto-approval |
|
|
117
|
+
| Distribution | Round robin, random, priority weighted, free-for-all, shared queue, solo queue, or inbound proof |
|
|
118
|
+
| Access control | An invite link per gig, optionally email-bound, optionally owner-approved |
|
|
119
|
+
|
|
120
|
+
Common extensions people build:
|
|
121
|
+
|
|
122
|
+
- **Agent task delivery** — push dual-format HTML so humans get a clean UI and agents get
|
|
123
|
+
structured JSON from the same payload. See [tasks.md](https://dollarplatoon.com/skill/tasks.md).
|
|
124
|
+
- **Agent review** — route `proof_webhook_url` to your own model for automated quality checks.
|
|
125
|
+
- **Custom validation** — webhook handlers that check proofs against external data.
|
|
126
|
+
- **Agent gigworking** — set a `webhook` on your mailbox when joining; your agent receives tasks,
|
|
127
|
+
does them, and submits proofs autonomously.
|
|
128
|
+
|
|
129
|
+
## Trust and validation
|
|
130
|
+
|
|
131
|
+
Trust is earned, not granted. The platform gives you a settlement record, not a verdict on
|
|
132
|
+
anybody. Read it and decide for yourself.
|
|
133
|
+
|
|
134
|
+
**As a client:** review proofs carefully; use rejection tags honestly, because they are the only
|
|
135
|
+
signal other clients get; choose who you invite, since the invite is the only gate; configure a
|
|
136
|
+
proof webhook for automated validation; consider `requires_approval` for new members.
|
|
137
|
+
|
|
138
|
+
**As a gigworker:** read the client's event history at `GET /reputation/:wallet/events` before
|
|
139
|
+
joining — what they have approved, rejected and paid; check the gig's `available_funds`, because
|
|
140
|
+
an unfunded gig can approve work it cannot pay; understand the `review_timeout` you are agreeing
|
|
141
|
+
to.
|
|
142
|
+
|
|
143
|
+
**Both:** extend validation with your own systems. The webhooks exist for exactly this.
|
|
144
|
+
|
|
145
|
+
## AI agents are welcome
|
|
146
|
+
|
|
147
|
+
Gigworkers are encouraged to bring their own AI agents. Clients know and welcome it — AI-assisted
|
|
148
|
+
work produces higher quality output at more affordable prices, and the platform is designed for
|
|
149
|
+
it.
|
|
150
|
+
|
|
151
|
+
Use AI to draft content, validate proofs, automate submissions, or manage your workflow. The only
|
|
152
|
+
restriction is the prohibited-vertical list below.
|
|
153
|
+
|
|
154
|
+
**For gigworkers:** automate the repetitive parts and spend human effort where it matters. See the
|
|
155
|
+
agent loop in [gigworkers.md](https://dollarplatoon.com/skill/gigworkers.md).
|
|
156
|
+
|
|
157
|
+
**For clients:** route proof webhooks into your own review pipeline. Automated checks cut review
|
|
158
|
+
burden sharply without lowering standards.
|
|
159
|
+
|
|
160
|
+
## As-is risk, liability, prohibited uses
|
|
161
|
+
|
|
162
|
+
**As-is.** Dollar Platoon is provided on an "as-is" and "as-available" basis. ZoomGTM operates it
|
|
163
|
+
as a technology platform only. Smart contracts may contain bugs, blockchain networks may congest,
|
|
164
|
+
private keys can be lost permanently, and counterparties may act in bad faith whatever their
|
|
165
|
+
settlement history shows. This is a permissionless system and all parties participate entirely at
|
|
166
|
+
their own risk and expense.
|
|
167
|
+
|
|
168
|
+
**Liability.** By using Dollar Platoon you irrevocably waive all claims against ZoomGTM and its
|
|
169
|
+
affiliates. No dispute resolution. No warranties. Maximum aggregate liability: $0.
|
|
170
|
+
|
|
171
|
+
**Prohibited uses.** Dollar Platoon may not be used for illegal activity, adult content,
|
|
172
|
+
harassment, money laundering, malware distribution, sanctions circumvention, or high-risk
|
|
173
|
+
financial services. Access may be suspended at any time without notice. See the full Terms of Use
|
|
174
|
+
at [dollarplatoon.com/terms](https://dollarplatoon.com/terms).
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Recommended prices
|
|
2
|
+
|
|
3
|
+
Suggested market rates per task type. **These are suggestions, not rules** — nothing in the API
|
|
4
|
+
enforces them.
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- The rate table
|
|
9
|
+
- Why prices vary
|
|
10
|
+
|
|
11
|
+
**These are suggestions, not requirements.** Prices reflect market supply and demand for delivery. Some tasks are difficult, require real human effort, or involve scarce aged accounts — these command higher prices. Other tasks are simple, highly automated with AI agents, or involve abundant supply — these have lower prices. Set your price based on what the market will bear.
|
|
12
|
+
|
|
13
|
+
| Category | Action | Suggested Price (USDC) |
|
|
14
|
+
|----------|--------|------------------------|
|
|
15
|
+
| **Reddit, Forums & et al** | Post | $1 - $10 |
|
|
16
|
+
| | Comment | $0.10 - $1 |
|
|
17
|
+
| | Upvote | $0.05 - $0.20 |
|
|
18
|
+
| | Account creation | $10 - $50 |
|
|
19
|
+
| **Blogs** | Programmatic SEO article | $0.01 - $0.10 |
|
|
20
|
+
| | Premium blog (Medium, Substack, LinkedIn) | $0.50 - $2 |
|
|
21
|
+
| | Account creation | $2 - $10 |
|
|
22
|
+
| | Backlink | $0.01 - $2 |
|
|
23
|
+
| **X / Twitter / Bluesky / Threads** | Comment | $0.06 - $0.10 |
|
|
24
|
+
| | Follow | $0.05 - $0.50 |
|
|
25
|
+
| | Account creation | $5 - $20 |
|
|
26
|
+
| **Facebook** | Post in group | $0.50 - $2 |
|
|
27
|
+
| | Comment on post | $0.10 - $0.50 |
|
|
28
|
+
| | Account creation | $50 |
|
|
29
|
+
| **Instagram** | Comment | $0.06 - $0.50 |
|
|
30
|
+
| | Follow | $0.10 - $1 |
|
|
31
|
+
| | Like | $0.06 - $0.10 |
|
|
32
|
+
| | Account creation | $20 |
|
|
33
|
+
| **LinkedIn** | Comment | $0.10 - $0.50 |
|
|
34
|
+
| | Post | $1 - $2 |
|
|
35
|
+
| | Account creation | $50 |
|
|
36
|
+
| **TikTok** | Comment | $0.06 - $0.50 |
|
|
37
|
+
| | Post (varies by georegion) | $0.50 - $5 |
|
|
38
|
+
| | Follow | $0.05 - $0.50 |
|
|
39
|
+
| | Like | $0.06 - $0.10 |
|
|
40
|
+
| | Account creation | $10 - $50 |
|
|
41
|
+
| **YouTube** | Like | $0.05 - $0.20 |
|
|
42
|
+
| | Playthrough | $0.10 - $0.50 |
|
|
43
|
+
| | Comment | $0.20 - $0.50 |
|
|
44
|
+
| | Video upload | $1 - $5 |
|
|
45
|
+
| | Account creation | $10 - $20 |
|
|
46
|
+
| **Google Reviews & et al** | Review | $0.50 - $5 |
|
|
47
|
+
| | Account creation | $10 - $30 |
|
|
48
|
+
| **Gmail, Outlook & et al** | Marked not spam | $0.05 - $0.20 |
|
|
49
|
+
| | Account creation | $2 - $5 |
|
|
50
|
+
| **Product Hunt & et al** | Action (upvote, comment, etc.) | $0.25 - $2 |
|
|
51
|
+
| | Account creation | $5 - $20 |
|
|
52
|
+
| **Discord & Telegram** | Group join | $0.50 - $2 |
|
|
53
|
+
| | Message | $0.50 - $1 |
|
|
54
|
+
| **Surveys & et al** | Survey completion | $0.50 - $2 |
|
|
55
|
+
| **ChatGPT, Gemini & et al** | Ask mention | $0.05 - $0.10 |
|
|
56
|
+
| **App Testing & Focus Groups** | Task | $2 - $10 |
|
|
57
|
+
| **Creative Curation** | Submission | $0.10 - $1 |
|
|
58
|
+
| **Creative Creation** | Creative approved | $0.10 - $5 |
|
|
59
|
+
| **Directory Posting** | Signup to post | $0.50 - $2 |
|
|
60
|
+
| **Funnel Spy** | Screen recording | $2 - $5 |
|
|
61
|
+
| **Custom Tasks** | Task (varies by complexity & time) | $0.50 - $5 |
|
|
62
|
+
| **Special Task** | Special task | $3 - $9 |
|
|
63
|
+
|
|
64
|
+
## Why prices vary
|
|
65
|
+
|
|
66
|
+
- **Account scarcity:** Aged, verified accounts on platforms like Facebook and LinkedIn are scarce and expensive to create
|
|
67
|
+
- **Platform difficulty:** Some platforms have aggressive anti-bot detection, making actions harder and more expensive
|
|
68
|
+
- **Georegion:** Tasks targeting specific geographic regions may cost more due to limited local supply
|
|
69
|
+
- **Automation level:** Highly automatable tasks (AI-written SEO articles, bulk likes) are cheaper. Tasks requiring genuine human engagement cost more
|
|
70
|
+
- **Risk:** Actions that risk account suspension (posting in strict subreddits, leaving Google reviews) command a premium
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
Related: set a price per task rather than per gig with
|
|
75
|
+
[pricing-and-tags.md](https://dollarplatoon.com/skill/pricing-and-tags.md).
|