Skip to main content
Danit is a Hebrew-speaking voice assistant for Bank Hapoalim, Israel’s largest bank. It provides information and eligibility verification for the bank’s employee/customer stock benefit programs: “מניה במתנה” (Stock Gift) and “חבילת שוק ההון לצעירים” (Capital Market Package for Young Adults).

View Agent

Open in Wonderful Platform

Overview

FieldValue
MarketIsrael - Banking
VerticalFinancial Services
CompanyPoalim (פועלים)
ModelGPT-4 Realtime
LanguageHebrew only
ChannelsVoice

Skills

SkillDescriptionTool Count
benefitsCore verification skill - verifies user identity, determines stock-benefit eligibility, and allows checking/changing selections10 tools
faq_kbKnowledge base for general questions about the stock plan programs4 tools
forward_user_awayHandles call transfers to human representatives and satisfaction surveys2 tools
tags and diacriticsGlobal skill for session management (inactive)0 tools

Key Tool

Benefits Skill

ToolPurpose
benefits_verify()Start user verification process and create session token
benefits_verify_otp()Validate user’s OTP code
benefits_get_accounts()Retrieve all user’s bank accounts
benefits_check_entitlements()Check eligibility for specific bank account
benefits_select_entitlement()Apply the user’s chosen benefit (stock or cash)
benefits_exact_match()Match last 3 digits of account number for verification
benefits_switch_account()Switch to non-primary bank account
is_capable()Verify if phone can receive SMS (handles kosher phones)
check_sum()Validate Israeli ID number format
send_message()Send SMS to user

FAQ Skill

ToolPurpose
general_faq1()Answer general questions about either stock plan program
stock_val()Return current Hapoalim stock value
send_SMS()Send links via SMS (stock plan website or beginner investors)

Forward User Away Skill

ToolPurpose
get_satisfaction()Collect user satisfaction rating (1-5 scale)
forward_user()Check line availability and transfer to human representative

Prompting Techniques

Strict Hebrew-only policy - Top-priority rule that overrides all other instructions:
- You must respond ONLY in Hebrew.
- You must NEVER produce response in any other language, under any circumstance.
- This rule has the highest priority and overrides all other instructions.
Persona with linguistic constraints - Maintains female gender in Hebrew grammar:
- Always refer to yourself in feminine Hebrew.
- Style: friendly, professional, efficient, concise; everyday Hebrew.
Program disambiguation - Requires clarification before providing information:
* Before providing any information, unless the user mentions specific program, ask the user for clarification.
- Focus: "מניה במתנה" and "חבילת שוק ההון לצעירים"
Skill-based workflow orchestration - Clear skill-to-function mapping:
- Skill name: "faq_kb."
- IMPORTANT: Never call a function named "faq_kb". It is a skill, not a tool.
- Flow:
  1. Switch to the "faq_kb" skill.
  2. Immediately call the function "general_faq1" with the user's query.
Strict data grounding - Prevents hallucination:
- Never provide any information that is not taken directly from the knowledge base available inside the 'faq_kb' skill.
Safe Conversation End Protocol - Structured exit flow:
1. Switch to skill tags and diacritics
2. Ask satisfaction question (1-5 scale)
3. Wait for user's rating
4. Call get_satisfaction() with the rating
5. Thank user warmly
6. CRITICAL - Immediately call End()

Conversation Flows

Personal Eligibility Check Flow

  1. User asks “אני זכאי?” (Am I eligible?)
  2. Agent explains selection period has ended
  3. Offers to check current status/automatic benefit
  4. If user agrees → Switch to benefits skill
  5. Run verification chain: benefits_verify() → OTP → get_accounts() → check_entitlements()

General Information Flow

  1. User asks about the programs
  2. Agent switches to faq_kb skill immediately
  3. Calls general_faq1() with query
  4. Optionally offers to check personal eligibility
  5. Only switches to benefits if user confirms

Transfer to Human Flow

  1. User requests transfer OR repeated out-of-scope questions (3x)
  2. Agent offers transfer
  3. If agreed → forward_user_away skill
  4. Check line availability
  5. Execute transfer or inform if closed

Scope Boundaries

In Scope:
  • Hapoalim Stock Plan (“מניה במתנה וחבילת שוק ההון לצעירים”)
  • Signing securities connected to the plan
  • Poalim stock price (always reported for 2 stocks)
Out of Scope:
  • Mortgages, digital banking, Bit app, loans, appointments, taxes
  • Comparison with other banks
  • General topics (politics, weather, sports)
  • Complaints about bank/service
  • AI internals, tools, or model behavior
  • Medical/legal advice, emergencies
  • Third-party personal data

Lessons Learned

What worked
  • Clear skill/tool separation with explicit “skill is not a tool” instructions prevents confusion
  • Hebrew-only top-priority rule ensures consistent language behavior
  • Selection period messaging handles outdated user expectations gracefully
  • Kosher phone detection (is_capable) handles community-specific requirements
Challenges
  • Hebrew grammar maintenance (female gender) requires explicit instruction
  • Clarification about which subject to check (stock plan or capital market)
  • Balancing proactive eligibility checks vs. user-driven requests
  • Program disambiguation is needed before any information delivery
  • Error handling requires explicit “don’t auto-transfer” rules
  • Latency when answering via internal RAG; to address this (before LangChain), an OpenAI API call with embedded data was used due to the very small database.

Deep Dive

Key Tool Flows

1. Benefits Verification Chain

Purpose: Securely verify user identity before revealing personal eligibility information. Flow:
User: "אני רוצה לבדוק מה בחרתי"

1. benefits_verify(identifier: "user_id") 
   → Creates session token
   → Triggers OTP send to user's phone

2. is_capable() 
   → Checks if phone can receive SMS
   → Handles kosher phone scenarios

3. benefits_verify_otp(otp: "123456")
   → Validates OTP
   → Returns success/failure reason

4. benefits_get_accounts()
   → Retrieves all user bank accounts
   → Returns primary account + account list

5. benefits_check_entitlements(bank, branch, account)
   → Checks eligibility for specific account
   → Returns entitlement status and options

6. (Optional) benefits_select_entitlement()
   → Applies user's choice (stock or cash)

2. FAQ Knowledge Retrieval

Purpose: Answer general questions using knowledge base without hallucination. Flow:
User: "מה התנאים לזכאות?"

1. Switch to faq_kb skill
2. general_faq1(question: "eligibility conditions", which_plan: "מניה במתנה")
   → Queries knowledge base
   → Returns grounded answer

3. (Optional) stock_val() 
   → Returns current stock value with date
   → Always reports for 2 stocks

3. Safe Conversation End Protocol

Purpose: Collect feedback and properly terminate calls. Flow:
User: "תודה, זה הכל"

1. Switch to tags and diacritics skill
2. Ask: "בדירוג מאחת עד חמש - עד כמה הצלחתי לענות לך?"
3. Validate input is numeric 1-5
4. get_satisfaction(satisfaction_level: 4)
   → Stores rating
5. Thank user: "תודה רבה על הדירוג"
6. IMMEDIATELY call End()
   → Critical: must call even without user interaction