Work / Bharat-First / Astha ResumeAI

Capstone · Cybersecurity · 3-in-1 PWA

साथीwrites the resume.
Bridge verifies the skill.
Nine agents read the room.

First-generation Indian job seekers fight three different walls: a form they cannot fill, a gatekeeper they cannot reach, and a screen they cannot see. Astha ResumeAI knocks down all three from one browser tab. Conversational. Multilingual. Cryptographically signed. No resume data ever leaves the device.

01 · Candidate side

साथीSaathi

A slot-filling chatbot that builds your resume by talking. Hindi, Hinglish, Tamil, Telugu, Kannada, Bengali, Marathi, Gujarati, Punjabi. Voice in. PDF out.

  • 23 data slots, 7 phases
  • 4 ATS-optimised templates
  • Pure LLM, zero regex

02 · Trust layer

Bridge

The employer publishes criteria. The candidate self-assesses, then takes an adaptive test. The scorecard is HMAC-SHA256 signed on a Cloud Function. Resume claim, verified score, gap.

  • 5-level adaptive difficulty
  • 12 anti-cheat penalty layers
  • Per-criteria 32-byte secret

03 · Employer side

9-agent screen

Upload resumes and a JD. Nine agents fan out as a Kahn-sorted DAG: parse, embed, match, distance, score, coach. Every weight is cited to peer-reviewed research.

  • 4-tier progressive AI
  • 189-skill taxonomy graph
  • Red-flag detection on every pass
9Indian languages, voice-first
23Slots · 7 conversation phases
189Skills · 10 categories · adjacency graph
516Tests · 27 test files
0Resume bytes that leave the device

Act I · The Problem

First-gen seekers are three walls deep,
before the first interview.

  1. Wall · 01

    The form does not speak the language.

    Sixty percent of Indian job seekers are not comfortable in English or Hindi. The resume builder asks for "tenure" and the candidate closes the tab. Most "AI for resumes" stops existing the moment the script changes from Latin.

  2. Wall · 02

    The skills column is a leap of faith.

    "Proficient in Python" reads the same on a brilliant CV and a fabricated one. The employer cannot tell. The honest candidate gets sorted with the inflated one. The trust gap is the resume's biggest lie.

  3. Wall · 03

    The ATS is a black box and a verdict.

    A keyword-counting filter rejects the candidate without explanation. The recruiter never sees the resume. The candidate never learns what to fix. A shipped product on both sides has to show its work.

  4. Wall · 04

    Privacy is the price of admission.

    Most resume tools upload the document to a vendor cloud. The candidate's name, address, phone, college roll number and salary history sit in someone else's logs. For a first-gen seeker, that is the whole house.

Act II · The Promise

Saathi asks. The resume writes itself.

No forms. No fields. The candidate speaks. Saathi listens to a one-word answer, reads its own last question for context, and slots the data into the right of 23 buckets. Gemma 3 27b on the front, Gemini 2.5 Flash as backup. Pure LLM. Zero regex.

Saathiphase: education

Where did you study? Just the city is fine if the college name slips your mind.

Candidate · Solan, HPvoice input

शिमला

"Shimla."

Saathislot.education.location ✓

Got it, Shimla. Which course, and what year did you finish? You can answer in any language you like.

Candidatehinglish

BCom from HPU, 2024 mein finish hua.

Saathislot.education.degree, year, institution ✓

B.Com, HPU, 2024. Saved. We have eleven slots left. Tell me about something you built or organised at college that you are proud of.

Act III · The Cascade

Four tiers of intelligence. Each one falls back to the next, never to the cloud first.

The phone decides what it can do. Old phone with no GPU? L1 and L2 still work in WASM. Mid phone with WebGPU? L3 unlocks Gemma 4 in the browser. Offline? The pipeline keeps grading. Online and L3 cannot load? Only then does the resume's hashed embedding go to L4. The resume itself stays put.

  1. L1 any device

    Regex and heuristics.

    Section detection, entity extraction, Jaccard plus TF-IDF scoring, parseability gate. Hard rule: if a resume is missing 3 of 4 expected sections, the final score is zero.

    0 MB

  2. L2 WASM

    E5-small-v2 embeddings.

    384-dimensional sentence vectors via ONNX runtime. Cosine similarity for skills, projects and experience. Quantised to Q8 so it loads on a mid-range Android in under three seconds.

    ~67 MB

  3. L3 WebGPU

    Gemma 4 E2B in-browser.

    Q4 quantised reasoning model via Transformers.js. Runs the Henle et al. fraud taxonomy: fabrication, embellishment, omission. Project quality scored against the AAC&U VALUE rubric.

    ~1.5 GB

  4. L4 cloud · last resort

    Gemini 2.5 Flash API.

    Only if L3 cannot load and a key is configured. Structured JSON output. Native PDF understanding. The fallback exists so the system never returns a worse answer than the tier above it could.

    network · graceful

Act IV · The Pipeline

Nine agents. Five tiers. One Kahn sort.

Every employer screen is a Kahn-sorted DAG. Independent nodes run in parallel. Downstream nodes wait. Every agent records a thought-action-observation triple with timing, so the recruiter sees why the score landed where it did.

orchestrator.run · trace=ja-2026-30412 scenario: candidate vs jd
Tier 1
JD Parser L1 NLP L2 Embeddings
Tier 2
Distance · L1 Skills Matcher · JD + L1 L3 Reasoning · L1 + L2
Tier 3
L4 Fallback · only if L3 failed
Tier 4
Scorer · 9 weighted parameters
Tier 5
Coach · per-candidate suggestions
weights · skills 30, exp 20, edu 15, projects 10, certs 5, distance 5, extracur 5, gpa 3, completeness 2 red flags subtract · final score clamped 0 to 100

Act V · The Trust Layer

Twelve quiet checks. One signed verdict.

Bridge does not interrupt the candidate. It does not flash a warning. It just measures. Twelve signals in parallel, three audio layers, and one HMAC-SHA256 signed scorecard at the end. The employer reads a number they can trust. The candidate is never accused without evidence.

Bridge anti-cheat penalty matrix
SignalHow it firesPenalty
Tab switchvisibilitychange listener−5
Paste detectionpaste event on the test area−8
Fullscreen exitfullscreenchange listener−3
Speed anomalyanswer time below 0.3 of expected read time−10
Compound anomalyspeed anomaly with a tab hidden in the last 10 s−15
Speech burst2 to 5 s of detected speech−1
Conversationthree or more bursts in 30 s−5
Continuous speechmore than 10 s of continuous speech−8
Whisperlow-energy speech detection−6
Speech with tab switchspeech within 5 s of a tab switch−12
Resume pinningSHA-256 hash plus n-gram Jaccard change detectionblocks retest
Device fingerprint11 hardware signals · GPU, audio, screen, CPU, memory · hashedone identity per device

Audio · 01

Spectral

FFT energy distribution in the 300 to 3400 Hz speech band. Catches a quiet voice the room does not.

Audio · 02

Temporal

Syllabic modulation in the 3 to 8 Hz window via zero-crossing rate. Speech rhythm has a fingerprint.

Audio · 03

Adaptive

Rolling 60 s baseline that recalibrates from non-speech samples. Quiet rooms and noisy rooms grade fairly. Zero audio is ever stored.

Act VI · The Offer

An offer is more than a salary. Score the rest.

Astha computes a 0 to 100 wellbeing score for any job offer, weighted across eight research-cited parameters and tuned for 32 Indian cities. Real salary is cost-of-living adjusted. Commute uses non-linear piecewise decay. Relocation costs the candidate 10 points by default, per Gallup community wellbeing.

ParameterWeightSource
Commute25%Clark et al. 2020 · Stutzer & Frey 2008
Work hours20%WHO/ILO Pega 2021
Work mode15%Bloom et al. 2024 (Nature)
Real salary, CoL adjusted15%Gallup Five Elements
Air quality, PM2.510%Graff Zivin & Neidell, IZA
Industry stability5%NASSCOM/Aon 2024
Heat stress, WBGT5%Nature Sci Reports 2026
Commute cost5%ORF India

Act VII · Proof

It is live, signed, and silent about your data.

Live · astha-capstone.dmj.one

Production deployment

Vercel auto-deploys from main on every push. Custom domain plus three Vercel aliases. Loads on a 2G connection, works through a service worker when the network drops.

Privacy · 0 bytes

Resume never leaves the device

Every L1, L2 and L3 inference runs in the browser. L4 sends a hashed embedding only as a last resort, only with explicit consent, only when L3 cannot load.

Trust · HMAC-SHA256

Every scorecard is signed

Per-criteria 32-byte signing secret, generated server-side. The Cloud Function signs the canonical JSON. The employer verifies. The candidate cannot inflate.

Quality · 516 tests

27 test files · Vitest

React Testing Library 16.3, Vitest 3.1. Strict TypeScript build on every commit. Lint passes on every PR. The capstone ships like a product, not a homework set.

A11y · WCAG 2.2 AAA

7:1 contrast across the UI

Skip links on every page. Three-pixel solid focus indicators. ARIA live regions. Reduced-motion respected. 44 px touch targets. Print stylesheet for the resume preview.

Security · HSTS 2 yr · preload

Headers on by default

CSP in and in the Vercel config. X-Frame-Options DENY. Permissions-Policy denies camera, payment, USB. Anonymous Firebase auth with device-to-email mapping.

The Stack

Single PWA. Browser-grade ML, server-grade trust.

  • React 19.1
  • TypeScript 5.8 strict
  • Vite 6.3
  • Tailwind 4.1
  • Zustand 5
  • Transformers.js v4
  • onnxruntime-web
  • Gemma 3 27b · Saathi
  • Gemma 4 E2B Q4 · L3
  • Gemini 2.5 Flash · L4
  • Firebase Auth
  • Firestore · 8 collections
  • Cloud Functions v2 · Node 20
  • html2pdf.js
  • Web Speech API
  • Web Crypto API
  • Workbox PWA
  • Vercel

If a final-year capstone can ship like this, imagine the team.

I mentor capstone teams to build production-grade AI products that respect the user's data, the user's language, and the user's phone. The repository is MIT. The pattern is portable. The conversation starts here.