Recommend for Agents¶
When to use¶
Use this flow when your Next.js API needs deterministic, explainable job recommendations from cleaned parquet jobs.
Prerequisites¶
- Cleaned parquet jobs available (for example from
honestroles ingest sync). - Optional policies in repo root:
recommendation.tomlrecommend_eval.toml- Candidate input as either:
- strict profile JSON
- plain text resume
Steps¶
1) Build index artifacts¶
$ honestroles recommend build-index \
--input-parquet dist/ingest/greenhouse/stripe/jobs.parquet \
--policy recommendation.toml
Default output is dist/recommend/index/<index_id>/ with:
manifest.jsonjobs_latest.jsonlfacets.jsonshards/*.jsonquality_summary.json
2) Match candidate to jobs¶
Candidate JSON:
$ honestroles recommend match \
--index-dir dist/recommend/index/<index_id> \
--candidate-json examples/candidate.json \
--top-k 25 \
--include-excluded \
--policy recommendation.toml
Resume plain text:
$ honestroles recommend match \
--index-dir dist/recommend/index/<index_id> \
--resume-text examples/resume.txt \
--profile-id jane_doe \
--top-k 25
Output includes agent-ready rows:
job_idscorematch_reasonsrequired_missing_skillsapply_urlposted_atsourcequality_flags
When --include-excluded is set, output also includes excluded_jobs with deterministic exclude_reasons codes.
3) Evaluate recommendation quality offline¶
$ honestroles recommend evaluate \
--index-dir dist/recommend/index/<index_id> \
--golden-set examples/recommend_golden_set.json \
--thresholds recommend_eval.toml
The command computes precision@k and recall@k and exits non-zero when thresholds fail.
4) Record feedback for incremental personalization¶
$ honestroles recommend feedback add \
--profile-id jane_doe \
--job-id 12345 \
--event interviewed
$ honestroles recommend feedback summarize --profile-id jane_doe
Feedback files are stored locally under .honestroles/recommend/feedback/.
Expected result¶
build-indexwrites deterministic retrieval artifacts for fast API reads.matchreturns agent-ready result rows with explainability and optional exclusions.evaluateenforces relevance thresholds for regression control.feedbackupdates per-profile weighting state for low-compute personalization.
Next steps¶
- Serve
jobs_latest.jsonl, facets, and shard files from your Next.js API route layer. - Schedule
recommend build-indexafter ingestion refreshes. - Add
recommend evaluateto CI with a maintained golden set.