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-001 … PER-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 |
2. Number of person–resource links exported
134 explicit links in data/person_resource_links.yaml (PRL-001 … PRL-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) |
5. Links excluded from public display
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.
6. Links excluded from graph export
31 links have include_in_graph: false.
| Reason | Count |
|---|---|
grant_pi → UNI-001 (ORS grant-activity hub) |
25 |
collaborator with generic evidence |
3 |
faculty_lead → CUR-* (course, not facility) |
2 |
administrator → UNI-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 | |
|---|---|---|---|
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_pientries toUNI-001(QIC and URC applications). - PER-074 — three
directorlinks (CSH-001–CSH-003) plus onegrant_pilink toUNI-001; nameCaitlin E. Karver, catalog profile URL,repo_and_depaul_verified, confidencehigh.
Grant PI graph flags (unchanged): all 25 grant_pi → UNI-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-001→CDM-004)PRL-039— SPARK/Plant collaborator line too generic for graphPRL-086/PRL-089— short external CEO title lines onUNI-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) |
Merged → PER-044 (2026-05-30) |
Caitlin Karver / Caitlin E. Karver (PER-054 / PER-074) |
Merged → PER-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_idresolves inpeople.yaml - Every
resource_idresolves toresources/**/*.md - No empty
evidence_text - No
grant_pi→UNI-001withinclude_in_graph: true
12. Recommended next steps before Neo4j or graph-RAG
- Remap grant PIs —
(Person)-[:APPLIED_FOR]->(Grant)-[:REQUESTS]->(Resource)instead of(Person)-[:grant_activity]->(UNI-001). - Persist edge flags —
include_in_graph/include_in_public_sitenow live inperson_resource_links.yaml; addedge_idstability tests in CI. - Add course nodes — export
CUR-*links anddata/course_resource_links.yamlas separate edge CSVs. - Normalize evidence — add
evidence_source_type(url|repo_file|grant_csv) and optional snapshot paths underdata/evidence/. - Hub node metadata — mark
UNI-001,UNI-008withhub_flag: trueon resource nodes. - Filter graph CSV for Neo4j — import only rows where
include_in_graph=truefromedges_person_resource.csv. - Regenerate after policy changes — run
build_person_resource_links.pywhensite_display.yamlorpeople.yamlchanges. - 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.