Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"upload_type": "software",
"access_right": "open",
"license": "PolyForm-Noncommercial-1.0.0",
"description": "Paragraph-level research environment for UN human rights law. UNHRDB combines Treaty Body General Comments and Recommendations, individual-communication jurisprudence, and thematic Special Procedures reports in a source-first interface with faceted search, citation export, document workspaces, and extractive retrieval. The software and curated datasets have separate licences; see LICENSE, LICENSE-DATA, and NOTICE in the repository. The v2.1.0 release (3 September 2026) covers 6,111 documents and 323,065 paragraphs: 187 General Comments and Recommendations, 4,333 individual-communication decisions from 8 treaty bodies, and 1,591 thematic Special Procedures reports from all 46 mandates. The repository holds the published site and its front-end code; the data-processing pipeline is kept in a separate, private repository.",
"description": "Paragraph-level research environment for UN human rights law. UNHRDB combines Treaty Body General Comments and Recommendations, individual-communication jurisprudence, and thematic Special Procedures reports in a source-first interface with faceted search, citation export, document workspaces, and extractive retrieval. The software and curated datasets have separate licences; see LICENSE, LICENSE-DATA, and NOTICE in the repository. The v2.1.0 release (3 September 2026) covers 6,152 documents and 326,457 paragraphs: 188 General Comments and Recommendations, 4,333 individual-communication decisions from 8 treaty bodies, and 1,631 thematic Special Procedures reports from all 46 mandates. The repository holds the published site and its front-end code; the data-processing pipeline is kept in a separate, private repository.",
"creators": [
{
"name": "Szoszkiewicz, Łukasz",
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ original document symbol and context.

## Coverage

The September 2026 public build contains 323,065 searchable paragraphs across 6,111
The October 2026 public build contains 326,457 searchable paragraphs across 6,152
documents:

| Collection | Coverage |
|---|---:|
| Treaty Body General Comments and Recommendations | 187 documents |
| Treaty Body General Comments and Recommendations | 188 documents |
| Individual-communication jurisprudence | 4,333 cases from 8 mechanisms |
| Thematic Special Procedures reports | 1,591 reports from 46 mandates |
| Thematic Special Procedures reports | 1,631 reports from 46 mandates |
| Recommendations to States (UHRI, live) | 267,942 records from 70 mechanisms to 199 States, 2006–2026 |

The Recommendations scope is not part of the static corpus: concluding
Expand Down
4 changes: 4 additions & 0 deletions build_static_pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ def provenance(d) -> str:
text does not come from the Word file on UN Documents."""
if d.get("type") != "sp" or d.get("textSource") == "documents.un.org docx":
return ""
if d.get("textSource") == "documents.un.org pdf (docx pending)":
return ('<aside class="note warn">A recent report: UN Documents has not yet published its Word file, so the text '
'comes from the PDF. Footnotes and headings may be incomplete until it is rebuilt from the Word file; '
'check quotations against the official text.</aside>')
if d.get("textSource") == "documents.un.org pdf (layout)":
msg = ("From PDF: no Word file exists for this report, so its text was re-cut from the PDF layout. "
"In such reports about one paragraph in nine may still show a slip, often OCR in older scans.")
Expand Down
12 changes: 10 additions & 2 deletions docs/assets/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -1293,12 +1293,20 @@ function documentStatusDetails(doc) {
}

// Special Procedures reports whose text does not come from the Word file on
// UN Documents: 60 re-cut from the PDF layout, 21 still as first extracted.
// UN Documents: re-cut from the PDF layout, still as first extracted, or recent
// reports whose Word file is not out yet (rebuilt once it is).
// The shares are from the automated integrity check (September 2026).
function spTextBannerHtml(doc, sourceUrl) {
if (doc?.type !== 'sp' || doc.textSource === 'documents.un.org docx') return '';
const recut = doc.textSource === 'documents.un.org pdf (layout)';
const pdf = sourceUrl ? `<a href="${escape(sourceUrl)}" target="_blank" rel="noopener">original PDF</a>` : 'original PDF';
if (doc.textSource === 'documents.un.org pdf (docx pending)') {
return `<aside class="docs-reader-ocr-banner ocr-banner-cleaned sp-text-banner" role="note">
<span class="ocr-banner-tag">FROM PDF</span>
<div class="ocr-banner-body"><strong>A recent report: UN Documents has not yet published its Word file, so the text comes from the PDF.</strong>
Footnotes and headings may be incomplete until it is rebuilt from the Word file; check quotations against the ${pdf}.</div>
</aside>`;
}
const recut = doc.textSource === 'documents.un.org pdf (layout)';
return `<aside class="docs-reader-ocr-banner ocr-banner-${recut ? 'cleaned' : 'raw'} sp-text-banner" role="note">
<span class="ocr-banner-tag">${recut ? 'FROM PDF' : 'PDF · UNREVIEWED'}</span>
<div class="ocr-banner-body">${recut
Expand Down
Loading
Loading