A second pass hardened the MVP and made it deployable. Four things landed on PR #94 (now 59 tests green), and there's a new deploy runbook so you can stand it up.
services.yml: lint + test, pip-audit, and a keyless docker-boot + health check.llama-3.3-70b-versatile for the cited scorer scored 4/7 vs 1/7 on the 8b default, and correctly surfaced Platform / DevOps Engineer @ Alpine Cloud at 90 (the 8b had dropped it) — with real per-requirement evidence quotes.A working agentic oll-scout MVP is built, tested, and PR'd overnight. 58 tests green, ruff clean, verified by a real end-to-end run — not deployed, not merged. One thing to click first:
github.com/bytesbysamu/oll-am/pull/94 — the agentic upgrade over the old heuristic scout (#93). A real SourceAdapter + ScoringStrategy seam, a JSON-LD career-page adapter, and a posting-quoted llm_cited scorer with honest abstention.
58 tests green · ruff clean · a real keyless end-to-end run produced a tiered digest. Nothing is deployed or merged — it waits on your review.
#93 was a keyword-heuristic scout. #94 makes the two hot spots pluggable seams — and those seams are the generalization surface for later domains (flights, deals). No submit tool — the agent cannot auto-apply, by construction.
| What landed | Does |
|---|---|
SourceAdapter seam | The where-postings-come-from boundary — swap or add a source without touching the pipeline |
| JSON-LD adapter new | A real schema.org/JobPosting career-page reader — parses the structured data an employer already published for Google for Jobs |
ScoringStrategy seam | The how-postings-are-ranked boundary — the heuristic and the LLM scorer are interchangeable |
llm_cited scorer new | Posting-QUOTED rationale: requirement quote → your-evidence quote → met / partial / gap, plus gaps, dealbreakers, an interview angle, and honest abstention when the signal isn't there |
Versioned StructuredProfile | Narrative + evidence-map + title-cluster + hard-gaps + dealbreakers — the thing the scorer reasons against |
| Cross-source dedup | Near-dup collapse so one job = one row even when it shows up on two boards |
The three seams — SourceAdapter, ScoringStrategy, and the versioned profile — are the generalization surface. The same engine that ranks a job posting against a career profile ranks a flight against a travel profile or a deal against a wishlist. Building the scout the right way once means the second and third domains are new adapters, not new engines. And there is no submit tool in the set — the agent cannot auto-apply, by construction.
Keyless, fixture provider, real pipeline. One end-to-end run: 7 postings → dedup → prefilter → score → tiered digest. The actual output:
# oll-scout end-to-end run · fixture provider · keyless · real pipeline # 7 postings → dedup → prefilter → score → tiered digest [ 41] Platform / DevOps Engineer @ Alpine Cloud GmbH + python, docker - gap: no signal for llm [ 22] Senior Backend Engineer (Python) @ Helvetia Fintech AG [ 19] Data Scientist (ML) @ Léman Bio SA
The heuristic tops a real platform-engineering role at only 41 — which is exactly the spec's thesis. Keyword scoring is the weak baseline; the llm_cited scorer is the differentiator. That scorer is unit-tested against a mocked gateway (its cited-rationale shape is proven); a live scored run needs the real gateway token, so this run shows the heuristic path end-to-end and the LLM path under test.
Three things are true and worth naming before this goes anywhere near a real run. None blocks the merge — they're the M2 worklist.
llm_cited LIVE path needs OLL_MODEL_SERVICE_TOKEN — you have it in Coolify. Without it the scorer is proven only against the mocked gateway.Just confirming direction — nothing here needs a reply.
Four, scannable. The first two are the fast ones.
Review + merge PR #94?
M2 Swiss coverage — get a jooble free key, or point the JSON-LD adapter at employer career pages (Abraxas / Swisscom / Bedag)?
Want a live cited-rationale run proven? (Needs the gateway token wired locally, or I run it against the deployed gateway.)
Green-light M3 — the paid gate (Core subscription + multi-user + the web front door)?