跪拜 Guibai
← All articles
Backend

A Full-Stack AI Recruitment Platform with 11 Agents, Multi-Model Routing, and Database-per-Service

By 苏三说技术 ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

This is a rare, production-shaped reference for stitching LLMs into a real business workflow without the usual fragility. The multi-model gateway with fallback chains, fingerprint-based deduplication, and dual-level caching addresses the cost and reliability problems that kill most AI features before they reach users.

Summary

Smart-Recruit is a complete enterprise recruitment system that embeds AI into every stage of hiring. It runs 7 Spring Boot microservices with independent MySQL databases, connected through a unified API gateway that handles JWT auth and transparently passes user context downstream. The AI engine routes requests across Qwen and DeepSeek models with automatic failover, while AgentScope 2.0 orchestrates 4 sub-agents for interview evaluations and a five-stage resume-to-offer pipeline.

Resume parsing handles text, images, and scanned PDFs by switching between Tika extraction and a visual LLM. AI screening, JD generation, and question generation all run as asynchronous tasks with frontend polling so pages never block. Offer acceptance and retention predictions are pre-computed by scheduled jobs, with SHA-256 fingerprinting to skip duplicate LLM calls when nothing changed.

Beyond the AI layer, the platform includes a full electronic contract flow with handwritten signature pads and dual signing, RBAC permissions down to the button level, AOP audit logging, configurable page watermarks, and a dual-frontend setup with a management console and a public careers site. The whole thing ships with 40+ step-by-step tutorials and init scripts that bootstrap 7 databases and 55 tables.

Takeaways
— Seven microservices each own a separate MySQL database, with inter-service calls handled by Spring's declarative @HttpExchange clients and Nacos service discovery.
— The API gateway authenticates JWT once and forwards user identity via headers, so downstream services never touch auth logic.
— An LLM gateway routes requests to Qwen or DeepSeek models by agent type and automatically fails over when a model is unavailable.
— AgentScope 2.0 orchestrates 4 sub-agents for interview evaluation and a five-stage resume-to-offer pipeline, decoupled from the model layer via a LangChain4j adapter.
— Image and scanned resumes are parsed by a visual LLM; text resumes go through Tika extraction first, with failures flagged for manual review.
— All AI generation tasks run asynchronously with a task queue and frontend polling, so the UI never freezes waiting for a model response.
— Offer acceptance and retention predictions are pre-computed by scheduled jobs; a SHA-256 hash of onboarding data prevents redundant LLM calls.
— Talent recommendations use a Redis 15-minute and Caffeine 5-minute dual cache, with paginated 'next batch' support.
— Interview evaluation, resume screening, and predictions each have multi-level fallback chains so pages always show data even when LLMs fail.
— Electronic contracts use a canvas-based handwritten signature pad with a dual-signing flow for candidate and HR.
— Audit logging via AOP captures operator, IP, parameters, and duration; page watermarks display the logged-in user's name and timestamp.
— Java 25 virtual threads handle high-IO workloads like SSE event streams and email sending, reducing resource usage under concurrency.
Conclusions

Most AI recruitment demos stop at a single LLM call; this system's real contribution is the engineering around reliability: fingerprint dedup, dual caching, and multi-level fallback chains that keep the UI functional when models fail.

The decision to decouple AgentScope orchestration from the LLM gateway via an adapter means the multi-agent logic can evolve independently of which vendor or model is cheapest or most capable that month.

Pre-computing predictions with scheduled jobs and skipping unchanged data via hashing is a pattern that applies to any SaaS feature where LLM latency or cost would degrade the user experience.

The database-per-service design with 55 tables across 7 databases is unusually thorough for a demo project and forces real thinking about service boundaries and data ownership.

Concepts & terms
AgentScope 2.0
A multi-agent orchestration framework that lets a master agent spawn and coordinate sub-agents via agent_spawn calls, used here to run interview evaluations across four specialized agents.
@HttpExchange
A Spring 6+ annotation for declaring HTTP service interfaces. Methods annotated with @PostExchange or @GetExchange generate REST client proxies at runtime, eliminating manual HTTP connection code.
SHA-256 Fingerprint Dedup
Hashing a set of input fields and comparing against a stored hash to skip redundant LLM calls. If onboarding data hasn't changed, the retention prediction job won't burn tokens re-running the same prompt.
Database-per-Service
A microservice pattern where each service owns its own private database. Prevents services from coupling through shared tables and forces explicit API contracts between them.
Source: juejin.cn ↗ Google Translate ↗ Backup ↗