Israeli Government Form Automator
Instructions
Step 1: Identify the Form and Portal
Ask the user which government form or process they need to automate:
Clarify:
- Which form? (form number or name, e.g., Tofes 101, Tofes 106)
- Online or PDF? (browser-based portal or downloadable PDF)
- User data available? (Teudat Zehut, address, employer details)
Step 2: Validate Israeli-Specific Fields
Before filling any form, validate all Israeli-format data:
Teudat Zehut (ID Number) Validation:
The Israeli ID is 9 digits with a check digit (Luhn variant):
def validate_tz(id_number: str) -> bool:
"""Validate Israeli Teudat Zehut number."""
id_str = id_number.zfill(9)
if len(id_str) != 9 or not id_str.isdigit():
return False
total = 0
for i, digit in enumerate(id_str):
val = int(digit) * (1 + (i % 2))
if val > 9:
val -= 9
total += val
return total % 10 == 0
Israeli Phone Number Formats:
| Format |
Example |
Notes |
| Mobile |
05X-XXXXXXX |
Prefixes: 050, 051, 052, 053, 054, 055, 058 |
| Landline |
0X-XXXXXXX |
Area codes: 02 (Jerusalem), 03 (Tel Aviv), 04 (Haifa), 08 (South), 09 (Sharon) |
| International |
+972-5X-XXXXXXX |
Drop leading 0, add +972 |
Israeli Address Format:
{street_name} {house_number}, {apartment} (optional)
{city_name}, {mikud (postal code - 7 digits)}
Step 3: Set Up Browser Automation (Online Forms)
Install and configure Playwright for Hebrew RTL government portals:
pip install playwright
playwright install chromium
Key patterns for gov.il portals:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(locale="he-IL")
page = context.new_page()
# Note: Replace with specific service URL as needed
page.goto("https://www.gov.il/he/")
# Gov.il uses React-based forms; wait for dynamic load
page.wait_for_selector('[data-testid="form-container"]', timeout=15000)
# Fill RTL text fields
page.fill('input[name="firstName"]', "ישראל")
page.fill('input[name="lastName"]', "ישראלי")
page.fill('input[name="idNumber"]', "123456782")
# Handle date pickers (DD/MM/YYYY format in Israel)
page.fill('input[name="birthDate"]', "15/03/1990")
# Handle dropdowns with Hebrew options
page.select_option('select[name="city"]', label="תל אביב-יפו")
Step 4: Fill PDF Forms (Offline Forms)
For downloadable government PDFs with fillable fields:
# Option 1: pikepdf (recommended)
import pikepdf
pdf = pikepdf.open("tofes_101.pdf")
pdf.pages[0]["/Annots"] # Inspect form field names
# Option 2: PyPDF2
from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader("tofes_101.pdf")
fields = reader.get_fields()
writer = PdfWriter()
writer.append(reader)
writer.update_page_form_field_values(
writer.pages[0],
{"shem_prati": "ישראל", "shem_mishpacha": "ישראלי"}
)
Common PDF field naming conventions in government forms:
| Field Purpose |
Common Hebrew Names |
English Equivalent |
| First name |
shem_prati, shem_praty |
first_name |
| Last name |
shem_mishpacha, shem_mishpaha |
last_name |
| ID number |
mispar_zehut, tz |
id_number |
| Date of birth |
taarich_leida |
birth_date |
| Address |
ktovet, rechov |
address, street |
| City |
yishuv, ir |
city |
| Phone |
telefon, nayad |
phone, mobile |
| Employer |
maasik |
employer |
Step 5: Handle Common Government Form Patterns
Doch Shnati (Annual Tax Report):
- Navigate to Rashut HaMisim personal area
- Required fields: income sources (mekorot hachnasa), deductions (nikuyim), credits (zikuyim)
- Attach digital slips (tofes 106, tofes 857)
- Date format: always DD/MM/YYYY
Bituach Leumi Claims:
- Navigate to btl.gov.il personal area
- Identify claim type (maternity/dme'i leida, disability/nechut, unemployment/avtala)
- Upload supporting documents (medical certificates, employment letters)
- Track claim status via personal dashboard
Companies Registrar Filings:
- Navigate to ica.justice.gov.il
- Required: company number (mispar chevra), authorized signatory details
- Annual report (doch shnati la-rasham) filing
- Director/shareholder change notifications
Step 6: Submit and Verify
After filling the form:
- Screenshot before submit -- capture the filled form for user review
- Validate all required fields -- government forms reject partial submissions
- Save confirmation number (mispar ishur) -- always displayed after successful submission
- Download receipt PDF when available
- Note processing timeline -- most government services specify expected response time
Step 7: Error Recovery
Common issues with government portals:
- Session timeout: Gov.il sessions expire after ~20 minutes of inactivity
- CAPTCHA: Some forms require manual CAPTCHA solving; pause and ask user
- Certificate errors: Government portals may use Israeli CA certificates
- Peak hours: Tax Authority portal is slow during filing season (March-May)
Examples
Example 1: Fill Tax Form 101
User says: "I need to fill Tofes 101 for my new employee"
Actions:
- Download Tofes 101 PDF from Rashut HaMisim
- Validate employee Teudat Zehut
- Fill personal details, tax bracket, credits (nekudot zikui)
- Generate filled PDF for employer signature
Result: Completed Tofes 101 ready for submission
Example 2: Submit Bituach Leumi Maternity Claim
User says: "Help me file a maternity benefit claim with Bituach Leumi"
Actions:
- Navigate to btl.gov.il maternity (dme'i leida) section
- Validate eligibility: employment period, salary data
- Fill claim form with personal and employer details
- Upload required documents (employment confirmation, hospital discharge)
Result: Submitted claim with tracking number for follow-up
Example 3: Register New Company
User says: "I want to register a new Chevra Ba'am (Ltd company)"
Actions:
- Navigate to Companies Registrar portal
- Fill company name proposals (3 options required)
- Enter founder details, share capital, articles of association
- Calculate and note registration fees
Result: Submission confirmation with expected registration timeline
Example 4: Update Personal Details at Misrad HaPnim
User says: "I moved apartments and need to update my address"
Actions:
- Navigate to gov.il address change service
- Validate new address format (street, city, mikud)
- Fill change-of-address form with old and new addresses
- Submit with required identification
Result: Address change request submitted with confirmation number
Bundled Resources
Scripts
scripts/fill_form.py -- Helper to validate Israeli form fields (Teudat Zehut, phone, address) and populate common government form data structures. Run: python scripts/fill_form.py --help
References
references/gov-portals.md -- Comprehensive list of Israeli government portal URLs, form types, and field naming conventions. Consult when identifying the correct portal or form for a given task.
Gotchas
- Israeli government forms require Hebrew text input in specific fields. Agents may generate English-only form data, which will be rejected by government systems.
- Teudat Zehut (Israeli ID) numbers have 9 digits with a Luhn-variant check digit. Agents may generate random 9-digit numbers that fail the check-digit validation.
- Many government forms require a date of birth in both Hebrew calendar (luach ivri) and Gregorian formats. Agents typically only provide the Gregorian date.
- Digital signatures on Israeli government forms use the gov.il identity verification system. Agents cannot programmatically sign forms without going through the user's gov.il authentication.
Reference Links
Troubleshooting
Error: "Session expired" on gov.il
Cause: Government portal sessions time out after prolonged inactivity
Solution: Re-authenticate and resume from the last saved step. Save partial progress frequently.
Error: "Invalid Teudat Zehut"
Cause: ID number fails check digit validation
Solution: Run validate_tz() before submission. Ensure 9 digits with leading zeros if needed.
Error: "Hebrew text displays incorrectly in PDF"
Cause: PDF library does not support RTL text or Hebrew fonts
Solution: Use pikepdf with embedded Hebrew fonts. Ensure the PDF template already has Hebrew font resources.
Error: "Form field not found"
Cause: Government PDFs change field names between versions
Solution: List all fields with reader.get_fields() first, then match by inspecting field labels.
1---2name: israeli-gov-form-automator3description: Automate Israeli government form filling via Playwright browser automation and PDF population. Prevents hours of manual form filling and data entry errors on government portals. Use when user asks about filling government forms, "tofes" (form), "milui tfasim" (form filling), "gov.il" portal submissions, online form submission, Rashut HaMisim (Tax Authority) filings, Bituach Leumi (National Insurance) claims, or Rasham HaChevarot (Companies Registrar) documents. Validates Teudat Zehut (ID numbers) with check digit, Israeli phone numbers (+972), and Hebrew address fields. Supports Doch Shnati (annual tax report), maternity grant claims, and company registration forms. Do NOT use for classified or security-clearance government systems.4license: MIT5---67# Israeli Government Form Automator89## Instructions1011### Step 1: Identify the Form and Portal1213Ask the user which government form or process they need to automate:1415| Portal | URL | Common Forms | Hebrew |16|--------|-----|-------------|--------|17| gov.il Services | www.gov.il | General government forms | שירותי ממשלה |18| Rashut HaMisim (Tax Authority) | www.misim.gov.il | Doch Shnati, Mas Hachnasa, Nikui Mas | רשות המסים |19| Bituach Leumi (National Insurance) | www.btl.gov.il | Maternity, disability, unemployment claims | ביטוח לאומי |20| Rasham HaChevarot (Companies Registrar) | www.ica.justice.gov.il | Company registration, annual reports | רשם החברות |21| Misrad HaPnim (Interior Ministry) | www.gov.il/he/departments/ministry_of_interior | Teudat Zehut updates, address changes | משרד הפנים |2223Clarify:24- **Which form?** (form number or name, e.g., Tofes 101, Tofes 106)25- **Online or PDF?** (browser-based portal or downloadable PDF)26- **User data available?** (Teudat Zehut, address, employer details)2728### Step 2: Validate Israeli-Specific Fields2930Before filling any form, validate all Israeli-format data:3132**Teudat Zehut (ID Number) Validation:**33The Israeli ID is 9 digits with a check digit (Luhn variant):34```python35def validate_tz(id_number: str) -> bool:36 """Validate Israeli Teudat Zehut number."""37 id_str = id_number.zfill(9)38 if len(id_str) != 9 or not id_str.isdigit():39 return False40 total = 041 for i, digit in enumerate(id_str):42 val = int(digit) * (1 + (i % 2))43 if val > 9:44 val -= 945 total += val46 return total % 10 == 047```4849**Israeli Phone Number Formats:**50| Format | Example | Notes |51|--------|---------|-------|52| Mobile | 05X-XXXXXXX | Prefixes: 050, 051, 052, 053, 054, 055, 058 |53| Landline | 0X-XXXXXXX | Area codes: 02 (Jerusalem), 03 (Tel Aviv), 04 (Haifa), 08 (South), 09 (Sharon) |54| International | +972-5X-XXXXXXX | Drop leading 0, add +972 |5556**Israeli Address Format:**57```58{street_name} {house_number}, {apartment} (optional)59{city_name}, {mikud (postal code - 7 digits)}60```6162### Step 3: Set Up Browser Automation (Online Forms)6364Install and configure Playwright for Hebrew RTL government portals:6566```bash67pip install playwright68playwright install chromium69```7071**Key patterns for gov.il portals:**72```python73from playwright.sync_api import sync_playwright7475with sync_playwright() as p:76 browser = p.chromium.launch(headless=False)77 context = browser.new_context(locale="he-IL")78 page = context.new_page()79 # Note: Replace with specific service URL as needed80 page.goto("https://www.gov.il/he/")8182 # Gov.il uses React-based forms; wait for dynamic load83 page.wait_for_selector('[data-testid="form-container"]', timeout=15000)8485 # Fill RTL text fields86 page.fill('input[name="firstName"]', "ישראל")87 page.fill('input[name="lastName"]', "ישראלי")88 page.fill('input[name="idNumber"]', "123456782")8990 # Handle date pickers (DD/MM/YYYY format in Israel)91 page.fill('input[name="birthDate"]', "15/03/1990")9293 # Handle dropdowns with Hebrew options94 page.select_option('select[name="city"]', label="תל אביב-יפו")95```9697### Step 4: Fill PDF Forms (Offline Forms)9899For downloadable government PDFs with fillable fields:100101```python102# Option 1: pikepdf (recommended)103import pikepdf104105pdf = pikepdf.open("tofes_101.pdf")106pdf.pages[0]["/Annots"] # Inspect form field names107108# Option 2: PyPDF2109from PyPDF2 import PdfReader, PdfWriter110111reader = PdfReader("tofes_101.pdf")112fields = reader.get_fields()113writer = PdfWriter()114writer.append(reader)115writer.update_page_form_field_values(116 writer.pages[0],117 {"shem_prati": "ישראל", "shem_mishpacha": "ישראלי"}118)119```120121**Common PDF field naming conventions in government forms:**122| Field Purpose | Common Hebrew Names | English Equivalent |123|--------------|--------------------|--------------------|124| First name | shem_prati, shem_praty | first_name |125| Last name | shem_mishpacha, shem_mishpaha | last_name |126| ID number | mispar_zehut, tz | id_number |127| Date of birth | taarich_leida | birth_date |128| Address | ktovet, rechov | address, street |129| City | yishuv, ir | city |130| Phone | telefon, nayad | phone, mobile |131| Employer | maasik | employer |132133### Step 5: Handle Common Government Form Patterns134135**Doch Shnati (Annual Tax Report):**1361. Navigate to Rashut HaMisim personal area1372. Required fields: income sources (mekorot hachnasa), deductions (nikuyim), credits (zikuyim)1383. Attach digital slips (tofes 106, tofes 857)1394. Date format: always DD/MM/YYYY140141**Bituach Leumi Claims:**1421. Navigate to btl.gov.il personal area1432. Identify claim type (maternity/dme'i leida, disability/nechut, unemployment/avtala)1443. Upload supporting documents (medical certificates, employment letters)1454. Track claim status via personal dashboard146147**Companies Registrar Filings:**1481. Navigate to ica.justice.gov.il1492. Required: company number (mispar chevra), authorized signatory details1503. Annual report (doch shnati la-rasham) filing1514. Director/shareholder change notifications152153### Step 6: Submit and Verify154155After filling the form:1561. **Screenshot before submit** -- capture the filled form for user review1572. **Validate all required fields** -- government forms reject partial submissions1583. **Save confirmation number** (mispar ishur) -- always displayed after successful submission1594. **Download receipt PDF** when available1605. **Note processing timeline** -- most government services specify expected response time161162### Step 7: Error Recovery163164Common issues with government portals:165- **Session timeout**: Gov.il sessions expire after ~20 minutes of inactivity166- **CAPTCHA**: Some forms require manual CAPTCHA solving; pause and ask user167- **Certificate errors**: Government portals may use Israeli CA certificates168- **Peak hours**: Tax Authority portal is slow during filing season (March-May)169170## Examples171172### Example 1: Fill Tax Form 101173User says: "I need to fill Tofes 101 for my new employee"174Actions:1751. Download Tofes 101 PDF from Rashut HaMisim1762. Validate employee Teudat Zehut1773. Fill personal details, tax bracket, credits (nekudot zikui)1784. Generate filled PDF for employer signature179Result: Completed Tofes 101 ready for submission180181### Example 2: Submit Bituach Leumi Maternity Claim182User says: "Help me file a maternity benefit claim with Bituach Leumi"183Actions:1841. Navigate to btl.gov.il maternity (dme'i leida) section1852. Validate eligibility: employment period, salary data1863. Fill claim form with personal and employer details1874. Upload required documents (employment confirmation, hospital discharge)188Result: Submitted claim with tracking number for follow-up189190### Example 3: Register New Company191User says: "I want to register a new Chevra Ba'am (Ltd company)"192Actions:1931. Navigate to Companies Registrar portal1942. Fill company name proposals (3 options required)1953. Enter founder details, share capital, articles of association1964. Calculate and note registration fees197Result: Submission confirmation with expected registration timeline198199### Example 4: Update Personal Details at Misrad HaPnim200User says: "I moved apartments and need to update my address"201Actions:2021. Navigate to gov.il address change service2032. Validate new address format (street, city, mikud)2043. Fill change-of-address form with old and new addresses2054. Submit with required identification206Result: Address change request submitted with confirmation number207208## Bundled Resources209210### Scripts211- `scripts/fill_form.py` -- Helper to validate Israeli form fields (Teudat Zehut, phone, address) and populate common government form data structures. Run: `python scripts/fill_form.py --help`212213### References214- `references/gov-portals.md` -- Comprehensive list of Israeli government portal URLs, form types, and field naming conventions. Consult when identifying the correct portal or form for a given task.215216## Gotchas217- Israeli government forms require Hebrew text input in specific fields. Agents may generate English-only form data, which will be rejected by government systems.218- Teudat Zehut (Israeli ID) numbers have 9 digits with a Luhn-variant check digit. Agents may generate random 9-digit numbers that fail the check-digit validation.219- Many government forms require a date of birth in both Hebrew calendar (luach ivri) and Gregorian formats. Agents typically only provide the Gregorian date.220- Digital signatures on Israeli government forms use the gov.il identity verification system. Agents cannot programmatically sign forms without going through the user's gov.il authentication.221222## Reference Links223224| Source | URL | What to Check |225|--------|-----|---------------|226| Gov.il main portal | https://www.gov.il | Form listings, service index, authentication entry |227| Israel Tax Authority services | https://www.gov.il/he/departments/israel_tax_authority | Tax forms, online submission portals |228| Bituach Leumi (NII) | https://www.btl.gov.il | NII forms, claim submission, personal account |229| Companies Registrar (ICA) | https://ica.justice.gov.il | Company filings and updates |230| Playwright docs | https://playwright.dev | RTL context, form automation, waits |231232## Troubleshooting233234### Error: "Session expired" on gov.il235Cause: Government portal sessions time out after prolonged inactivity236Solution: Re-authenticate and resume from the last saved step. Save partial progress frequently.237238### Error: "Invalid Teudat Zehut"239Cause: ID number fails check digit validation240Solution: Run `validate_tz()` before submission. Ensure 9 digits with leading zeros if needed.241242### Error: "Hebrew text displays incorrectly in PDF"243Cause: PDF library does not support RTL text or Hebrew fonts244Solution: Use pikepdf with embedded Hebrew fonts. Ensure the PDF template already has Hebrew font resources.245246### Error: "Form field not found"247Cause: Government PDFs change field names between versions248Solution: List all fields with `reader.get_fields()` first, then match by inspecting field labels.