尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Describe a business (or paste a MyCareersFuture job link to load the employer) and watch TypeSafe Jev walk the Singapore Standard Industrial Classification 2025 tree, level by level, to a 5-digit industry code — animated as a pixel-art crowd on a 2D canvas, with every probability listed.
Live: https://ssic.danielquek.com · Sister app: SSOC 2024 Decision Trail
npm install
npm start # http://localhost:5173 — needs TYPESAFE_API_KEY in the environment
Optional env: PORT, TYPESAFE_MODEL (default jev-latest).
npm run deploy
worker/index.mjs serves the same API as server.mjs from a Worker; public/ is static assets.
Set the TypeSafe key once as a Worker secret: npx wrangler secret put TYPESAFE_API_KEY.
Spend protection (in wrangler.jsonc): /api/classify is limited to 5 runs/min per IP and a
global DAILY_LIMIT of 300 runs/day (KV counter USAGE, ~23k input tokens per run);
/api/mcf to 30 requests/min per IP. Local test: CLOUDFLARE_INCLUDE_PROCESS_ENV=true npm run dev:cf.
lib/classify.mjs)Choice per path still in the beam; options are
the node's direct children, described with SingStat definitions, the sub-class titles they
contain, alternative titles from the alphabetical index, and "see …" exclusions. Paths are
ranked by geometric-mean edge probability (TypeSafe hierarchical-classification cookbook).Choice with full definitions, covered
activities and exclusions. Its distribution is the final probability list.Six requests in total, ~1.4 s. The server streams each step as NDJSON so the canvas animates live.
vote at this level × probability so far).| Path | What |
|---|---|
server.mjs | HTTP server, /api/classify (stream), /api/mcf (load employer from a posting) |
worker/index.mjs | Cloudflare Worker with the same API plus rate limits and a daily cap |
lib/classify.mjs | Beam search + finals using @typesafe-ai/sdk |
lib/mcf.mjs | MyCareersFuture client: employer profile + SSIC tag |
public/ | Canvas app (app.js), procedural pixel sprites (sprites.js), division costumes (costumes.js), sample companies (samples.json) |
data/ssic2025.json | Built from SingStat xlsx in raw/ by npm run build:data |
tools/snapshot_samples.mjs | Refreshes public/samples.json from samples/mcf_samples.txt |
tools/eval.mjs | Runs the sample companies, compares with employer tags |
tools/check_costumes.mjs | Every division has a distinct, valid costume |
TEST_RESULTS.md | Latest evaluation |
Data: SingStat SSIC 2025 detailed definitions, alphabetical index and SSIC 2020↔2025 correspondence tables.