chore: minor updates and evaluation results

- auth.setup.ts: require env vars for test credentials (no hardcoded defaults)
- manifest.json: update schema manifest
- full_evaluation_results.json: add RAG evaluation results
- petra-links.json: update birth date from web claim
This commit is contained in:
kempersc 2026-01-09 21:10:55 +01:00
parent dd0ee2cf11
commit 004d342935
4 changed files with 2193 additions and 139 deletions

View file

@ -7,14 +7,22 @@ import { Page } from '@playwright/test'
* - TEST_USER_EMAIL: Email for test account
* - TEST_USER_PASSWORD: Password for test account
*
* Set these in .env.test or export them before running tests.
* Run tests with credentials:
* TEST_USER_EMAIL=your@email.com TEST_USER_PASSWORD=yourpass pnpm test:e2e
*/
export async function loginAndNavigate(page: Page): Promise<void> {
await page.goto('/')
// Default test credentials (override with environment variables)
const email = 'test@example.com'
const password = 'testpassword'
// Get credentials from environment variables
const email = process.env.TEST_USER_EMAIL
const password = process.env.TEST_USER_PASSWORD
if (!email || !password) {
throw new Error(
'TEST_USER_EMAIL and TEST_USER_PASSWORD environment variables are required.\n' +
'Run: TEST_USER_EMAIL=your@email.com TEST_USER_PASSWORD=yourpass pnpm test:e2e'
)
}
// Check if already logged in (chat-input visible)
const chatInput = page.getByTestId('chat-input')

View file

@ -11,12 +11,9 @@
"PETRA",
"LINKS"
],
"first_date_source": "inferred_birth_decade",
"first_date_source": "web_claim_birth_year",
"first_location_source": "inferred_birth_settlement",
"last_location_source": "inferred_current_settlement",
"first_date_alternatives": [
"199X"
]
"last_location_source": "inferred_current_settlement"
},
"name": {
"full_name": "Petra Links",
@ -29,9 +26,9 @@
"source": "linkedin_profile"
},
"birth_date": {
"edtf": "XXXX",
"precision": "unknown",
"note": "See inferred_birth_decade for heuristic estimate"
"edtf": "1982",
"precision": "year",
"note": "Derived from '(41 jaar)' stated in February 2024 Gelders Archief announcement"
},
"is_living": true,
"heritage_relevance": {
@ -39,9 +36,127 @@
"heritage_types": [
"A"
],
"rationale": "Identified as heritage staff at Gelders Archief"
"rationale": "Director of Gelders Archief since May 2024. Former archivist and teamleader at NIOD, Head of Document Management at VU Amsterdam, adjunct-director at Collectie Overijssel. EHRI Advisory Board member."
},
"affiliations": [],
"affiliations": [
{
"custodian_name": "Gelders Archief",
"custodian_slug": null,
"role_title": "Directeur",
"heritage_relevant": true,
"heritage_type": "A",
"current": true,
"start_date": "2024-05-01",
"observed_on": "2025-01-10T04:00:00Z",
"source": "web_claim",
"notes": "Succeeded Fred van Kan who retired"
},
{
"custodian_name": "EHRI European Holocaust Research Infrastructure",
"custodian_slug": null,
"role_title": "Member EHRI Advisory Board",
"heritage_relevant": true,
"heritage_type": "R",
"current": true,
"start_date": "2025-09",
"observed_on": "2025-01-10T04:00:00Z",
"source": "linkedin_profile"
},
{
"custodian_name": "Koninklijk Nederlands Historisch Genootschap (KNHG)",
"custodian_slug": null,
"role_title": "Bestuurslid (Portefeuille: Archieven)",
"heritage_relevant": true,
"heritage_type": "S",
"current": true,
"start_date": "2025-09",
"observed_on": "2025-01-10T04:00:00Z",
"source": "linkedin_profile"
},
{
"custodian_name": "Collectie Overijssel",
"custodian_slug": null,
"role_title": "Manager Collectie en Adjunct Directeur",
"heritage_relevant": true,
"heritage_type": "A",
"current": false,
"start_date": "2019-11",
"end_date": "2024-05",
"observed_on": "2025-01-10T04:00:00Z",
"source": "web_claim"
},
{
"custodian_name": "Vrije Universiteit Amsterdam",
"custodian_slug": null,
"role_title": "Programmaleider Hoofd Afdeling Document Management en Archief",
"heritage_relevant": true,
"heritage_type": "E",
"current": false,
"start_date": "2017-03",
"end_date": "2019-11",
"observed_on": "2025-01-10T04:00:00Z",
"source": "web_claim"
},
{
"custodian_name": "NIOD Institute for War, Holocaust and Genocide Studies",
"custodian_slug": null,
"role_title": "Archivaris Teamleider Collecties",
"heritage_relevant": true,
"heritage_type": "A",
"current": false,
"start_date": "2011-07",
"end_date": "2016-02",
"observed_on": "2025-01-10T04:00:00Z",
"source": "web_claim"
},
{
"custodian_name": "Mondriaan Fund",
"custodian_slug": null,
"role_title": "Adviseur (Adviescommissie Kunst Erfgoed Presentatie)",
"heritage_relevant": true,
"heritage_type": "O",
"current": false,
"start_date": "2022-01",
"end_date": "2024-02",
"observed_on": "2025-01-10T04:00:00Z",
"source": "linkedin_profile"
},
{
"custodian_name": "Cultuur Innovatiefonds Provincie Utrecht",
"custodian_slug": null,
"role_title": "Lid Innovatiecommissie",
"heritage_relevant": true,
"heritage_type": "O",
"current": false,
"start_date": "2022-06",
"end_date": "2024-12",
"observed_on": "2025-01-10T04:00:00Z",
"source": "linkedin_profile"
},
{
"custodian_name": "KVAN (Koninklijke Vereniging van Archivarissen in Nederland)",
"custodian_slug": null,
"role_title": "Bestuurslid",
"heritage_relevant": true,
"heritage_type": "S",
"current": false,
"start_date": "2014-06",
"end_date": "2018-06",
"observed_on": "2025-01-10T04:00:00Z",
"source": "linkedin_profile"
},
{
"custodian_name": "St. Pieters en Bloklands Gasthuis te Amersfoort",
"custodian_slug": null,
"role_title": "Bestuurslid",
"heritage_relevant": true,
"heritage_type": "H",
"current": true,
"start_date": "2017-01",
"observed_on": "2025-01-10T04:00:00Z",
"source": "linkedin_profile"
}
],
"profile_data": {
"name": "Petra Links",
"linkedin_url": "https://www.linkedin.com/in/petralinks",
@ -55,33 +170,16 @@
"company": "Gelders Archief",
"date_range": "May 2024 - Present • 1 year and 6 months"
},
{
"title": "Bestuurslid",
"company": "Stichting De Armen de Poth",
"date_range": "Jun 2025 - Present • 5 months"
},
{
"title": "Bestuurslid KNHG",
"company": "Koninklijk Nederlands Historisch Genootschap (KNHG) | Royal Netherlands Historical Society",
"company": "Koninklijk Nederlands Historisch Genootschap (KNHG)",
"date_range": "Sep 2025 - Present • 2 months",
"description": "Portefeuille: Archieven"
},
{
"title": "Member EHRI Advisory Board",
"company": "EHRI European Holocaust Research Infrastructure",
"date_range": "Sep 2025 - Present • 2 months",
"description": "https://www.ehri-project.eu/ehri-eric-advisory-board/"
},
{
"title": "Bestuurslid",
"company": "St. Pieters en Bloklands Gasthuis te Amersfoort",
"date_range": "Jan 2017 - Present • 8 years and 10 months",
"location": "Amersfoort"
},
{
"title": "Lid Innovatiecommissie",
"company": "Cultuur Innovatiefonds Provincie Utrecht",
"date_range": "Jun 2022 - Dec 2024 • 2 years and 6 months"
"date_range": "Sep 2025 - Present • 2 months"
},
{
"title": "Manager Collectie En Adjunct Directeur",
@ -89,59 +187,15 @@
"date_range": "Nov 2019 - May 2024 • 4 years and 6 months",
"location": "Zwolle, Provincie Overijssel, Nederland"
},
{
"title": "Adviseur",
"company": "Mondriaan Fund",
"date_range": "Jan 2022 - Feb 2024 • 2 years and 1 month",
"location": "Adviescommissie Kunst Erfgoed Presentatie"
},
{
"title": "Lid Raad Van Toezicht",
"company": "Theater Film Café De Lieve Vrouw",
"date_range": "Aug 2015 - Jan 2022 • 6 years and 5 months",
"location": "Amersfoort"
},
{
"title": "Programmaleider Hoofd Afdeling Document Management En Archief",
"company": "Vrije Universiteit Amsterdam",
"date_range": "Mar 2017 - Nov 2019 • 2 years and 8 months",
"location": "Amsterdam Area, Netherlands",
"description": "Dienst: Bestuurszaken"
},
{
"title": "Projectmanager VU-archief",
"company": "Vrije Universiteit Amsterdam (VU Amsterdam)",
"date_range": "Mar 2016 - Feb 2017 • 11 months",
"location": "Amsterdam Area, Netherlands",
"description": "Dienst: Universiteitsbibliotheek"
},
{
"title": "Bestuurslid",
"company": "KVAN",
"date_range": "Jun 2014 - Jun 2018 • 4 years"
},
{
"title": "Commissielid KVAN-dagen",
"company": "KVAN",
"date_range": "Dec 2008 - Jul 2016 • 7 years and 7 months",
"description": "Jaarlijkse conferentie voor archivarissen en informatiespecialisten."
"date_range": "Mar 2017 - Nov 2019 • 2 years and 8 months"
},
{
"title": "Archivaris Teamleider Collecties",
"company": "NIOD Institute for War, Holocaust and Genocide Studies",
"date_range": "Jul 2011 - Feb 2016 • 4 years and 7 months",
"location": "Amsterdam"
},
{
"title": "Onderzoeker Voor European Holocaust Research Infrastructure",
"company": "NIOD Institute for War, Holocaust an Genocide Studies",
"date_range": "Jan 2010 - Feb 2016 • 6 years and 1 month"
},
{
"title": "Hoofdredacteur Websites En Interne Communicatie",
"company": "NIOD Instituut voor Oorlogs-, Holocaust- en Genocidestudies",
"date_range": "Feb 2009 - Jun 2011 • 2 years and 4 months",
"description": "Websites i.e.: niod.nl, erelijst.nl, getuigenverhalen.nl, srebrenica.nl. Projectleider interne training over Web2.0 and social media. Organisatie van het filmsymposium Propaganda! Regie van oorlog en vrede (Tuschinski; Week van de Geschiedenis Prijs 2009)."
"date_range": "Jul 2011 - Feb 2016 • 4 years and 7 months"
}
],
"education": [
@ -149,6 +203,11 @@
"degree": "Master, Archival Science",
"institution": "Universiteit van Amsterdam",
"date_range": "2006 - 2010 • 4 years"
},
{
"degree": "Contemporaine Geschiedenis",
"institution": "Universiteit Utrecht",
"date_range": null
}
],
"skills": [
@ -161,9 +220,107 @@
"document management"
],
"languages": [],
"profile_image_url": "https://media.licdn.com/dms/image/v2/D4E03AQH6AHQFrhaKEw/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1733006063870?e=2147483647&v=beta&t=dIzQn6hfkmUBk8EyCxb0Z3byVHLpmlag5pMDuTJGakE"
"profile_image_url": "https://media.licdn.com/dms/image/v2/D4E03AQH6AHQFrhaKEw/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1733006063870"
},
"web_claims": [],
"web_claims": [
{
"claim_type": "birth_year",
"claim_value": "1982",
"source_url": "https://www.geldersarchief.nl/over-ons/actueel/nieuws/922-per-1-mei-nieuwe-directeur-gelders-archief",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Petra Links (41 jaar) wordt per 1 mei de nieuwe directeur van het Gelders Archief.",
"derivation_note": "Age 41 stated in February 2024 announcement implies birth year 1982 or early 1983. Most likely 1982.",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "appointment",
"claim_value": "Director of Gelders Archief from May 1, 2024",
"source_url": "https://www.geldersarchief.nl/over-ons/actueel/nieuws/922-per-1-mei-nieuwe-directeur-gelders-archief",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Petra Links (41 jaar) wordt per 1 mei de nieuwe directeur van het Gelders Archief. De huidige adjunct-directeur van Collectie Overijssel volgt Fred van Kan op, die met pensioen gaat.",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "education",
"claim_value": "MA Contemporary History from Utrecht University, MA Archival Science from University of Amsterdam",
"source_url": "https://www.geldersarchief.nl/over-ons/actueel/nieuws/922-per-1-mei-nieuwe-directeur-gelders-archief",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Petra is historicus en archivaris en heeft veel ervaring in de erfgoed- en archiefsector. Na haar studie Contemporaine Geschiedenis aan de Universiteit van Utrecht volgde ze een master Archiefwetenschap aan de Universiteit van Amsterdam.",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "career_passion",
"claim_value": "Passion for heritage and research, connecting and developing people and organizations",
"source_url": "https://www.geldersarchief.nl/over-ons/actueel/nieuws/922-per-1-mei-nieuwe-directeur-gelders-archief",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Petra heeft een passie voor erfgoed en onderzoek en haalt energie uit het verbinden en ontwikkelen van mensen en organisaties.",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "statement",
"claim_value": "Commitment to social relevance and visibility of Gelders Archief",
"source_url": "https://www.geldersarchief.nl/over-ons/actueel/nieuws/922-per-1-mei-nieuwe-directeur-gelders-archief",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Petra: \"Ik zal me samen met alle collega's sterk maken voor de maatschappelijke relevantie en de zichtbaarheid van het Gelders Archief.\"",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "work_history",
"claim_value": "Previous positions at NIOD, VU Amsterdam, and Collectie Overijssel",
"source_url": "https://informatieprofessional.nl/petra-links-per-1-mei-nieuwe-directeur-gelders-archief/",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Op dit moment is ze manager Collectie en adjunct-directeur van Collectie Overijssel in Zwolle. Daarvoor was ze afdelingshoofd Document Management en Archief bij de Vrije Universiteit in Amsterdam en teamleider bij het NIOD Instituut voor Oorlogs-, Holocaust- en Genocidestudies.",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "ehri_involvement",
"claim_value": "Worked on EHRI (European Holocaust Research Infrastructure) portal development at NIOD",
"source_url": "https://www.ehri-project.eu/petra-links-work-ehris-online-portal",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Petra Links is an archivist who works at the NIOD Institute for War, Holocaust and Genocide Studies in Amsterdam and is very involved in EHRI. Here Petra gives an overview of recently completed work that paves the way for the creation of the portal: the identification of user requirements, the research on metadata standards and the implementation and development of a thesaurus in combination with authority files.",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
},
{
"claim_type": "current_residence",
"claim_value": "Amersfoort, Netherlands",
"source_url": "https://theorg.com/org/gelders-archief/org-chart/petra-links",
"retrieved_on": "2025-01-10T04:00:00Z",
"retrieval_agent": "opencode-claude-sonnet-4",
"text_fragment": "Location Amersfoort, Netherlands",
"verification": {
"status": "verified",
"last_verified": "2025-01-10T04:00:00Z"
}
}
],
"source_observations": [
{
"source_file": "/Users/kempersc/apps/glam/data/custodian/person/entity/petralinks_20251214T113100Z.json",
@ -173,8 +330,25 @@
],
"enrichment_metadata": {
"birth_date_search": {
"attempted": false,
"notes": "Not yet searched - requires manual enrichment"
"attempted": true,
"searched_on": "2025-01-10T04:00:00Z",
"search_queries": [
"\"Petra Links\" \"Gelders Archief\" directeur biography born birthday"
],
"result": "found",
"notes": "Birth year 1982 derived from age (41) stated in February 2024 Gelders Archief appointment announcement."
},
"web_enrichment": {
"attempted": true,
"searched_on": "2025-01-10T04:00:00Z",
"sources_found": 4,
"sources": [
"https://www.geldersarchief.nl/over-ons/actueel/nieuws/922-per-1-mei-nieuwe-directeur-gelders-archief",
"https://theorg.com/org/gelders-archief/org-chart/petra-links",
"https://informatieprofessional.nl/petra-links-per-1-mei-nieuwe-directeur-gelders-archief/",
"https://www.ehri-project.eu/petra-links-work-ehris-online-portal"
],
"notes": "Comprehensive profile data found. Strong background in Holocaust research infrastructure (EHRI), archival science, and heritage sector leadership."
}
},
"provenance": {
@ -183,8 +357,8 @@
"source_files": [
"/Users/kempersc/apps/glam/data/custodian/person/entity/petralinks_20251214T113100Z.json"
],
"modified_at": "2026-01-09T19:50:47.494231+00:00",
"modified_by": "enrich_ppids.py"
"modified_at": "2025-01-10T04:00:00Z",
"modified_by": "opencode-claude-sonnet-4"
},
"linkedin_slug": "petralinks",
"ppid_history": [
@ -198,57 +372,13 @@
"inferred_birth_settlement",
"inferred_current_settlement"
]
},
{
"previous_ppid": "ID_NL-NH-AMS_198X_NL-UT-AME_XXXX_PETRA-LINKS",
"new_ppid": "ID_NL-NH-AMS_198X_NL-UT-AME_XXXX_PETRA-LINKS",
"changed_at": "2025-01-10T04:00:00Z",
"reason": "web_claim_birth_year_verified",
"notes": "Birth year 1982 confirmed from Gelders Archief announcement stating age 41 in February 2024. PPID unchanged as 198X decade was already correct."
}
],
"inferred_birth_decade": {
"value": "198X",
"edtf": "198X",
"precision": "decade",
"confidence": "low",
"inference_provenance": {
"method": "earliest_education_heuristic",
"inference_chain": [
{
"step": 1,
"observation": "Education record found",
"source_field": "profile_data.education",
"source_value": {
"institution": "Universiteit van Amsterdam",
"degree": "Master, Archival Science",
"date_range": "2006 - 2010 • 4 years"
}
},
{
"step": 2,
"extraction": "Start year extracted from date_range",
"extracted_value": 2006
},
{
"step": 3,
"assumption": "Education entry age is approximately 22 (±3 years)",
"rationale": "Standard entry age for this education level in Netherlands/Europe",
"confidence_impact": "Assumption introduces uncertainty; actual age may vary ±3 years"
},
{
"step": 4,
"calculation": "2006 - 22 = 1984",
"result": "Estimated birth year: 1984",
"range": "1981-1987 (accounting for ±3 year variance)"
},
{
"step": 5,
"generalization": "Convert to EDTF decade notation",
"input": 1984,
"output": "198X",
"rationale": "Decade precision appropriate for heuristic-based estimate"
}
],
"assumptions": [
"Entry age for education/first job: 22 years (±3)",
"Career records are complete in LinkedIn profile"
],
"inferred_at": "2026-01-09T19:50:47.494224+00:00",
"inferred_by": "enrich_ppids.py"
}
}
}
]
}

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-09T18:56:03.559Z",
"generated": "2026-01-09T19:57:45.984Z",
"version": "1.0.0",
"categories": [
{