Mithin Sagar
Skip to content
Signal interface
← All projectsAgentic AI · Full-Stack2026

Signal

Explainable resume-to-role matching

143
canonical skills
399
surface forms
50
tests passing
0
documents stored

“Most tools hand you a score. This one shows its work.”

The problem

A keyword matcher says a resume 'matches 60%' and stops — answering none of the questions anyone actually has. Which 40% is missing, does any of it matter, and what changes if I fix one thing?

The approach

One constraint shapes the whole codebase: the score must be reproducible and the reasoning inspectable. The scoring engine is pure — no network, no model, no clock — so the same two documents always produce the same number, and it always completes. The language model runs after there is already a complete result and can only write prose about it; it cannot move the score.

What makes it
work.

    01

    143 canonical skills across 10 categories and 399 surface forms, so 'postgres', 'PostgreSQL' and 'psql' never report a gap that isn’t there.

    02

    Requirement weighting reads the posting’s own framing — a 'Must have' counts 3×, a 'Nice to have' 1× — with line-level markers overriding their section.

    03

    'PyTorch or TensorFlow' is parsed as one requirement any member satisfies, not two false gaps.

    04

    With no API key configured at all, Signal still does everything except write the narrative. That is not a degraded mode; it is the product working as designed.

Built with.

  • Next.js 15
  • TypeScript
  • Tailwind CSS v4
  • Motion
  • unpdf
  • Tesseract.js
  • Vitest
Work together

Let’s build somethingmeaningful.

Open to internships and AI/ML roles, research collaborations, or a conversation about something you are trying to make work. I reply to everything.