Semantic Systems / Language / Glyphs
JustAnIota Converter
Report summary
The strongest version of JustAnIota Converter is not a literal translator and not a proprietary codebook. It is an enterprise C semantic retrieval and rendering system that converts between English and an IOTA-1 public-symbol representation built from assigned Unicode / ISO/IEC 10646 characters and
Key topics
- Semantic Systems / Language / Glyphs
- Semantic Systems
- Language
- Glyphs
- AI
- WordPress
- .NET
- C#
- SQL
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
Source availability: 62 citation markers in the source export have no recoverable source links. Those markers are omitted from this reader; any supplied bibliography and ordinary links remain. Check the original sources before relying on the cited claims.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
Executive summary
The strongest version of JustAnIota Converter is not a literal translator and not a proprietary codebook. It is an enterprise C# semantic retrieval and rendering system that converts between English and an IOTA-1 public-symbol representation built from assigned Unicode / ISO/IEC 10646 characters and sequences—especially emoji, CJK ideographs, and a curated set of concept-bearing public symbols—using public Unicode metadata, vector embeddings, similarity search, and an optional local LLM for reranking and verbalization. That framing is consistent with Unicode’s relationship to ISO/IEC 10646, with Unicode’s own warning that private-use characters have semantics only by private agreement, and with the uploaded Protocol5 / JustAnIota design notes that explicitly reject a secret or proprietary dictionary for this experiment.
That distinction matters because Unicode is a public symbol substrate, not a universal semantic ontology. Unicode and ISO/IEC 10646 keep character codes and encoding forms synchronized, but Unicode adds the algorithms and data real implementations need. For Han ideographs, the Unihan documentation is explicit that ideographs are formally defined through mappings and then enriched with ancillary data; for emoji, UTS #51 defines emoji structure and sequences, while CLDR supplies names and keywords used by real software. So the converter must not embed raw code point numbers and pretend they are universal meanings. It should instead embed a public descriptor bundle assembled from the Unicode Character Database, CLDR annotations, emoji sequence data, and Unihan properties, then compare those descriptor embeddings to English embeddings in a shared vector space.
Architecturally, the best fit is a modular monolith in C# with strict seams: a Facade API for external callers, a Logic Layer for normalization, segmentation, symbol-atlas lookup, ranking, and orchestration, an ADO.NET repository over SQL Server 2025 vector features, and an LM Studio adapter for optional local embeddings, reranking, and English verbalization. The system should run in two lanes: a database-only lane that composes query vectors from already-stored English and symbol embeddings without any live AI call, and an LLM-assisted lane that uses LM Studio to produce a better query vector and a more natural English explanation of the retrieved symbols. SQL Server 2025’s vector type, VECTOR_DISTANCE, VECTOR_SEARCH, CREATE VECTOR INDEX, CREATE EXTERNAL MODEL, and AI_GENERATE_EMBEDDINGS give real platform support for this design, although some vector-index and vector-search capabilities are still documented as preview features.
One implementation caveat is decisive: LM Studio and SQL Server 2025 do not line up perfectly for direct in-database calls unless you add a secure bridge. LM Studio’s OpenAI-compatible endpoints are documented around http://localhost:1234/v1, while SQL Server’s CREATE EXTERNAL MODEL documentation requires AI inference endpoints configured with HTTPS and TLS. That means the primary embedding path should live in the C# Logic Layer, which can call LM Studio directly on localhost; SQL-native embedding generation should be treated as optional and used only if you place an HTTPS OpenAI-compatible gateway in front of LM Studio or choose another compliant endpoint.
For the public sites, the uploaded JustAnIota website plans point in the right direction: the system should be presented as a docs-first experimental publication surface, not as a consumer “translator.” JustAnIota.com should behave like a standards and tooling site, while Protocol5.com should expose the experiment more explicitly by showing the semantic path—English input, embedding neighborhood, top public Unicode candidates, and back-to-English gist—with scores, provenance, and “approximate, not exact” labeling visible at every step.
System goals and non-negotiable constraints
The system goals are straightforward but unusually strict. It must convert English → IOTA-1, IOTA-1 → English, and English → IOTA-1 → English while staying faithful to four constraints: public Unicode only, no private-use profile, no secret bilingual dictionary, and approximate semantic matching instead of exact word substitution. Unicode’s own core specification states that private-use characters have no defined semantics except by private agreement, so a private-use implementation would directly undermine the project’s public, inspectable, language-neutral premise. The uploaded Protocol5 and Open Symbol papers make the same point in project language: the experiment is about comparing public symbol meanings and semantic weights, not inventing a hidden codebook.
The consequence is that IOTA-1 must be defined in this report as an application-level profile over assigned Unicode symbols and sequences, not as a new character encoding. Unicode and ISO/IEC 10646 are synchronized at the character-code level, but Unicode adds normalization, segmentation, and functional constraints for implementations. That means the converter’s contract is not “this scalar equals this English word,” but “this public symbol or symbol-sequence is the best-fit conceptual neighbor to this English phrase, based on a shared embedding space built from public metadata.”
A second constraint is that the unit of analysis cannot be “one 16-bit char”. Unicode text must be processed as Unicode scalar values and, for many user-facing operations, as grapheme clusters or standard sequences. UTS #51 makes clear that emoji are not only single scalars but also structured sequences; UAX #29 defines segmentation rules for user-perceived characters, words, and sentences; and .NET recommends Rune for scalar-value work and StringInfo / TextElementEnumerator for grapheme-oriented processing. This is especially important for emoji ZWJ sequences, supplementary-plane characters, and combining-mark sequences, all of which are routine in the exact symbol inventory this project wants to use.
A third constraint is epistemic honesty: the system should never claim exact translation fidelity. Modern multilingual embedding systems such as LaBSE, multilingual E5, and SONAR show that a shared embedding space can align semantically similar content across languages at the sentence or phrase level, but they support approximate semantic proximity, not mathematically exact equivalence. SQL Server’s own vector stack uses the same vocabulary: VECTOR_DISTANCE performs exact distance calculations over vectors, but VECTOR_SEARCH is approximate nearest-neighbor search, and Microsoft’s documentation explicitly describes the trade-off between recall and speed.
The design implications are best summarized this way:
| Constraint | Architectural implication |
|---|---|
| Public Unicode only | Build an assigned-symbol atlas from UCD, Unihan, CLDR, and emoji data. |
| No private-use profile | Do not encode meaning into PUA scalar values; use assigned public symbols and public metadata only. |
| No secret dictionary | Persist provenance and descriptor text for every symbol and candidate; make mappings inspectable. |
| Approximate, not exact | Rank by similarity, coverage, and confidence; expose alternatives and scores. |
| No live AI required after population | Precompute English and symbol embeddings, then support database-only vector composition for runtime gist queries. |
| WordPress front-end | Keep heavy inference and retrieval in C# services; let WordPress act as publication and interaction layer. |
The practical definition of IOTA-1 that follows from those constraints is therefore: a curated, versioned subset of assigned Unicode symbols and standard sequences, plus public metadata and learned embeddings, used as an approximate cross-lingual concept representation for experiments on JustAnIota.com and Protocol5.com. That is much more defensible than calling it a “translator alphabet,” and it aligns both with Unicode’s actual model and with the later internal design notes that favor an open-symbol architecture over a private profile.
Recommended high-level architecture
The recommended topology is a WordPress + C# backend + SQL Server 2025 + optional local LM Studio stack. WordPress owns the public pages, editorial shell, and demo widgets; the C# backend owns the conversion contract and testability; SQL Server 2025 stores the symbol atlas, public descriptors, and embeddings; LM Studio is optional runtime intelligence, not a hard dependency. That split preserves the user’s requirement for a clean Facade and a testable enterprise architecture while also respecting WordPress’s strengths and weaknesses. WordPress’s own documentation recommends explicit REST route registration on rest_api_init, explicit permission_callbacks, and server-side block registration via block.json; Action Scheduler is a well-established background queue for large WordPress job sets, which is useful for front-end-triggered indexing or refresh tasks.
flowchart LR
WP[WordPress pages and blocks<br/>JustAnIota.com / Protocol5.com]
PLUGIN[WP plugin / REST bridge]
FACADE[JustAnIota Facade API<br/>ASP.NET Core]
LOGIC[Logic Layer]
LM[LM Studio adapter<br/>optional]
SQL[(SQL Server 2025)]
INGEST[Unicode ingestion worker]
UCD[UCD / UAX 44]
UNIHAN[Unihan / UAX 38]
CLDR[CLDR annotations]
EMOJI[UTS 51 emoji data]
WP --> PLUGIN
PLUGIN --> FACADE
FACADE --> LOGIC
LOGIC --> SQL
LOGIC --> LM
INGEST --> UCD
INGEST --> UNIHAN
INGEST --> CLDR
INGEST --> EMOJI
INGEST --> SQL
The Facade should be the only public integration surface for other projects. Its responsibility is not to “do everything,” but to coordinate three stable workflows: conversion, meaning query, and round-trip analysis. Internally it orchestrates normalization, segmentation, symbol-atlas retrieval, optional embedded-vector generation, ranking, and response shaping. This is the right seam for consumer teams because it hides SQL preview details, LM Studio availability, and repository mechanics behind a narrow contract. The uploaded architecture drafts emphasize this same encapsulation goal, and .NET’s built-in DI stack is designed precisely to support that interface-first composition.
The Logic Layer is the real heart of the system. It should own: NFC normalization; scalar iteration and grapheme segmentation; atlas matching against assigned symbol sequences; descriptor-bundle construction from public Unicode sources; query vector composition; candidate retrieval; ranking; optional LLM reranking; and explanatory output generation. That separation matters because it allows the same domain logic to be exercised from WordPress, tests, batch jobs, and other services without entangling business rules with transport or storage. Unicode normalization and segmentation are normative parts of Unicode conformance, so these cannot be treated as optional niceties.
The SQL data platform should hold both the curated symbol corpus and the vector search substrate. SQL Server 2025’s vector type stores vectors in optimized binary form while exposing them as JSON arrays for convenience; each element is stored as a single-precision float, half-precision is available in preview, and the documented maximum dimensionality is 1998, which becomes a hard model-selection constraint for this architecture. VECTOR_DISTANCE is always exact and index-free; VECTOR_SEARCH is approximate nearest-neighbor search; CREATE VECTOR INDEX creates approximate vector indexes; and Microsoft documents a general recommendation that exact exhaustive search is suited to smaller candidate sets, especially under roughly fifty thousand vectors after filtering.
The LM Studio integration should be treated as an adapter rather than the center of the architecture. LM Studio runs a local API server, exposes OpenAI-compatible /v1/embeddings and /v1/chat/completions endpoints, supports local model import with lms import, and can enforce API-token authentication and structured JSON output. Those capabilities make it excellent for optional local embeddings, candidate reranking, and English verbalization. But because SQL Server’s CREATE EXTERNAL MODEL requires HTTPS/TLS AI endpoints while LM Studio’s documented default server is http://localhost:1234, the cleanest default architecture is C# → LM Studio, not SQL → LM Studio. If SQL-native embedding generation is required, add an internal HTTPS gateway or reverse proxy that speaks an OpenAI-compatible format.
The main component responsibilities are these:
| Component | Primary responsibility | Notes |
|---|---|---|
| Facade API | External contract, request routing, orchestration | Single dependency for other projects |
| Logic Layer | Normalization, parsing, ranking, mode selection | Contains the real conversion rules |
| Unicode ingestion worker | Build and refresh public symbol atlas | Reads UCD, Unihan, CLDR, emoji sources |
| ADO.NET repository | Efficient SQL read/write and vector query execution | Keeps SQL mechanics out of business logic |
| SQL Server 2025 | Store descriptors, embeddings, indexes, caches | Supports both exact and approximate vector search |
| LM Studio adapter | Optional local embeddings and LLM verbalization | OpenAI-compatible local endpoint |
| WordPress plugin | Public UI, site integration, auth handoff | No heavy inference in PHP request path |
C# project structure, interfaces, dependency injection, and testing
The C# solution should be organized as a modular monolith with explicit boundaries, not as prematurely fragmented microservices. That gives you enterprise-grade testability and “other projects can consume this easily” ergonomics without introducing distributed-systems overhead for what is, by the user’s own framing, still an experimental site. Built-in .NET dependency injection, configuration, and logging are sufficient for this architecture.
A practical solution layout looks like this:
| Project | Purpose |
|---|---|
JustAnIota.Domain | Core value objects, enums, scoring primitives, invariants |
JustAnIota.Abstractions | Interfaces for facade, logic services, repositories, adapters |
JustAnIota.Application | Orchestration, workflows, ranking, query composition |
JustAnIota.Infrastructure.Sql | ADO.NET repositories, SQL commands, mapping, migrations |
JustAnIota.Infrastructure.Unicode | UCD / Unihan / CLDR / emoji ingest and descriptor builders |
JustAnIota.Infrastructure.LmStudio | OpenAI-compatible LM Studio client and schema-based verbalizer |
JustAnIota.Facade | Public application service implementing the facade contract |
JustAnIota.Api | ASP.NET Core host, auth, REST endpoints, observability |
JustAnIota.Worker | Batch atlas build jobs, re-embedding jobs, repair jobs |
JustAnIota.Tests.Unit | Pure domain and orchestration tests |
JustAnIota.Tests.Integration | SQL + LM Studio integration tests |
JustAnIota.Tests.Performance | Query latency, index quality, throughput regression suite |
The minimal facade contract should be narrow and stable:
public interface IJustAnIotaConverterFacade
{
Task<ConversionResponse> ConvertAsync(
ConversionRequest request,
CancellationToken ct = default);
Task<MeaningQueryResponse> QueryMeaningAsync(
MeaningQueryRequest request,
CancellationToken ct = default);
Task<RoundTripResponse> RoundTripAsync(
RoundTripRequest request,
CancellationToken ct = default);
}
The domain model should deliberately separate public-symbol representation from rendered English. A useful set of DTOs is: ConversionRequest, ConversionResponse, MeaningQueryRequest, MeaningQueryResponse, RoundTripResponse, CandidateDto, SymbolDescriptorDto, ScoringBreakdownDto, and ProvenanceDto. The response contract should always include mode used (DatabaseOnly, LlmAssisted, or Hybrid), confidence, ranked alternatives, and provenance so the front-end can explain why the output is approximate rather than canonical. That design directly supports the “not exact mapping” requirement and reduces the temptation to overstate certainty.
The most important service interfaces inside the Logic Layer are:
ITextNormalizerIGraphemeSegmenterIRuneEnumeratorIPublicSymbolAtlasIDescriptorComposerIEmbeddingProviderIEmbeddingComposerISimilarityQueryServiceICandidateRankerIEnglishVerbalizerITranslationModeSelectorIAtlasRefreshService
ITextNormalizer should enforce strict UTF-8 ingress and NFC working normalization. IRuneEnumerator should work at the Unicode scalar level using System.Text.Rune, while IGraphemeSegmenter should operate at the user-perceived character / sequence level using StringInfo / TextElementEnumerator or an equivalent segmentation abstraction. That split reflects both .NET guidance and Unicode segmentation rules: scalar iteration is critical for correctness in supplementary planes, while grapheme-aware segmentation is critical for correct handling of emoji sequences and combined characters.
For data access, use Microsoft.Data.SqlClient through ADO.NET repositories, not ORM-first data access. Microsoft documents Microsoft.Data.SqlClient as the preferred way to connect to SQL from .NET, and the new vector type also benefits from SQL Server’s wire-level optimizations for vector transport. An ADO.NET-first repository makes it easier to control VECTOR_DISTANCE, VECTOR_SEARCH, bulk updates, structured parameters, timeouts, tracing, and fallbacks across preview-feature boundaries.
Testing should be layered. Unit tests should cover normalization, segmentation, descriptor composition, ranking heuristics, mode selection, and error contracts. .NET’s current testing guidance still centers around dotnet test and xUnit, which are appropriate here. Integration tests should run against a real SQL instance and, where practical, a real local LM Studio endpoint or a protocol-compatible mock; Testcontainers is a strong fit for ephemeral infrastructure-backed tests when a suitable containerized dependency is available. Performance tests should measure exact vs approximate search latency, recall drift, and ingestion throughput using fixed corpora and stable model versions so regressions are observable, not anecdotal.
For CI/CD, the highest-value pipeline is simple and repeatable: restore, build, static analysis, unit tests, integration tests, artifact publish, container publish, staging deploy, and smoke tests. GitHub Actions supports matrix workflows, and GitHub’s .NET guidance recommends setup-dotnet for consistent runners. For this project, the better practice is one matrix for supported .NET runtimes and another small matrix for “LM Studio available / LM Studio mocked” integration test modes.
Database schema, embedding storage, SQL query patterns, and fallback non-AI mode
The data model should treat public symbols, public descriptors, English lexemes and phrases, and embeddings as first-class database objects. The Unicode Character Database is the base record for symbol identity and properties; CLDR contributes names and keywords, especially for emoji; and Unihan contributes the ancillary properties needed to make Han ideographs useful as public semantic anchors. Because UCD is an integral part of the Unicode Standard and Unihan explicitly contains mapping data and additional information for languages using Han script, this source stack is strong enough to justify an open-symbol corpus without a private lexicon.
A practical SQL schema is:
| Table | Purpose |
|---|---|
Symbol | One row per assigned Unicode scalar or standard sequence admitted to the atlas |
SymbolDescriptor | Public gloss text, names, keywords, definitions, readings, source provenance |
EnglishEntry | English words, phrases, test prompts, cached paraphrases |
EmbeddingModel | Model registry: provider, version, dimensions, metric, license flag |
SymbolEmbedding | Vector for each symbol descriptor bundle |
EnglishEmbedding | Vector for each English entry |
ConversionSnapshot | Request/response records for audit and regression testing |
CandidateEdge | Optional cached nearest-neighbor links for hot paths |
IngestionJob | Build/version state for atlas refreshes |
UnicodeVersion | Unicode / CLDR / Unihan source version registry |
The most important SQL design guardrail is this: the embedding model must fit the SQL vector dimension ceiling. SQL Server 2025 documents a maximum of 1998 dimensions for the vector type. Each float32 element is 4 bytes, half-precision float16 is supported in preview, and vectors are stored in optimized binary form. So a 1024-dimensional model is comfortable; a model above the 1998-dimensional ceiling is not. That is not an academic detail—it should drive model selection very early.
The recommended storage strategy is:
SymbolEmbedding.Vector:VECTOR(1024)orVECTOR(768)depending on the chosen model.EnglishEmbedding.Vector: same dimension asSymbolEmbedding.- Use
float32first for quality and simpler benchmarking. - Consider
float16only after quality evaluation, because it is documented as preview and should be treated as a tuning option, not a default.
A second architectural choice concerns where embeddings are generated. There are three viable patterns:
| Pattern | Recommendation | Why |
|---|---|---|
| C# calls LM Studio directly and writes vectors to SQL | Primary | Best fit for localhost LM Studio; avoids SQL-to-LM Studio HTTPS mismatch |
SQL AI_GENERATE_EMBEDDINGS via CREATE EXTERNAL MODEL | Secondary | Good for batch jobs if the model endpoint is HTTPS/TLS and API-compatible |
| No live model call at query time | Required fallback | Satisfies the “query meanings without AI once populated” requirement |
SQL’s native AI functions are real and useful. AI_GENERATE_EMBEDDINGS creates embeddings from text using a precreated external model definition; AI_GENERATE_CHUNKS can fragment longer text for chunk-level embedding workflows; and CREATE EXTERNAL MODEL supports several API formats, including OpenAI, Azure OpenAI, Ollama, and ONNX Runtime. But CREATE EXTERNAL MODEL also documents that only HTTPS with TLS AI endpoints are supported. That makes SQL-native generation excellent for compliant endpoints, but not a frictionless direct match for LM Studio’s documented default localhost HTTP server.
The retrieval model should support three runtime modes.
Database-only gist mode
This is the non-AI fallback the user explicitly requested. At runtime, the system should not call a live embedding model. Instead it should:
- Normalize and segment the input.
- If the source is English, fetch precomputed vectors for known English lexemes, n-grams, or cached phrases from
EnglishEmbedding. - Compose a query vector using a weighted-average or SIF-like method over those stored vectors.
- Search the target side using
VECTOR_DISTANCEfor exact ranking orVECTOR_SEARCHwhen candidate sets grow large. - Return top-k public symbols or English paraphrases with a confidence band and evidence.
This is not as strong as live query embedding, but it is technically defensible. The “simple but tough-to-beat baseline” sentence-embedding work showed that weighted averaging of token embeddings can be a strong unsupervised baseline, which is exactly the kind of idea that supports an offline composition mode in this system.
LLM-assisted semantic mode
In this mode, the C# service asks LM Studio to generate a fresh query embedding from the full English or symbol-derived descriptor text, uses SQL Server to retrieve candidates, and then optionally asks LM Studio to rerank or verbalize the result set. LM Studio’s /v1/embeddings, /v1/chat/completions, and structured-output support make this mode realistic without leaving the local machine.
Hybrid mode
In hybrid mode, the service first does fast database-only retrieval, then sends only the short candidate list to LM Studio for reranking or explanation. This is usually the best operational default because it minimizes local AI compute while still improving English readability and tie-breaking. It also keeps the system useful when LM Studio is unavailable, overloaded, or disabled.
The query flow is therefore:
flowchart TD
INPUT[English or public symbol input]
NORM[NFC normalization]
SEG[Scalar and grapheme segmentation]
COMPOSE[Compose descriptor text and/or vector]
SEARCH[SQL exact or approximate search]
RANK[Heuristic ranking and confidence scoring]
LLM[Optional LM Studio rerank and verbalize]
OUT[Ranked public symbols or English gist]
INPUT --> NORM --> SEG --> COMPOSE --> SEARCH --> RANK --> OUT
RANK --> LLM --> OUT
On indexing, use exact search first for correctness, then add ANN when corpus scale justifies it. Microsoft explicitly documents VECTOR_DISTANCE as exact and VECTOR_SEARCH as approximate, and it documents vector indexes as approximate structures, not the same kind of guarantee you get from classic relational indexes. For an experimental site, that is a feature, not a bug: it gives you a controlled way to compare exact and approximate retrieval on the same corpus and present those differences openly on Protocol5.
WordPress, JustAnIota.com, and Protocol5.com interaction design
The uploaded site-planning documents strongly suggest that JustAnIota.com should be a sister publication site with a standards-style shell, not a startup landing page. They call for a restrained, evidence-first presentation style, a metadata rail, and a clear distinction between canonical documentation and interactive tools. That is the right choice for a system whose core claim is “public semantic approximation using Unicode data,” because the system needs explanation and provenance almost as much as it needs a textbox.
On WordPress, the right implementation is a custom plugin that registers server-side blocks with block.json, exposes controlled REST endpoints, and delegates heavy work to the C# backend. WordPress documentation recommends server-side registration for blocks, route registration on rest_api_init, and explicit permission_callbacks. That means the WordPress tier should present forms, fetch results, cache public responses when appropriate, and handle editorial placement—but not own embedding generation or heavy vector search logic in PHP.
The best public IA is a two-surface model:
| Site surface | Role |
|---|---|
| JustAnIota.com | Documentation, methodology, glossary, governance, and polished demo |
| Protocol5.com | More experimental visualizations, scoring breakdowns, neighbor inspection, and round-trip lab pages |
For JustAnIota.com, the flagship demo page should present the experiment in a clean, low-ambiguity way:
┌──────────────────────────────────────────────────────────────┐
│ JustAnIota Converter │
│ Public Unicode semantic experiment │
├──────────────────────────────────────────────────────────────┤
│ Input mode: [ English ] [ IOTA-1 public symbols ] │
│ Output mode: [ IOTA-1 ] [ English ] [ Round-trip ] │
│ Runtime: [ Database only ] [ LLM assisted ] │
│ │
│ [ Textarea / symbol input ] │
│ │
│ [ Convert ] [ Explain ] [ Show provenance ] │
├──────────────────────────────────────────────────────────────┤
│ Primary result │
│ Confidence band │
│ Top candidate symbols / phrases │
│ Why these were chosen │
│ Public Unicode sources used │
└──────────────────────────────────────────────────────────────┘
For Protocol5.com, the page should be more overtly experimental and emphasize the math of the idea rather than the polished result:
┌──────────────────────────────────────────────────────────────┐
│ Protocol5 Semantic Lab │
│ English → embedding neighborhood → public symbols → English │
├──────────────────────────────────────────────────────────────┤
│ Input sentence │
│ Derived working descriptor text │
│ Query vector mode used │
│ │
│ Top Unicode neighbors Similarity chart │
│ Top English back-renders Rank changes after LLM │
│ Exact vs ANN comparison Unicode provenance │
└──────────────────────────────────────────────────────────────┘
The interaction flow should always foreground that the output is approximate. A good flow is: enter text → choose runtime mode → convert → show ranked symbol candidates → optionally inspect provenance → optionally perform round-trip back to English. For symbol input, invert the same flow: tokenize public symbols by grapheme/sequence, compose a meaning vector from stored descriptor embeddings, retrieve English gloss candidates, then optionally ask the local LLM to verbalize them into readable English. That preserves symmetry and makes it easy to show “English → IOTA-1 → English” as an experimental loop rather than as a claim of perfect translation.
For background tasks triggered by editorial or admin actions—such as refreshing the atlas after a Unicode data update, rebuilding embeddings, or pushing a new model registry entry—use WordPress only as the initiating shell and keep actual long-running work in the C# worker. Action Scheduler is a suitable queue for WordPress-side task orchestration, but the compute-heavy work should live outside PHP request handling.
Evaluation metrics, security, privacy, licensing, and ethics
Evaluation should be built around the truth that the system is a semantic retrieval experiment. That means the first-class metrics are retrieval quality, gist preservation, and explainability, not exact-match translation accuracy. BEIR is the right broad retrieval reference point; LaBSE, multilingual E5, and SONAR are the right classes of multilingual embedding references; and the system should maintain a dedicated symbol-to-English gold set built from public Unicode descriptors plus human judgment.
A balanced evaluation stack should include these measures:
| Measure | Why it matters here |
|---|---|
| Recall@k | Whether the correct or acceptable public symbol is in the top candidate set |
| MRR | Whether the best candidate appears early |
| nDCG | Whether graded relevance across multiple acceptable symbols is preserved |
| Round-trip gist score | Whether English → symbol → English preserves the main idea |
| Human intelligibility score | Whether users can infer a plausible meaning from the symbol output |
| Provenance trust score | Whether users feel they can inspect and understand the mapping |
The test data should be a mixture of public Unicode descriptor pairs and human-curated semantic prompts. A sensible tiered dataset is: emoji and emoji sequences with CLDR names and keywords; Han ideographs with useful Unihan definitions or related fields; curated English phrases matched to public descriptor bundles; and adversarial cases with polysemy, metaphor, confusables, or mixed symbol sequences. The user-testing protocol should ask evaluators to judge not only “is this right,” but also “what gist do you think it conveys,” because gist preservation is the real task.
Security requires attention at every layer. On the Unicode side, UTS #39 documents mechanisms for confusable detection and mixed-script detection; you should apply those checks to identifiers, user handles, slug generation, and any “copy this symbol string” features shown on the public pages. On the model side, LM Studio’s docs state that the local API server does not require authentication by default, but it can require API tokens, restrict network exposure, and control CORS; those settings should be turned on for any non-dev deployment. On the WordPress side, public routes should use explicit permission_callbacks, browser requests should use nonces, and machine-to-machine admin calls should use server-side credentials such as Application Passwords or an equivalent secret store.
Privacy and data minimization are also materially better in this architecture than in a cloud-API design. LM Studio is designed to run locally on localhost or, if enabled, on the local network, which means short-text queries need not leave the host where the model runs. That does not eliminate privacy risk—logs, snapshots, and telemetry still matter—but it does remove compulsory third-party inference traffic from the hot path. The right default is to disable unnecessary network exposure, persist only the smallest useful audit data, and give the public UI a clearly visible “do not submit sensitive content” notice because this is a demo surface, not an enterprise translation product.
Licensing is unusually manageable here. Unicode’s licensing policy and FAQ state that most Unicode data files and software are available under the Unicode License v3, and the Terms of Use explicitly state that Unicode data files and software are subject to that license unless otherwise indicated. That is a strong positive for an open public symbol atlas built from UCD, CLDR, and related data. The more variable part is the embedding / LLM model license, which depends on the specific model imported into LM Studio; that means the EmbeddingModel registry should include a required license field and an “approved for public site use” flag before a model can be activated.
Ethically, the system should make three promises and keep them visibly. First, it should promise not to call approximate retrieval exact translation. Second, it should promise not to hide a private dictionary behind public-symbol branding. Third, it should promise to show provenance and alternatives whenever confidence is low. This is especially important for CJK ideographs and emoji, where cultural nuance and context can make a superficially “nearby” result feel misleading or reductive. The uploaded Protocol5 notes repeatedly frame the idea as an experiment in semantic approximation, and the public sites should preserve that framing rather than sand it down.
Performance, scalability, cost, and open questions
The cost profile of this architecture is dominated by local compute and storage, not by per-call cloud inference. SQL Server 2025’s vector type stores vectors in optimized binary form; LM Studio runs models locally; and the database-only gist mode can answer many requests without any live model call at all. In other words, the architecture is aligned with the user’s “demo / experiment, not a practical end-user translator” objective: it is feasible to run, test, and explain without building a high-burn SaaS stack around it.
A simple storage estimate shows why this is tractable. At 1024 dimensions, one float32 embedding is about 4 KB of raw vector payload; one float16 embedding is about 2 KB. So an illustrative corpus of 50,000 public symbols plus 150,000 English entries is about 781 MiB raw in float32, or about 391 MiB raw in float16, before index and metadata overhead. Those are not tiny, but they are well within the range of a modern experimental SQL deployment. The main architectural danger is not raw vector storage; it is bad corpus design that admits too many low-value Unicode entries or too many low-signal English fragments. The corpus should therefore be curated, not merely exhaustive.
Scalability should be approached in stages. Start with exact kNN over filtered candidate sets using VECTOR_DISTANCE, because Microsoft explicitly documents exact search as appropriate for smaller candidate sets and as the reference baseline for accuracy. Add approximate vector indexes and VECTOR_SEARCH only when the symbol atlas and English corpus become large enough that exact search starts to dominate latency. Because vector search and indexes are still documented as preview in parts of the SQL 2025 stack, a conservative deployment plan should treat ANN as an optimization path, not as a correctness assumption.
The highest-confidence production recommendation is therefore:
| Area | Recommended default |
|---|---|
| Public symbol policy | Assigned Unicode only; exclude PUA, surrogates, noncharacters, most controls |
| Runtime shape | C# modular monolith behind WordPress |
| Database access | ADO.NET via Microsoft.Data.SqlClient |
| Storage | SQL Server 2025 vector columns plus descriptor tables |
| Query default | Exact search first; ANN when proven necessary |
| AI runtime | LM Studio optional, local, authenticated, localhost-only by default |
| Embedding generation | C# → LM Studio primary; SQL-native external model optional |
| Front-end messaging | “Approximate semantic experiment,” never “exact translator” |
The main open questions are operational, not conceptual:
- Which embedding model family should be the default, given the SQL 1998-dimension limit, CJK coverage requirements, and the desire for decent emoji behavior? The evidence supports multilingual families such as LaBSE-, E5-, or SONAR-style encoders, but the exact deployment choice remains open.
- How large should the v1 symbol atlas be? A fully exhaustive “all assigned code points” atlas is possible, but a curated concept-bearing subset will almost certainly perform better in the first release.
- Will you require SQL-native embedding generation, or is application-side generation sufficient? Because SQL’s external-model path requires HTTPS/TLS while LM Studio defaults to localhost HTTP, this choice affects infrastructure immediately.
- How much exact text snapshotting is acceptable for observability and regression testing without creating the appearance of a hidden dictionary? The architecture should keep that store clearly separate from the public-symbol mapping logic.
The overall judgment is favorable. JustAnIota Converter is technically viable as a rigorous, enterprise-structured semantic retrieval experiment if it is honest about what it is: public Unicode-to-meaning approximation, not exact translation; open metadata, not a secret dictionary; SQL-backed retrieval with optional local AI, not AI-only magic. That position is consistent with Unicode’s standards model, with SQL Server 2025’s current vector capabilities, with LM Studio’s local API design, and with the uploaded Protocol5 / JustAnIota design intent.