Quickstart
Build your first Flow end to end — a URL and a sentence, a test run with evidence, corrected fields, a published version, a real run, and the dataset it produced.
Before you start
You need a URL and a sentence describing what you want from it. That is all. There is no code in this guide, no selectors to write, and nothing to install.
A good first target is a public listing page with repeated items on it — a category page, a directory, a jobs board, a product search result. Pick something you already look at by hand, because you will be able to tell immediately whether Ray9 got it right.
Nothing is charged before you see it
Ray9 shows an estimated credit range before a test run and before a real run, and reserves a maximum rather than letting a job run open-ended. Policy is evaluated before any of it. See Credits.
Create your organization
Sign up and name your organization. An organization is your team, your data boundary, your usage, and your integrations — everything you create belongs to it, and access is scoped to it everywhere.
New organizations get a starter credit grant and default safety and budget limits, so you can prove a Flow works before you decide to pay for anything.
Build the Flow
Describe what you want
From the home screen, choose New. You can start from an AI prompt, a quick scrape, a monitoring Flow, a blank guided Flow, or a template.
For this walkthrough, describe the outcome in plain language and paste your URL. Something like:
Every product on this category page, with its name, price, availability, and link.
Ray9 classifies the intent, recommends the lightest path that fits, and tells you what it chose. If it recommends a quick one-off scrape and you wanted a reusable Flow, override it — the recommendation is a suggestion, never an opaque redirect.
Ray9 validates the URL and shows you any policy restriction here, before it costs anything.
Let Ray9 open the page and propose a schema
Ray9 acquires a test page and shows its progress in plain terms — checking the page, opening the page, preparing a sample. It does not make you care which provider or browser it used to get there; that detail is available later, in the evidence panel, if you want it.
It then proposes an extraction schema: a table of example records beside the captured page. Every field has a name, a type, whether it is required, an example value, and a highlight showing the exact region of the page it came from.
Fields that Ray9 is unsure about — inconsistent across items, or ambiguous — are marked for your review rather than quietly guessed.
Correct the fields
This is the part that matters, and it takes a couple of minutes.
- Fix the repeated item first. Ray9 needs to agree with you about what one record is before individual fields make sense. If it has picked the wrong container — a whole section rather than a single product card — correct that before anything else.
- Click a value on the page to map it to a field. Rename fields, change a type, mark a field required or optional, delete the ones you do not want.
- Add validation rules where you know what good looks like: a price must be a number, a link must be a URL, a name must not be empty.
- Add pagination or navigation only once a single page validates. Getting page one right first is faster than debugging twenty pages at once.
Selectors, headers, and route constraints are all available under the advanced sections. You do not need to open them.
Your work autosaves as a draft. You can leave and come back.
Test it, and look at the evidence
Run a test. Ray9 returns real sample data plus the evidence behind it: the captured HTML, a screenshot, and the trace of what it did.
Check the sample honestly:
- Is the record count what you expected from looking at the page yourself?
- Are any required fields missing on some rows?
- Are there invalid values — a price that came back as text, a link that is relative rather than absolute?
- Are there duplicates that should be one record?
Ray9 reports all four separately. Fix what is wrong and test again. Because the capture is retained, repairing a field mapping and re-testing usually does not need another fetch of the page.
Test runs are visually distinct from production runs and use a separate test budget, so experimenting here does not affect anything scheduled.
Publish a version
When the sample is right, publish. Ray9 summarizes what you are committing to: the fields, the navigation steps, the routes the job is eligible for, the page limits, the destination dataset, and the credit range a run is expected to cost.
Add a short change note and publish.
Publishing creates an immutable version. Your editable draft stays where it is, ready for the next change. This separation is the point: a scheduled run in three months will still execute exactly the definition you published today, and any record it produced can be traced back to it.
Run it
Run the published version once, now.
You land on a live run page with a durable status — it survives a refresh, a navigation away, and a closed laptop. It shows elapsed time, items completed so far, the estimated versus actual credits, and a cancel button.
When it finishes, the run leads with the count of valid records. Partial and invalid records are shown separately and are still inspectable. A run that half-worked says so; it never presents itself as complete.
If it did not work, the failure has a name — target_blocked, auth_required, rate_limited, extraction_failed, and so on — along with what Ray9 already tried and what you can do next. See Execution routes for what each category means.
Inspect the dataset
Open the dataset from the run.
The default view is a table of current records — one row per logical item, keyed by a stable record key derived from your fields or the canonical URL. Filter it, sort it, choose which fields to show, and save that view without changing the stored schema.
Expand any row and you get the part that makes this a dataset rather than a file:
- the current values,
- the observation history — every time this record was seen, and what it looked like each time,
- the source evidence — the run, the Flow version, the source URL, the observation time,
- the validation status for that observation.
Export the current view as JSON or CSV. Large exports run as background jobs rather than hanging the page.
Make it operational
You now have a working, published, versioned Flow and a dataset with one run in it. The next step depends on what you actually want:
Put it on a schedule
A cron expression in a named timezone, with an overlap policy and per-run caps. Preview the next occurrences, including daylight-saving changes, before you enable it.
Watch it for changes
Compare normalized values between runs, suppress the noise, and get a timeline of what meaningfully changed.
Deliver the records
Signed webhooks with idempotent event IDs, replay protection, and bounded retries — so a downstream outage never silently loses records.
Drive it from code
The same Flow, the same run, the same records, through the public API, the CLI, or an MCP client.
When you need to change it
Editing a published Flow creates or resumes a draft. It never mutates the version that is already running.
When you publish the new version, Ray9 shows you which schedules are pinned to the old one and asks what you want to do: promote them immediately, promote them at the next scheduled run, or leave them where they are. Rollback repoints a schedule at an earlier version; it does not rewrite history.
That is the whole model. Everything else in these docs is detail on one of its parts.
Introduction
Ray9 is an AI-assisted web data platform. It turns a described outcome into a versioned Flow, runs it on a route that can actually reach the page, stores the records with provenance, watches them for change, and delivers them to the rest of your business.
Concepts
The twelve words Ray9 uses to describe everything it does — and what each one means in plain English.