尚未偵測到更新。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.