Vacancy Card

Matched job opening card from ResultsView's locked section (Bunch D, Phase 3) — Jooble (primary) + DOU RSS (secondary, title-filtered), deduped and capped at 3-5 per grade. Never shows an irrelevant vacancy to fill space — see the empty-state below.

Matched vacancies

Title, company/location, salary (if present), a source badge (Jooble/DOU), and an outbound link — opens in a new tab.

PropTypeDefaultDescription
matchJobMatch—One normalized vacancy from Jooble or DOU (or a demo fixture).
linkLabelstring—Localized "View" label — from resultsCopy.jobMatchesViewLabel.

Loading state

Shown while the /api/jobs fetch is in flight for an unlocked user — never fetched at all for a locked/anonymous viewer.

Empty state

Hard requirement from the Bunch D research: fewer than 1 relevant match found → show this, never irrelevant vacancies just to fill space.

No matches yet — check back later.

PropTypeDefaultDescription
messagestring—Localized empty-state copy — from resultsCopy.jobMatchesEmpty.
Sergiy Klymkovych

VoiceMock was built by one designer

I'm Sergiy, a product designer. I built this trainer myself — research, design system, code. On LinkedIn I show how products like this come together, and what it changes in a designer's work.

Product Designer · AI Design Engineer · Designer for Startups

See it on LinkedIn