Case study
Shinsa
The CV checker that tells you not to apply. CV and vacancy in, one honest verdict out: GO, HOLD or SKIP.
- Role
- Creator. Designed, built and shipped.
- Owned
- Product, Visual identity, Frontend, Backend, AI pipeline, Payments, Infrastructure
- Stack
- Next.js, TypeScript, Supabase, Anthropic API, Stripe, Resend, Vercel
- Status
- Live, free Standby plan and paid Priority plan
Try itRuns in your browser with sample data
Candidate
Frontend engineer, 6 years
TypeScript 6 yrs, React 5 yrs, Node.js 2 yrs, testing. English and Dutch. Remote only.
Sample profile
Product EngineerB2B SaaS, Series A
Waiting for check-in
Pick a vacancy and press Analyze. The board shows the verdict and the two reasons that decided it.
01 The problem
Every CV tool wants you to apply. Shinsa doesn't.
Job boards, CV optimisers and match-percentage tools share one incentive: more applications. Shinsa (審査, “screening”) takes the opposite position. It reads the CV and the vacancy the way a screener does, and if the hard requirements don’t line up it says SKIP before anyone spends an evening on a cover letter.
No percentages. No artificial encouragement. One verdict.
02 What I built
An arrival hall with a verdict board.
The whole product is styled as an airport arrival hall: yellow wayfinding signage, a boarding pass for the CV profile, and a departure board where every checked-in vacancy gets its verdict. Three verdicts on the board, zero percentage scores, and a reminder fourteen days later that closes the loop.
03 How it works
Check in. Get screened. Read the board.
profile.upload(cv)01 Get your boarding pass
Upload your CV as a PDF or paste the text. Shinsa normalises it into roles, years of experience, skills and languages: the profile every screening runs against.
checkin.paste(vacancy)02 Check in a vacancy
Paste one vacancy, or a whole batch at once. Shinsa splits each posting into hard requirements and nice-to-haves and compares them directly against your profile.
board.flip()03 Read the board
The split-flap board flips to GO, HOLD or SKIP, with the reasoning, the gaps, CV tuning for that vacancy and interview prep for the questions those gaps will raise.
outcome.log()04 Log what happened
Interview, rejection or silence: one click per screening. Every logged outcome feeds the calibration loop, so future verdicts get sharper for you specifically.
04 Technical decisions
The model judges structured facts, not prose.
The screening pipeline runs two separate Claude Sonnet calls: normalisation first, the verdict second. The first turns a CV and a vacancy into structured facts. The second judges those facts. That separation is what keeps the verdict consistent.
A one-shot verdict is an opinion, so the logbook turns it into a feedback loop. Recent real outcomes are summarised and handed back to the model as calibration context, so it learns whether it has been too strict or too lenient with a specific user.
The loop depends on behaviour nobody shows voluntarily: coming back weeks later to log “no response”. A daily cron sends one reminder per screening after fourteen days, and a single-use token link logs the outcome without a login. The calibration loop is deliberately never paywalled.
- Input
- CVPDF or text
- Vacancyone or a batch
- AI
- NormaliseClaude Sonnet
- VerdictClaude Sonnet
- Product
- Split-flap board
- Logbook
- Jobs radarAdzuna API
- Platform
- Supabaseauth, user data
- Stripeplans, ten-strip
- Resendoutcome reminders
- Runtime
- Vercel
- Daily cron14-day loop
Outcomes logged in the logbook flow back into the verdict call as calibration context.
05 What I owned
The whole thing, end to end.
The positioning, the arrival-hall identity with its split-flap board, and every line of code. Supabase for auth and per-user data, Stripe for the Priority plan and the ten-strip carnet, Resend for the outcome reminders, a jobs radar that screens fresh matching vacancies from the Adzuna API, and deployment on Vercel under its own domain.
06 Live
The real shinsa.io, embedded.
07 Why it matters
A product opinion, enforced all the way into the code.
“Tell people when not to apply” only works if the verdict is trustworthy. That requirement shaped everything: structured facts before judgement, a feedback loop from real outcomes, and a decision to keep that loop free because it is the one thing that makes Shinsa worth trusting.