IranArze — Automated Job Deadline Notification
End-to-end Telegram automation that extracts active opportunities, calculates Jalali deadlines, publishes a consolidated daily digest, and sends urgent reminders without routine manual content operations.
Problem
Registration deadlines were scattered and easy to miss, while manually monitoring and republishing opportunities was repetitive and fragile.
Users
A Telegram channel that grew to approximately 500 members during the recorded operating period.
My Role
Independent product builder and operator; end-to-end ownership.
Key Decisions
- Separate predictable daily reporting from urgent deadline alerts.
- Make publishing idempotent to avoid duplicates.
- Expose system health so unattended automation can be operated responsibly.
Delivery & Technical Approach
- Built the PHP backend, scraper, Telegram integration, Cron jobs, Jalali date logic, idempotency, and persistence.
- Built the operational dashboard, structured logs, health endpoint, deployment, and production maintenance flow.
- 01Opportunity sources
- 02Extraction
- 03Jalali deadline logic
- 04Scheduling & idempotency
- 05Telegram digest / urgent alerts
- 06Logs & health
Outcome / Impact
- Approximately 500 channel members.
- Approximately two months of real automated operation.
- Daily publishing and urgent reminders ran without routine manual content operations.
Constraints & Boundary
- Source HTML structure could change and break parsing.
- Secrets and credentials remain outside public project data.
- The service stopped because of infrastructure/communication disruption, not because of product non-use.
Scope note: Production refers to the recorded ~2-month operating period; the service is currently stopped. Secrets and credentials are not published.
Reflection & Next
- For automation products, observability and idempotency are user-facing reliability features.
- A useful notification model needs explicit urgency semantics, not just more alerts.
Next: Make parsing-health checks source-aware and keep deployment configuration isolated from public code and content.