Skip to content

Instantly share code, notes, and snippets.

@ehzawad
Created October 10, 2025 20:56
Show Gist options
  • Select an option

  • Save ehzawad/6e7afccd5cddc0335217e028b1a50a51 to your computer and use it in GitHub Desktop.

Select an option

Save ehzawad/6e7afccd5cddc0335217e028b1a50a51 to your computer and use it in GitHub Desktop.
Specifications

Bangladesh Election Commission NID Chatbot - Complete Specification

System Overview

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:

  1. Form Mode (9 specialized tags) - Multi-turn conversations requiring country information
  2. FAQ Mode (201 other tags) - Simple question-answer responses

Architecture

Total Tags: 210

  • 9 Form Tags → Multi-turn state tracking, country collection, interruption handling
  • 201 FAQ Tags → Direct question→answer mapping from CSV

Data Sources

  1. ec_train.csv - Training questions mapped to tags (3,048 questions)
  2. tag_answer.csv - Tag responses (210 tags with answers)

Part 1: The 9 Form Tags (Foreign Resident Registration)

Form Tag List

These tags trigger multi-turn conversations:

  1. foreign_resident_action_after_biometrics_new
  2. foreign_resident_card_picture_done__inquery_done_no_msg_new
  3. foreign_resident_card_picture_done_not_inquery_from_upzilla_new
  4. foreign_resident_card_registration_process
  5. foreign_resident_card_registration_query_country_limitation
  6. foreign_resident_card_registration_required_documents
  7. foreign_resident_multiple_registration_new
  8. foreign_resident_passport_expaired_card_registration_process
  9. nrb_application_status

Supported Countries

Only these 9 countries have active foreign resident registration:

Bengali Name English Consulate Location
সংযুক্ত আরব আমিরাত UAE আবুধাবি, দুবাই
মালয়েশিয়া Malaysia কুয়ালালামপুর
কুয়েত Kuwait কুয়েত সিটি
কাতার Qatar দোহা
যুক্তরাজ্য / ইংল্যান্ড UK লন্ডন
কানাডা Canada অটোয়া
সৌদি আরব Saudi Arabia রিয়াদ, জেদ্দা
অস্ট্রেলিয়া Australia ক্যানবেরা
ইতালি Italy রোম

Form Flow - Detailed Behavior

Step 1: Form Initiation

User asks one of the 9 form tags:

User: বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধনের জন্য করণীয় কি

Bot responds with:

  1. Base answer from tag_answer.csv
  2. APPENDS country question (NOT generic "আপনার কি আর কোন প্রশ্ন আছে?")
Bot: যে সকল দেশে প্রবাসী বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধন কার্যক্রম চলমান রয়েছে, সেসকল দেশের ক্ষেত্রে ওয়েব পোর্টাল services.nidw.gov.bd/ ভিজিট করে রেজিস্টেশন পূর্বক নিবন্ধন ফর্ম পূরন করুন। অতঃপর উক্ত ফর্মের প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি নিয়ে এপয়েনমেন্টের তারিখ অনুযায়ী বাংলাদেশ দূতাবাস/এম্বাসী অফিসে এসে বায়োমেট্রিক প্রদান করুন। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

System State: Form ACTIVE


Step 2A: Happy Path - User Provides Approved Country

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)


Step 2B: User Provides Unsupported Country

User provides country not in approved list:

User: জাপান
OR
User: আমি জাপান থেকে আবেদন করতে চাই

Bot responds:

Bot: আপনি যে দেশে বসবাস করছেন, সেখানে কনস্যুলেট অফিস নেই।

System State: Form COMPLETED ✓
No Extension: Does NOT append "আপনার কি আর কোন প্রশ্ন আছে?"


Step 2C: User Asks Different Question (Interruption)

Case 2C-1: Different Category (Not Form Tag)

User asks completely different question:

User: কার্ড হারিয়ে গেলে কি করবো?

Bot responds:

  1. Answers the new question
  2. APPENDS resume confirmation (NOT generic extension)
Bot: সংশ্লিষ্ট উপজেলা/থানা নির্বাচন অফিসে গিয়ে এনআইডি নম্বর সংগ্রহ করে অনলাইনে রি-ইস্যু আবেদন করতে হবে। আপনি কি বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধ... সম্পর্কে জানতে চাচ্ছেন নাহ?

System State: Form INTERRUPTED

No Double Extension: Does NOT append "আপনার কি আর কোন প্রশ্ন আছে?" after interruption question


Case 2C-2: Same Group (Another Form Tag)

User asks another of the 9 form tags:

User: দূতাবাসে ভোটার নিবন্ধন করতে হলে কি কি কাগজপত্র লাগে

Bot responds:

  1. Answers the new form tag question
  2. APPENDS resume confirmation for original form
Bot: দূতাবাসে ভোটার নিবন্ধন করতে হলে পূরণকৃত ফরম (২ক) এর প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি প্রয়োজন লাগবে। আপনি কি বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধ... সম্পর্কে জানতে চাচ্ছেন নাহ?

System State: Form INTERRUPTED


Step 3A: Resume Confirmation - User Says YES

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


Step 3B: Resume Confirmation - User Says NO

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


Part 2: The Other 201 FAQ Tags (Simple Mode)

Behavior

Pure question → answer mapping:

  1. User asks question
  2. RAG finds matching tag
  3. Bot returns answer from tag_answer.csv
  4. Appends "আপনার কি আর কোন প্রশ্ন আছে?" (except special tags)
  5. No state tracking, no multi-turn, no country questions

Examples

Example 1: Card Correction

User: এনআইডি কার্ডে ভুল তথ্য থাকলে কিভাবে সংশোধন করব?
Tag: card_information_correction

Bot: চাহিত তথ্যের স্বপক্ষে দলিলাদি দাখিল পূর্বক অনলাইনে সংশোধনের আবেদনের জন্য ভিজিট করুন services.nidw.gov.bd/ আপনার কি আর কোন প্রশ্ন আছে?

Example 2: Fee Query

User: কার্ড সংশোধনের জন্য কত টাকা লাগে?
Tag: card_correction_fees

Bot: (১) কার্ডে প্রদর্শিত তথ্য ১ম বার সংশোধনের জন্য ২৩০ (ভ্যাটসহ) টাকা, ২য় বার সংশোধনের জন্য ৩৪৫ (ভ্যাটসহ), পরবর্তী প্রতিবারের সংশোধনের জন্য ৪৬০ (ভ্যাটসহ) টাকা... আপনার কি আর কোন প্রশ্ন আছে?

Example 3: Age Requirement

User: ভোটার হওয়ার জন্য বয়স কত লাগে?
Tag: new_nid_card_age

Bot: ভোটার হওয়ার জন্য বয়স ১৮ বছর বা তদুর্দ্ধ হতে হয়। আপনার কি আর কোন প্রশ্ন আছে?

Example 4: Lost Card

User: কার্ড হারিয়ে গেলে কি করবো?
Tag: card_lost_no_info_how_to_get_new

Bot: সংশ্লিষ্ট উপজেলা/থানা নির্বাচন অফিসে গিয়ে এনআইডি নম্বর সংগ্রহ করে অনলাইনে রি-ইস্যু আবেদন করতে হবে। আপনার কি আর কোন প্রশ্ন আছে?

Example 5: Address Change

User: ভোটার এলাকা পরিবর্তন করতে চাই
Tag: voter_area_change

Bot: আপনি যে এলাকায় যেতে চান সেই সংশ্লিষ্ট উপজেলা/ থানা নির্বাচন অফিসে স্বশরীরে উপস্থিত হয়ে স্থানান্তর ফর্ম-১৩ পূরণ করে প্রয়োজনীয় দলিলাদিসহ আবেদন করুন। আপনার কি আর কোন প্রশ্ন আছে?

Example 6: Multiple FAQs in Sequence

User: নতুন ভোটার হতে ফি কত?
Bot: নতুন ভোটার অথবা এনআইডি নিবন্ধনের জন্য কোন প্রকার ফি প্রদান করতে হয় না। আপনার কি আর কোন প্রশ্ন আছে?

User: ভোটার হওয়ার শর্ত কি?
Bot: ভোটার হওয়ার পূর্ব শর্তগুলো হলো... আপনার কি আর কোন প্রশ্ন আছে?

User: অনলাইন পোর্টালের ঠিকানা কি?
Bot: জাতীয় পরিচয়পত্র সংক্রান্ত সকল সেবার জন্য ওয়েব পোর্টালের ঠিকানা হলো services.nidw.gov.bd/ আপনার কি আর কোন প্রশ্ন আছে?

Each question gets answered independently. No state tracking.


Special Tags (No Generic Extension)

These 4 tags do NOT append "আপনার কি আর কোন প্রশ্ন আছে?":

1. Greetings

User: আসসালামু আলাইকুম
Tag: greetings

Bot: আমি আপনাকে কিভাবে সাহায্য করতে পারি?
[NO extension]

2. Goodbye

User: ধন্যবাদ
Tag: goodbye

Bot: বিদায়! আপনার দিনটা সুন্দর কাটুক।
[NO extension]

3. Repeat Again

User: আবার বলেন
Tag: repeat_again

Bot: জি ধন্যবাদ। আমি উত্তরটি আবার বলছি। [previous answer]
[NO extension - uses previous tag's extension]

4. Agent Calling

User: এজেন্টের সাথে কথা বলতে চাই
Tag: agent_calling

Bot: আপনার কলটি একজন লাইভ এজেন্ট এর কাছে ট্রান্সফার করা হচ্ছে।
[NO extension]

Complete Conversation Examples

Example 1: Happy Path (Form Completion)

User: বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধনের জন্য করণীয় কি

Bot: যে সকল দেশে প্রবাসী বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধন কার্যক্রম চলমান রয়েছে, সেসকল দেশের ক্ষেত্রে ওয়েব পোর্টাল services.nidw.gov.bd/ ভিজিট করে রেজিস্টেশন পূর্বক নিবন্ধন ফর্ম পূরন করুন। অতঃপর উক্ত ফর্মের প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি নিয়ে এপয়েনমেন্টের তারিখ অনুযায়ী বাংলাদেশ দূতাবাস/এম্বাসী অফিসে এসে বায়োমেট্রিক প্রদান করুন। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

User: কাতার

Bot: আপনি কাতার দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে কাতারে বাংলাদেশ দূতাবাস, দোহায় অবস্থিত।

[Form completes - conversation continues normally]

Example 2: Interruption → Resume

User: প্রবাসে বসবাসকারীদের এনআইডি বা ভোটার নিবন্ধনের জন্য কি করতে হবে

Bot: [Full answer] আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

User: বৈবাহিক সূত্রে কোন বিদেশি নাগরিকের এনআইডি পাওয়ার সুযোগ আছে কি?

Bot: এক্ষেত্রে সংশ্লিষ্ট বিদেশি নাগরিকের নিজ দেশের নাগরিকত্ব পরিত্যাগের শর্তে স্বরাষ্ট্র মন্ত্রণালয় হতে নাগরিকত্ব সনদ প্রাপ্তি সাপেক্ষে এনআইডি'র জন্য আবেদন করতে পারবেন। আপনি কি প্রবাসে বসবাসকারীদের এনআইডি বা ভোটার নিবন্ধনের... সম্পর্কে জানতে চাচ্ছেন নাহ?

User: ও হ্যাঁ বলেন

Bot: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

User: সৌদি আরব

Bot: আপনি সৌদি আরব দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে সৌদি আরবে বাংলাদেশ দূতাবাস রিয়াদে অবস্থিত। এছাড়াও কনস্যুলেট জেনারেল অফিস জেদ্দায় রয়েছে।

[Form completes]

Example 3: Interruption → Cancel

User: কোন কোন দেশে প্রবাসী ভোটার নিবন্ধন করা হয়

Bot: বর্তমানে সংযুক্ত আরব আমিরাত, সৌদি আরব, কাতার, মালয়েশিয়া, কুয়েত, যুক্তরাজ্য, ইতালি, অস্ট্রেলিয়া ও কানাডায় প্রবাসী বাংলাদেশীদের ভোটার নিবন্ধন ও এনআইডি বিতরণ কার্যক্রম চালু রয়েছে। আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

User: কার্ড হারিয়ে গেলে কি করবো?

Bot: সংশ্লিষ্ট উপজেলা/থানা নির্বাচন অফিসে গিয়ে এনআইডি নম্বর সংগ্রহ করে অনলাইনে রি-ইস্যু আবেদন করতে হবে। আপনি কি কোন কোন দেশে প্রবাসী ভোটার নিবন্ধন করা হয়... সম্পর্কে জানতে চাচ্ছেন নাহ?

User: নাহ চাচ্ছি নাহ

Bot: [Continues as normal FAQ - form cancelled]

Example 4: Same-Group Interruption

User: আমি বাংলাদেশে ভোটার হয়েছিলাম, এখন কি প্রবাসেও ভোটার হতে হবে

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

User: দূতাবাসে ভোটার নিবন্ধন করতে হলে কি কি কাগজপত্র লাগে

Bot: দূতাবাসে ভোটার নিবন্ধন করতে হলে পূরণকৃত ফরম (২ক) এর প্রিন্ট কপি, অনলাইন জন্ম সনদ, পাসপোর্ট এবং পাসপোর্ট সাইজের ছবি প্রয়োজন লাগবে। আপনি কি আমি বাংলাদেশে ভোটার হয়েছিলাম, এখন কি প্রবাসেও... সম্পর্কে জানতে চাচ্ছেন নাহ?

User: জি হ্যাঁ

Bot: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

User: যুক্তরাজ্য

Bot: আপনি যুক্তরাজ্য দেশের কনস্যুলেট জেনারেল অফিসের নাম এবং ঠিকানা হচ্ছে যুক্তরাজ্যে বাংলাদেশ হাই কমিশন, লন্ডনে অবস্থিত।

[Form completes]

Example 5: Multiple Forms in Same Conversation

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]

Example 6: Unsupported Country

User: বিদেশে বসবাসরত বাংলাদেশীদের এনআইডি বা ভোটার নিবন্ধনের জন্য করণীয় কি

Bot: [Full answer] আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?

User: আমি জাপান থেকে নিবন্ধন করতে চাই

Bot: আপনি যে দেশে বসবাস করছেন, সেখানে কনস্যুলেট অফিস নেই।

[Form completes - no more questions]

Example 7: Pure FAQ Conversation

User: আসসালামু আলাইকুম
Bot: আমি আপনাকে কিভাবে সাহায্য করতে পারি?

User: নতুন ভোটার হতে ফি কত?
Bot: নতুন ভোটার অথবা এনআইডি নিবন্ধনের জন্য কোন প্রকার ফি প্রদান করতে হয় না। আপনার কি আর কোন প্রশ্ন আছে?

User: ভোটার হওয়ার জন্য বয়স কত লাগে?
Bot: ভোটার হওয়ার জন্য বয়স ১৮ বছর বা তদুর্দ্ধ হতে হয়। আপনার কি আর কোন প্রশ্ন আছে?

User: কার্ড সংশোধনের জন্য কত টাকা লাগে?
Bot: (১) কার্ডে প্রদর্শিত তথ্য ১ম বার সংশোধনের জন্য ২৩০ (ভ্যাটসহ) টাকা... আপনার কি আর কোন প্রশ্ন আছে?

User: ধন্যবাদ
Bot: বিদায়! আপনার দিনটা সুন্দর কাটুক।

Response Extension Rules

When to Append "আপনার কি আর কোন প্রশ্ন আছে?"

YES - Append for:

  • All 201 FAQ tags
  • Low confidence responses (threshold < 0.6)

NO - Do NOT append for:

  1. The 9 form tags (append "আপনি কোন দেশ থেকে..." instead)
  2. Form completion tags (foreign_resident_consulate_info, foreign_resident_no_consulate)
  3. Interruption questions (append "আপনি কি {previous_query}... নাহ?" instead)
  4. Special tags: greetings, goodbye, repeat_again, agent_calling

State Management

Form States

  1. none - No active form
  2. active - Form waiting for country input
  3. interrupted - Form paused, waiting for resume confirmation

State Transitions

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)

State Reset Rules

  1. After form completion - State resets to "none"
  2. After form cancellation - State resets to "none"
  3. New form can start - Only when state is "none"
  4. Completed forms are NOT tracked - System doesn't remember old completed forms

Affirmative/Negative Detection

Affirmative Patterns (Bengali only)

Compound (Priority):

  • জি হ্যাঁ
  • ও হ্যাঁ
  • জি বলেন
  • হ্যাঁ বলেন
  • ও হ্যাঁ বলেন

Single Word (≤4 words):

  • হ্যাঁ
  • হা
  • জি
  • ঠিক
  • আছে
  • বলেন
  • চাই
  • চাচ্ছি

Negative Patterns (Bengali only)

Compound (Priority):

  • না চাই না
  • নাহ চাচ্ছি নাহ
  • চাই না
  • চাচ্ছি না
  • লাগবে না

Single Word (≤4 words):

  • না
  • নাহ
  • নেই
  • নাই

Detection Order

IMPORTANT: Always check negative BEFORE affirmative, because negative phrases often contain affirmative words (e.g., "না চাই না" contains "চাই")


Country Detection

Detection Logic

  1. Direct match - Search for Bengali country names in user input
  2. Context keywords - If not found, check for location keywords:
    • দেশ, থেকে, আছি, থাকি, থাকছি, বাস, রয়েছি
  3. Word count heuristic - Inputs ≤2 words likely country names

Examples

✓ "কাতার" → Detected
✓ "আমি কাতার থাকি" → Detected (contains "কাতার")
✓ "আমি যুক্তরাজ্য থেকে" → Detected (contains "যুক্তরাজ্য")
✓ "জাপান" → Detected as unsupported (1 word)
✓ "আমি জাপান থেকে" → Detected as unsupported (contains "থেকে")
✗ "কার্ড হারিয়ে গেলে কি করবো" → Not detected (no country keywords)

Edge Cases

Edge Case 1: Ambiguous Response to Resume Confirmation

User: আপনি কি... সম্পর্কে জানতে চাচ্ছেন নাহ?
User: হতে পারে

Bot: [Treats as cancel - falls back to normal FAQ]

Edge Case 2: Empty/Very Short Input During Form

User: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: না

Bot: [Treats as cancel - negative detection]

Edge Case 3: Long Question During Form

User: আপনি কোন দেশ থেকে ভোটার নিবন্ধন করতে চাচ্ছেন?
User: আমার আসলে জানতে চাই যে আমি এখন কোথায় আবেদন করবো

Bot: [No country detected, no location keywords → Treats as interruption]

Summary

The Two Modes

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

System Philosophy

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.


Technical Implementation Notes

File Structure

  • e5/e5_main.py - Main API endpoint and orchestration
  • e5/multi_turn_state.py - Form state management and country detection
  • flag.py - Special tag detection (repeat, goodbye, agent calling)
  • full_dataset/ec_train.csv - Training questions → tags
  • full_dataset/tag_answer.csv - Tags → answers

Key Functions

  • process_multi_turn_query() - Entry point for form handling
  • get_form_state() - Determines current form state
  • handle_foreign_resident_form() - Processes form inputs
  • should_append_followup() - Decides if country question needed
  • should_append_interruption_confirm() - Detects interruptions
  • detect_country() - Extracts country from user input

Language Support

  • 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 ✓

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment