TypeSafe AI’s Jev can help an SEO workflow choose the best internal-link target from a bounded set of eligible pages. It does this as a typed decision, not by crawling a website, writing anchor text, or explaining a recommendation in prose. Your crawler and application first collect the source passage, remove invalid targets, and send the remaining candidates to Jev as a Choice question. Jev returns one selected option, a probability for every option, and a confidence value from 0 to 1.
That division of work makes the process useful at scale. Deterministic code handles facts such as status codes, canonicals, existing links, and indexability. Jev evaluates the narrower judgment: which eligible destination best continues the reader’s task? Low-confidence or strategically important decisions go to an editor before any link is added.
What TypeSafe AI’s Jev Does in an Internal-Link Workflow
Jev is TypeSafe AI’s first System One Model. It evaluates typed questions against the state supplied by an application and returns structured values that code can use directly. It does not generate free-form text.
For internal linking, Jev is most useful after candidate retrieval. A crawler or content index can find passages that mention a topic and produce a shortlist of possible destination pages. Jev can then select one destination from that shortlist with a Choice question.
This differs from asking a chatbot to “review my site and suggest links.” Jev does not:
- visit or crawl URLs;
- discover every page on a website by itself;
- verify live status codes or canonical tags;
- write a new sentence or anchor phrase;
- return a written rationale;
- publish a link.
Those steps belong to the surrounding system or an editor. Keeping them separate prevents an uncertain semantic judgment from overriding facts that software can verify exactly.
Prepare the URL Inventory Before Calling Jev
Start with a clean inventory of pages that are allowed to receive internal links. This is the same practical foundation used in a broader URL audit.
Exclude pages that:
- return an error or redirect;
- have a noindex directive;
- canonicalize to another URL;
- duplicate another page’s purpose;
- are blocked from the intended crawl path;
- already receive a contextual link from the source page;
- are outdated, thin, or scheduled for removal.
These checks are deterministic. A status code is not an opinion, and Jev should not be asked to guess it from page copy. Run the checks in your crawler, CMS, or database and pass only eligible candidates to the model.
The source data also needs preparation. Capture the complete sentence that could contain a link, its surrounding paragraph, the current heading, the source page’s purpose, and existing nearby links. A keyword fragment alone rarely provides enough context. “Audit” could refer to a technical SEO audit, a content audit, or an accounting process.
Build a Bounded Candidate Set
A good candidate set is broad enough to contain the right answer and small enough to represent real editorial alternatives. Retrieve candidates through keyword matching, embeddings, topic labels, or an existing content map, then apply business and technical filters.
For each candidate, provide:
- a stable candidate ID;
- canonical URL;
- page title;
- one-sentence purpose;
- primary search intent;
- audience or funnel role;
- whether the source already links to it.
Do not ask Jev to invent a URL. The allowed answers should be candidate IDs that your application already knows, plus a no-link option. TypeSafe Choice supports a defined set of options, and each option can include a description that separates it from neighboring choices.
A practical shortlist might contain three to ten targets. A larger list can still work, but retrieval quality matters. A list of hundreds of loosely related pages turns a precise editorial decision into a noisy taxonomy problem.
Use Choice to Select the Best Target
The request below shows the correct shape. The state includes the source context and candidate records. The criteria map defines every answer Jev is allowed to return.
{
"model": "jev-latest",
"state": {
"source_url": "https://example.com/technical-seo-checklist",
"heading": "Find pages with weak internal discovery",
"passage": "A crawl can reveal useful pages that receive few or no contextual internal links.",
"source_intent": "Help an SEO specialist run a technical audit",
"candidates": [
{
"id": "orphan_pages",
"title": "How to Find and Fix Orphan Pages",
"purpose": "Diagnose pages with no useful internal links and reconnect them"
},
{
"id": "broken_links",
"title": "How to Find Broken Links",
"purpose": "Find links that point to unavailable destinations"
}
]
},
"questions": {
"best_internal_link_target": {
"type": "choice",
"instructions": "Which candidate best continues the reader’s task in this passage?",
"criteria": {
"orphan_pages": "The passage is about discovering and reconnecting underlinked or orphaned pages.",
"broken_links": "The passage is about links whose destination returns an error.",
"no_link": "Neither candidate gives the reader a useful and accurate next step."
}
}
}
}
The candidate descriptions should distinguish intent, not repeat titles. If two options use nearly identical descriptions, the response may be uncertain because the application has not defined a meaningful difference.
Read the Choice Response Correctly
The following response is illustrative. The probabilities are examples, not measured performance for this workflow.
{
"model": "jev-1.13.0",
"answers": {
"best_internal_link_target": {
"type": "choice",
"choice": "orphan_pages",
"confidence": 0.88,
"probabilities": {
"orphan_pages": 0.91,
"broken_links": 0.04,
"no_link": 0.05
}
}
}
}
The selected choice is the option with the highest probability. The probability distribution shows the competing interpretations. Confidence summarizes how concentrated that distribution is; it does not prove that the link is correct.
A result can have a plausible selected target and still deserve review. For example, probabilities of 0.48, 0.42, and 0.10 indicate that two destinations are close even if one technically wins. Read the full distribution rather than treating the selected choice as an unquestionable instruction.
Route Decisions With Code and Human Review
Your application should translate the typed response into a review state. A conservative starting policy could be:
| Condition | Workflow action |
|---|---|
| Choice is no_link | Do not create a suggestion |
| Confidence below 0.60 | Send to manual review |
| Two candidates have similar probabilities | Show both to the editor |
| High-value commercial target | Require approval regardless of confidence |
| Clear result on a low-risk page | Add to the editorial queue |
These are example thresholds. Test them against a labeled set of accepted and rejected internal links from your own site. TypeSafe’s confidence guidance recommends choosing thresholds according to the cost of acting incorrectly.
The application should store the source passage, candidate set, response, model version, and review decision. That record makes it possible to audit why a suggestion appeared and recalibrate the workflow later.
Keep Anchor Text Outside the Jev Decision
Jev does not return a free-form anchor phrase. Once a target has been approved, software can identify an existing phrase in the sentence, an editor can rewrite the sentence, or a separate generative model can draft alternatives.
Whichever method is used, the final anchor should describe the destination accurately and read naturally in context. Google’s link guidance recommends crawlable links, descriptive anchor text, and relevant surrounding context.
Avoid forcing an exact-match keyword into every link. Repeated or awkward anchors can reduce readability, and a relevant destination does not justify a poor sentence. Screpy’s guide to internal link building mistakes covers common implementation problems that remain relevant after candidate selection.
A Practical Jev Internal-Link Pipeline
A reliable workflow follows this order:
- Crawl indexable, canonical pages.
- Extract headings, passages, existing links, and page summaries.
- Retrieve a small set of plausible targets for each passage.
- Remove redirects, errors, noindex pages, duplicates, and existing source-target pairs.
- Send the passage and bounded target set to one Choice question.
- Store the choice, probabilities, confidence, and model version.
- Apply code-based thresholds.
- Let an editor approve important or uncertain suggestions.
- Create or revise anchor text outside Jev.
- Publish the link and recrawl the page to verify it.
This approach uses Jev for the ambiguous decision it is designed to make and ordinary software for everything that can be known exactly. For another example of mapping an SEO judgment to a typed Choice question, see Screpy’s guide to classifying search intent with TypeSafe AI’s Jev.
Calibrate decisions with reviewed link examples
Before routing internal-link suggestions automatically, build a small labeled set from your own site. Include obvious matches, tempting but misleading matches, pages that already link to the target, and passages where no internal link improves the reader’s journey. Ask an SEO editor to choose the correct target or `no_link` for each case before reviewing Jev’s output.
Compare the selected Choice value, its probability distribution, and the reviewer’s decision. Pay special attention to errors between closely related product pages and informational guides, because topical similarity alone does not prove that a link is useful. Segment results by content type if templates and editorial goals differ.
Use disagreements to improve the bounded candidate set and Choice criteria before lowering a review threshold. Keep a holdout sample for later checks, version the question with each material change, and re-evaluate after major site migrations or taxonomy changes. This process turns confidence into an operational signal grounded in reviewed examples instead of treating one universal threshold as truth.
Frequently Asked Questions
Can Jev crawl my website to find internal links?
No. A crawler, CMS export, or search index must collect the pages and passages. Jev evaluates the state and candidate options your application sends.
Can Jev generate anchor text?
No. Jev returns typed decisions rather than generated prose. Use an editor, a deterministic template, or a separate writing model after the target is approved.
Should Jev always choose a target page?
No. Include a no_link option so the model can indicate that none of the eligible candidates is useful for the passage.
Does high confidence mean the internal link is correct?
No. Confidence describes the shape of Jev’s probability distribution. Validate thresholds on reviewed examples and keep human approval for high-impact pages.
Jev can make internal-link selection consistent without pretending that every related phrase needs a link. The useful pattern is simple: retrieve candidates with software, choose among them with a typed decision, and let an editor control the final sentence.