একটি সিমেন্টিক রেজুমে ম্যাচিং ইঞ্জিন তৈরি করা - অফলাইন, ব্যক্তিগত এবং আসলেই স্মার্ট

উচ্চ স্কেলে নিয়োগের প্রক্রিয়াটি বর্তমানে ভেঙে পড়েছে। এমন নয় যে কোম্পানিগুলির কাছে উপযুক্ত প্রার্থীর অভাব রয়েছে, বরং সঠিক প্রার্থীদের খুঁজে বের করার জন্য ব্যবহৃত টুলগুলি ২০২৬ সালের আধুনিক যুগের তুলনায় লজ্জাজনকভাবে প্রাচীন। আমি এটি সমাধান করার জন্য এবং এটি সম্পূর্ণ অফলাইনে করার জন্য সিমেন্টিক রেজুমে ম্যাচিং ইঞ্জিন তৈরি করেছি।

প্রথাগত এটিএস (ATS)-এর সমস্যা

আপনি যদি কখনও কোনও চাকরির জন্য আবেদন করে থাকেন এবং স্পষ্টতই যোগ্য হওয়া সত্ত্বেও কোনও সাড়া না পেয়ে থাকেন, তবে আপনি নিশ্চিতভাবেই একজন মানুষের দ্বারা নয়, বরং একটি অ্যাপ্লিক্যান্ট ট্র্যাকিং সিস্টেম (এটিএস) দ্বারা রিজেক্ট হয়েছেন। এই সিস্টেমগুলি একটি জব ডেসক্রিপশনের সাথে রেজুমের হুবহু কিওয়ার্ড মিলিয়ে কাজ করে। যদি কোনও প্রার্থী লেখেন “বিতরণ করা পাইপলাইন (distributed pipelines) তৈরি করেছি” এবং জবের বিজ্ঞপ্তিতে লেখা থাকে “ডেটা ইঞ্জিনিয়ারিংয়ের অভিজ্ঞতা,” তবে সিস্টেম তাদের মধ্যে কোনো মিল খুঁজে পায় না। ফলস্বরূপ, একজন রিক্রুটারের কাছে প্রোফাইলটি পৌঁছানোর আগেই প্রার্থী ফিল্টার আউট হয়ে যান।

এটি শুধুমাত্র প্রার্থীদের জন্যই খারাপ নয়, কোম্পানিগুলির জন্যও ক্ষতিকর। মেশিন কেবল বানান বুঝতে পারে, অর্থ নয়; তাই সত্যিকারের প্রতিভাবান প্রার্থীরা এই জটিলতায় বাদ পড়ে যান।

ক্লাউড এআই-এর সমস্যা

এর সহজ সমাধান ( রেজুমে বোঝার জন্য একটি এলএলএম ব্যবহার করা) একগুচ্ছ নতুন সমস্যা তৈরি করে। রেজুমে অত্যন্ত সংবেদনশীল তথ্যে ভরা থাকে যা একজন ব্যক্তির একান্ত নিজস্ব। এর মধ্যে সম্পূর্ণ আইনি নাম, ঠিকানা, চাকরির ইতিহাস এবং কখনও কখনও বেতন প্রত্যাশা অন্তর্ভুক্ত থাকে। এই সমস্ত সংবেদনশীল ডেটা কোনও তৃতীয় পক্ষের ক্লাউড এপিআই (যেমন OpenAI, Anthropic বা Gemini)-এ পাঠানো জিডিপিআর (GDPR) এবং সিসিপিএ (CCPA) নীতিমালার লঙ্ঘন এবং অনেক দেশে এটি একটি বড় আইনি ঝুঁকি।

এর সাথে রয়েছে বিপুল খরচ: ক্লাউড এপিআই রেটের উপর ভিত্তি করে হাজার হাজার রেজুমের জন্য এলএলএম ইনফারেন্স রান করা অত্যন্ত ব্যয়বহুল হয়ে দাঁড়ায়। আপনি এমন ডেটার জন্য প্রতি টোকেন রেটে অর্থ প্রদান করছেন যার মালিকানা আপনার নেই, এবং তা এমন এক ইনফ্রাস্ট্রাকচারে প্রসেস হচ্ছে যা আপনার নিয়ন্ত্রণে নেই।

সমাধান: লোকাল, সিমেন্টিক এবং ব্যাখ্যামূলক

সিমেন্টিক রেজুমে ম্যাচিং ইঞ্জিন হল একটি এন্টারপ্রাইজ-গ্রেড রেজুমে-টু-জব ম্যাচিং সিস্টেম যা সম্পূর্ণরূপে আপনার নিজের মেশিনে রান করে। কোনো ডেটা কখনোই আপনার লোকাল নেটওয়ার্কের বাইরে যায় না। এটি তিনটি টেকনিককে একত্রিত করে যা একসাথে কাজ করে একটি চমৎকার সমাধান প্রদান করে:

১. এলএলএম-ভিত্তিক স্ট্রাকচার্ড এক্সট্রাকশন: একটি লোকাল মডেল (ওলামার মাধ্যমে চালিত গেমা ৩ বা লামা ৩.২) রেজুমের সাধারণ পিডিএফ টেক্সট রিড করে এবং একটি ক্লিন ও ভ্যালিডেট করা JSON প্রোফাইল এক্সট্রাক্ট করে: যার মধ্যে থাকে দক্ষতা, কাজের ইতিহাস এবং শিক্ষা। এর জন্য কোনো ক্লাউড এপিআই কী-এর প্রয়োজন হয় না। ২. সিমেন্টিক ভেক্টর সার্চ: প্রার্থী প্রোফাইল এবং জব ডেসক্রিপশন উভয়কেই nomic-embed-text ব্যবহার করে হাই-ডাইমেনশনাল ভেক্টরে রূপান্তর করা হয়, যা লোকালভাবেই রান করে। pgvector এক্সটেনশনের মাধ্যমে সরাসরি পোস্টজিএসকিউএল (PostgreSQL)-এর ভিতরে কোসাইন সিমিলারিটি সার্চ করা হয়। এর ফলে একজন প্রার্থী যিনি “মাইক্রোসার্ভিসেস আর্কিটেক্ট করেছেন” তিনি এমন একটি রোলের জন্য ম্যাচ করবেন যেখানে “ডিস্ট্রিবিউটেড সিস্টেমের অভিজ্ঞতা” চাওয়া হয়েছে, কারণ ভেক্টর সার্চ অর্থের গভীর সমতা বুঝতে পারে। ৩. ডিটারমিনিস্টিক বিজনেস রুল গার্ডরেইলস: যেকোনো ম্যাচের স্কোর দেখানোর আগে ডাটাবেজ লেভেলে কিছু কঠোর সীমাবদ্ধতা প্রয়োগ করা হয়: যেমন ভিসা স্পনসরশিপের প্রয়োজনীয়তা, স্যালারি রেঞ্জ এবং কাজের অবস্থান (রিমোট বা অনসাইট)। এআই কোনোভাবেই এই নিয়মগুলিকে উপেক্ষা করতে পারে না, কারণ এগুলি সরাসরি ডাটাবেজ কোয়েরির মাধ্যমে নিশ্চিত করা হয়, এলএলএম মডেলের মাধ্যমে নয়।

ব্ল্যাক বক্স নয়, রয়েছে সহজ ব্যাখ্যা

এই প্রজেক্টের যে অংশটি নিয়ে আমি সবচেয়ে বেশি গর্বিত তা হল ফিট অ্যানালিসিস লেয়ার। প্রতিটি ম্যাচের জন্য সিস্টেমটি স্বাভাবিক ভাষায় একটি ব্যাখ্যা জেনারেট করে: কেন এই প্রার্থী উপযুক্ত, রোলের সাপেক্ষে তার বিশেষ শক্তি কোনগুলি এবং আরও গুরুত্বপূর্ণভাবে, দক্ষতার ঘাটতি কোথায় রয়েছে। রিক্রুটারদেরকে শুধুমাত্র একটি স্কোরের উপর ভিত্তি করে অন্ধের মতো ভরসা করতে হয় না। তারা একটি সহজপাঠ্য সংক্ষিপ্ত বিবরণ পান যা তাদের সিদ্ধান্ত নিতে সাহায্য করে যে প্রার্থীকে পরবর্তী ধাপে পাঠানো হবে কিনা এবং ইন্টারভিউতে কোন কোন বিষয়ে প্রশ্ন করা উচিত।

টেকনিক্যাল স্ট্যাক

ব্যাকএন্ডটি একটি FastAPI সার্ভিস যা অ্যাসিনক্রোনাস SQLAlchemy, Pydantic ভ্যালিডেশন, স্ট্রাকচার্ড JSON লগিং এবং রিকোয়েস্ট ট্রেস-আইডি প্রোপাগেশন সমর্থন করে। ডাটাবেজ হিসাবে PostgreSQL 15 ব্যবহার করা হয়েছে যার স্কিমা মাইগ্রেশন আলেমবিক (Alembic) দ্বারা এবং ভেক্টর অপারেশনগুলি pgvector দ্বারা পরিচালিত হয়। এলএলএম এবং এমবেডিংগুলি Ollama-এর মাধ্যমে লোকালভাবে পরিবেশিত হয়। ফ্রন্টএন্ডটি একটি React + Vite ড্যাশবোর্ড যা রিয়েল-টাইম টেলিমেট্রি চার্ট, একটি রেজুমে আপলোড ফ্লো এবং একটি সাইড-বাই-সাইড ম্যাচিং প্যানেল প্রদর্শন করে। সম্পূর্ণ স্ট্যাকটি শুধুমাত্র একটি docker compose up কমান্ডের মাধ্যমে রান করা যায়।

এটি কেন গুরুত্বপূর্ণ

এই প্রজেক্টটি কেবল একটি সাধারণ পোর্টফোলিও ডেমো নয়। এটি একটি প্রুফ অফ কনসেপ্ট যে বিগ টেক ক্লাউড ইনফ্রাস্ট্রাকচারের উপর নির্ভর না করে অত্যন্ত দায়িত্বশীল, সম্পূর্ণ ব্যক্তিগত এবং সাশ্রয়ী এআই-সহায়ক নিয়োগ প্রক্রিয়া আজই সম্ভব। লোকাল ওপেন সোর্স মডেলগুলি স্ট্রাকচার্ড এক্সট্রাকশন এবং সিমেন্টিক রিজনিংয়ের জন্য যথেষ্ট শক্তিশালী। পোস্টগ্রেস ডাটাবেজ ভেক্টর সার্চের জন্য উপযুক্ত। প্রার্থীদের সংবেদনশীল ব্যক্তিগত ডেটার একটি বাইটও বাইরের কোনো সার্ভারে পাঠানোর প্রয়োজন নেই।

সম্পূর্ণ সোর্স কোড GitHub-এ ওপেন রয়েছে। রিক্রুটিং টুলস বা লোকাল-ফার্স্ট এআই সিস্টেম নিয়ে কাজ করা যেকোনো মানুষের মতামত শুনতে আমি অত্যন্ত আগ্রহী।