One page. Read it top to bottom in about five minutes, or jump to the section you need. There is no separate help centre.
Sign in and choose New run. Paste websites, one per line, up to 50 per run. Assay normalises each line to a domain and lists anything that is not a website instead of dropping it silently.
Write, in plain words, who you want. At least 20 characters. Name the signals that matter: a role being hired, a pricing model, a size band, a market. Three presets are offered as a starting point. There are no filters to configure; the description is the filter.
Before anything is spent, the third step shows the count, the pages to be read, an estimated cost and an estimated time. Both estimates are drawn with a “≈” and come from the last real runs: about $0.05 and 20 seconds a company. The measured cost is written per company as the run goes.
Assay reads one company per request, so nothing times out and progress is saved between requests. Close the tab and reopen the run: it picks itself up. If a request fails it retries with backoff, up to five times, inside a spend ceiling of $5 a run and a wall clock ceiling of 25 minutes. Whatever stops a run, the screen says what stopped it, how far it got and what it cost.
Open any company. Each field shows a value, the sentence the value was read from, and the page that sentence is on. The sentence was searched for in the pages Assay actually fetched, after folding quotes, dashes, spacing and case. If it was found, the field is marked receipt checked. If it was not, the field is marked no receipt and is kept, not hidden.
{ "field": "Hiring signal", "value": "2 SDR roles open", "quote": "We are hiring two Sales Development Representatives", "source_url": acme-analytics.com/careers, "verified": true }
Each company gets a score from 0 to 100 and a verdict: strong, possible or no. A score above 44 needs at least one verified quote behind it; with none, the score is pulled to 40 and the verdict set to no. A company whose website could not be read gets no score at all and is marked unreadable. It does not count against your cap.
Export CSV writes every company and every field, with three extra columns per field: the quote, the source url and the verified flag. Share makes the run public at a read-only link. Anyone with the link sees every receipt; no account is needed. Turn sharing off and the link returns 404 at once.
Send the rows that passed to Make, n8n, Smartlead or anything else that accepts JSON over https. Nothing is stored; you pass the url each time. Private and local addresses are refused before anything is sent.
POST /api/runs/<run id>/push { "webhook_url": "https://hook.make.com/...", "min_score": 70, "verified_only": true }
A receipt is a claim about a page on a day, and pages change. From any finished run: Re-check applies today’s Receipt Rule to the stored text, free. Read again fetches the pages today and checks the stored quotes against them, about $0.0025 a company. A quote that is no longer on the page is marked expired, and a company left with no verified quote flips to unproven.
Each plan reads a set number of companies per calendar month, UTC. The cap is checked when a run starts and again before every company, so a run can never read past it. At the cap the run stops, says so, and the rest stays queued for next month. Your usage is on the billing page. Plans and prices are on the pricing page.