prism

How It Works

From one question to many literatures

Prism is a retrieval-and-ranking pipeline over public scholarly metadata. Every step below runs on each search, and each result card shows which steps it passed through.

01

Expand the question across languages

A language model (Gemini, when configured) turns your question into short keyword queries in 18 languages (English, Chinese, Spanish, Portuguese, French, German, Japanese, Russian, Korean, Indonesian, Italian, Turkish, Polish, Ukrainian, Arabic, Hindi, Afrikaans and Swahili), using the terminology papers in each language tend to use. The first fifteen are the largest abstract-bearing literatures in OpenAlex; Hindi, Afrikaans and Swahili are the largest from South Asia and Africa, smaller (about 2,800 to 15,000 works with abstracts each) but real. Your original question is always kept and searched too.

Translations are machine-generated, and technical meaning can shift between languages. Every query variant is shown in the Search coverage panel. Without an LLM, only the original query is searched, and the interface says so.

02

Retrieve from OpenAlex, per language

Each variant becomes one OpenAlex title-and-abstract search that retrieves up to 100 candidates: as many as the results list holds, so any single language could fill the whole list on its own. No language is capped below that. A translated query is restricted to papers whose OpenAlex language tag matches it, so the Chinese query looks for Chinese-language papers. Year and publication-language filters are sent to the API. If a query returns fewer than five papers, it is broadened step by step to its two most essential terms, then to the single core term. Ranking then reorders the broader set by relevance.

Responses are cached for 24 hours. A paper’s language starts as OpenAlex’s tag, which OpenAlex detects automatically and sometimes gets wrong. A local detector flags papers whose abstract (or title) disagrees with their tag, unless the title itself is in the tagged language (many non-English journals add an English abstract), and Gemini reads those texts in one batch. Only when Gemini confirms a different language is the tag overridden. The badge is then dashed, and its tooltip names OpenAlex’s original tag. Language is never inferred from author names, venues or affiliations, and it never affects ranking.

03

Merge, deduplicate, and pick the top results

Results are merged by normalized DOI, then OpenAlex ID, then an exact normalized title match with the same publication year. Records with different DOIs are never merged. Each paper keeps a list of every query variant that retrieved it and at what rank. That list drives the “via Chinese query” labels and the coverage statistics.

Candidates are then drawn from each language in proportion to how much literature it has on the topic. Gemini names the question’s most distinctive subject term in every language (asthma, 哮喘, asma, …), and one OpenAlex request counts the works in each language that match any of them. If that request fails, each language’s overall share of OpenAlex is used. This is relevant-document distribution estimation, as used in federated search. Each language keeps at least its two best matches. Equal numbers per language would oversample small literatures: for “Shakespeare”, English has about 99,000 matches and Italian about 1,100, and equal shares would let Italian fill as much of the list as English whenever relevance can’t tell papers apart. All kept candidates are then scored together and the top 100 (or 25 or 50) are shown, so the mix reflects where the research is. “Load more” fetches the next page in every language and re-ranks the whole set, up to 1,000 results; earlier pages, translations and scores come from the cache, so each step only scores the new papers.

04

Score with multilingual embeddings and BM25

Semantic: your question (embedded in every language it was translated into, then averaged) and each paper’s title and abstract are embedded with paraphrase-multilingual-MiniLM-L12-v2, a sentence-transformer trained to place paraphrases in 50+ languages near each other. It runs locally on the server. Score = cosine similarity. Text is truncated to 128 tokens, the model’s training length, as in its reference configuration. When there are more than three times as many candidates as results, a fast title-only pass first shortlists the top three times as many under any ranking mode, without regard to language; the shortlist is then scored on title and abstract. Each paper is scored on the better of its title alone and its title plus abstract, because abstracts add methods and numbers that dilute similarity. Scoring only title plus abstract would rank papers without an abstract above comparable papers that have one.

Keyword: BM25 (k1 = 1.2, b = 0.75) over titles and abstracts. Text is segmented with ICU word boundaries, which handle Chinese and Japanese words rather than single characters. Each paper is scored against every query variant and keeps its best score, so a Spanish paper is matched against the Spanish query. Each score is divided by that query’s maximum possible score, giving the share of an ideal match on the same 0–1 scale in every language. Without this, the rarity of each language’s words in a mostly-English pool would inflate every non-English score. Length is compared only among papers of the same kind (title-only or title plus abstract), and scoring always uses all of a language’s concepts, even when its search was broadened.

Hybrid: 0.7 × semantic + 0.3 × keyword, after min-max normalizing both within the result set. These weights are tunable starting values, not validated constants. Publication language, venue, citation counts and author information are never used in scoring.

05

Explain, translate, compare

Explanations are generated only from computed facts. “Strong semantic match” means cosine ≥ 0.6, and “moderate” means ≥ 0.4. Those thresholds are heuristics for this model. The other explanations are the matched query terms, the query variants that retrieved the paper, and whether only the title was available.

Titles and abstracts can be machine-translated into your query language. Translations are always labeled and shown alongside the original, never in place of it. Optional AI summaries use only the abstract and say “Not stated in the abstract” rather than guessing.

Comparison mode ranks the original-language query’s results and the full multilingual pool with the same scores, then shows their top-10 overlap and the papers that only the multilingual search found. Additional papers are not necessarily relevant.

The map

The Map tab shows where the top results of your latest search were published. Each result’s venue (journal, repository or publisher) is looked up in OpenAlex, 100 venues per request, and countries are shaded by how many results came from venues registered there. The shading uses a square-root scale so countries with a few papers stay visible. This is the venue’s country, not the authors’ location or the paper’s language. Clicking a country returns to your results with a publication-country filter, without searching again.

Language gaps

The Gaps tab asks what each language’s research on your question discusses that others rarely do. Your search’s query in each language is re-run with the same parameters, so OpenAlex answers from the cache. The 15 most relevant matches in each language are sampled by semantic similarity to your question. Every language gets its own sample, however small its literature. Languages with fewer than 3 papers are listed but not compared.

Gemini reads the sampled titles and abstracts once. It names the themes they discuss, such as specific aspects, methods, settings or perspectives, and tags each paper whose own text covers each theme. Prism, not the model, then counts what share of each language’s papers discuss each theme and compares it with a baseline language (English by default). A difference is pointed out when at least 2 papers cover the theme and the shares differ by at least 25 percentage points. Every finding opens the papers behind it.

The samples are small and judged from titles and abstracts only. A theme absent from a sample is a lead to explore, not proof that a language’s literature lacks it. The short overview at the top is written by Gemini and labeled as such.

Evidence: cross-language similarity sanity check

Cosine similarity between “How does drought stress affect rice crop yields?” and short texts, using the same model and settings as the app. This is a seven-sentence sanity check, not a retrieval benchmark. Reproduce it with npm run check:embeddings.

TextLanguageCosine
Effects of drought stress on rice grain yieldEnglish paraphrase0.951
干旱胁迫对水稻产量的影响Chinese0.863
Efeitos do estresse hídrico na produtividade do arrozPortuguese0.832
Efectos del estrés hídrico en el rendimiento del arrozSpanish0.826
干ばつストレスがイネの収量に与える影響Japanese0.710
城市空气污染与儿童哮喘Unrelated (Chinese)0.039
Deep learning for melanoma detection in dermoscopic imagesUnrelated (English)-0.034

Translations of the same idea score 0.71–0.86, and unrelated topics score near zero. Japanese scores lowest, so ranking is multilingual but not perfectly language-neutral.

Known limitations

  • Coverage is limited to what OpenAlex indexes. Many regional journals, theses and non-DOI literature are missing.
  • Language corrections judge the title and abstract, not the full text. A paper whose title and abstract are both in another language than its tag is relabeled; one with a native-language title keeps its tag.
  • Many records lack abstracts. Those are scored on titles alone, which are short and can inflate or deflate similarity.
  • Each language contributes at most 100 candidates (OpenAlex’s own top matches), so this is a sample, not an exhaustive search.
  • Literature sizes are estimated from OpenAlex counts for a machine-translated subject term. They depend on the term chosen and on OpenAlex’s language tags, which are themselves machine-detected.
  • Large candidate pools are shortlisted using titles before full scoring. A paper with an uninformative title but a highly relevant abstract can occasionally miss the shortlist.
  • The embedding model was not trained on Afrikaans or Swahili, so their semantic scores are weaker and those papers rely more on keyword matches. OpenAlex stores Hindi without its vowel signs; Prism matches keywords in that form, but it makes Hindi titles harder to read and to embed.
  • Scores are relative within a result set and say nothing about a paper’s scientific quality.