Technical task: bot for weekly monitoring of competitor prices in Telegram
1. Project goal
It is necessary to develop a bot/script that automatically collects prices for laboratory tests from competitors once a week, compares them with the previous collection, and sends a brief report in Telegram.
2. Competitors for monitoring
Prices need to be collected from the following websites:
ML DILA
Synevo
Medlab
CSD
Nikolab
Base city: Kyiv.
3. What exactly needs to be monitored
At the first stage, it is necessary to monitor 580 laboratory tests/services. The list will be provided in a table
List of services: https://docs.google.com/spreadsheets/d/1ZY4bRvDpZdtMiJ6SPRhilYJIPnxTqzVe/edit?usp=sharing&ouid=100601517266070340154&rtpof=true&sd=true
4. Main functionality
The system must:
Run price collection once a week.
Access competitor pages.
Extract:
Store data in a database or Google Sheets.
Compare the new collection with the previous one.
Determine:
Generate a brief report.
Send the report to a Telegram chat or Telegram channel.
5. Telegram report format
Example:
Competitor price monitoring — 28.04.2026
Overall statistics
Price changes: 7
Increased: 5
Decreased: 2
No changes:
Collection errors: 3
DILA
Synevo
Medlab
CSD
Recommendations / alerts
6. Admin part / settings
It is necessary to implement through Google Sheets
separate table with the list of services;
separate table with the history of collections;
separate table with errors.
7. Parsing requirements
The bot must work stably even if one of the pages is unavailable.
If the price is not found — do not crash, but log the error.
All errors must be logged.
It should be taken into account that prices can be:
8. Telegram
It is necessary to create or connect to the Telegram Bot API.
The bot must:
send a weekly report;
send an error message if the collection did not occur;
have the ability to run manually with the command /run;
have the command /last_report;
preferably have the command /status.
9. Launch schedule
The collection must be launched automatically once a week.
Preferred day: Monday.
Preferred time: 09:00 Kyiv time.
10. Expected result
At the output, it is necessary to obtain:
Working bot/script.
Configured weekly launch.
Telegram report.
Table or database with price history.
User manual.
Instructions on how to add new services.
Short README for project support.
11. Acceptance criteria
The work is considered completed if:
the bot successfully collects prices for at least 100 services;
all 5 companies are covered;
data is stored in a table or database;
the second launch correctly compares prices with the first;
the Telegram report arrives automatically;
manual launch via /run works;
errors are logged;
there is an instruction on how to add a new service;
the code is provided on GitHub or as an archive.
12. What is required from the performer in the response
Please indicate in your response:
Estimated cost.
Estimated completion time.
What stack you propose.
Where is the best place to store data: Google Sheets, SQLite, or PostgreSQL.
Whether you have experience with website parsing and Telegram bots.
Whether you can support the project after launch.