Red Hat turns résumé parsing into a deployable OpenShift matching engine
The PeopleMesh quickstart combines Docling, Granite, pgvector and Keycloak, while exposing the design choices behind structured extraction and semantic reranking.
Red Hat has published a deployable reference pattern for turning résumés and natural-language queries into an internal talent-matching service. The engineering walkthrough is more useful than a generic retrieval-augmented generation demo because it follows the data from an uploaded document through extraction, validation, storage, search and reranking.
What the pipeline does
PeopleMesh begins with Docling, which converts PDFs and other document formats into a structured intermediate representation that preserves reading order and semantic labels. The application exports that representation as Markdown, sends it to a Granite 3B-class model to build a normalized profile, and stores the result in PostgreSQL alongside vector embeddings, according to the Red Hat Developer article.
Search follows the same shape in reverse. An LLM decomposes a natural-language request into structured filters and a distilled embedding query. PeopleMesh first filters candidates by fields such as entity type, country and language, ranks the remaining set by cosine similarity, and then reranks results with weighted factors for preferred, missing and unwanted skills.
That last stage addresses a real weakness in naive semantic search. The article describes “embedding dilution,” where one vector representing many unrelated attributes becomes less discriminating. PeopleMesh avoids a more complex multi-vector fusion pipeline by combining the initial similarity score with six additional information channels. The authors are explicit that the resulting score orders candidates; it is not a probability.
The important design boundary
The walkthrough also distinguishes schema-valid output from factually reliable output. vLLM can constrain generation to a JSON schema with guided decoding, but a required field can still force a model to invent a value when the source document omits it. PeopleMesh therefore uses post-generation guardrails: vocabulary checks, normalization, deduplication, range clamping and conversion of malformed scalar values into expected list structures.
That is the transferable lesson. Structured generation reduces parser failures, but application-level validation still owns data quality. Teams adapting this pattern should make optional fields genuinely optional and preserve an “unknown” state rather than treating schema compliance as evidence.
What it takes to try
The accompanying PeopleMesh AI quickstart deploys a React front end, Quarkus API, namespace-scoped Red Hat build of Keycloak, Docling, Ollama or vLLM, and PostgreSQL with pgvector. Red Hat lists OpenShift 4.12 or later, Helm 3 and a Keycloak Operator 24-or-later installation as software prerequisites.
The documented minimum is four CPU cores, 16 GB of memory and 100 GB of storage. CPU-only processing is supported, but the quickstart estimates two to three minutes per résumé; its recommended GPU configuration reduces that estimate to 10–20 seconds. The installation script can enable GPU acceleration separately for Docling and model serving.
This is still a reference implementation, not a finished human-resources system. Before production use, platform teams would need to set retention rules for uploaded résumés, define access controls around profile data, evaluate ranking quality for their population and decide which inferred fields should require user confirmation. As an engineering blueprint, however, it provides a concrete starting point and makes its retrieval tradeoffs inspectable.
sources
- Build an AI matching engine with Docling, Granite & OpenShift AIdevelopers.redhat.com
- Deploy AI-powered talent discovery with semantic searchdocs.redhat.com
comments · 0