The first rule
An accusation is never presented as a finding. When a prosecutor, a politician, a journalist or anyone else accuses someone, we report that the accusation was made, by whom and when. That is all the accusation proves. Guilt is established only by a final court decision. Everyone named is presumed innocent until then.
The six source labels
Every person, case, event, claim, financial figure, video and document carries one of these labels. Hover over or tab to a label anywhere on the site to see its meaning.
- Source label: VerifiedBacked by official documents, a final court decision, or several reliable independent sources.VERIFIED
- The item rests on official documents, a final court decision, or several reliable sources that reported it independently of each other.
- Source label: Officially reportedStated by an official body (SPAK, a court, the Ombudsman, a prosecutor). An accusation is verified only as an accusation.OFFICIALLY_REPORTED
- An official institution such as SPAK, a court, the Ombudsman or a prosecutor published the statement or allegation. We can confirm that the institution said it. If it is an accusation, it is verified only as an accusation, not as proof that the accused did it.
- Source label: Under investigationCredible reporting or investigative material that a court has not established.UNDER_INVESTIGATION
- Credible journalism or investigative material supports the item, but it has not been established by a court or confirmed by an official finding.
- Source label: DisputedContested by the person concerned, or the evidence conflicts.DISPUTED
- The person or organisation concerned contests the item, or the available sources contradict each other. Each side is shown where the research recorded it.
- Source label: UnverifiedAnonymous tip, social-media upload or a single unconfirmed report.UNVERIFIED
- The item comes from an anonymous tip, a social-media upload (including Instagram, TikTok and X) or a single report that we could not confirm. Treat it with caution.
- Source label: DebunkedContradicted by reliable evidence.DEBUNKED
- Reliable evidence contradicts the item. It is kept on the site so readers can see what was claimed and why it does not hold.
A label describes the evidence for the item, not the importance of the item or the character of anyone in it. “Officially reported” on an accusation means the institution made the accusation; it does not mean the accusation is true.
Proven, alleged, open
Each case file has separate lists for what is proven (established by documents or official records), what is alleged (accusations, attributed to whoever made them), and open questions. The responses of the people and organisations concerned are shown on the same page. Where a response was not found, the page says so.
Conflicting records
The archive is built from 38 research files. Some people, organisations and events appear in more than one file, and the files do not always agree. We do not quietly choose one version:
- Where a factual field differs (a date, an amount, a legal status, ownership, a source label), the page shows an orange conflicting records note listing every version and the file and sources behind it. 99 records currently carry such a note.
- Where narrative text is worded differently, the main text comes from the file with the most sources and the other versions are shown unedited under “Other accounts”.
- Lists (roles, key facts, sources) are combined from all files, with duplicates removed.
- Every merge, duplicate id and conflict is logged in the data build report (data/BUILD-REPORT.md in the project).
Missing information
Nothing is filled in from memory or guesswork. When a field is missing, the page says “not found” and links to the gaps list, which records what the research looked for and where it could be found.
Money
Each figure is shown with the definition its source gives (a contract value, a reported loss, a seizure, a payment). A figure is flagged incomplete when its own definition says so. Figures with different definitions are never added together, and no currency conversion is applied.
- Every video is behind a content warning. Nothing plays until the reader chooses to view it.
- A video is embedded only when the researchers saved a copy or recorded a permitted embed (YouTube). All other items link to the original source.
- “What can be seen” repeats the research record. Many items were described from the publisher's text and were not watched by the researcher; the card says so where the record does.
- Items appear under Police Violence when their record mentions force, injury or weapons (for example batons, rubber bullets, tear gas), and under Protests when it mentions a protest, rally or clash. An item can appear in both. This sorting is automatic and is not a judgement about the footage.
- Social-media uploads are labelled Unverified unless other evidence supports them.
How the research was gathered
Each research file records its own method. They are reproduced here as written.
- balla-messaging.jsonAbout 40 WebSearch queries (English and Albanian) and WebFetch on the pages listed. Items marked 'snippet only' come from search-result text that was not opened. Translations from Albanian are the fetching model's and are labelled as such.
- balluku-spak.jsonWebSearch and WebFetch only. Several fetched pages returned 403 (OCCRP, Koha, Balkanweb Signal article); those items are marked from search-result summaries and noted. Search-result summaries are model-written and were cross-checked against fetched pages where possible.
- bank-immunity.jsonWebSearch (about 30 queries, English and Albanian) and WebFetch. Official draft text read from the Ministry of Finance consultation portal copy (docx) and a Shqiptarja copy (PDF). Downloads saved in research/downloads/bank-immunity with SOURCES.txt. Euronews Albania and CNA articles could not be reached. Kuvendi (parlament.al) vote records and gjykatakushtetuese.gov.al were not reachable in this run.
- companies.jsonWebSearch (22 searches, English and Albanian/Turkish queries) and WebFetch (4 pages: Citizens.al 2026-06-08, Citizens.al/Follow the Money 2026-06-21, Reporter.al 2026-05-29, SEENews 2021-11-15 which returned only the headline). Where a figure or ownership claim came only from a search-result summary and the page was not opened, the item says so and is kept at UNVERIFIED or UNDER_INVESTIGATION. No documents were downloaded to research\downloads\companies\ because no registry PDF was opened and no fetch returned a primary document.
- customs-tax-interior.jsonOSINT pass: 33 web searches (English and Albanian) and 17 page fetches. Items are recorded neutrally. Where a page could not be fetched (HTTP 402/403) the item rests on search-result text and is marked as such. The downloads folder was created; no PDFs were retrieved in this pass.
- energy-oil.json30 web searches (English and Albanian) plus fetches of the KLSH OSHEE audit PDF (saved locally at research/downloads/energy/klsh-oshee-tirana-audit-2025.pdf) and three news pages. Several news pages returned HTTP 403 or were read only through search snippets; those items are marked in openQuestions or confidence accordingly. Tirana Times 'Today:' date stamps are crawl dates, not publication dates, and were not used as dates.
- footage-social.jsonSearched 36 queries (English and Albanian) on 2026-10-31. No video was viewed by the researcher: the agent cannot play video. All descriptions of footage are taken from the cited article, page text, title or search snippet, as stated per entry. Downloads: yt-dlp 2026.06.09 worked for the three Euronews clips and the News24 YouTube clip yDmOxG9bsKQ; failures are noted per entry. Files are in research/downloads/footage/ named by yt-dlp id. Items without a local file are URL-only. No private or login-gated content was accessed.
- history-opposition.jsonWebSearch and WebFetch only. Search snippets are secondary; items marked UNVERIFIED were seen only in search summaries. Where sources conflict, the item is marked DISPUTED and the conflict is recorded.
- hospitals-conditions.json32 web searches (Albanian and English) plus 12 page fetches (4 of them blocked with HTTP 402/403, and one PDF was unreadable). Items marked UNVERIFIED were taken from search-result summaries only (PDF or page not readable, or fetch blocked). Tender and procurement cases already covered in other research files were not duplicated.
- incinerators.jsonWebSearch and WebFetch only. Fetch failures noted per source. Figures from search-result summaries (not opened) are marked in the item note and kept at lower confidence.
- injuries-by-police.jsonWeb searches in English and Albanian (about 40 queries plus fetches of the pages listed). Only URLs seen in search results or fetched pages are cited. Injury claims are as reported; none of the cases below has a final finding that police caused the injury unless marked VERIFIED.
- land-permits.jsonOSINT search (32 WebSearch calls and 4 WebFetch calls) in English and Albanian. Items marked UNVERIFIED or UNDER_INVESTIGATION were drawn from search snippets or headlines unless the source is marked as fetched. No documents were saved to research/downloads/land-permits (none were opened as primary files).
- microcredit-bsh.json26 WebSearch queries (Albanian and English) and 17 WebFetch calls. Fetched and read: Transparency International CEPI case page (MCA loans case); Shqiptarja (10 Jul 2024, 21 May 2024, 24 May 2024, 13 Jun 2024, 16 Aug 2024, 23 Jul 2025); Citizens.al (4 Jul 2024); Bank of Albania press release on revocation (23 May 2024). Several pages returned 402/403 (a2news, Telegrafi, Gazeta Tema); those items rest on search-result summaries only and are marked as such. Files were not downloaded to research/downloads/microcredit (no document was saved; all URLs are as seen). Governor and immunity draft are covered in bank-immunity.json (gent-sejko, draft RENJK 1016, Neni 72); they are referenced here, not re-researched.
- party-ties.jsonWebSearch and WebFetch only; items recorded neutrally with source URLs seen or retrieved. Search-result summaries are noted in gaps. No PDFs saved.
- police-violence-2026.jsonWebSearch and WebFetch only. 'Fetched' = page read at the URL. 'snippet' = seen only in search-result text, not opened. No footage was viewed by the compiler; every whatIsSeen describes what the cited source says.
- ps-pd-joint-votes.jsonSearch-based OSINT. 33 WebSearch queries (English and Albanian) and WebFetch of press pages. Official Kuvendi records were not reachable in this run. Items marked with one press source are not cross-checked. Existing ids from institutions-votes.json, party-ties.json, history-opposition.json are referenced, not duplicated.
- ps-pd-shared-ties.jsonWebSearch and WebFetch only. Fetched successfully: exit.al appeals article, transparency.org CEPI case, top-channel government TV ads article, exit.al 2019 broadcasters article. The gazetatema.net extradition article returned HTTP 403, so that item relies on search-result text. QKB (Albanian business registry) was not reachable through the tools used; opencorporates.al QKB extract PDFs appeared in search results but returned no readable text.
- schools-education.json32 WebSearch queries (English and Albanian) plus WebFetch checks of key pages. Items marked as search-summary-only were seen in search results but the source article was not opened. Figures are reported as published and are incomplete unless stated.
- verify-claims.jsonWebSearch and WebFetch only. No files downloaded. Pages marked 'search-summary only' were seen in search results and not opened. Albanian-language sources included.
- weapons-standards.jsonWebSearch and WebFetch only. Reference ids from police-violence-2026.json, injuries-by-police.json, footage-hunt.json and police-accountability.json are reused, not duplicated. Where a PDF or page could not be read, this is stated in gaps[]. Several fetch results were model-generated summaries, so wording marked 'as fetched' should be re-checked against the original before publication.