| name | israeli-gov-form-automator |
| description | 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. |
| license | MIT |
| allowed-tools | Bash(python:*) Bash(pip:*) WebFetch |
| compatibility | Requires Python 3.9+, Playwright for browser automation, and network access to gov.il portals. Optional: pikepdf or PyPDF2 for PDF form filling. |
Israeli Government Form Automator
Instructions
Step 1: Identify the Form and Portal
Ask the user which government form or process they need to automate:
| Portal | URL | Common Forms | Hebrew |
|---|
| gov.il Services | www.gov.il | General government forms | ืฉืืจืืชื ืืืฉืื |
| Rashut HaMisim (Tax Authority) | www.misim.gov.il | Doch Shnati, Mas Hachnasa, Nikui Mas | ืจืฉืืช ืืืกืื |
| Bituach Leumi (National Insurance) | www.btl.gov.il | Maternity, disability, unemployment claims | ืืืืื ืืืืื |
| Rasham HaChevarot (Companies Registrar) | www.ica.justice.gov.il | Company registration, annual reports | ืจืฉื ืืืืจืืช |
| Misrad HaPnim (Interior Ministry) | www.gov.il/he/departments/ministry_of_interior | Teudat Zehut updates, address changes | ืืฉืจื ืืคื ืื |
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()
page.goto("https://www.gov.il/he/")
page.wait_for_selector('[data-testid="form-container"]', timeout=15000)
page.fill('input[name="firstName"]', "ืืฉืจืื")
page.fill('input[name="lastName"]', "ืืฉืจืืื")
page.fill('input[name="idNumber"]', "123456782")
page.fill('input[name="birthDate"]', "15/03/1990")
page.select_option('select[name="city"]', label="ืชื ืืืื-ืืคื")
Step 4: Fill PDF Forms (Offline Forms)
For downloadable government PDFs with fillable fields:
import pikepdf
pdf = pikepdf.open("tofes_101.pdf")
pdf.pages[0]["/Annots"]
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.