Grafy Blog
All postsTry Grafy free
← All posts

Deep research from one link: a cited report on the graph

The Grafy team · Sep 10, 2026 · 10 min read
deep researchai research reportweb research agentcited sourcesresearch from a link
Deep research from one link: a cited report on the graph

You have a question, and you know roughly where the answer lives: a regulator's site, a vendor's documentation, a competitor's help centre. What you do not have is an afternoon to read forty pages and keep the citations straight. Paste the link into a chat window and you get a summary of one page, plus a confident guess about all the pages it links to.

Deep research in Grafy starts from that link instead of from a search box. It walks the site, keeps the pages that actually mention what you asked, reads the best of them in full, and writes a report where every claim carries a number you can follow back to a page the crawler really fetched.

1Question + link2Crawl3Rank pages4Cited report
Question + link → Crawl → Rank pages → Cited report
GRAPH COMPOSERDeep researchQuestionWhat must GPAI providers do, and when?Starting linkhttps://artificialintelligenceact.eu/Stay on this site onlyResearchRResearch reporttext node[1][2][3][4]SOURCES[1]Article 53 obligations[2]GPAI implementation timeline[3]Code of practice[4]Annex XI technical file
The Research popover and the node it produces. The source titles here are placeholders; a real run lists the pages the crawler found on the day.

Where it lives, and what it asks for

The Research chip sits in the composer of the graph editor, in the same row as Podcast and Explainer. Click it and a small panel opens with three things: a question, a starting link, and a checkbox that reads Stay on this site only. The question can be up to 2,000 characters, though a single clear sentence works better than a paragraph, for a reason that becomes obvious once you see how pages are ranked.

Press Research and the run appears in the timeline as a job, with the same progress card as an image or a clip. The stages are literal: Crawling sources, then Reading source 3 of 8, then Writing the report, then Saving report. When it finishes there is a new text node on the canvas labelled Research report, with a green R glyph so it is easy to spot among the images.

The crawl: two levels deep, a dozen pages, fifty seconds

The crawler begins at your link and follows outgoing links breadth-first. It goes at most two levels away from the seed, follows no more than twelve links from any one page, and stops once it has kept twelve relevant pages or spent fifty seconds, whichever comes first. The API accepts a page budget between 3 and 30, and it fetches at most three times that budget, so a site built out of pages that never mention your topic cannot keep the crawl running indefinitely.

Each fetch has its own bounds: a 20-second timeout, four redirects at most, 25 MB per resource, and only http or https. It identifies itself as GrafyCrawler/1.0. Every hop, including each redirect target, is resolved and checked against private, loopback, link-local and cloud-metadata address ranges before anything is requested. A link that points at one of those is refused before the run starts, and the refusal names the rule.

Stay on this site only compares registered domains, not hostnames. docs.example.com and www.example.com count as the same site, which is what you want when a product's documentation and marketing live on different subdomains. Leave it unticked and the crawl will follow outbound links, which is right for a hub page that mostly points elsewhere and wrong for a site whose footer links to half the internet.

How a page earns a place in the report

Relevance is deliberately literal. The question is broken into keywords: words of three or more letters, minus a short stopword list, capped at the first 24. A page is kept when its title or text contains at least one of those words, and its score is the number of distinct keywords it contains. The seed page is always kept. A page that matches nothing is still walked through, because the useful page may be one click behind an index that says little, and any relevant children attach to the nearest relevant ancestor already recorded.

The eight highest-scoring pages are then fetched again and read in full, up to 7,000 characters each. A page with fewer than 200 characters of readable text is dropped, as is anything that is not HTML. The whole bundle handed to the writer is capped at 48,000 characters.

Because the ranking counts words rather than meaning, phrase the question with the nouns you expect on the page. "Obligations for general-purpose AI model providers" will find the right pages on a legal site. "Rules for big models" will not, even though a person would read both the same way. This is also why a hub page makes a better seed than a home page: the crawl only has two hops to find the material.

The rules the writer has to follow

The writer receives the numbered sources and a short set of rules. Open with a two-or-three-sentence answer. Organise the body under ## headings. Cite every factual claim inline as [n], using only the source numbers provided. Where sources disagree or hedge, say so plainly. Invent nothing that the sources do not support. Finish with a ## Sources section listing each number, its title and its URL.

That last rule is enforced rather than hoped for. If the model's answer comes back without a Sources section, the server appends one built from the pages it actually read, so a [4] in the text always resolves to a real address. The writer can still misread a source, which is precisely why the list is there: a citation you can open is a citation you can check.

What the node keeps

The report is stored as a text node whose instruction is your question, trimmed to 200 characters. Alongside the Markdown, the node's detail records the seed URL, the number of sources and the full numbered list with titles and links, so a report you reopen in six months still says where it came from. The model that wrote it is recorded on the node like any other generation, which is the same provenance every node on the canvas carries.

Text nodes are the ones other tools can read. Select the report and the podcast and explainer generators ground their scripts on it. Branch a follow-up question from it. Run two questions against two sites and use the merge and compare operations to put the reports side by side. The report is a starting point on the canvas rather than an ending in a results page.

A worked example

Suppose you are shipping a customer-support chatbot in Europe and want to know what the AI Act expects of you and by when. Open the graph, click Research, and enter:

  • Question: What obligations does the EU AI Act place on providers of general-purpose AI models, and from what dates do they apply?
  • Starting link: https://artificialintelligenceact.eu/
  • Stay on this site only: ticked

The crawl reads the site's own article and timeline pages, which is what you want from a source that has organised the regulation for you. The report opens with a short answer, works through the obligations under headings, marks each claim with a bracketed number, and closes with the list of pages it read. What the wording says depends on what the site says on the day and on the model you chose, so treat this as a description of the shape and not of a result. Then select the node and ask a narrower follow-up, such as which of those obligations apply to a company that only deploys a model built by someone else.

When it fails, and what it costs

Three failures are named rather than swallowed. A blocked or malformed address is refused up front with the reason. A link that cannot be fetched returns Could not crawl that link. A crawl that finds pages but no usable text returns Couldn't read any usable sources from that link. Try a richer starting page. None of the three is charged, because the charge is made only after a report has been written and saved.

A successful run is charged once, as a text generation, priced from the model you chose in the picker or the one routing selected for you. The crawl itself costs no credits. On the subscription page, deep research is listed from the Starter plan.

Compared with the other ways of asking

Pasting a URL into a chat reads one page. It cannot follow the link to the page that answers the question, and it leaves you with an answer and no list of what was read.

An AI overview on a search results page chooses its own sources, and the answer lives in that results page. You cannot point it at the one site you trust, and you cannot keep the result next to the work it was for.

Operator's web search tool, described in an autonomous agent that stops at your budget, searches an index of the whole web. Deep research crawls out from a link you chose. The first is for a question when you do not know where the answer is; the second is for a question when you do.

Watch is the recurring version: it re-asks a question on a schedule and speaks up only when the answer changes. And the knowledge bot crawls a site so that visitors can ask it questions, which is a different job from writing you one report. Underneath all of these is the same principle as grounded text generation: the model is handed the material and told to stay inside it.

Frequently asked questions

Does deep research search the whole web?

No. It crawls outward from the one link you give it, at most two levels deep and a dozen relevant pages by default, and it reads the best eight of those in full. That makes it the right tool when you already know which site holds the answer. For a question with no obvious home, Operator's web search works from a search index instead.

How does it decide which pages are relevant?

It takes the meaningful words from your question, up to 24 of them, and keeps any page whose title or text contains at least one. Pages are ranked by how many distinct words they contain. The matching is on words rather than meaning, so a question written with the terms the site itself uses will rank the right pages higher.

Can I trust the citations in the report?

Each bracketed number refers to a page the crawler actually fetched and read, and the writer is instructed to use only those. If the model leaves out the Sources section, the server adds it from the pages it read. The model can still misread a source, so open the ones behind any claim you intend to rely on.

What does a research report cost?

One text generation, charged only after the report is written and saved. The crawl adds nothing, and a run that fails at the crawl or finds no usable sources is not charged at all. The subscription page lists deep research from the Starter plan.

What can I do with the report afterwards?

It is an ordinary text node. Branch a follow-up question from it, select it and create a podcast or an explainer video grounded on it, compare it with a second report from another site, or export the session. The numbered sources travel with the node, so anyone you share it with can check the same pages.

Open the graph, pick the one site you would have read yourself, and let the crawl do the reading.

Read next

More from the Grafy blog.

← Back to all posts