An evidence-based record AI-generated · not fact-checked Created by MyRA with Claude · built 19 August 2026

Search the record

Every word reported from 41 days of the trial of Yorgen Fenech for the murder of Daphne Caruana Galizia — 13,734 paragraphs, 216,791 words. These are trial days 1–42; 1 day has no transcript at all, and the About tab says why. There is no ranking cut-off and no sampling: a search reads all of it and returns everything that matches.
Republic of Malta v. Yorgen Fenech · Criminal Court, Valletta · source: daily trial transcripts, Times of Malta and MaltaToday · open the network map
"exact phrase" for a phrase -word to exclude every term must appear — don't type AND Try: pardon "17 Black" Theuma recording Muscat message bribe -denied
The model chooses which passages to show — it never writes the quotes. A few questions an hour per reader.
Loading the record and building the index…

Read this first

This record was assembled by an AI system and has not been fact-checked by a journalist or a lawyer. Yorgen Fenech has pleaded not guilty and is presumed innocent until a verdict is delivered. People named in evidence who are not on trial have not been charged in this case, and several have denied wrongdoing. Treat every result as a pointer to the transcript, not as a finding.

The underlying transcripts are journalists' live-blog reports of the hearings. They are not the official court record.

What this searches, and what it guarantees

The whole corpus — 13,734 paragraphs, 216,791 words — is loaded into your browser and searched in full. Nothing is sent anywhere: there is no server, no API and no log of what you type. Because the search runs over everything, the result count is the true number of matching paragraphs, not the top few.

GuaranteedNot guaranteed
Every one of the 13,734 paragraphs is in the index — asserted at build time. That your words match the court's words. This is a lexical index.
No ranking cut-off. Filters scan every row; the count is complete. That the right question was asked. Absence of a result is not evidence of absence.
The same query always returns the same paragraphs. That the extraction behind “produced a connection” caught everything.

The vocabulary problem, and what is done about it

The real way a search like this misses something is that the reader types bribe and the witness said kickback. Two things mitigate it. Expand related words maps a term onto the other words this record actually uses for the same thing. Match word endings treats pay, paid and payment as the same stem. Both are on by default and can be switched off for a strict literal search.

One trial day is missing, and here is why

Checking the record…

Read, nothing recorded

Every paragraph was adjudicated one by one. 3,519 produced a citation. 6,967 were read and judged to contain no relationship, each with a written reason, and those reasons are searchable here. This is the part most search tools cannot offer: it lets you check whether a passage was missed or whether it was considered and set aside — and see on what grounds.

What each result carries

Trial day, paragraph number, the timestamp the live blog gave it, the verbatim text, and a link to the published report for that day. 41 of 41 days link to their source article. Anything drawn from a paragraph — 3,774 connections, 887 dated moments, 43 contradictions — is shown beneath it.

Asking a question, and why the model cannot invent a quote

The Ask a question tab adds a language model. It is given exactly two jobs, and denied a third. First it turns your question into a search query — the words a witness or a lawyer would have used, rather than the words you typed. That query then runs here, in your browser, over all 13,734 paragraphs, with no ranking cut-off. The model does not choose what is retrieved. Second, it is shown the strongest passages and asked which of them bear on your question — by number.

It is never asked to write a quote, and nothing it writes is ever displayed as evidence. Every passage on screen is pulled from the local corpus by index. A fabricated quotation is therefore not something the instructions discourage; it is something the data path makes impossible. If the model returns a passage number it was not given, that citation is discarded and the discard is reported to you. The model's own words appear only inside a black-bordered box marked machine-written summary — not evidence, and it is instructed to describe what the record contains rather than to assert that any person did anything.

You can see the query that ran under Show the search that actually ran on every answer, so you can check what was searched for rather than taking the answer on trust.

Questions are answered through this site, which is rate-limited to a few an hour per reader. Your question is passed to a model provider in order to be answered; it is not stored here, and the record itself never leaves your browser — only the passages already retrieved are sent. Keyword search involves no model at all and runs entirely on your own machine.

Ranking by meaning

Rank by meaning loads a 1.9 MB model built from this record — latent semantic indexing over the 13,734 paragraphs, reduced to 128 dimensions. Your query is compared against every paragraph by exact brute-force cosine. There is no approximate-nearest-neighbour index, which is the usual place a semantic search quietly loses things: this one either ranks a paragraph highly or it doesn't, but it always looks at all of them.

It is used two ways. Normally it reorders the paragraphs your words already matched, and it never removes one. When your words match nothing at all, it instead offers the closest passages by meaning, clearly marked as such — a suggestion, not a match.

Two honest limits. The model is fitted on this corpus rather than being a general language model, so it has learned how this court uses words — useful for “17 Black” or “tal-Maksar”, weaker at general paraphrase than a large embedding model would be. And it retains about 35% of the variance in the text, so treat a high similarity score as a hint worth reading, not as a finding.

The same model produced a thesaurus from the record itself: 673 terms have a neighbour learned from how they are actually used here, which is added to the hand-written synonym list behind Expand related words.

Search syntax

"exact phrase" matches the phrase. -word excludes. Separate terms are combined with AND, so every term must appear. Results are ordered by BM25 relevance, but the ordering only affects what you see first — every match is in the count and in the export.

Created by MyRA with Claude. An independent record, not affiliated with the Courts of Justice, with any outlet credited, or with the Caruana Galizia family. Built 19 August 2026.