← All work

Live product · Built by Bytesicht

CultureFitr

An assessment product for recruitment agencies and talent teams, connecting company profiles, candidate responses, and explained comparison reports.

Product design · Frontend & backend · Infrastructure & AI implementation

Visit CultureFitr
CultureFitr comparison report for a demo candidate and company: calculated fit score of 86, profile dimensions and the start of the written analysis
Comparison report · Demonstration dataView full size

Two experiences.
One assessment workflow.

Recruitment teams need to collect responses, compare profiles, and explain what a result means. Candidates need a clear route through the assessment.

The authenticated agency workspace brings company profiles, assessments, results, and comparisons together. Candidates follow an assessment link without creating an account. The report combines the calculated comparison with written explanations.

Bytesicht built both experiences, the API and data model, scoring, asynchronous report processing, and the PDF export pipeline.

CultureFitr candidate assessment on mobile: question 4 of 20 with two of four statements ranked
Candidate assessment · Demonstration dataView full size

A deliberate boundary

Code calculates the score.
AI explains the result.

Assessment answers are checked against the stored questionnaire before the server calculates a profile. Compatibility comes from those profiles, not a language-model response.

The model receives the computed result and produces explanatory prose. Rounding keeps profile percentages at 100, while ranking uses the underlying points. The separation makes calculation and language independently testable; it does not establish hiring effectiveness.

From response to report

Keep long-running work
outside the request.

  1. Web application

    Next.js serves agency workspaces, candidate assessments, and report views.

  2. API & database

    NestJS validates inputs and calculates scores. Prisma and PostgreSQL store agency-scoped records.

  3. Background processing

    PostgreSQL-backed jobs generate explanations through a separate model-provider interface.

  4. Report & PDF

    The interface reads report status. Playwright renders the shared report view for export.

Report records track pending, generating, ready, or failed states independently of the queue. Recovery logic re-enqueues interrupted work, and the interface can show a real outcome instead of waiting indefinitely.

Engineering decisions

Clear boundaries.
A complete workflow.

Each agency has its own data context.

Authentication guards and agency-scoped queries govern access to company profiles, assessments, and results. Cross-agency requests return a not-found response. Every new data-access path must preserve that boundary.

One report view, on screen and in the PDF.

Playwright opens a signed print route and waits for an explicit report-ready signal. Reusing the report component keeps the browser and exported document aligned, with selectable text. The API container includes the browser runtime needed for that work.

AI is an integration with an explicit boundary.

A provider interface separates report processing from model access. The implementation includes a development mock and an OpenRouter provider. Shared Zod contracts also keep the web application and API aligned on request and response shapes.

Built with

Next.js / NestJS / PostgreSQL / Prisma / pg-boss / Playwright / Zod / TypeScript / Docker

Current status

Live software, designed and built as a Bytesicht product. The system described here covers the agency workspace, candidate assessments, scoring, report generation, and PDF export.

Build with Bytesicht

Bring your product workflow into software.

From the first user journey to data, AI processing, and deployment, we can help shape and build the complete system.

Discuss your project