Enrich any dataset with live-web research. CSV in, natural-language columns, cited values out: every cell is a real research call against the live web, with sources one click away.
Built from you-app-template, deployable to Webflow Cloud.
Data enrichment usually means a stale vendor database or a brittle scraping pipeline. This app shows the simpler shape: one research call per cell at lite effort (~5 seconds, about a cent), a plain-language instruction per column, and the source list kept on every value so you can check the work.
- Columns are prompts: "Find the CEO's full name", "Latest funding round and amount", applied to every row with the row's data as context
- Cited cells: click any enriched value to see the sources behind it
- Nothing leaves the browser: the sheet lives in React state and localStorage; there is no server-side storage, and the visitor's API key stays in their browser (BYOK)
- Polite by design: a 3-wide client-side pool drains the queue, backing off and retrying on rate limits, with per-cell retry for stragglers
git clone https://github.com/brainsparker/you-sheets.git
cd you-sheets
npm install
npm run devOpen http://localhost:3000, paste your You.com API key, add an enrichment column to the sample sheet, and hit run.
No key yet? Create one at you.com/platform. New accounts include $100 in API credits.
for each pending cell (3 at a time):
input = column instruction + row data + "answer with only the value"
POST /api/you/v1/research { input, research_effort: "lite" }
cell.value = output.content (cleaned)
cell.sources = output.sources (the receipts)
Two implementation details worth stealing:
- The terse-answer contract lives in the prompt.
liteeffort does not supportoutput_schema(the API returns 422), so the prompt pins the format instead: answer with only the value, or exactlyUnknown. SeecellPrompt()insrc/lib/sheet-model.ts. For schema-enforced extraction at higher effort (and cost), see you-company-researcher. - Concurrency is capped client-side (3 workers, jittered backoff, two retries on 429) in
src/lib/enrich.ts. Rate limits vary by plan; a low cap keeps batch runs boring and predictable.
Cost math is shown before every run: cells x $0.012 (lite is $12 per 1k requests). A 100-row sheet with two enrichment columns costs about $2.40.
api.you.com does not serve CORS headers, so calls go through the app's locked-down proxy route with per-request key forwarding; nothing is stored server-side.
Key files:
- Fork this repo and push to GitHub.
webflow cloud init: authenticate, pick your site, choose a mount path (for example/demos/sheets).webflow cloud deploy. Every push to the tracked branch auto-deploys after that.
Cell calls are ~5 second lite requests, far inside the platform's 20 second request window, and the pool runs in the browser, so the platform's 6-connection outbound limit per request never applies.
Do not add export const runtime = "edge" to route handlers: Webflow Cloud builds with OpenNext, which rejects edge-runtime routes.
- Start from you-app-template.
- Model your grid client-side and treat each cell as
(instruction, row context). - Run cells through a small pool with
research(apiKey, { input, research_effort: "lite" }). - Keep
output.sourceson every value; enrichment without receipts is just guessing.
MIT. See LICENSE.
