ResumeBot (FLAN-T5 fine-tuned on a resume)
ResumeBot is google/flan-t5-base fine-tuned to answer questions about the resume of Karthik H D (MSc Data Science student, Dayananda Sagar University). It is a small academic project that combines a fine-tuned language model with a simple TF-IDF retriever.
Model description
- Base model:
google/flan-t5-base(Apache-2.0) - Task: answer a question using the resume facts given in the prompt (text-to-text generation)
- Language: English
- Fine-tuned by: Karthik H D
How the full system works
- A TF-IDF retriever (1-2 word n-grams, cosine similarity) finds the 2 most relevant resume facts for a question.
- The fine-tuned model receives them in this prompt format and writes the answer:
Resume information: {retrieved facts} Question: {question} Answer using the resume information: - An agent function sends resume-related questions to this model and all other questions to the original FLAN-T5.
The model alone does not memorise the whole resume; it answers from the facts placed in the prompt. The retriever and app code are in the Space resumebot (see app.py and knowledge.json there).
Training data
- 26 resume facts, each written with 4-5 question wordings.
- Every question is automatically repeated in three styles ("Karthik", "the candidate", "he/his").
- The last wording of every fact is held out as a validation set.
- All answers come only from the resume. Items the resume does not contain (hobbies, awards, internships, LinkedIn/GitHub) have answers saying they are not listed.
- The phone number is not in the training data.
Training procedure
| Setting | Value |
|---|---|
| Learning rate | 3e-4 |
| Batch size | 8 |
| Epochs | 8 |
| Weight decay | 0.01 |
| Precision | fp32 (fp16 off, T5 is unstable in fp16) |
| Max input / target length | 256 / 128 tokens |
| Trainer | Hugging Face Seq2SeqTrainer |
Training and validation loss were plotted per epoch in the training notebook. No accuracy benchmark was run, so no accuracy figure is claimed here.
Intended use
Answering questions about this one resume in a demo chatbot, and learning how fine-tuning and retrieval work together.
Limitations
- Knows only one resume; it is not a general assistant (general questions are handled by the original FLAN-T5 in the app).
- Very small training set, so unusual wordings can retrieve the wrong fact and give a wrong or partial answer.
- Should not be used for hiring or screening decisions.
Quick example
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
repo = "your-username/resumebot-flan-t5"
tok, model = AutoTokenizer.from_pretrained(repo), AutoModelForSeq2SeqLM.from_pretrained(repo)
prompt = ("Resume information: His achievements are being a Mysore University Inter-Collegiate Cricket Player and an Athlete.\n"
"Question: What are his achievements?\nAnswer using the resume information:")
out = model.generate(**tok(prompt, return_tensors="pt"), num_beams=4, no_repeat_ngram_size=3, max_new_tokens=128)
print(tok.decode(out[0], skip_special_tokens=True))
Contact
Email listed on the resume: sca25msd038@dsu.edu.in