DEV Community

Krisha Shah
Krisha Shah

Posted on

FillMate: An AI Add-in for My HR Friend

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend

What I Built

A close friend of mine handles HR at a small company. Every new hire means opening the same Word salary template and copying details from emails by hand: name, designation, joining date, CTC, notice period. It's slow, and one wrong digit in a salary letter is a real problem.

So I built AI Word Template Filler: a Word add-in where she pastes an email or a few lines of text, and it fills the template for her. Nothing is written silently. Every field shows up for review first, and anything missing is flagged instead of guessed.

Demo


[Short video: paste text → review panel → Apply to Word]

Code

[https://github.com/krishashah-03/superdocs-builds/tree/main/extensions/krishashah-03/word-fill-template]

How I Built It

  • [Open-weight model, e.g. Llama 3.3 70B] via OpenRouter extracts fields from free text like emails and bullet points
  • FastAPI backend normalizes dates, salary ("8 LPA" → 800000), and yes/no values, then detects gaps
  • React + Office.js task pane shows a review screen; only approved fields are written into Word
  • JSON/CSV input skips the AI entirely, so structured data stays deterministic
  • 63 pytest tests cover parsing, normalization, gap detection, and AI error handling

Why Open Models Matter Here

  • No lock-in: OpenRouter's OpenAI-compatible API let me test several open-weight models and pick the one best at structured extraction by changing one config line.
  • A path to fully local: because the model is open-weight, the same setup can run on her own machine through Ollama later, so salary data never has to leave the office.
  • Low cost: a small company can't justify an expensive API bill for filling forms; open models keep it nearly free.

What She Said

[I've sent her a demo, and she'll try it on the next new joiner's salary letter. I'll update this section with her honest verdict, good or bad]

What's Next

Offer letters and NDAs. The engine is schema-driven, so a new template only needs a new schema.json.

Top comments (0)