· enCODE Engineering
ElevateNow internal · Not for client distribution · July 2026
Internal engineering demoboard · enCODE platform architecture

Three repos, one runtime, four human gates: this is how enCODE actually runs.

The prospect demoboard argues the value; this one documents the machine. It maps the components that exist today, the workflow and workbench artifacts they produce, and exactly where the semantic layer work attaches to them. Written for the founding team and lead developers; it names collections, interfaces, and gates, and it must not travel outside ElevateNow.

Document
Engineering architecture
Audience
Founders + lead developers
Read time
12 minutes
Status basis
feature/sl-fnol-semantic
01 Executive summary One page · Four takeaways

The semantic layer is additive to everything that runs today. Nothing existing is rewritten; four attachment points carry all of it.

Each takeaway summarizes a section of this demoboard. If only one page is read, this is the one.

I.

The current platform is three repos on one runtime, and it already produces every artifact the graph needs.

Tool fleet (elevatenow tool-chest), curation and rules (CurationStudio), workbench backend. Tool decisions in AGENT_RESPONSES and governed chunks in GKR are the graph's raw material; they exist today.

II.

Three context streams converge at one gate, and a human stands at every point the machine earns trust.

Transactional documents, structured claim data, and institutional rules meet in staging. Four HiL gates: rule approval, promotion review, authority escalation, tier-2 verification.

III.

A tool run is an activity, not a decision; AGENT_RESPONSES stays append-only and the graph is built downstream of it.

The enrichment pass reads what tools already wrote, mints DecisionEvents against the enc: registry, and never touches production collections. SPARQL is the contract; the store is configuration.

IV.

Phases 0 through 5 build the graph, 6 makes it portable, 7 and 8 make it a product.

SL-00 through SL-17 are the graph and its governance; SL-18/19 decouple store and mapping; SL-20 through SL-23 add NLQ and the deployable bundle, gated on acceptance.

02 Current system context Exhibit 1 of 6

Everything ships from three repos onto one runtime. The semantic layer adds capability without adding a service the client must run.

Current components as deployed, with the semantic layer additions marked. The embedded graph tier means no new runtime dependency; Fuseki exists only as the reference remote endpoint for conformance testing.

1 · Repos, runtime, and where the new work lands
REPOSITORIES · feature/sl-fnol-semantic RUNTIME elevatenow tool-chest LOB tool fleet: 7 WC tools + 7 Auto tools. GKR-grounded decision tools, e.g. WCJurisdictionResolverGKR, WCCompensabilityAnalyzerGKR, WCAuthorityGateGKR. + SL additions: lifecycle_stage, authority_tier, escalation_reason output fields (additive, SL-07/08/09) Invoked by Conductor workflows; outputs persist to AGENT_RESPONSES. elevatenow-rule-layer · CurationStudio GKR curation: rule and chunk lifecycle (draft, review, approved, active, superseded), jurisdiction and authority chunk registries, knowledge templates per LOB. + SL additions: enc: registry, predicate dictionary, SHACL shapes, competency queries, mapping specs The registry and CQ library live here: semantic/ is versioned with the rules it governs. en-workspace-backend Workbench API: case views, decision panels, chunk citations rendered clickable for adjusters and reviewers. + SL additions: governance trace rendering (template id, predicates, rule chunks per answer) Reads AGENT_RESPONSES and GKR today; reads the governed graph next. EC2 host FLASK API :7000 Workbench + platform services CONDUCTOR Workflow orchestration: tool sequences per case MONGODB AGENT_RESPONSES (append-only) wc_claims · claimant_identity_map + enc_staging (disposable) GKR chunk collections LITELLM ROUTER Model-neutral LLM access: routes to whichever provider or local model the deployment permits EMBEDDED GRAPH · DEFAULT RDFLibStore: in-process, pure Python, zero added infrastructure REMOTE ENDPOINT · OPTIONAL RemoteSPARQLStore over HTTP. Fuseki :3030 is the reference target, conformance testing only Same GraphStore interface either way. Switching tiers is configuration, not code. Deployment-tier policy: embedded for POC and small books; remote when scale or an existing client endpoint demands it. Source: ElevateNow engineering. Component names as of feature/sl-fnol-semantic. Blue marks semantic layer additions.
Read this as. An inventory, not a proposal. Everything grey exists and runs today; everything blue is the semantic layer attaching to it. The one deliberate absence: no mandatory new service. The embedded tier keeps the deployment footprint identical to today's.
03 The convergence schematic Exhibit 2 of 6

Three context streams converge at one gate, and a human stands at every point the machine earns trust.

Transactional context, structured data, and institutional knowledge each travel their own lane, converge in staging, and pass one promotion gate into the governed graph. The HG badge marks the four human-in-the-loop gates; nothing becomes a trusted fact or an unreviewed high-stakes action without crossing one.

2 · End-to-end convergence: three lanes, one gate, four human checkpoints
LANE 1 · TRANSACTIONAL CONTEXT LANE 2 · STRUCTURED DATA LANE 3 · INSTITUTIONAL CONTEXT CLAIM DOCUMENTS FNOL, medical reports, correspondence, photos DOCUMENT INTELLIGENCE Extraction + document_class tagging (SL-12) CANDIDATE FACTS · DOCS evidences targets per class; LLM-inferred links flagged HiL CLIENT CLAIMS STORE wc_claims today; any store via mapping spec ENRICHMENT PASS · SL-14 Driven by mapping_specs/*.yaml; exposure construction, non-PII URIs CANDIDATE FACTS · DATA Entity + datatype triples at exposure grain; auto-tier eligible CARRIER KNOWLEDGE Rules, authority matrices, jurisdiction guidelines CURATIONSTUDIO · GKR Chunk lifecycle: draft, review, approved, active, superseded GOVERNED CHUNKS Versioned rule chunks the graph cites via anchoredTo edges HG·1 enc_staging Candidate facts, both streams, not yet trusted THE GATE SHACL + review HG·2 GOVERNED GRAPH Named-graph batches, PROV, deprecation not deletion ANCHOREDTO · VERSIONED RULE CITATIONS CONSUMPTION · EVERYTHING BELOW READS THE GOVERNED GRAPH AND CITES BACK INTO GKR TOOL FLEET · CONDUCTOR 14 LOB tools; decisions carry lifecycle_stage + authority_tier; escalations route to humans HG·3 WORKBENCH Case views with clickable chunk citations; governance trace panel per answer NLQ ENGINE Tier 1: governed templates. Tier 2: generated SPARQL, visibly degraded, verify first HG·4 CQ LIBRARY 14 competency queries: the acceptance suite and the NLQ tier-1 corpus, one artifact HG·n Human gate: 1 rule approval in CurationStudio · 2 promotion review at the gate · 3 authority-tier escalation · 4 tier-2 NLQ verification Source: ElevateNow engineering. Blue components are semantic layer additions; grey components run today.
So what. This is the schematic that answers "how do transactional context, structured data, institutional knowledge, and humans come together." One convergence point, one gate, four human checkpoints, and a consumption row where every surface cites back into GKR. Anything that bypasses staging and the gate is by definition not a fact in this system.
04 Workflow anatomy Exhibit 3 of 6

A tool run is an activity, not a decision. AGENT_RESPONSES stays append-only, and the graph is built downstream of it.

The current workflow artifacts, end to end, for one WC FNOL case: Conductor sequences the tools, each tool grounds in GKR chunks, outputs persist append-only, and the enrichment pass reads them later. The semantic layer changes tool output schemas additively and touches nothing else in this path.

3 · One case through the tool fleet, and how a tool run becomes a DecisionEvent
CONDUCTOR WORKFLOW · run_id per case · sequences the tool fleet WCJurisdictionResolverGKR in: case facts · retrieves: JR-WC-* out: verdict + governing_chunk + lifecycle_stage: Registration_Setup WCCompensabilityAnalyzerGKR in: case + jurisdiction verdict out: verdict + governing_chunk + lifecycle_stage: Coverage_Analysis WCAuthorityGateGKR in: reserve, severity, flags out: routing verdict, chunk (AUTH-WC-*) + authority_tier + escalation_reason REMAINING FLEET 4 more WC tools incl. sensitive indicators; 7 Auto tools mirror the pattern on AU-DP decision points GKR RETRIEVAL · every tool grounds in active, approved chunks; superseded chunks never retrieved AGENT_RESPONSES · append-only · one document per tool run · never mutated, never re-registered DOWNSTREAM · HOW A TOOL RUN BECOMES GRAPH FACT (SL-14, READS ONLY, ADDITIVE) TOOL RUN (SOURCE RECORD) tool name + version Conductor run_id + timestamp verdict, governing_chunk lifecycle_stage, authority_tier GRAPH REPRESENTATION prov:Activity (the run: tool, version, run_id) generates enc:DecisionEvent instanceOfDecision → WC-DP-nn · inLifecycleStage anchoredTo → chunk · atAuthorityLevel → tier INVARIANTS Tools never write triples Enrichment never writes AGENT_RESPONSES Schema changes are additive only Decision URIs carry run_seq, never dates SL-14 MAPS Source: ElevateNow engineering. Tool names as registered in the elevatenow tool-chest; stage assignments carry sme_validation pending flags.
Why this matters. The separation is the whole safety story: production tooling and the graph share data but never share write paths. That is why the branch can build the entire semantic layer with zero production breakage, and why a graph defect can never corrupt a tool decision already made.
The engineering thesis · in one sentence

Nothing becomes a fact in enCODE without passing a gate a human can stand behind.

ElevateNow Engineering · July 2026
05 Semantic layer internals Exhibit 4 of 6

SPARQL is the contract. The store is configuration.

The internals in one view: what the enc: registry contains, how the GraphStore abstraction isolates every consumer from the store choice, and how a candidate fact earns promotion. Risk tiers decide which facts a human must see.

4 · Registry, GraphStore, and the promotion path with risk tiers
enc: REGISTRY · CURATIONSTUDIO/semantic/ L1 core entity registry (YAML) LOB extensions: WC, Auto, GL, separate registries Predicate dictionary: domain, range, functional, defs SHACL shape library (the rules of admission) JSON-LD contexts · competency_queries/cq_01..14 mapping_specs/wc_fnol_platform_v1.yaml Semver versioned. Carrier extensions live in their own namespace; ownership defined in contract, not at implementation time. GraphStore INTERFACE · SL-18 query(sparql) update(sparql) load(serialization, graph_uri) list_graphs() drop_graph(graph_uri) Consumers: enrichment, gate, CQ runner, NLQ. All injected, never imported. One conformance suite; both implementations must pass it. RDFLibStore · DEFAULT TIER In-process ConjunctiveGraph. Pure Python, zero infrastructure. POC, small book, no client endpoint. pyshacl validates in the same process. RemoteSPARQLStore · SCALE TIER HTTP SPARQL 1.1 protocol. Fuseki is the reference target; GraphDB, Neptune, or the client's existing endpoint are drop-ins. Production scale. GOVERNS PROMOTION PATH · SL-15 · HOW A CANDIDATE FACT EARNS TRUST CANDIDATE enc_staging batch with source PROV SHACL VALIDATION Shapes from the registry; fail = never promotes RISK TIER ROUTING Auto: datatype facts, chunk-cited decisions. HiL: inferred links, unanchored, low confidence NAMED GRAPH BATCH One graph per batch, approver in PROV CORRECTION deprecatedBy → new batch. Deprecation, never deletion VERSIONING INVARIANTS Reserves: append-only, version_seq + prior_version_ref + effective_date; supersedes derived, never stored as a mutable flag. Identifiers: opaque surrogate keys, PII lint in the mapping harness, no personal data in any URI. Queries default to non-deprecated graphs. Source: ElevateNow engineering. Interface and tier policy per architecture decisions AD-1 through AD-7.
The commitment. Any consumer written against GraphStore runs unchanged on the embedded tier or a client's endpoint. The conformance suite is what makes that claim testable rather than aspirational: identical results from both stores on identical data, or the build fails.
06 NLQ engine internals Exhibit 5 of 6

The engine can only say what the graph returned, and it must say which tier said it.

Two paths through the engine. Tier 1 runs governed templates with validated parameters; tier 2 generates SPARQL under hard constraints and is visibly degraded. The prose guard sits on both paths and blocks any sentence the result set cannot support.

5 · The NLQ pipeline: tier-1 path, tier-2 fallback, and the prose guard
QUESTION "Which employer has the most WC claims in New York?" INTENT CLASSIFIER · LLM via LiteLLM router; matches against CQ library TEMPLATE MATCH NO MATCH CQ-11 TEMPLATE Parameter extraction: jurisdiction = ? PARAM VALIDATION "New York" resolves to the graph's value or refuses; never silently returns empty TIER 2 · GENERATED SPARQL · SL-21 SELECT only · read-only store handle · query timeout · result cap Generated SPARQL always attached · question logged to miss log EXECUTE VIA GraphStore Result set: bindings only. Non-deprecated graphs by default PROSE GUARD · SL-22 Every entity, number, date in prose must exist in the result set. Recommendations only from governed chunks, cited inline. Violation = block TIER-1 FOOTER · GOVERNED ANSWER Query: CQ-11 · Predicates: hasParty, underJurisdiction · Registry v1.0 · Chunks cited TIER-2 FOOTER · VISIBLY DEGRADED Generated query, not a governed template, verify before acting · SPARQL attached TIER 1 TIER 2 Invariant under test: a tier-2 answer can never render with a tier-1 footer. The suite asserts it. The miss log is how the CQ library grows: every unmatched question is a candidate template. Source: ElevateNow engineering. Pipeline per SL-20/21/22; gated on SL-16 acceptance green.
Upshot. The example answer we do not ship: "this pattern warrants employer loss-control review." Unless a governed chunk produced that recommendation, the guard strips it. Fluency without governance is the one failure mode this product cannot afford, so it is blocked mechanically, not by prompt.
07 Delivery map Exhibit 6 of 6

Phases 0 through 5 build the graph, 6 makes it portable, 7 and 8 make it a product.

The backlog as phases, with the gating that matters: nothing in NLQ starts before acceptance is green, and the bundle closes only on the end-to-end demonstration against a never-seen client schema.

6 · SL-00 through SL-23 as a phased delivery map
PHASES 0–2 · FOUNDATIONS PHASES 3–5 · GRAPH PHASE 6 · PORTABILITY PHASE 7 · NLQ PHASE 8 · BUNDLE SL-00 provenance scrub SL-01 14 competency queries SL-02 claimant surrogate key SL-03 reference endpoint (residual) SL-04..06 registries + predicates SL-07..10 tool contracts + mapping SL-11 reserve versioning SL-12 document_class tagging SL-13 URI scheme ratified SL-14 enrichment (spec-driven) SL-15 promotion gate SL-16 acceptance: 14 CQs green SL-18 GraphStore + two implementations + conformance suite SL-19 mapping-spec format + harness + first spec instance SL-20 tier-1 NLQ SL-21 tier-2 fallback SL-22 prose guard Sequencing: guard in the response path before tier-1 acceptance closes SL-23 deployable bundle + carrier extension scaffold AC: Part E demo on a never-seen synthetic client schema STARTS NOW · SL-14 DEPENDS ON IT HARD GATE · SL-16 GREEN GATE · SL-20..22 DONE DEFINITION OF DONE · ALSO THE SALES DEMO Fresh synthetic client store in an unseen schema; mapping spec authored and harness-passed; enrichment through gate to governed graph; 14 CQs identical on both store tiers; one tier-1 and one tier-2 answer with correctly distinct footers; no vendor dependency the client did not choose. Source: ElevateNow backlog tracker. Phase 6 runs in parallel with 3–5; phases 7 and 8 are gated, not scheduled.
The commitment. The definition of done is deliberately identical to the sales demonstration. If engineering closes SL-23, the demo exists; there is no separate "make it demoable" project, and no claim in the prospect demoboard that this map does not back.
ElevateNow Founding Team
enCODE Engineering · Internal architecture demoboard
ElevateNow internal · v1
July 2026