The Bangladesh Election Commission NID chatbot is a conversational AI system that helps citizens with National Identity Card (NID) and voter registration queries. The system operates in two distinct modes:
- Form Mode (9 specialized tags) - Multi-turn conversations requiring country information
- FAQ Mode (201 other tags) - Simple question-answer responses
- 9 Form Tags → Multi-turn state tracking, country collection, interruption handling
- 201 FAQ Tags → Direct question→answer mapping from CSV
ec_train.csv- Training questions mapped to tags (3,048 questions)tag_answer.csv- Tag responses (210 tags with answers)
These tags trigger multi-turn conversations:
foreign_resident_action_after_biometrics_newforeign_resident_card_picture_done__inquery_done_no_msg_newforeign_resident_card_picture_done_not_inquery_from_upzilla_newforeign_resident_card_registration_processforeign_resident_card_registration_query_country_limitationforeign_resident_card_registration_required_documentsforeign_resident_multiple_registration_newforeign_resident_passport_expaired_card_registration_processnrb_application_status
Only these 9 countries have active foreign resident registration:
| Bengali Name | English | Consulate Location |
|---|---|---|
| সংযুক্ত আরব আমিরাত | UAE | আবুধাবি, দুবাই |
| মালয়েশিয়া | Malaysia | কুয়ালালামপুর |
| কুয়েত | Kuwait | কুয়েত সিটি |
| কাতার | Qatar | দোহা |
| যুক্তরাজ্য / ইংল্যান্ড | UK | লন্ডন |
| কানাডা | Canada | অটোয়া |
| সৌদি আরব | Saudi Arabia | রিয়াদ, জেদ্দা |
| অস্ট্রেলিয়া | Australia | ক্যানবেরা |
| ইতালি | Italy | রোম |
User asks one of the 9 form tags:
User: বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধনের জন্য করণীয় কি
Bot responds with:
- Base answer from
tag_answer.csv - APPENDS country question (NOT generic "আপনার কি আর কোন প্রশ্ন আছে?")
Bot: যে সকল দেশে প্রবাসী বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধন কার্যক্রম চলমান রয়েছে, সেসকল দেশের ক্ষেত্রে ওয়েব পোর্টাল services.nidw.gov.bd/ ভিজিট করে রেজিস্টেশন পূর্বক নিবন্ধন ফর্ম পূরন করুন। অতঃপর উক্ত ফর্মের প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি নিয়ে এপয়েনমেন্টের তারিখ অনুযায়ী বাংলাদেশ দূতাবাস/এম্বাসী অফিসে এসে বায়োমেট্রিক প্রদান করুন। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
System State: Form ACTIVE
User provides country (short or long):
User: মালয়েশিয়া
OR
User: আমি মালয়েশিয়ায় থাকি
Bot provides consulate info:
Bot: আপনি মালয়েশিয়া দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে মালয়েশিয়ায় বাংলাদেশ হাই কমিশন, কুয়ালালামপুরে অবস্থিত।
System State: Form COMPLETED ✓
No Extension: Does NOT append "আপনার কি আর কোন প্রশ্ন আছে?" (form completion)
User provides country not in approved list:
User: জাপান
OR
User: আমি জাপান থেকে আবেদন করতে চাই
Bot responds:
Bot: আপনি যে দেশে বসবাস করছেন, সেখানে কনস্যুলেট অফিস নেই।
System State: Form COMPLETED ✓
No Extension: Does NOT append "আপনার কি আর কোন প্রশ্ন আছে?"
User asks completely different question:
User: কার্ড হারিয়ে গেলে কি করবো?
Bot responds:
- Answers the new question
- APPENDS resume confirmation (NOT generic extension)
Bot: সংশ্লিষ্ট উপজেলা/থানা নির্বাচন অফিসে গিয়ে এনআইডি নম্বর সংগ্রহ করে অনলাইনে রি-ইস্যু আবেদন করতে হবে। আপনি কি বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধ... সম্পর্কে জানতে চাচ্ছেন নাহ?
System State: Form INTERRUPTED
No Double Extension: Does NOT append "আপনার কি আর কোন প্রশ্ন আছে?" after interruption question
User asks another of the 9 form tags:
User: দূতাবাসে ভোটার নিবন্ধন করতে হলে কি কি কাগজপত্র লাগে
Bot responds:
- Answers the new form tag question
- APPENDS resume confirmation for original form
Bot: দূতাবাসে ভোটার নিবন্ধন করতে হলে পূরণকৃত ফরম (২ক) এর প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি প্রয়োজন লাগবে। আপনি কি বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধ... সম্পর্কে জানতে চাচ্ছেন নাহ?
System State: Form INTERRUPTED
User confirms they want to continue:
User: ও হ্যাঁ বলেন
OR
User: জি হ্যাঁ
OR
User: হ্যাঁ
Bot re-asks ONLY the country question (NOT full answer):
Bot: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
System State: Form RESUMED → ACTIVE
Rationale: User already heard the full answer, just needs to provide country
User declines to continue:
User: নাহ চাচ্ছি নাহ
OR
User: না
OR
User: লাগবে না
Bot cancels form, continues as normal FAQ:
[Form cancelled - returns to normal FAQ mode]
System State: Form CANCELLED → None
Pure question → answer mapping:
- User asks question
- RAG finds matching tag
- Bot returns answer from
tag_answer.csv - Appends "আপনার কি আর কোন প্রশ্ন আছে?" (except special tags)
- No state tracking, no multi-turn, no country questions
User: এনআইডি কার্ডে ভুল তথ্য থাকলে কিভাবে সংশোধন করব?
Tag: card_information_correction
Bot: চাহিত তথ্যের স্বপক্ষে দলিলাদি দাখিল পূর্বক অনলাইনে সংশোধনের আবেদনের জন্য ভিজিট করুন services.nidw.gov.bd/ আপনার কি আর কোন প্রশ্ন আছে?
User: কার্ড সংশোধনের জন্য কত টাকা লাগে?
Tag: card_correction_fees
Bot: (১) কার্ডে প্রদর্শিত তথ্য ১ম বার সংশোধনের জন্য ২৩০ (ভ্যাটসহ) টাকা, ২য় বার সংশোধনের জন্য ৩৪৫ (ভ্যাটসহ), পরবর্তী প্রতিবারের সংশোধনের জন্য ৪৬০ (ভ্যাটসহ) টাকা... আপনার কি আর কোন প্রশ্ন আছে?
User: ভোটার হওয়ার জন্য বয়স কত লাগে?
Tag: new_nid_card_age
Bot: ভোটার হওয়ার জন্য বয়স ১৮ বছর বা তদুর্দ্ধ হতে হয়। আপনার কি আর কোন প্রশ্ন আছে?
User: কার্ড হারিয়ে গেলে কি করবো?
Tag: card_lost_no_info_how_to_get_new
Bot: সংশ্লিষ্ট উপজেলা/থানা নির্বাচন অফিসে গিয়ে এনআইডি নম্বর সংগ্রহ করে অনলাইনে রি-ইস্যু আবেদন করতে হবে। আপনার কি আর কোন প্রশ্ন আছে?
User: ভোটার এলাকা পরিবর্তন করতে চাই
Tag: voter_area_change
Bot: আপনি যে এলাকায় যেতে চান সেই সংশ্লিষ্ট উপজেলা/ থানা নির্বাচন অফিসে স্বশরীরে উপস্থিত হয়ে স্থানান্তর ফর্ম-১৩ পূরণ করে প্রয়োজনীয় দলিলাদিসহ আবেদন করুন। আপনার কি আর কোন প্রশ্ন আছে?
User: নতুন ভোটার হতে ফি কত?
Bot: নতুন ভোটার অথবা এনআইডি নিবন্ধনের জন্য কোন প্রকার ফি প্রদান করতে হয় না। আপনার কি আর কোন প্রশ্ন আছে?
User: ভোটার হওয়ার শর্ত কি?
Bot: ভোটার হওয়ার পূর্ব শর্তগুলো হলো... আপনার কি আর কোন প্রশ্ন আছে?
User: অনলাইন পোর্টালের ঠিকানা কি?
Bot: জাতীয় পরিচয়পত্র সংক্রান্ত সকল সেবার জন্য ওয়েব পোর্টালের ঠিকানা হলো services.nidw.gov.bd/ আপনার কি আর কোন প্রশ্ন আছে?
Each question gets answered independently. No state tracking.
These 4 tags do NOT append "আপনার কি আর কোন প্রশ্ন আছে?":
User: আসসালামু আলাইকুম
Tag: greetings
Bot: আমি আপনাকে কিভাবে সাহায্য করতে পারি?
[NO extension]
User: ধন্যবাদ
Tag: goodbye
Bot: বিদায়! আপনার দিনটা সুন্দর কাটুক।
[NO extension]
User: আবার বলেন
Tag: repeat_again
Bot: জি ধন্যবাদ। আমি উত্তরটি আবার বলছি। [previous answer]
[NO extension - uses previous tag's extension]
User: এজেন্টের সাথে কথা বলতে চাই
Tag: agent_calling
Bot: আপনার কলটি একজন লাইভ এজেন্ট এর কাছে ট্রান্সফার করা হচ্ছে।
[NO extension]
User: বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধনের জন্য করণীয় কি
Bot: যে সকল দেশে প্রবাসী বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধন কার্যক্রম চলমান রয়েছে, সেসকল দেশের ক্ষেত্রে ওয়েব পোর্টাল services.nidw.gov.bd/ ভিজিট করে রেজিস্টেশন পূর্বক নিবন্ধন ফর্ম পূরন করুন। অতঃপর উক্ত ফর্মের প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি নিয়ে এপয়েনমেন্টের তারিখ অনুযায়ী বাংলাদেশ দূতাবাস/এম্বাসী অফিসে এসে বায়োমেট্রিক প্রদান করুন। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: কাতার
Bot: আপনি কাতার দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে কাতারে বাংলাদেশ দূতাবাস, দোহায় অবস্থিত।
[Form completes - conversation continues normally]
User: প্রবাসে বসবাসকারীদের এনআইডি বা ভোটার নিবন্ধনের জন্য কি করতে হবে
Bot: [Full answer] আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: বৈবাহিক সূত্রে কোন বিদেশি নাগরিকের এনআইডি পাওয়ার সুযোগ আছে কি?
Bot: এক্ষেত্রে সংশ্লিষ্ট বিদেশি নাগরিকের নিজ দেশের নাগরিকত্ব পরিত্যাগের শর্তে স্বরাষ্ট্র মন্ত্রণালয় হতে নাগরিকত্ব সনদ প্রাপ্তি সাপেক্ষে এনআইডি'র জন্য আবেদন করতে পারবেন। আপনি কি প্রবাসে বসবাসকারীদের এনআইডি বা ভোটার নিবন্ধনের... সম্পর্কে জানতে চাচ্ছেন নাহ?
User: ও হ্যাঁ বলেন
Bot: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: সৌদি আরব
Bot: আপনি সৌদি আরব দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে সৌদি আরবে বাংলাদেশ দূতাবাস রিয়াদে অবস্থিত। এছাড়াও কনস্যুলেট জেনারেল অফিস জেদ্দায় রয়েছে।
[Form completes]
User: কোন কোন দেশে প্রবাসী ভোটার নিবন্ধন করা হয়
Bot: বর্তমানে সংযুক্ত আরব আমিরাত, সৌদি আরব, কাতার, মালয়েশিয়া, কুয়েত, যুক্তরাজ্য, ইতালি, অস্ট্রেলিয়া ও কানাডায় প্রবাসী বাংলাদেশীদের ভোটার নিবন্ধন ও এনআইডি বিতরণ কার্যক্রম চালু রয়েছে। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: কার্ড হারিয়ে গেলে কি করবো?
Bot: সংশ্লিষ্ট উপজেলা/থানা নির্বাচন অফিসে গিয়ে এনআইডি নম্বর সংগ্রহ করে অনলাইনে রি-ইস্যু আবেদন করতে হবে। আপনি কি কোন কোন দেশে প্রবাসী ভোটার নিবন্ধন করা হয়... সম্পর্কে জানতে চাচ্ছেন নাহ?
User: নাহ চাচ্ছি নাহ
Bot: [Continues as normal FAQ - form cancelled]
User: আমি বাংলাদেশে ভোটার হয়েছিলাম, এখন কি প্রবাসেও ভোটার হতে হবে
Bot: আপনি বাংলাদেশে ছবিযুক্ত ভোটার তালিকায় অন্তর্ভূক্ত হয়ে থাকলে প্রবাসে নিবন্ধনের প্রয়োজন নেই। মনে রাখবেন, একাধিকবার নিবন্ধন করা আইনত দণ্ডনীয় অপরাধ। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: দূতাবাসে ভোটার নিবন্ধন করতে হলে কি কি কাগজপত্র লাগে
Bot: দূতাবাসে ভোটার নিবন্ধন করতে হলে পূরণকৃত ফরম (২ক) এর প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি প্রয়োজন লাগবে। আপনি কি আমি বাংলাদেশে ভোটার হয়েছিলাম, এখন কি প্রবাসেও... সম্পর্কে জানতে চাচ্ছেন নাহ?
User: জি হ্যাঁ
Bot: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: যুক্তরাজ্য
Bot: আপনি যুক্তরাজ্য দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে যুক্তরাজ্যে বাংলাদেশ হাই কমিশন, লন্ডনে অবস্থিত।
[Form completes]
User: আমার পাসপোর্টের মেয়াদ শেষ হয়ে গেছে আমি কি প্রবাস থেকে এনআইডি বা ভোটার নিবন্ধনের আবেদন করতে পারবো
Bot: দুঃখিত, পাসপোর্টের মেয়াদ উত্তীর্ণ হলে প্রবাসে এনআইডি বা ভোটার নিবন্ধন করা যায় না। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: কানাডা
Bot: আপনি কানাডা দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে কানাডায় বাংলাদেশ হাই কমিশন, অটোয়াতে অবস্থিত।
[Form 1 completes - state resets]
User: এম্বাসীদূতাবাসে বায়োমেট্রিক প্রদান করেছি, এখন কি করণীয়
Bot: আপনার এই প্রশ্নের উত্তরটি জানতে ৯ বাটন চেপে কল সেন্টার প্রতিনিধির সঙ্গে সরাসরি কথা বলুন। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
[Form 2 starts fresh - doesn't remember Form 1]
User: মালয়েশিয়া
Bot: আপনি মালয়েশিয়া দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে মালয়েশিয়ায় বাংলাদেশ হাই কমিশন, কুয়ালালামপুরে অবস্থিত।
[Form 2 completes]
User: বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধনের জন্য করণীয় কি
Bot: [Full answer] আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: আমি জাপান থেকে নিবন্ধন করতে চাই
Bot: আপনি যে দেশে বসবাস করছেন, সেখানে কনস্যুলেট অফিস নেই।
[Form completes - no more questions]
User: আসসালামু আলাইকুম
Bot: আমি আপনাকে কিভাবে সাহায্য করতে পারি?
User: নতুন ভোটার হতে ফি কত?
Bot: নতুন ভোটার অথবা এনআইডি নিবন্ধনের জন্য কোন প্রকার ফি প্রদান করতে হয় না। আপনার কি আর কোন প্রশ্ন আছে?
User: ভোটার হওয়ার জন্য বয়স কত লাগে?
Bot: ভোটার হওয়ার জন্য বয়স ১৮ বছর বা তদুর্দ্ধ হতে হয়। আপনার কি আর কোন প্রশ্ন আছে?
User: কার্ড সংশোধনের জন্য কত টাকা লাগে?
Bot: (১) কার্ডে প্রদর্শিত তথ্য ১ম বার সংশোধনের জন্য ২৩০ (ভ্যাটসহ) টাকা... আপনার কি আর কোন প্রশ্ন আছে?
User: ধন্যবাদ
Bot: বিদায়! আপনার দিনটা সুন্দর কাটুক।
YES - Append for:
- All 201 FAQ tags
- Low confidence responses (threshold < 0.6)
NO - Do NOT append for:
- The 9 form tags (append "আপনি কোন দেশ থেকে..." instead)
- Form completion tags (
foreign_resident_consulate_info,foreign_resident_no_consulate) - Interruption questions (append "আপনি কি {previous_query}... নাহ?" instead)
- Special tags:
greetings,goodbye,repeat_again,agent_calling
- none - No active form
- active - Form waiting for country input
- interrupted - Form paused, waiting for resume confirmation
none → (form tag triggered) → active
active → (country provided) → none (completed)
active → (other question) → interrupted
interrupted → (user says yes) → active
interrupted → (user says no) → none (cancelled)
- After form completion - State resets to "none"
- After form cancellation - State resets to "none"
- New form can start - Only when state is "none"
- Completed forms are NOT tracked - System doesn't remember old completed forms
Compound (Priority):
- জি হ্যাঁ
- ও হ্যাঁ
- জি বলেন
- হ্যাঁ বলেন
- ও হ্যাঁ বলেন
Single Word (≤4 words):
- হ্যাঁ
- হা
- জি
- ঠিক
- আছে
- বলেন
- চাই
- চাচ্ছি
Compound (Priority):
- না চাই না
- নাহ চাচ্ছি নাহ
- চাই না
- চাচ্ছি না
- লাগবে না
Single Word (≤4 words):
- না
- নাহ
- নেই
- নাই
IMPORTANT: Always check negative BEFORE affirmative, because negative phrases often contain affirmative words (e.g., "না চাই না" contains "চাই")
- Direct match - Search for Bengali country names in user input
- Context keywords - If not found, check for location keywords:
- দেশ, থেকে, আছি, থাকি, থাকছি, বাস, রয়েছি
- Word count heuristic - Inputs ≤2 words likely country names
✓ "কাতার" → Detected
✓ "আমি কাতার থাকি" → Detected (contains "কাতার")
✓ "আমি যুক্তরাজ্য থেকে" → Detected (contains "যুক্তরাজ্য")
✓ "জাপান" → Detected as unsupported (1 word)
✓ "আমি জাপান থেকে" → Detected as unsupported (contains "থেকে")
✗ "কার্ড হারিয়ে গেলে কি করবো" → Not detected (no country keywords)
User: আপনি কি... সম্পর্কে জানতে চাচ্ছেন নাহ?
User: হতে পারে
Bot: [Treats as cancel - falls back to normal FAQ]
User: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: না
Bot: [Treats as cancel - negative detection]
User: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: আমার আসলে জানতে চাই যে আমি এখন কোথায় আবেদন করবো
Bot: [No country detected, no location keywords → Treats as interruption]
| Aspect | Form Mode (9 tags) | FAQ Mode (201 tags) |
|---|---|---|
| State Tracking | ✅ Yes | ❌ No |
| Multi-turn | ✅ Yes | ❌ No |
| Country Question | ✅ Yes | ❌ No |
| Interruption Handling | ✅ Yes | ❌ No |
| Response Extension | "আপনি কোন দেশ থেকে..." | "আপনার কি আর কোন প্রশ্ন আছে?" |
| Complexity | High | Low |
Form Mode: Conversational, stateful, guides user to provide country
FAQ Mode: Direct, stateless, simple question-answer
The system switches seamlessly between these two modes based on the detected tag.
e5/e5_main.py- Main API endpoint and orchestratione5/multi_turn_state.py- Form state management and country detectionflag.py- Special tag detection (repeat, goodbye, agent calling)full_dataset/ec_train.csv- Training questions → tagsfull_dataset/tag_answer.csv- Tags → answers
process_multi_turn_query()- Entry point for form handlingget_form_state()- Determines current form statehandle_foreign_resident_form()- Processes form inputsshould_append_followup()- Decides if country question neededshould_append_interruption_confirm()- Detects interruptionsdetect_country()- Extracts country from user input
- Bengali only - No English keywords in detection logic
- Case insensitive - All pattern matching uses
.lower() - Unicode support - Full Bengali Unicode character support
End of Specification
Version: 2.0
Last Updated: October 10, 2025
Status: Production Ready ✓