code wiki / (root) / nx_career.nx

nx_career.nx

buildroot/runtime/nx_career.nx

10100 B217 linesdepth 2pulls 2 transitivereach 5 importersview sourcekind librarytopic career
docsdependenciesstructsconstsfunctions

about

nx_career.nx -- CAREER / OPPORTUNITIES (the jobs ring of the Nishi Relationship OS). Operator 2026-07-09: "help people find jobs with their recruiters ... get real opportunities at where they are and where they want to go". Composes the existing substrate (nx_vizsla_jobs skill profiles + nx_vizsla_recruiter warm-channel routing doctrine + nx_relate recruiter edges + nx_send outreach + nx_crm stage model) and adds the four missing capabilities, integer-deterministic: MATCH-SCORE : candidate skills x job requirements -> 0..100 fit (have>=need = full credit; partial = have/need; missing = 0; mean over requirements). Ranking jobs by fit = "REAL opportunities where they ARE". SKILL-GAP : target role requirements minus profile -> the missing/underleveled list = the concrete plan for "where they want to GO". APP-STAGE : the application pipeline Saved(10)>Applied(25)>Screen(40)>Interview(60)>Offer(85)>Accepted(100) (+Rejected 0) -- the OpportunityStage model applied to job search; funnel dashboard. CAREER-PATH : gap + next-skill recommendation + ROUTE-VIA-RELATIONSHIP (never the cold portal: hand the top match to the strongest recruiter/referral channel, per the nx_vizsla_recruiter doctrine). Pure logic + selftest gate (argless). Persistence rides seg_store next (same canon_cid pattern). Commands: match <have-csv> <need-csv> | gap <have-csv> <target-csv> | stage <name> | selftest skill csv form: name:level[,name:level...] levels 1..5 expect_exit: 0 license_tier: ORIGINAL

dependencies 1 imports · 5 importers

nx_syscalls.nx nx_career.nx nx_career_fair.nx nx_career_gate.nx nx_career_parse.nx nx_share.nx nx_share_rec.nx

imports: nx_syscalls.nx

imported by: nx_career_fair.nxnx_career_gate.nxnx_career_parse.nxnx_share.nxnx_share_rec.nx

structs

none

consts

none

functions

20func slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
21func p(s: *u8) -> i64 { sys_write(1, s, slen(s)); return 0 }
22func pn(v: i64) -> i64
28func seq(a: *u8, b: *u8) -> i64
36func skills_parse(csv: *u8, names: *i64, lvls: *i64, maxn: i64, namebuf: *u8) -> i64
67func skill_find(names: *i64, n: i64, want: *u8) -> i64
called by 2: match_scoreskill_gap calls 1: seq
74func match_score(hn: *i64, hl: *i64, hc: i64, rn: *i64, rl: *i64, rc: i64) -> i64
92func skill_gap(hn: *i64, hl: *i64, hc: i64, rn: *i64, rl: *i64, rc: i64) -> i64
109func stage_pct(s: *u8) -> i64
called by 2: cmd_stagecmd_selftest calls 1: seq
119func cmd_stage(name: *u8) -> i64
called by 2: cmd_selftestcr_cli calls 3: stage_pctppn
126func cmd_selftest() -> i64
185func cr_cli(argc: i64, argv: *i64) -> i64