Urgent.News

What's breaking now, across thousands of outlets.

Tech

5 Ways to Build Retrieval Architecture for Candidate Search (and Stop Duplication)

Short answer: use staged retrieval with explicit collections, bounded queries, and source context that survives every retry. For recruiting candidate search, deduplication is part of retrieval quality, not a cleanup job after the model answers. Option Where it fits Operational trade-off Elasticsearch Teams already operating text search and filters Many knobs; vector and lexical tuning become your…

To build a retrieval architecture for candidate search and prevent duplication, use staged retrieval with explicit collections, bounded queries, and source context that remains consistent throughout retries. Deduplication should be part of the retrieval quality rather than a post-processing job.

Operational trade-offs depend on whether your team operates Elasticsearch or a managed vector index like Pinecone or Weaviate. Infrai is a lightweight option that provides a thin HTTP layer for vector calls, allowing any HTTP client to interact with the vector surface without needing an SDK.

The retrieval architecture should preserve a specific contract, including the candidate document identifier, tenant, access-control metadata, source URL or internal document ID, chunk text, and a score. Raw documents should be stored separately, and a stable sourceKey should be derived from tenant, document ID, and content version. New parses of the same version should overwrite existing chunks, while changed versions should create new sets and retire the old ones in a controlled job.

A deterministic key is crucial to prevent duplicate ingestion after worker timeouts, as multiple chunks may be committed before the connection is lost. Idempotency is mandatory, given that standard queues are at-least-once. A chunk object includes tenantId, documentId, version, ordinal, and text, and a sourceKey function generates a stable key for deduplication.

When interacting with Infrai, use a bounded query wrapper to manage operational policies like using the real vector query route, bearer authentication, exponential backoff for rate limit responses (429), and hard failures for other non-success responses. The query is read-only, so the retry key should be a trace key rather than a write idempotency token. Use the same deterministic sourceKey across upsert attempts to ensure updates rather than adding duplicate candidates.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

The git worktrees your coding agents leave behind, and how to clean them up

Claude Code, Cursor and Codex run in git worktrees so several agents can work at once. Each worktree is a full checkout with its own node_modules and build output, and they pile up quietly.

  • Coding agents create git worktrees for simultaneous work
  • Worktrees accumulate, consuming large disk space
  • Mopup removes finished worktrees without losing committed data

Auditing SPF and DMARC for a whole list of domains: p=none, ~all and the other ways a "pass" misleads you

Checking one domain's email authentication takes a minute in a terminal. Checking 300 customer, supplier or portfolio domains is where people script it, and where most scripts quietly report the wrong…

  • Read TXT records for SPF and DMARC, handle split chunks
  • Two SPF records equal none; flag >1 as broken
  • SPF policies: -all (fail), ~all (softfail), ?all (neutral), +all (pass-everyone)

More from Saturday 14 November →