Spaces:
Sleeping
Sleeping
Commit History
-
Fix float16 dtype mismatch in TitleMatch + all matchers, remove .DS_Store, parallelize line-by-line
pnorlanderNewer sentence-transformers ships gte-small/gte-large as float16, causing torch.mm dtype errors against float32 corpus embeddings. Cast all embedding models and corpus tensors to float32. Run the three line-by-line attribution calls concurrently via ThreadPoolExecutor for ~3x wallclock speedup.2a9e653
-
Fix skill_embed cache miss + DebertaV2Tokenizer compat
pnorlanderThe precomputed skill_embed cache was missing at runtime because JAAT builds its skill corpus with `list(set(...))` whose iteration order differs between Python 3.13 (precompute) and Python 3.10 (runtime) even with PYTHONHASHSEED=0. Switch the cache to value-based lookup: save the corpus text alongside each tensor, then at runtime build {item: row_idx} and reorder the cached rows to match whatever order JAAT produces. Order-independent and robust across Python versions. Also add a shim aliasing DebertaV2Tokenizer.batch_encode_plus to __call__; newer transformers removed the method on the slow DebertaV2Tokenizer, breaking TitleMatch.get_title.0f9e302 -
Pin JAAT 0.8.3 and precompute embeddings to avoid 30-min launch timeout
pnorlanderJAAT.TaskMatch / SkillMatch / AIMatch each encode their full corpora at __init__ (~42k items total across gte-small and gte-large). On a CPU Space that pushed cold-start past HF's 30-min launch health check. - requirements.txt: pin JAAT==0.8.3, add huggingface_hub back - Dockerfile: ENV PYTHONHASHSEED=0 so runtime `list(set(skills))` order matches what precompute_embeddings.py ran under (SkillMatch indices must align with the cached skill_embed tensor) - app.py: download pnorlander/jaat-embeddings at import and monkey-patch SentenceTransformer.encode so corpus-sized calls return the cached tensor - precompute_embeddings.py: regenerate with `PYTHONHASHSEED=0 python3 precompute_embeddings.py` if JAAT's bundled CSVs change542d331 -
Add requests to requirements (missing JAAT transitive dep)
pnorlander +1: Claude Opus 4.6 (1M context)JAAT's published wheel imports `requests` at module load but doesn't declare it in its install_requires, so the Space build succeeds and then fails on `from JAAT import JAAT` with ModuleNotFoundError. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>9737a69 -
Update README.md
Verified signature0a4c3b0 -
Fix JAAT 0.7.2 compat + add line-by-line mode
pnorlander8ea00ef
-
Sort AIMatch results by last 5 digits of code descending
pnorlanderdba82f6 -
Fix WageExtract: handle string values from extract_wage and string return type
pnorlander76b26b2 -
Add AIMatch tool and fix TitleMatch O*NET code link
pnorlander43303a5 -
Trigger rebuild
pnorlander2e867c8
-
Download NLTK data at app startup before importing JAAT
pnorlander +1: Claude Opus 4.6The Dockerfile download may save to a different path than runtime. Downloading at startup ensures punkt_tab is always available. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>096e4a9 -
Link O*NET code to onetonline.org summary page
pnorlander +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ed899a9 -
Add GitHub link to header
pnorlander +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>993c158 -
Fix NLTK punkt_tab missing and FirmExtract API bug
pnorlander +1: Claude Opus 4.6Download NLTK data during Docker build. Work around JAAT bug where get_firm() doesn't pass required args to extract_firm() by calling the pipeline and extract_firm() directly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b1fd2a9 -
Drop huggingface_hub pin that conflicts with Gradio
pnorlander +1: Claude Opus 4.6Gradio 5.x requires a newer huggingface_hub than 0.23.2. The critical pins for JAAT are transformers and tokenizers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e671e98 -
Fix Gradio UI: remove theme and label args that may not be supported
pnorlander +1: Claude Opus 4.6Simplified Blocks layout, removed gr.themes.Soft and gr.Markdown label parameters that may not exist in the installed gradio version. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>7ebde73 -
Switch from Flask to Gradio for native HuggingFace Spaces support
pnorlander +1: Claude Opus 4.6Gradio handles streaming, auth, and proxying natively on HF Spaces. Results stream tool-by-tool with a live pipeline status panel. Removes Flask, gunicorn, and the __sign token workaround. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3a4d16d -
Stream results tool-by-tool with live progress UI
pnorlander +1: Claude Opus 4.6Backend now streams NDJSON as each tool completes instead of waiting for all tools. Frontend shows pipeline with queued/running/done/error states and spinner on the active tool. Results appear progressively. This also keeps the connection alive, avoiding gunicorn worker timeouts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e14c6ba -
Redesign UI with logo, per-tool results, citation, and title input
pnorlander +1: Claude Opus 4.6- Add JAAT logo to header - Separate job title input field for TitleMatch (runs on titles only) - Results grouped by JAAT tool with labeled badges - Add BibTeX citation block - Backend accepts separate title field for TitleMatch Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b3c4b6e -
Fix worker timeout and tokenizer fork issues
pnorlander +1: Claude Opus 4.6- Set TOKENIZERS_PARALLELISM=false to prevent fork deadlocks - Increase gunicorn timeout to 600s for heavy model inference - Use /dev/shm for worker heartbeat (avoids container filesystem issues) - Single thread to minimize memory usage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a27b6ba -
Pass HuggingFace __sign token with API requests
pnorlander +1: Claude Opus 4.6The HF proxy requires the signed auth token for all requests. GET works because the iframe URL includes it, but POST to /analyze was missing it, causing 404 from the proxy layer. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>38571b5 -
Reduce log noise and improve gunicorn config for debugging
pnorlander +1: Claude Opus 4.6Set logging to INFO, suppress urllib3/filelock debug spam. Add gunicorn access logs, preload, and extended timeout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f21e202 -
Add request/response logging and debug routes for 404 diagnosis
pnorlander +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5bf2ad4 -
Switch to gunicorn and use absolute URL for API calls
pnorlander +1: Claude Opus 4.6Flask dev server is not suitable for production; gunicorn handles concurrent requests and HF proxy better. Also use window.location.origin for the API URL to avoid potential path resolution issues. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>084a207
-
Pin transformers and related deps for JAAT compatibility
pnorlander +1: Claude Opus 4.6JAAT requires transformers==4.41.2 and specific versions of tokenizers, peft, accelerate, and huggingface_hub to avoid API breaking changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8503d8b -
Re-add README.md with correct HuggingFace Spaces config
pnorlander +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0e4522e -
Remove duplicate Readme.MD and fix README.md frontmatter
pnorlander +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a856334 -
Merge branch 'main' of https://huggingface.co/spaces/pnorlander/JAAT_DEMO
pnorlander905a40d -
Fix Dockerfile merge conflict and update README for HuggingFace Spaces
pnorlander +1: Claude Opus 4.6Resolve merge conflict in Dockerfile and replace app_file with app_port in README frontmatter for Docker SDK compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1364133 -
Delete .DS_Store
Verified signature9dc688b -
Update Readme.MD
Verified signature6438204 -
Update Readme.MD
Verified signature62634c8 -
Create Readme.MD
Verified signatureae1cafc -
Initial upload
pnorlander4fd17cf -
Create Dockerfile
Verified signatureddaeed5 -
initial commit
Verified signature59f5bf5