🇧🇩 Built for Bangladesh's HR teams

Every candidate,
scored on your rubric.

Upload a job description and a batch of CVs. Every candidate is scored on six weighted dimensions you control — then ranked, with the reasoning behind every number kept on the record.

You set the weights Scored in code, not guessed Every number auditable
topcandidate.pro/app
TopCandidate dashboard — ranked candidates, pipeline, and the scoring funnel
Dashboard preview
How it works

Three steps, one rubric

The job description sets the standard once, and every candidate is measured against that same standard.

1
Upload the JD and the CVs
Paste a job description, attach a batch of PDFs, and set the weighting for the role — or start from one of eight presets.
2
Scored on your rubric, in code
Each CV is scored twice from opposing angles, blended, then the final number is recomputed deterministically — never taken on trust from the model.
3
Rank, move, and email
A sortable list with a full report per candidate, four pipeline stages, and interview or rejection emails sent from inside the app.
What actually runs

One CV, six checks, two opinions

The score isn't a single answer from a language model. The CV and the job description are parsed separately, scored twice from opposing angles, then checked by deterministic code that the model never sees.

Scoring pipeline: the CV and job description are parsed in parallel, scored by a strict pass and an upside pass, blended 60/40, then adjusted by hard-gap detection and a confidence gate before the final weighted score is recomputed in code. in parallel Parse CV roles, skills, dates, education Parse JD requirements, must-haves TWO-PASS SCORING Strict pass gatekeeper · temp 0.2 Upside pass hiring manager · temp 0.3 Blend 60 / 40 per dimension Hard-gap check −15 to −25 each, capped −35 Confidence gate >12 pts apart → downgrade Final weighted score recomputed in code, not taken from the model 0–100 + recommendation DETERMINISTIC — NO MODEL CALL Scoring pipeline, vertical: CV and job description parsed in parallel, then a strict pass and an upside pass blended 60/40, then hard-gap detection, a confidence gate, and a final weighted score recomputed in code. in parallel Parse CV roles, skills, dates Parse JD requirements TWO-PASS SCORING Strict pass gatekeeper · temp 0.2 Upside pass hiring manager · temp 0.3 Blend 60 / 40 per dimension Hard-gap check −15 to −25 each, capped at −35 Confidence gate passes >12 pts apart → downgrade to MAYBE Final weighted score recomputed in code, not taken from the model 0–100 + recommendation

Every stage after the blend is ordinary code, not a prompt — the same input always produces the same adjustment.

The rubric

Six dimensions, weighted for the role

Each dimension is scored 0–20. The weights below are the balanced default — a senior engineering role and a sales role shouldn't be graded the same way, so you can change them.

Skills Match25%
Which required skills and technologies actually appear, after normalising synonyms so Postgres and PostgreSQL aren't counted as two different things.
Experience Relevance20%
Whether the work history is the kind of work the role asks for — not just how many years of it there are.
Achievement & Impact20%
Evidence of outcomes rather than responsibilities. What shipped, what moved, what the candidate was actually accountable for.
Role Alignment15%
Seniority and scope fit. A strong candidate for a different level is still a mismatch for this one.
Education & Certifications10%
Degrees and certifications weighed against what the job description actually requires, not against a general prestige ranking.
Stability & Tenure10%
Job-change pattern across the career, with guardrails so a short career isn't mistaken for a pattern.

Eight presets ship with the app — balanced, sales, senior and junior engineering, manager, operations, data & analytics, creative — or set the six weights yourself.

Why it's different

Your edge over generic screeners

Not a black box that hands you a number. A rubric you control, maths you can check, and a record you can defend.

You set the weights
Six dimensions, and the emphasis is yours. A senior engineering role and a sales role shouldn't be graded the same way, so you tune the weighting per role — start from one of eight presets or set all six yourself.
Scored in code, not guessed
The model returns per-dimension scores; the overall number is recomputed in code from those scores and your weights, minus penalties. A model that returns a confident total gets that total thrown away.
Every number is auditable
Two-pass scoring with a confidence gate, and every screening keeps its per-dimension scores, the gaps that triggered a penalty, and the job description it was measured against. When someone asks why a candidate ranked where they did, there's an answer.
Built for Bangladesh's HR teams
Made in Dhaka for the way teams here hire — recruiter Gmail for candidate emails, batches of PDFs, and a workflow that runs on a phone. Not a Western tool bolted on sideways.
Access

Early access, by conversation

There is no checkout and no plan to pick. We're onboarding teams one at a time while the product is still early.

Contact us for access

Tell us what you're hiring for and how many CVs you're working through. If it's a fit, we'll set your account up and walk you through the first batch ourselves.

Your own account, set up with you on a call
Weightings tuned to the roles you actually hire for
Candidate emails sent from your own address
Direct line to us while you're getting started
Request access

Already set up? Sign in here.

Questions

Straight answers

What file formats can I upload?
PDF only. Anything else is rejected before it reaches the scorer, so a stray .docx in a batch fails fast rather than silently scoring as an empty CV.
How many CVs can I process at once?
Batch size depends on the account we set up with you. Within a batch, CVs are processed three at a time and you watch each result land live rather than waiting for the whole batch to finish.
Does a missing requirement automatically reject a candidate?
No. A missing hard requirement applies a penalty of 15 to 25 points, capped at 35 across all gaps. It pushes a candidate down the ranking; it never removes them from it. The decision stays yours.
What happens when the two scoring passes disagree?
If the strict and upside passes land more than 12 points apart, the result is flagged low-confidence and any Strong Hire or Hire recommendation is downgraded to Maybe. A Reject is never upgraded by this rule — disagreement makes us more cautious, not less.
Does the AI-written-CV signal lower a candidate's score?
No, and that's deliberate. It's computed from writing-style patterns and shown on the report as a signal for you to weigh. It's kept entirely out of the scoring maths, because a polished CV is evidence of effort, not of dishonesty.
Where do candidate CVs go?
CV text is sent to OpenAI's API for parsing and scoring — that's how the analysis works, and we'd rather say so plainly than claim your data never leaves the building. Results and the original PDF are stored in our database so you can reopen the report later, and you can delete any screening from the app.
Can I change how candidates are weighted?
Yes. Eight presets ship with the app, and every one of the six dimension weights can be set per role. The weights you choose are what the final score is computed from.
Can I email candidates from inside the app?
Yes — interview invitations and rejections are sent through your own connected mailbox, so replies come back to you and the thread lives in your normal inbox.