Commit graph

8 commits

Author SHA1 Message Date
f0e9886ab2 feat(avocet): POST /api/skip endpoint 2026-03-03 15:21:32 -08:00
ff27053aa9 feat(avocet): POST /api/label endpoint 2026-03-03 15:14:04 -08:00
c1a6dd4fc5 fix(avocet): queue_with_items fixture uses api._DATA_DIR to avoid implicit tmp_path coupling 2026-03-03 15:03:57 -08:00
9abae0478c feat(avocet): GET /api/queue endpoint 2026-03-03 15:00:59 -08:00
c8aea3c39f fix(avocet): _write_jsonl empty-list writes empty file; add reset_last_action helper 2026-03-03 14:36:18 -08:00
ffd1450f62 feat(avocet): FastAPI skeleton + JSONL helpers 2026-03-03 13:30:28 -08:00
fd476e4199 feat: 9 labels (add event_rescheduled/unrelated/digest), wildcard Other label, InvalidCharacterError fix 2026-02-27 14:34:15 -08:00
0e238a9e37 feat: initial avocet repo — email classifier training tool
Scrape → Store → Process pipeline for building email classifier
benchmark data across the CircuitForge menagerie.

- app/label_tool.py — Streamlit card-stack UI, multi-account IMAP fetch,
  6-bucket labeling, undo/skip, keyboard shortcuts (1-6/S/U)
- scripts/classifier_adapters.py — ZeroShotAdapter (+ two_pass),
  GLiClassAdapter, RerankerAdapter; ABC with lazy model loading
- scripts/benchmark_classifier.py — 13-model registry, --score,
  --compare, --list-models, --export-db; uses label_tool.yaml for IMAP
- tests/ — 20 tests, all passing, zero model downloads required
- config/label_tool.yaml.example — multi-account IMAP template
- data/email_score.jsonl.example — sample labeled data for CI

Labels: interview_scheduled, offer_received, rejected,
        positive_response, survey_received, neutral
2026-02-27 14:07:38 -08:00