Polaris

A job-search agent for people looking for LLM and Agent internships in China

It keeps collecting jobs and interview write-ups from career sites, Xiaohongshu and Maimai, searches them against your constraints (city, direction, days per week, how long you can stay), marks every hard conflict between you and a job, pulls real interview questions out of real posts, and watches a search goal for you over weeks. Every claim opens to its source text; when it finds nothing, it says so.

The hosted demo is being deployed (#16). The author uses Polaris for their own internship search, and it is their entry to the Nebius × NVIDIA Global AI Hackathon, Personal AI track. The interface is in Chinese because the users and sources are.

18agent tools; side effects wait for approval
801backend tests; CI on every PR
5engineering cases from real runs
3,800+interview questions in the author's database (10-25)

2:38 demo video with English narration and captions; everything shown is the synthetic demo. Open on YouTube

Chat: jobs found under the user's constraints, education, paper and attendance compared item by item

All screenshots come from the synthetic demo: jobs, posts, company names and the profile are invented.

What it does

Each feature says how it stays trustworthy, because invented advice is the worst failure for a job-search tool.

Find jobs

Search by city, direction, internship type and days per week; keyword, vector and graph recall, fused and reranked.

Constraints filter before recall; an unstated constraint is "to confirm", never a match.

Check fit

Education, papers, attendance and internship length against your memory card.

Hard conflicts are flagged; what your card lacks is listed as information to add.

Interview questions

Questions extracted from posts, with source and post date.

Asking for real questions forces a question search first; any cited id must appear in tool results or it is marked unverified.

Follow-up cards

Watch a goal: focus jobs removed or changed, new jobs in scope, new interview posts, outcomes of people like you.

Changes ranked urgent / digest / quiet; a daily report whose facts rules compute and the model only writes up.

Competitiveness

HR's three questions: which hard requirements block you, how many common skills your card covers, whether your experience has evidence; then peers' public self-descriptions.

Says so when the sample is small; "not written" is not "does not have".

Applications and memory

Application funnel, follow-up drafts; remembers your constraints and experience, with history, deletable.

Drafts only, never sends; changing data waits for approval; bi-temporal memory asks before overwriting.

In the demo

The follow-up card script: days 4 → 5, a removed job, a new job and a new interview post are all caught, ranked and reported.

Follow-up card with ranked changes and a situation report

Follow-up card and situation report

Competitiveness: hard requirements, skill coverage, missing information

Competitiveness: hard requirements, skills, gaps HR will ask about

Applications: funnel, channels, weekly volume, rejection feedback

Applications: the funnel counts the furthest step each job reached; rejection reasons feed later gap analysis.

Architecture

Collection stays on the author's machine, read-only and low-rate; retrieval is hybrid inside PostgreSQL; LangGraph orchestrates the agent, and every model call records tokens, latency and cost.

System: collection, extraction, alignment, PostgreSQL hybrid retrieval, LangGraph agent, web and MCP, daemon

Click a diagram for full size.

One request through the agent:

One request: memory extraction, planning, tools, approval, evidence gate, citation check

Engineering cases

All came from running the whole system for real. No offline test caught any of them.

SymptomCauseFixResult
"Beijing Agent internship" listed 1 jobTop 50 chunks from the whole corpus, then intersected with the scope: 40 in-scope candidates became 1. Also 140 of 207 Beijing internships did not state days per weekPass in-scope job ids into all three recall paths; keep unknown days as "to confirm"1 → 32 candidates
A task took 265 s while the model paged through results6,000-character tool output, about 2,200 per job: 1–2 jobs per pageSlimmer list items, cap raised to 16,000Full task in 77 s
Model requests failed after 30 sA local TUN accelerator captured Bailian traffic; direct Wi-Fi succeeded 6/6 in about 0.2 sOnly for the Bailian host and only on a fake DNS answer, resolve the real address and connect directly; fall back on failure103 s → 2 s
"I found an interview question in the database"; there was noneThe model skipped the question search despite a prompt ruleEvidence gate in orchestration: no question search yet, no final answerEvery question sourced
Tests "passed" with the database downDatabase tests were skipped with exit code 0; once, 306 of 792 never ranFail in CI instead; CI uses the demo's ParadeDB imagePR #2

The first four are in commit 1d8cf59.

Evaluation

Module evaluations from 10-11 to 10-13; each number holds for that version and question set only.

AreaResult
RetrievalNDCG@10: one path 0.73 → three paths 0.81 → reranked 0.89 (M4)
Cross-source alignmentTest F1 0.93, labelled after the rules were frozen (M4)
MemoryExact sentence match: dev 26/28, held-out 14/16, test 13/16 (M5)
Answer qualityDev 24/24 and 23/24, held-out 13/14, zero fabricated sources (dev, held-out)
Prompt injection0 of 15 attacks succeeded (injection)

Hackathon note

Polaris runs on Qwen models through Alibaba Cloud Bailian. It does not use Nebius Token Factory or an NVIDIA model. The model layer speaks the OpenAI-compatible API, so Token Factory is a configuration change, but that path has not been run. The author chose not to set up Nebius billing and accepts that the entry does not meet those two requirements.

Stack

Agent

LangGraph 1.2 / LangChain 1.4: middleware for approval, call limits, retries and evidence gates; Postgres checkpointer.

Retrieval

PostgreSQL 17, pgvector, ParadeDB pg_search (BM25 with Chinese tokenization), optional Neo4j; weighted RRF, rerank, MMR.

Backend and web

FastAPI, SQLAlchemy 2.1, Alembic, MCP; Next.js 16 and React 19, installable on a phone.

Models

Alibaba Cloud Bailian: chat qwen3.7-plus, extraction qwen-plus, embeddings text-embedding-v4, rerank qwen3-rerank.