Skip to content

Graph readiness review

Graph-readiness pass for the People layer using explicit edge records in data/person_resource_links.yaml (generated from data/people.yaml).

Report date: 2026-05-30 (methodology); current registry counts: Full refresh report
Edge source: data/person_resource_links.yaml
Export script: scripts/export_graph_tables.py
Export output: data/graph_exports/

See also: Grants layer review · Connection reconciliation review


1. Number of people

94 individuals in data/people.yaml (PER-001PER-096, with PER-049 and PER-054 removed after duplicate merge).

verification_status Count
repo_and_depaul_verified 60
repo_derived 23
external_partner_verified 11

134 explicit links in data/person_resource_links.yaml (PRL-001PRL-134).

One link per associated_resources entry in people.yaml; no new relationships were invented.

edge_type Count
owns_or_directs 56
grant_activity 25
affiliated 16
leads_or_uses 10
collaborates 10
manages 10
contact 4
administers 2
supports 1

Regenerate links after editing people.yaml:

python3 scripts/build_person_resource_links.py

3. Number of unique linked resources

67 distinct resource_id values across all links (includes 2 CUR-* course IDs).

65 non-CUR-* ownership-unit resources have at least one person link.

Resources with no named people: CDM-002 (Print Lab), CSH-008 (Chemistry printing).


4. Resources with unusually many people

resource_id Links Notes
UNI-001 27 25 grant_pi + 2 ORS staff; hub node — not a collaboration cluster
CDM-004 10 CyberLabs affiliated-faculty roster
MUS-001 4 SRT director + production staff
TTS-001 4 Theatre technology / design heads
UNI-008 3 Partner index (CEC + external CEOs)
UNI-006 3 DIGI/CTL + VAD cross-links
EXT-001 3 mHUB leadership (external)

27 links have include_in_public_site: false (per data/site_display.yaml snapshot in the links file).

Reason Count
grant_pi with include_grant_pis: false 25
CUR-* course links (facility pages only) 2

Grant PIs are not shown on resource pages unless people_contacts.include_grant_pis is set to true in data/site_display.yaml.

With current settings, 107 links are eligible for public display when people_contacts.enabled: true.


31 links have include_in_graph: false.

Reason Count
grant_piUNI-001 (ORS grant-activity hub) 25
collaborator with generic evidence 3
faculty_leadCUR-* (course, not facility) 2
administratorUNI-001 (Associate Provost — broad ORS role) 1

103 links have include_in_graph: true for facility/center graph inspection.


7. Grant PI / UNI-001 false-hub warning

All 25 grant_pi links point only to UNI-001. They record internal grant applicant activity anchored to ORS for provenance — not confirmed use of a specific lab or instrument.

Do not infer that grant PIs listed on UNI-001 collaborate with each other. These are parallel grant-activity records, not a collaboration clique.


Duplicate-person cleanup

Merged 2026-05-30 before grants/publications work. No new relationships were added; only duplicate person_id records were consolidated.

Duplicate pair Surviving person_id Removed Email
Michael Lewanski (PER-044 + PER-049) PER-044 PER-049 mlewansk@depaul.edu
Caitlin Karver / Caitlin E. Karver (PER-054 + PER-074) PER-074 PER-054 ckarver@depaul.edu
Metric Before After
People in data/people.yaml 96 94
Person–resource links 134 134

Preserved on merge:

  • PER-044 — both distinct grant_pi entries to UNI-001 (QIC and URC applications).
  • PER-074 — three director links (CSH-001CSH-003) plus one grant_pi link to UNI-001; name Caitlin E. Karver, catalog profile URL, repo_and_depaul_verified, confidence high.

Grant PI graph flags (unchanged): all 25 grant_piUNI-001 links in person_resource_links.yaml have include_in_graph: false and include_in_public_site: false (with include_grant_pis: false in site_display.yaml).


8. evidence_file values that are URLs (not local repo files)

Type Count Share
HTTP(S) URL 102 76%
Local repo path 32 24%

Local paths: data/Internal Grants Summary (last 4 cycles)(All).csv (25), resources/**/*.md (5), data/course_resource_links.yaml (2).


9. Relationships with vague evidence_text

17 links flagged by heuristic (short text < 40 chars or generic anchor phrasing), including:

  • PRL-002 — CyberLabs generic affiliated-faculty boilerplate (PER-001CDM-004)
  • PRL-039 — SPARK/Plant collaborator line too generic for graph
  • PRL-086 / PRL-089 — short external CEO title lines on UNI-008
  • Several external partner director links with title-only evidence

Generic affiliated links remain include_in_graph: true with a note in person_resource_links.yaml; review before graph-RAG.


10. Duplicate or near-duplicate people

Type Status
Michael Lewanski (PER-044 / PER-049) MergedPER-044 (2026-05-30)
Caitlin Karver / Caitlin E. Karver (PER-054 / PER-074) MergedPER-074 (2026-05-30)
Name alias (not duplicate) Daniela Raicu / Daniela Stan Raicu — PER-015 only

No remaining duplicate-email person records. Multi-resource links for one person (e.g. Bruce Leech on CEC pages) are valid.


11. Broken person_id or resource_id references

None. Validation in export_graph_tables.py found:

  • Every person_id resolves in people.yaml
  • Every resource_id resolves to resources/**/*.md
  • No empty evidence_text
  • No grant_piUNI-001 with include_in_graph: true

  1. Remap grant PIs(Person)-[:APPLIED_FOR]->(Grant)-[:REQUESTS]->(Resource) instead of (Person)-[:grant_activity]->(UNI-001).
  2. Persist edge flagsinclude_in_graph / include_in_public_site now live in person_resource_links.yaml; add edge_id stability tests in CI.
  3. Add course nodes — export CUR-* links and data/course_resource_links.yaml as separate edge CSVs.
  4. Normalize evidence — add evidence_source_type (url | repo_file | grant_csv) and optional snapshot paths under data/evidence/.
  5. Hub node metadata — mark UNI-001, UNI-008 with hub_flag: true on resource nodes.
  6. Filter graph CSV for Neo4j — import only rows where include_in_graph=true from edges_person_resource.csv.
  7. Regenerate after policy changes — run build_person_resource_links.py when site_display.yaml or people.yaml changes.
  8. Publications layer — schema in data/publications.yaml; see Publications layer plan for evidence-only intake.

Regeneration commands

From repository root:

python3 scripts/build_person_resource_links.py
python3 scripts/apply_people.py
python3 scripts/export_graph_tables.py
./sync_docs.sh

./sync_docs.sh runs link build and apply_people.py automatically before copying sources to docs/.

Optional strict site check:

python3 -m mkdocs build --strict

Current export summary

File Rows
nodes_people.csv 94
nodes_resources.csv 67
edges_person_resource.csv 134
Flag Count
include_in_graph=true 103
include_in_graph=false 31
include_in_public_site=true 107
include_in_public_site=false 27

Graph-readiness pass: person_resource_links.yaml, updated scripts, and this report. No new people, no web crawl, no mkdocs nav changes.