GoDataXh7 PH Source Development Kit: From Metrics to Metaphysics - The Awakening of New Science
This article is the developer-facing reference for GDX_HUMAN7 (GoDataX Human), reconstructed
directly from the project's own GDX_HUMAN7_DEVELOPMENT_KIT.md, the single entry point a
developer joining the project is expected to read. It documents what the project is, how its pieces fit
together, how every automation is run, and what each relational schema looks like.
Source: a direct read of every .md document, SKILL.md file, and *.sql
DDL/DML script in the repository, plus the architecture slides of
GDX_CTP_H7/GDX_DOCUMENTS/GDX_HUMAN/GoDataXHuman7-Br2.odp.
Repository
https://github.com/wilsonfda/godatax.human7.git
Main branch: master. There is no CI pipeline and no build step. This is a
documentation + SQL + Node.js/Python automation repository, not a compiled application. Every numbered
top-level folder is close to self-contained (its own .claude/skills/, its own
.md docs, its own .sql), which is why the folders are numbered in dependency
order rather than grouped by language or layer.
1.0 Project Overview
GDX_HUMAN7 is a data-engineering and research project that starts from one real psychometric study, "Predictors of Adaptability to Military Higher Education," applied to 423 cadets at the Military Academy, and expands it in several directions:
- A rigorous relational model of the raw psychometric data (item-level responses, dimension scores, instruments, constructs) in a Firebird 2.5 database.
- Interpretive/qualitative bridges between that scientific base and four distinct philosophical/esoteric traditions: the theosophical Septenary Constitution, the 7 Kundalini chakras, Thomas Aquinas's Five Ways, and Virtology (a 33-virtue neuro-philosophical system), always kept explicit as conceptual readings, not statistical findings.
- Physiological data (cardiac coherence / HRV device) linked to the same person identity as the psychometric study.
- An analytical layer (a star-schema data warehouse) unifying all these perspectives for cross-cutting queries.
- A knowledge graph (Neo4j) mirroring the entire relational schema, feeding two graph-machine-learning models (link prediction, community detection) and an LLM assistant.
- A repeatable pipeline for onboarding new studies/instruments from scratch. The original 423-cadet study was loaded once, by hand; any future study goes through a generic skill assembly line (interview, SQL generation, load, questionnaire export, answer load).
Nearly all automation in the project is implemented as Claude Code skills
(.claude/skills/ inside each folder), each with its own SKILL.md. The general
pattern is "generate, then execute": a Python or Node.js script reads the data source
and generates SQL; a second script executes that SQL against Firebird (--dry-run always
available before a real write).
1.1 The source data, in one sentence
An IBM SPSS .sav file with no embedded metadata (no variable labels, no
value labels). Every column's meaning (AC1, Ha7, ENGAGvigor, …)
had to be reverse-engineered from external support documents and is documented in
SPSS_to_Firebird_Mapping.md. 423 respondents, 159 columns: 137 raw items
across 9 instruments, 1 context variable (ano, curricular year) and 20 pre-computed
dimension scores.
| Instrument | Raw columns | Computed dimensions |
|---|---|---|
| Hardiness | Ha1–Ha30 (30) | Commitment, Control, Challenge |
| Student Engagement Scale | En1–En14 (14) | Vigor, Dedication, Absorption |
| Career Adapt-Abilities Scale (CAAS) | AC1–AC28 (28) | Concern, Control, Curiosity, Confidence |
| Satisfaction With Life Scale (SWLS) | SV1–SV5 (5) | Single index |
| Job Satisfaction Scale | ST1–ST5 (5) | Single index |
| Positivity Ratio Scale | RP1–RP20 (20) | Positive / Negative Emotions |
| Personal Satisfaction | 1 item | Single index |
| Perceived Control of Life | 1 item | Single index |
Three additional blocks (ef1–ef18, an1–an11,
red1–red5) are medium/low-confidence hypotheses (Maslach Burnout Inventory, an
unidentified "organizational anomie" block, and "Red Tape"). No supporting document confirms their
authorship or exact item wording. This gap is documented, not guessed at.
1.2 One person, one identity, everywhere
A design decision cuts across folders 2, 6, 7 and 9: there is exactly one person identity in the
whole project, GDX_PSY_PERSON.ID_PERSON. DW_DIM_PERSON is a faithful
copy of it; GDX_CC_PERSON.ID_PERSON is a direct FK into it (not a parallel catalog); the
Neo4j graph inherits the same id as gdx_key. Today only one person (SPSS-784)
has both psychometric and cardiac-coherence data, which limits what the dashboards/ML can show about the
intersection of the two sources, but the architecture is already built for more.
2.0 Getting Started
2.1 Technology stack
| Concern | Technology | Notes |
|---|---|---|
| Relational database | Firebird 2.5 | All OLTP schemas (GDX_PSY_*, GDX_TA_*, GDX_CC_*) and the DW (DW_DIM_*/DW_FACT_*) live in one database, godatax.human |
| DB connectivity (Node.js) | node-firebird | Pure wire-protocol driver, no native client library needed on the machine running a skill |
| Graph database | Neo4j AuraDB (Graph Data Science / Aura Graph Analytics) | Free tier is sufficient for this project's graph size |
| Graph connectivity (Node.js) | neo4j-driver | |
| Generation scripts | Python (pyreadstat, pandas, numpy, semopy, scikit-learn, openpyxl) and Node.js | Python for .sav reading and statistical analysis (CFA/EFA); Node.js for every database read/write |
| Dashboards | Self-contained HTML/CSS/JS files | No server, no external CDN. Open directly in a browser |
| Automation framework | Claude Code skills (.claude/skills/<NAME>/SKILL.md) | Each skill folder has its own scripts/, package.json, and .env.example |
2.2 Credentials & environment variables
Every skill reads connection settings from environment variables, never hardcoded, an
explicit, repo-wide rule called out in nearly every SKILL.md and .env.example.
# Firebird (godatax.human), used by every skill that reads/writes GDX_PSY_*/GDX_TA_*/GDX_CC_*/DW_* GDX_HUMAN_FB_HOST=127.0.0.1 GDX_HUMAN_FB_PORT=3050 GDX_HUMAN_FB_DATABASE=/firebird/godatax.gdb GDX_HUMAN_FB_USER=godatax1 GDX_HUMAN_FB_PASSWORD= # Neo4j (AuraDB), used only by the knowledge-graph export and the two ML skills NEO4J_URI=neo4j+s://xxxxxxxx.databases.neo4j.io NEO4J_USERNAME= NEO4J_PASSWORD= NEO4J_DATABASE=
.env files are gitignored everywhere; only .env.example (no secrets) is
committed.
2.3 Running a skill: the general pattern
cd <folder>/.claude/skills/<SKILL_NAME>/scripts npm install # once # copy ../.env.example to ../.env and fill in the password, or export the vars directly node <script>.js --dry-run [--study <slug>] # see what would happen, writes nothing node <script>.js [--study <slug>] # apply it, confirm with a human first
--dry-runis supported by essentially every write-capable skill.--study <slug>scopes a run to one study and is required by every skill built or updated since 2026-09-17/18 (dashboards, DW loader, knowledge-graph export, link suggestions).- Read-only analysis skills (the two
10.gdx.machine.learningML skills) never touch Firebird, only Neo4j.
2.4 Sharing the skills with a team
These are Claude Code skills, not a claude.ai (web/desktop chat) feature. claude.ai's
own "Skills" run in an isolated cloud sandbox with no outbound network access to a private host and
no access to a local .env, so a skill that needs to reach 127.0.0.1
or a Neo4j AuraDB instance with real credentials cannot run there. Every skill in this repository is
designed to run locally, inside Claude Code, on a machine that has network access to the database
and its own .env. Two different audiences need two different kinds of access.
Teammates who will run the skills themselves
- Repository access. The repo is hosted at
https://github.com/wilsonfda/godatax.human7.git. If it is private, add each teammate as a collaborator (or invite them to the GitHub org/team that owns it). - Local setup, per teammate: install Claude Code,
git clonethe repository, then for every skill they will actually use,cdinto itsscripts/folder andnpm installonce (§2.1). - Skill discovery is not recursive. Claude Code discovers project-level skills by searching
.claude/skills/upward from the current working directory toward the repository root, not downward into every subdirectory. Because each numbered folder has its own.claude/skills/(§3), opening Claude Code at the repository root does not automatically surface the skills nested inside0.new.instrument/,2.relational.model.psychometrics/,9.knowledge.graph/, and so on. In practice this is already how the repo is meant to be used (§2.3's owncd <folder>/.claude/skills/<SKILL_NAME>/scriptspattern), but it is worth spelling out for anyone new to Claude Code:- Default, no extra setup:
cdinto the specific numbered folder before invoking that folder's skill, matching the pattern already used throughout §2.3 and §5. - One Claude Code session across several folders: run
/add-dir <folder>(Claude Code v2.1.257+) for each numbered folder whose skills are needed in that session, instead of restarting Claude Code every time the working folder changes. - Team-wide, install-once alternative: package the skills as a Claude Code plugin and publish it to a plugin marketplace (a git repository can serve as one). A teammate then runs
/plugin marketplace add <repo>once and/plugin install <skill>@<marketplace>per skill, and the skills become available in every project regardless of working directory. Plugin skills and project-level skills can coexist; a marketplace/plugin pairing can be declared in.claude/settings.json:{ "extraKnownMarketplaces": { "gdx-human7-skills": { "source": { "source": "github", "repo": "wilsonfda/godatax.human7" } } }, "enabledPlugins": { "gdx-human7@gdx-human7-skills": true } }This is the recommended path once more than a couple of people need the full skill set regularly, since it removes the "which folder am I in" question entirely.
- Default, no extra setup:
- Credentials, per teammate. Every skill reads Firebird/Neo4j connection settings from
.env(§2.2), never hardcoded. Prefer creating a separate Firebird user and a separate Neo4j AuraDB user per teammate (scoped to read-only where write access isn't needed) over sharing one password, so a--dry-run/write-guard mistake is attributable and revoking one person's access is trivial.
People who only need to see results, no install
Several outputs of this pipeline need no Claude Code, no .env, and no database access at
all, because they are pre-rendered, self-contained artifacts:
- The dashboards (
8.gdx.dashboards/) are standalone.htmlfiles with inline SVG and no external dependency. Open directly in a browser, or send the file; they are also published live right on this page, above, so pointing a non-technical stakeholder here is usually the fastest option. - The written deep-dive docs (
Dashboards_DW_Explanation.md,GoDataX_Human_7_Knowledge_Graph.md,Septenary_Link_Prediction_and_Community_Detection.md, the development kit itself, and others) are plain Markdown, readable on GitHub or any Markdown viewer.
Conversational access without Claude Code (advanced)
To let someone ask natural-language questions grounded in the Neo4j graph (§8, the
11.gdx.llm.agent.mcp/prompt.instruction.txt system prompt) without installing Claude
Code, claude.ai's sandboxed Skills feature is the wrong tool, but claude.ai's Connectors
(remote MCP servers, available on Team/Enterprise plans) are not sandboxed the same way: a Connector
is explicitly meant to reach a service you host. The path is:
- Stand up an MCP server that exposes the Neo4j graph (a small wrapper around
neo4j-driver, hosted anywhere reachable over HTTPS; this does not exist in the repo yet and would need to be built). - Register its URL as a custom Connector in the claude.ai Team/Enterprise admin settings, and load
prompt.instruction.txtas that Connector-enabled chat's system prompt/Project instructions. - Teammates with access to that Connector can then query the graph conversationally from ordinary claude.ai chat, with the same rigor rules the prompt enforces: always distinguish empirical data from interpretation, never diagnose, always show the graph path.
This is meaningfully more infrastructure work than the two options above (a server to host and secure) and is not required for the pipeline to function. It only matters if conversational, install-free access to the graph is a real requirement.
3.0 Repository Map
GDX_HUMAN7/ 0.new.instrument/ <- generic pipeline to onboard a NEW study from scratch 1.output.ibm.spss.statistics/ <- the original .sav file + its full data documentation 2.relational.model.psychometrics/ <- the GDX_PSY_* schema (core of everything) + the loaded study 3.septenary.constitution/ <- interpretive bridge: instruments × 7 theosophical bodies/levels 4.kundalini.chakras/ <- interpretive bridge: 7 chakras × septenary levels 5.five.ways.tomas.aquino/ <- interpretive bridge: Aquinas's 5 ways × septenary levels 6.cardiac.coherence/ <- physiological data (ECG/HRV device), same person identity 7.multidimensional.database/ <- the Data Warehouse (star schema) unifying folders 2–6 8.gdx.dashboards/ <- 8 self-contained HTML dashboards reading the DW 9.knowledge.graph/ <- export of the whole relational schema into Neo4j 10.gdx.machine.learning/ <- 2 graph ML models (link prediction, community detection) 11.gdx.llm.agent.mcp/ <- system prompt for an LLM assistant over the knowledge graph 12.gdx.virtology/ <- knowledge base of 33 virtues + link-suggestion skill
The numbering reflects, broadly, dependency order: every folder consumes data from lower-numbered folders (the DW in folder 7 reads folders 2–6; the dashboards in folder 8 read folder 7; the graph in folder 9 reads folders 2–7; the ML in folder 10 reads folder 9 only).
4.0 The Pipeline, Step by Step (0–12)
Step 0: New Instrument Onboarding
Four chained skills onboard a brand-new study from scratch:
GDX_SKILL_NEW_STUDY conversational interview -> new_study_intake/<slug>/intake.json
|
GDX_SKILL_RECORD_NEW_STUDY generates SQL from intake.json + executes it against Firebird
|
GDX_SKILL_EXPORT_NEW_STUDY reads Firebird -> generates a blank .xlsx questionnaire
|
(send one copy per participant, wait for it to come back filled in)
|
GDX_SKILL_LOAD_NEW_STUDY_ANSWERS reads ONE filled .xlsx -> writes responses into Firebird
Unlike the historical study (loaded once, by hand), this assembly line is generic: it
never hardcodes an id, never invents a field the user doesn't know the answer to, and never duplicates
an already-onboarded study. Filled .xlsx files (real participant data) must never be
committed. Only intake.json and the generated SQL are meant to be committed.
No dedicated schema of its own. These four skills read and write the GDX_PSY_* relational
model shown in Step 2 below, mediated by new_study_intake/<slug>/intake.json.
Skills in this step
Interviews a human to register a brand-new study, instrument(s), constructs, variables/indicators, items, response anchors and scoring weights, grounding every question in the live GDX_PSY_* schema and catalog.
Reads a validated intake.json and both generates and (optionally) executes the Firebird load scripts that persist it as GDX_PSY_STUDY/PHENOMENON/CONSTRUCT/VARIABLE/INDICATOR/INSTRUMENT/INSTRUMENT_ITEM/ITEM_ALTERNATIVE/INDICATOR_ITEM rows.
Reads a newly-onboarded study's instruments/items/alternatives back out of Firebird and writes a blank .xlsx questionnaire to send to participants: a Participant sheet, one sheet per instrument, and a hidden META sheet.
Reads one filled .xlsx and inserts the participant's real answers into Firebird: GDX_PSY_PERSON (found-or-inserted), GDX_PSY_STUDY_PARTICIPANT, one GDX_PSY_APPLICATION per answered instrument, one GDX_PSY_ITEM_RESPONSE per answered item.
Step 1: The Source Data
The historical study's .sav file (423 cadets) and its complete documentation. No skill
lives here. It is a raw data source, read by GDX_SKILL_LOAD_RLT_MODEL_DB (folder 2).
Step 2: Psychometrics, the GDX_PSY_* schema
The heart of the project: psychometrics_model_firebird25.sql defines the full relational
model, from study to instrument to construct to variable/indicator to item to response alternative to
application to response to computed result. 28 tables in total. Every surrogate key is a
BIGINT populated by a Firebird BEFORE INSERT trigger reading from a matching
SEQ_GDX_PSY_* sequence. No id is ever hardcoded by application code except in the frozen,
one-time historical load scripts.
Key rules baked into the DDL:
GDX_PSY_PERSON.EXTERNAL_IDENTIFIERandGDX_PSY_STUDY_PARTICIPANT(ID_STUDY, ANONYMOUS_CODE)are unique: one physical person, one row, reusable across studies.GDX_PSY_ITEM_RESPONSEis unique per(ID_APPLICATION, ID_ITEM); every*_RESULTtable is unique per(ID_APPLICATION, ID_CONSTRUCT|ID_VARIABLE|ID_INDICATOR).PERCENTILEcolumns are check-constrained to[0, 100]; boolean-like flags (CONSENT,ACTIVE,REVERSED) are check-constrained to(0,1).GDX_PSY_APPLICATION/OBSERVATION/EVALUATIONall FK to the composite key(ID_STUDY, ID_PERSON)ofGDX_PSY_STUDY_PARTICIPANT, not toGDX_PSY_PERSONdirectly. A person must be enrolled in the study before anything can reference them there.
Skills in this step
Regenerates and (optionally) runs the load scripts for the one historical .sav study, the skill that loaded the original 423-cadet dataset into the schema above.
Runs CFA/EFA psychometric analyses sourced from the live database instead of the .sav, across all 11 instruments, in three tracks. Track A re-runs the Career Adapt-Abilities Scale's CFA/EFA as an independent cross-check of its known, confirmed grouping. Track B runs EFA and CFA for every other multi-item instrument, discovering the item-to-variable structure computationally (ranking items by correlation against each variable's real score, then searching reversal-flip combinations for an exact match) since GDX_PSY_INDICATOR_ITEM is empty for them. Track C computes descriptive statistics only for the two single-item instruments, where factor analysis isn't mathematically possible.
Step 3: Septenary Constitution, instruments × 7 bodies
Catalogs the 7 levels of the theosophical Septenary Constitution (Physical → Vital/Etheric → Astral →
Lower Mental → Higher Mental → Buddhic → Atmic/Spirit) and relates psychometric variables to them, each
row carrying a written justification and a CONFIDENCE_LEVEL
(HIGH/MEDIUM/LOW/SPECULATIVE).
ID_INSTRUMENT/ID_VARIABLE are nullable by design: the mapping was populated by
free-text label before the formal catalog existed, and is reconciled to real ids afterward.
Skill in this step
Keeps GDX_PSY_SEPT_LEVEL_PSY_MAP in sync with one study at a time: for each of the study's variables, resolves a knowledge-catalog key (the .sav column, or the variable's own name), then inserts/backfills/skips a mapping row depending on whether one already exists.
Step 4: Kundalini Chakras, 7 chakras
No skill (static DDL/DML). A strict 1:1 ascending correspondence to
GDX_PSY_SEPTENARY_LEVEL (chakra of order N ↔ septenary level of order
N, a common yoga-theosophy syncretism, explicitly framed as symbolic, not empirical). Unlike
the septenary mapping table, ID_SEPTENARY_LEVEL here is NOT NULL. Every
chakra always resolves to exactly one level, and the correspondence is fixed DDL/DML.
No skill in this step. The correspondence is fixed DDL/DML; no loader skill ever touches this table.
Step 5: The Five Ways of Aquinas
No skill (static DDL/DML). Catalogs Thomas Aquinas's five cosmological/teleological arguments for
God's existence (Summa Theologica I, Q.2, Art.3) and relates each way to the septenary level
that best matches the faculty of reasoning it exercises, deliberately N:1 (levels
4/4/5/5/6), never trivially mapping all five to level 7. Confidence is mixed by design: way 4 →
Higher Mental is rated HIGH, way 5 → Buddhic is SPECULATIVE, the rest
MEDIUM.
No skill in this step. Static DDL/DML, populated once and never touched by a loader skill.
Step 6: Cardiac Coherence, physiological data (ECG/HRV)
Schema GDX_CC_* for capturing cardiac coherence with the ECG/HRV device.
GDX_CC_PERSON is not a parallel person catalog. Its
ID_PERSON is a direct FK into DW_DIM_PERSON/GDX_PSY_PERSON, the
same identity used on the psychometric side, enforced at the database level. Device specs are
baked into check constraints: ECG_SAMPLE_RATE_HZ IN (125,128,200,250,256,500,512),
15-bit resolution, HEART_RATE_BPM BETWEEN 20 AND 240,
RR_INTERVAL_MS BETWEEN 250 AND 3000. STRESS_CLASS and
DEVICE_TEMP_C carry explicit column comments warning they are not a
diagnosis / not body temperature.
The physical sensor behind this data is a coin-sized ECG/HRV module worn
on a chest strap. It streams raw ECG samples and RR intervals over Bluetooth to the acquisition
pipeline that ultimately lands in GDX_CC_ECG_SAMPLE and GDX_CC_RR_INTERVAL.
Skill in this step
Associates cardiac-coherence participants with a psychometric study: selects every active GDX_CC_PERSON with ≥1 GDX_CC_SESSION row and no existing study association, defensively re-verifies a matching GDX_PSY_PERSON exists, then inserts the association.
Step 8: Dashboards
8.gdx.dashboards/ has no dedicated schema of its own. It only reads the Data Warehouse
built in Step 7, below:
Generates 9 self-contained HTML charts from the DW, scoped by --study <slug>: a two-panel chart (mean response score vs. factor-analysis loading, per instrument), a line chart (physiological response), a bar chart (score by septenary level), 4 heatmaps (instrument × level / cardiac stress / chakra / Five Ways), and 2 "gradient portrait" figures (chakra silhouette, septenary constitution diagram). --chart <code> generates just one of them instead of all 9.
The 9 charts, live
Each chart below is the actual, self-contained output of the skill: no server, no external library,
just inline SVG and a small script, rendered live from ID_STUDY=1.
RAW_SCORE on the top panel and mean factor loading on the bottom panel, deliberately not sharing an axis since they are different quantities.5.0 Deep Dive: The Data Warehouse (Step 7)
A single star-schema layer (11 dimensions + 3 facts) relating the five separate OLTP perspectives (psychometric, septenary, chakra, Five Ways, cardiac coherence) without replacing any of them, a read-oriented reshaping that lets one query cross perspectives. For example, "for people whose Hardiness-Challenge score is high, and whose corresponding septenary level is Buddhic, what chakra and which of Aquinas's Five Ways share that level?"
GDX_PSY_PERSON is the single, central person table for the entire DW.
DW_DIM_PERSON is sourced from it alone. GDX_CC_PERSON remains its own OLTP
table, but is enforced at the database level to point into the same person space via
FK_GDX_CC_PERSON_DW_PERSON. One consequence: DW_DIM_PERSON must be loaded
before any GDX_CC_PERSON insert can succeed, and can no longer be freely truncated without
first considering GDX_CC_PERSON's dependency on it.
No dimension key is reinvented where the source already has a clean BIGINT PK (e.g.
DW_DIM_PERSON.ID_PERSON = GDX_PSY_PERSON.ID_PERSON). The only generated
dimension is DW_DIM_DATE (2020-01-01…2030-12-31); DATE_KEY = -1 is the
reserved "no date" member used by every psychometric fact (the .sav carries no calendar
date). How a psychometric fact reaches the metaphysical/energetic perspectives:
DW_FACT_PSY_VARIABLE_RESULT → DW_DIM_VARIABLE.ID_SEPTENARY_LEVEL → DW_DIM_SEPTENARY_LEVEL →
(DW_DIM_CHAKRA / DW_DIM_FIVE_WAY).
Skill in this step
Incremental, per-study, insert-if-missing loading of the DW: once a study's instruments/participants/answers (and optionally septenary/cardiac mappings) already exist in the OLTP schemas, this makes it queryable here.
Validated load (real numbers, godatax.human)
| Table | Rows |
|---|---|
DW_DIM_DATE | 4,019 |
DW_DIM_PERSON | 423 |
DW_DIM_INSTRUMENT | 11 |
DW_DIM_VARIABLE | 21 (16 with a resolved septenary level) |
DW_DIM_ITEM | 138 |
DW_DIM_SESSION | 5 |
DW_FACT_PSY_ITEM_RESPONSE | 58,374 |
DW_FACT_PSY_VARIABLE_RESULT | 8,882 |
DW_FACT_CC_HRV_WINDOW | 5 |
Two loading modes
| Script | Shape | When to use |
|---|---|---|
godatax_human_dw_etl_firebird25.sql | Plain SQL, whole-database, not idempotent (truncate-then-reload) | Building the DW once, from empty, across every study already in the OLTP schemas |
GDX_SKILL_LOAD_NEW_STUDY_DW | Node.js, per-study, insert-if-missing | The ongoing case: a newly onboarded study needs its data added without disturbing any other study already in the DW |
6.0 Deep Dive: The Knowledge Graph (Step 9)
Folders 2 through 8 store everything as relational tables, correct for OLTP writes and for the SQL-shaped questions the dashboards ask. But the ML models in folder 10 need a graph embedding: a numeric vector per node encoding not just its own columns but its position in the whole network of relationships around it.
The mapping rule is generic, not hand-mapped:
- Node = one table, label = the table name exactly as Firebird has it.
- Node property = one column (BLOB
SUB_TYPE TEXTcolumns read as plain strings). - Node identity (
gdx_key) = the table's own PK (composite keys joined with::). Every write is a CypherMERGE, idempotent and re-runnable. - Relationship = one FK constraint whose child and parent are both in scope; type = the constraint's own name, direction child → parent. A
NULLFK produces no relationship. - Discovered live every run via Firebird's
RDB$system catalog: a new table under an in-scope prefix (GDX_PSY_*,GDX_TA_*,GDX_CC_*,DW_DIM_*,DW_FACT_*) appears in the graph automatically, with no code change.
Skill in this step
Exports one study's slice of the entire GDX_HUMAN relational schema into the Neo4j knowledge graph above: one node label per table, one relationship type per FK constraint, both discovered live via RDB$ catalog introspection, not a hand-written mapping.
A worked example, one row of GDX_PSY_VARIABLE_RESULT (person 784's Emotional Exhaustion score):
(:GDX_PSY_VARIABLE_RESULT {gdx_key:"...", RAW_SCORE:4.0})
-[:FK_GDX_PSY_VR_APPLICATION]-> (:GDX_PSY_APPLICATION {gdx_key:"784", ID_STUDY:1})
-[:FK_GDX_PSY_VR_VARIABLE]-> (:GDX_PSY_VARIABLE {gdx_key:"22", NAME:"Emotional Exhaustion"})
-[:FK_GDX_PSY_VARIABLE_CONSTRUCT]-> (:GDX_PSY_CONSTRUCT {gdx_key:"9"})
23 tables are filtered to one study's rows (via ID_STUDY/ID_PERSON/
ID_APPLICATION/SESSION_ID/ID_EVALUATION); 32 shared
reference/catalog tables are always exported in full, every run. Because the graph accumulates
(MERGE, not truncate), running the skill again for a second study adds that study's rows
without touching the first study's.
| Metric (2026-09-21, live query) | Value |
|---|---|
| Tables in scope | 55 (23 study-scoped, 32 global/reference) |
| FK relationships in scope | 70 |
| Nodes written | 141,706 |
| Relationships written | 331,771 |
| Largest tables | GDX_PSY_ITEM_RESPONSE/DW_FACT_PSY_ITEM_RESPONSE: 58,374 rows each |
7.0 Deep Dive: Machine Learning Models (Step 10)
Both models run on Neo4j Graph Data Science (GDS), with no separate Python/pandas ETL for the embedding step itself.
Model 1: Link Prediction
Question: which septenary level should a new, still-unmapped variable most likely belong to? Supervised, FastRP node embeddings over the catalog subgraph, then a classifier scoring every (unmapped variable, level) candidate pair. 18–19 positive examples spread across 7 classes is a small training set, so a confidence threshold turns a weak score into "no suggestion" rather than a manufactured guess. The model is a triage aid, never a classifier trusted unsupervised. It never auto-writes; a human still adds an accepted suggestion by hand.
Real first run: 22 GDX_PSY_VARIABLE nodes, 18 mapped, 4 unmapped (all four are the
excluded-by-design Organizational Anomie block plus Red Tape, correctly showing no strong single
winner). Independent GDS-pipeline AUCPR: 0.75 (test), ~0.78 (validation avg).
A real Neo4j Aura Graph Analytics bug (link-prediction predict.* mis-resolving
relationship endpoints on a multi-label projection) is worked around by pulling FastRP embeddings via
a plain node-property read and training a ~30-line in-script logistic regression instead.
Model 1's skill: materializes a MAPS_TO_LEVEL edge from the existing mapping table, projects the catalog subgraph, computes FastRP embeddings, and outputs a ranked top-N (default 3) candidate-level list per unmapped variable.
Scoped below with the Data Science Workflow Canvas (GDX_STRATEGIC_DISCOVERY):
1Problem Statement
Most variables already have a VARIABLE→LEVEL mapping, but every new variable lands as “UNKNOWN” and reviewing each one by hand against all 7 septenary levels doesn’t scale.
2Outcomes/Predictions
For every “UNKNOWN” VARIABLE node, a ranked top‑3 list of candidate SEPTENARY_LEVEL targets with scores, not a single fixed label.
3Data Acquisition
The Human 7 knowledge graph itself: 55 tables as nodes, 70 foreign keys as edges, with the existing mappings as ground-truth positives.
4Modeling
Neo4j GDS FastRP node embeddings feed a classifier trained on existing mappings as positives vs. sampled non-edges as negatives.
5Model Evaluation
Cross-validated against labeled mappings; only high-confidence predictions are surfaced. A triage aid for human review, not a substitute for judgment.
6Data Preparation
Build FastRP embeddings for every VARIABLE and SEPTENARY_LEVEL node; assemble the positive/sampled-negative edge training set.
knowledge.js with justification, model suggests, a person decides).Knowledge Graph
55 tables → nodes
70 foreign keys → edges
(GDX_SKILL_GODATAX_HUMAN7_BY_SPU)
Node Embeddings
Neo4j GDS · FastRP
each node → a vector encoding its neighborhood
Classifier
Trained on the existing VARIABLE→LEVEL mappings
positives vs. sampled non-edges
Ranked Suggestions
Every “UNKNOWN” variable scored against all 7 levels
top‑3 candidates, with scores
Human Review
Accepted suggestion added to knowledge.js with justification
model suggests, a person decides
18–19 labeled VARIABLE→LEVEL mappings spread across 7 classes. Cross-validate, surface only high-confidence predictions, and grow the label set before trusting the model.
Treat this as a triage aid that ranks candidates for review, never a classifier that replaces the judgment call.
Model 2: Community Detection
Question: do variables/instruments naturally group the way the septenary/chakra/Five-Ways framework says they should? Unsupervised: Louvain (primary) plus Label Propagation (cross-check), without any label-derived shortcut edge, so the test is honest. Real run: Louvain found 9 non-trivial communities. Most are clean structural confirmations (the three satisfaction-family instruments cluster together on Astral/Manipura); one is the predicted "spans levels" case (the Engagement Scale's Dedication and Absorption cluster together but span Higher Mental and Buddhic). Label Propagation agreement was high (mostly 100%).
Model 2's skill: projects the same catalog subgraph without any label-derived shortcut edge, runs Louvain, cross-checks with Label Propagation, and reports which septenary levels/chakras appear inside each non-trivial community.
Scoped below with the Data Science Workflow Canvas (GDX_STRATEGIC_DISCOVERY):
1Problem Statement
The septenary/chakra level assignments were built by hand, one mapping decision at a time. Is there independent, structural evidence in the graph that those groupings hold together?
2Outcomes/Predictions
No target label is predicted. The output is an unsupervised grouping of nodes into structural communities, compared visually against the existing level/chakra colors.
3Data Acquisition
The same Human 7 knowledge graph as Model 1 (55 nodes, 70 edges); this pass uses no labels, no mapping table is pulled in as training data.
4Modeling
Neo4j GDS Louvain community detection: unsupervised, modularity-based clustering of densely-connected nodes.
5Model Evaluation
Match: a solid level/chakra color per community supports the interpretive mapping. Mismatch: a prompt to revisit construct definitions, not proof the framework is wrong. Clusters are structural, not causal.
6Data Preparation
Reuse the same graph projection built for Model 1; no positive/negative edge sampling needed since Louvain runs unsupervised on structure alone.
Structural Communities
found by Louvain — no labels used
- Community X
- Community Y
- Community Z
Septenary / Chakra Levels
same nodes, colored by the framework's labels
- Astral
- Higher Mental
- Buddhic
- Match — a community is one solid level color, validating that part of the mapping.
- Community spans levels — e.g. Community X mixes Astral and Higher Mental.
- Level splits across communities — e.g. Astral appears in both Community X and Community Y.
A mismatch is a prompt to investigate the construct definitions, not proof the septenary framework is wrong.
| Model 1: Link Prediction | Model 2: Community Detection | |
|---|---|---|
| Question | "Which level for this new variable?" | "Do groupings match structurally?" |
| Learning | Supervised (small-N) | Unsupervised |
| Main risk | Overfitting / false confidence | Structural clusters mistaken for psychological meaning |
| Output | Ranked suggestions, human review | Cluster assignments, human interpretation |
| GDS algorithm | fastRP + link-prediction pipeline | louvain + labelPropagation |
Suggested order: Model 2 first (no labeled data needed, low risk, immediate); Model 1 second, revisited as the labeled set grows.
8.0 Deep Dive: The LLM Knowledge-Graph Agent (Step 11)
A single system-prompt file (11.gdx.llm.agent.mcp/prompt.instruction.txt) for an LLM
assistant connected to the Neo4j knowledge graph. Core rules the prompt enforces:
- Answer only from what the connected Neo4j graph actually contains. Never invent a relationship, measurement, instrument, result, or interpretation.
- If the graph doesn't have enough information, say so explicitly rather than filling the gap.
- Always distinguish five categories in any answer: scientifically measurable data, calculated indicators, psychological interpretations, philosophical/metaphysical interpretations, and energetic/traditional models.
- Never present a metaphysical/philosophical/energetic association as a scientifically validated causal relationship.
- Never provide a medical or psychological diagnosis. The assistant is explicitly educational/analytical, not a substitute for a qualified professional.
- Protect participant-identifying data; disclose it only to an explicitly authorized user.
- When useful, show the actual graph path (entities and relationships) behind an answer.
- Respond in the same language the user used; if asked to translate, translate the entire answer including retrieved values.
Preferred response structure: direct answer → evidence found in the graph → relevant relationships/graph path → scientific-or-interpretive classification → limitations.
Knowledge Base
Person, Group, Psychometrics, Physiological Data, Metaphysical & Energetic layers, Behavioral variables
entities, relationships and semantic context
LLM Chatbot
A conversational LLM agent interprets natural-language questions and queries the graph to answer with context
User Response
Semantic query · contextual explanation
relationship navigation · decision support
Q: Which measurement instruments are used in GoDataX Human 7?
A: The project integrates psychometric scales, physiological sensors and cardiac-coherence data for multidimensional analysis.
Q: What can cardiac coherence indicate?
A: It can indicate autonomic regulation, recovery, breathing, and physiological patterns associated with emotional state.
No skill in this step. It is a single system-prompt file, not an automated Claude Code skill; it is the prompt used by an external agent/chat integration (Neo4j Aura's console.neo4j.io agent) connected to the Step 9 graph.
9.0 Deep Dive: Virtology & Link Suggestions (Step 12)
A "clinical-philosophical" school founded by Eduardo Casarotto, captured via an automated, explicitly-flagged-as-unverified web fetch. Central reframing: a virtue is redefined away from a moral concept into a neurological one, "a set of neural networks working in a specific configuration," trainable through repetition until it operates without effort.
| System | Focus | Claimed manifestations |
|---|---|---|
| SNO, Neurofunctional Pride System | Reward circuit, self-referential thinking | Power-seeking, vanity, need for approval, controlling behavior, and (paradoxically) timidity |
| SNE, Neurofunctional Selfishness System | Prefrontal self/other cost-benefit calculation | Aggression, addiction, indifference, controlling behavior, corruption |
The 33 virtues are given as a complete, ordered list (Humility declared explicitly foundational: "without it none of the others can be sustained"). Open gaps are honestly documented: no full inventory of the claimed "Evolution Levels," no official virtue→SNO/SNE mapping exists from the source at all. Only a narrower, project-authored variable→virtue map is used in practice.
Skill in this step
Ranks a study's lowest-scoring psychometric indicators and suggests, from the 33 Virtology virtues, which one addresses each, via the fixed scripts/virtue_knowledge.js's VARIABLE_VIRTUE_MAP.
Real validated run, ID_STUDY=1, top lowest indicators:
| Indicator (level) | Score | Suggested virtue |
|---|---|---|
| Vigor, Engagement (Vital/Etheric) | 2.71 | Perseverance |
| Absorption, Engagement (Buddhic) | 2.75 | We Are All One |
| Challenge, Hardiness (Buddhic) | 2.81 | Pursuit of Improvement |
| Positive Emotions (Vital/Etheric) | 3.00 | Gratitude |
| Emotional Exhaustion (Physical) | 3.74 | no suggestion (review) |
The unresolved row is the "never guesses" rule working as intended: Emotional Exhaustion
was never in the original .sav at all (it was computed later from raw item responses),
so it has no .sav column for the lookup key to match.
10.0 Cross-Cutting Design Principles
Several documents repeat, in different words, the same rules. Worth naming once:
- Never invent missing data. A gap is always documented as a gap (an
UNKNOWNmapping, a "no suggestion (review)" row, anUNMATCHED/MISSINGreport line), never filled with a guess. - "Not zero, not missing, structurally absent." The phrase used for a heatmap cell with no mapped instrument at a level. The same reasoning applies to any relationship that simply doesn't exist in the schema yet.
- Empirical finding ≠ interpretive reading. Relating a scientific instrument to a chakra or a virtue is a conceptual organizing tool inside GoDataX, never a scientific or doctrinal claim.
- Secrets are never committed. Every skill that touches Firebird/Neo4j reads credentials from environment variables (
.env, gitignored; only.env.exampleis committed). - Idempotency and reversibility. Nearly every database-writing skill supports
--dry-run, an "already loaded" guard, and never deletes data. - One person, one identity, enforced first as a convention, then as an actual database
FOREIGN KEY(FK_GDX_CC_PERSON_DW_PERSON). --study <slug>scoping. Every skill built or touched since 2026-09-17/18 resolves the sameintake.json → GDX_PSY_STUDY.ID_STUDYchain, so a second study never silently blends into a chart, a DW load, or a report meant for the first one.
11.0 Proposed Architecture Extension: Environmental, Energetic & Anomalous Phenomena Sensing
This is a designed but not yet implemented extension. No folder, schema, or skill exists for it in
the repository today. It is reconstructed from slides 90 through 96 of the project's own slide deck
(GDX_CTP_H7/GDX_DOCUMENTS/GDX_HUMAN/GoDataXHuman7-Br2.odp) and organized below as a
layered engineering architecture, from raw sensor reading through to interpretive output, together
with concrete recommendations for folding it into the existing repository conventions if and when
it is built.
The framework proposes recording environmental/anomalous signals that are not perceptible to the naked eye, on the same unified timeline as the psychometric, physiological and cardiac-coherence sensors already implemented, so simultaneities and temporal patterns between a person's internal state and their surrounding environment can be observed (explicitly: "correlation, not proof of causation"). The design separates six layers, front to back: a concept layer (the unified timeline itself), a sensor-reading layer (the 21 instrumental dimensions), an acquisition layer (the physical gateway hardware), a data model layer (the proposed relational schema), a processing layer (turning synchronized streams into detected events), and an interpretation layer (turning detected events into classified, labeled hypotheses).
11.1 Concept layer: one timeline, multiple sensors
Every signal family below is plotted against the same time axis as the psychometric, physiological and cardiac-coherence data already captured elsewhere in the project, so that co-occurring events can be read off a single timeline rather than reconciled after the fact across separate logs.
| Signal family | What it tracks |
|---|---|
| Luminosity & vibration | Ambient light level and mechanical vibration |
| Motion | Movement events logged over time |
| Audio | Acoustic recordings |
| Electric & magnetic fields | Ambient electric and magnetic field variation |
| Radiation & radio-frequency | Ionizing radiation and RF spectrum activity |
| Thermal imaging | Temperature and thermal distribution |
| Air ionization | Positive/negative ion concentration |
| Photonic indicators | Ultra-weak photon emission counts |
All eight streams are correlated against the same three target datasets already in production: psychometric, physiological, and cardiac-coherence data. The slide deck is explicit that this is a statement about simultaneities and temporal patterns, not proof of causality.
The source diagram also carries a three-tier legend worth preserving in any implementation: instrumental measurement (a sensor reading), subjective report (something a participant says happened), and philosophical/metaphysical interpretation (a reading of what it might mean). Nothing in this extension is allowed to collapse those three into one undifferentiated "event."
11.2 Sensor-reading layer: 21 instrumental dimensions
Every measurement is explicitly framed as instrumental (a physical, objective reading). Interpretations such as "presence," "entity," or "communication" belong to a separate, clearly-labeled analytical/hypothetical layer, never mixed into the raw measurement. The 21 dimensions group into 5 categories:
| # | Dimension | Sensor / equipment | What it objectively measures | Experimental application |
|---|---|---|---|---|
| Electric, Magnetic & Electromagnetic | ||||
| 1 | Ambient electric field | E-field meter / electrometer | Electric field variation | Unusual electrical changes |
| 2 | Ambient magnetic field | Fluxgate magnetometer / OPM | Magnetic intensity and variation | Local magnetic anomalies |
| 3 | Geomagnetic | Triaxial magnetometer | Earth field X/Y/Z | Separating local phenomena from global variation |
| 4 | RF / electromagnetic | SDR / spectrum analyzer | Frequency, power, modulation | Transmissions and interference |
| 5 | VLF / ULF | VLF/ULF receiver | Very-low-frequency phenomena | Low-frequency environmental events |
| Acoustic & Vibration | ||||
| 6 | Acoustic (audible) | Measurement microphone | Audible sound | Voices, noises and acoustic events |
| 7 | Infrasound | Infrasound microphone/sensor | Frequencies < 20 Hz | Inaudible vibrations |
| 8 | Ultrasound | Ultrasonic microphone | Frequencies > 20 kHz | Events above human hearing |
| 9 | Vibration | Accelerometer / geophone | Mechanical movement | Footsteps, impacts, structural vibration |
| Optical, Thermal & Photonic | ||||
| 10 | Thermal | FLIR camera (A50/A70) | Temperature & thermal distribution | Unusual hot/cold regions |
| 11 | Infrared (optical) | IR/NIR camera | Infrared radiation | Phenomena invisible to the naked eye |
| 12 | Visible (low light) | Low-light camera | Light & movement | Synchronized visual recording |
| 13 | Ultraviolet | UV camera/detector | UV radiation | Luminous events outside the visible spectrum |
| 14 | Photonic | PMT / EMCCD | Photon counts (ultra-weak photon emission) | Extremely low-intensity luminous events |
| Environmental & Physico-chemical | ||||
| 15 | Ionizing radiation | Geiger counter / dosimeter | Alpha, beta, gamma | Monitoring radiation variation |
| 16 | Electrostatic | Electrostatic field meter | Electrostatic field/charge | Changes in ambient charge |
| 17 | Air ionization | Ion counter | Positive/negative ions | Physico-chemical environmental changes |
| 18 | Atmospheric | Temp./humidity/pressure station | Environmental conditions | Ruling out meteorological explanations |
| 19 | CO₂ / VOC / gases | Environmental sensors | Air composition | Identifying environmental causes |
| Integration & Time | ||||
| 20 | Luminosity | Lux meter | Light intensity | Detecting lighting changes |
| 21 | Temporal | GPS clock / NTP / PTP | Precise time | Synchronizing every sensor |
11.3 Acquisition layer: two-tier hardware gateway
Two-tier acquisition, matching sensor bandwidth to compute needs: a Raspberry Pi 5 acts as the acquisition gateway for the lower-bandwidth sensors, collecting, pre-processing and time-synchronizing them; a Mini PC handles the instruments that need more compute or bandwidth. The two devices connect over Ethernet, and every sensor stream carries a GPS/NTP/PTP timestamp so readings across both devices align on one precise timeline.
| Gateway | Bus / interface | Sensor category | Example instruments |
|---|---|---|---|
| Raspberry Pi 5 Acquisition gateway | I²C | Environmental, magnetic field | Temperature/humidity/pressure/CO₂/VOC, magnetometer / OPM biomagnetic |
| SPI | Luminosity, vibration/motion | Lux meter, accelerometer, geophone | |
| UART | Audio, electric field/electrostatic | Microphone/infrasound/ultrasound, E-field meter, electrostatic meter | |
| Direct I/O | Radiation, air ionization | Geiger counter, ion counter | |
| Mini PC Heavy processing / scientific instruments | USB | RF/SDR, thermal imaging, photonic, human sensors (optional) | HackRF/SDR, FLIR camera, photon counter/PMT, ECG/HRV sensor, Vernier respiration belt |
| Ethernet | Gateway link | Connection to the Raspberry Pi 5 |
Data & processing flow, sensor to insight:
- Sensors: environmental data acquisition.
- Raspberry Pi 5 / Mini PC: collection, synchronization and pre-processing.
- Database: secure, structured storage.
- Temporal correlation: multisensor analysis over time.
- Anomaly detection: AI and detection algorithms.
- Interpretive layer: visualization, reports and insights.
11.4 Data model layer: proposed relational schema
The slide deck's own ER diagram groups into five functional blocks: registration &
configuration (locations, sensor types, sensors, environment conditions), acquisition & events
(sessions, events), observations & media (observations, media files, event tags), analysis &
interpretation (analysis results, interpretations), and support & references (sensor
calibration, users, reference data, the last one holding the normal operating range per sensor
dimension used to flag a reading as anomalous). Table and column names are shown exactly as
designed on the slide (lowercase snake_case); §11.7 below recommends renaming them to
match this repository's existing GDX_ENV_* convention before implementation.
11.5 Processing layer: from sensing to insight
A worked example from the slide deck shows the three stages end to end: synchronized multi-sensor capture around a person in an environment (a stimulus, e.g. the question "Is anyone here?"), time-aligned data streams across every channel (electric field, magnetic field, RF spectrum, audio, infrasound, temperature, photon count, radiation, air quality, all against one GPS/NTP-synchronized time axis), and the resulting event detection and pattern analysis.
In the worked example, a stimulus at 22:31:14 is followed within seconds by a correlated burst across five independent channels: an RF anomaly, a magnetic variation, a detected audio event, a thermal change, and a photon spike. Pattern analysis (temporal correlation, anomaly score, signal classification, noise filtering, cross-sensor validation) feeds an interpretive layer that lists possible presence, possible communication, environmental cause, or unknown event as hypotheses, never as findings. The deck's own framing: "From data to meaning, always with method."
11.6 Interpretation layer: classifying a potential-communication event
Going one level deeper than §11.5, the deck specifies a 4-stage discipline for turning a raw signal into a labeled hypothesis, never skipping a stage:
Stage 1 · Raw capture
Sensors record observable signals, each according to its own physical nature: microphone/audio (audible speech, noise, amplitude), RF/SDR (radio signals, demodulated to audio when possible), infrasound (frequencies below human hearing), and electric, magnetic, thermal, radiation and photonic channels (changes associated with the event).
Stage 2 · Processing
The signal goes through cleaning, extraction and technical validation before any interpretation: noise reduction → voice detection → voice/noise separation → frequency & origin analysis → automatic transcription (when intelligible) → precise timestamping.
Stage 3 · Multisensor correlation
Events are cross-checked in time to verify simultaneity and consistency. Worked example, event 22:31:16.480: audio resembling voice, a magnetic shift, a thermal change, and a photon spike, all within the same window.
Stage 4 · Interpretive layer
Interpretation classifies the probable origin and separates observed fact from hypothesis: human speech identified, electronic/RF source, unidentified vocal pattern, ambiguous audio, noise, or possible communication (explicitly labeled as a hypothesis, never a finding).
Methodological note from the deck: the system must keep separate (1) what was measured, (2) what the algorithm recognized, and (3) the meaning assigned to the event. "From data to meaning, always with method."
11.7 Integration layer: folding into GDX_HUMAN's existing conventions
- Rename to the project's schema convention. The proposed tables should become
GDX_ENV_LOCATION,GDX_ENV_SENSOR_TYPE,GDX_ENV_SENSOR,GDX_ENV_SESSION,GDX_ENV_EVENT,GDX_ENV_OBSERVATION,GDX_ENV_ANALYSIS_RESULT,GDX_ENV_INTERPRETATION, and others, withBIGINTsurrogate keys via aSEQ_GDX_ENV_*sequence and aBEFORE INSERTtrigger, the same Firebird 2.5 pattern every other schema already uses. - Link back to the single central person, optionally. A nullable
ID_PERSONFK toDW_DIM_PERSONonGDX_ENV_SESSION, nullable because many sessions (e.g. unattended site monitoring) have no single person to attach. - Add
ID_STUDYfor--studyscoping, so a futureGDX_SKILL_LOAD_ENV_SESSIONS_DBand the knowledge-graph export skill can scope this data exactly the way every other skill built since 2026-09-17 already does. - Reuse the project's confidence/classification pattern: the same
HIGH/MEDIUM/LOW/SPECULATIVEenum already used by the septenary and Five Ways mapping tables, instead of inventing a new one.
With those four changes, this extension would plug in as Step 13 in the pipeline,
feeding the DW (a new DW_FACT_GDX_ENV_EVENT grain) and the knowledge graph (automatically,
via the existing introspection-based export) with no redesign of either.
12.0 Appendix: Where to Go Next
| If you want to... | Read |
|---|---|
| Understand the historical study's raw data | 1.output.ibm.spss.statistics/PLANILHAPOSDOC11SET_SO_CADETES_Documentacao.md |
| Understand the core relational schema | 2.relational.model.psychometrics/psychometrics_model_firebird25.sql + SPSS_to_Firebird_Mapping.md |
| Onboard a brand-new study | 0.new.instrument/New_Instrument_Onboarding_Process.md |
| Understand the philosophical bridges | 3.septenary.constitution/SPSS_Septenary_Constitution_Mapping.md (read first, the others reference it) |
| See the study's real numbers as charts | 8.gdx.dashboards/Dashboards_DW_Explanation.md |
| Understand the graph and the ML models | 9.knowledge.graph/GoDataX_Human_7_Knowledge_Graph.md + 10.gdx.machine.learning/Septenary_Link_Prediction_and_Community_Detection.md |
| Run any automation | the SKILL.md of the specific skill, inside <folder>/.claude/skills/<name>/ |
Glossary
DW (Data Warehouse): the star-schema analytical layer (folder 7) unifying every OLTP perspective for cross-cutting queries.
ETL: Extract, Transform, Load, the process of moving data from the OLTP schemas into the DW.
CFA / EFA: Confirmatory / Exploratory Factor Analysis, statistical techniques used to validate the CAAS instrument's dimension structure.
HRV / RMSSD / SDNN: Heart Rate Variability and two of its standard time-domain metrics, captured from the device's RR intervals.
gdx_key: the Neo4j node-identity property, always equal to the source table's own primary key.
AUCPR: Area Under the Precision-Recall Curve, the metric used to independently validate Model 1's link-prediction quality on a small, imbalanced label set.
FastRP / Louvain: the two core Neo4j Graph Data Science algorithms used, FastRP for node embeddings (Model 1) and Louvain for community detection (Model 2).
MERGE: the idempotent Cypher write used for every node and relationship, so the knowledge-graph export can be re-run safely without duplicating data.