Training round
Pricing
Protocol
Bring dataOpen app

Bring a dataset

Open the app, paste text or pick a file (TXT, Markdown, CSV, JSON, up to 300 KB per upload), set a payout address and submit. You do not need to connect a wallet to upload; you need one to remove a dataset later.

Chunking

Text is split along blank lines into chunks of 60 to 180 words. A Markdown heading is carried into the chunks under it, so each chunk reads on its own. Very long paragraphs are cut at sentence ends.

Embeddings

Each chunk is embedded with potion-base-8M, an open static embedding model (MIT license) distilled from bge-base-en-v1.5: 256 dimensions, unit length, stored as int8. The weights are served at /model/potion-8m.q8.bin with the gzipped vocabulary at /model/vocab.bin. Because the model is static, the same text gives the same vector on any node and in any browser, which makes every node's work checkable by recomputation.

Retrieval

A query is embedded the same way. Its score against a chunk is the cosine similarity plus 0.12 times the share of query words of three letters or more that appear in the chunk. The five best chunks above 0.05 are returned.

Ownership

Every chunk stores its dataset id, and the dataset stores its owner address. The owner is paid by the split each time a paid query returns one of its chunks. The owner can remove the dataset with a signed message; it then stops appearing in results.

API

POST /api/ingest
{ "title": "…", "text": "…", "owner": "0x…", "description": "…", "license": "CC-BY-4.0", "tags": ["…"] }