跪拜 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 ↗