Project: Desktop application in Python for automating the publication of ads on Bazoš.skTechnologies: Python, Playwright, PySide6, SQLite, Excel import/exportCost of the second stage: 27,000 UAHDeadline: 12–14 working days after payment reservation on the Safi and receipt of Czech PSČ for probe Bazoš.cz.
1. Goal of the second stage
Expand the working MVP version to a full-fledged production tool for the daily work of the manager on Bazoš.sk.
Stage 2 covers all key scenarios of regular work: — automatic rotation and re-publication of ads; — scheduled operation without user involvement; — monitoring the status of published ads; — managing groups of accounts; — two-way synchronization of results with Excel; — support for any "simple" categories on Bazoš.sk through a universal engine (instead of one fixed category Notebooky from Stage 1).
After Stage 2, the manager receives a tool that requires minimal manual intervention: set the schedule once → the bot publishes, updates, monitors, and writes results back to Excel by itself.
2. What is included in the second stage
2.1 Rotation / automatic re-publication module
— customizable rotation interval in days: • global default of 3 days; • ability to override the interval for a specific account (for example, for laptops 1 day, for small items 3 days); — rotation logic: deletion of the old ad on Bazoš → publication of a new one with the same data (same title/description/photo/PSČ) → updating the link in the database and Excel; — "Update selected account" button: allows the manager to manually start rotation for one specific account without affecting others; — new status reserve to exclude items from rotation: • set manually in the application (right click → "Reserve") or through a column in Excel; • such items are skipped by the bot during rotation until the status is removed; — control of the limit of 50 active ads per account: • before publication, the bot checks the number of active ads on the account; • if the limit is reached → rotation for this account stops, a notification is written to the log, the manager manually decides what to do (delete old ads or temporarily disable the account); • the bot does not automatically delete old ads.
2.2 Schedule / planner module
— schedule for each account separately with two modes: • specific time: for example, account #1 publishes at 09:00, 13:00, 17:00; • range with interval: for example, from 09:00 to 18:00 every 60 minutes; — auto-start of rotation according to the schedule: the application itself raises the queue for the account at the specified time, goes through pending items, makes pauses between publications, and completes work; — weekends/holidays are not taken into account — the logic is the same every day; — viewing the schedule on the "Settings" tab in table form: account → next launch → following launch; — ability to temporarily disable the schedule for the account (checkbox "active/inactive").
2.3 Monitoring module for ad status
— periodic checking of the URLs of published ads in the background; — check frequency is configurable in the UI (default once every 12 hours); — for each URL, the bot determines one of the states: • active — the ad is available and active; • inactive — the ad has been removed from Bazoš, blocked, or the link returns 404; — updating the status of the item in the application: new status inactive, a separate filter on the "Items" tab for quick selection of all inactive ones; — change log for each item: when it was published → when it became inactive → reason (if it can be determined from Bazoš's response); — the bot does not automatically re-publish inactive ads — this is the manager's decision: they can highlight such items and click "Restart selected".
2.4 Account grouping module
— arbitrary user groups of accounts with their own names (for example, "Laptops", "Small electronics", "Cars", "Household appliances"); — at the start, 2 groups are configured, with the ability to add new ones without limitation; — one account belongs to exactly one group (not multiple); — filter by groups on the "Items", "Accounts", "Queue" tabs; — start/stop queue for a specific group: ability to start publication only for accounts of the selected group, without affecting others; — group configuration is saved in the database, transferred along with the project when copied to another PC.
2.5 Two-way synchronization module with Excel
— "Save results to Excel" button on the "Items" tab: • select the source Excel file (or remember the last used); • the bot updates the columns in this file: status, published_url, published_at, error_comment; • writing only to existing rows — the file structure is not broken; — processing of sold/deleted items: • items with status sold or inactive are removed from the Excel file (the corresponding row is deleted); • optionally, you can enable "do not delete, mark with status" — switched in settings; — column product_id is recommended for use as an anchor for reliable two-way matching (if it is absent — fallback to title); — synchronization is started only by button (there is no automatic timer in Stage 2 — it will be added if necessary in subsequent stages).
2.6 Universal engine for "simple categories" Bazoš.sk
In Stage 1, only the category PC → Notebooky was supported. In Stage 2, a universal publisher is implemented, working with any "simple" subcategory on Bazoš.sk without hardcoding:
— Excel supports any values in the columns category / subcategory; — the bot automatically resolves them into the correct section URL + selects the subcategory in the form; — "simple category" = subcategory with a basic publication form (title, description, price, PSC, photo, contact, password), without additional specific fields.
Guaranteed coverage in Stage 2:
— all 20 subcategories from the file Palets.xlsx: • PC → Hard disks/SSDs, Game consoles, Gaming devices • Electronics → Vacuum cleaners, Televisions, Projectors, HiFi/Radios, Walkie-talkies, Other audio video, Other small, Hand mixers/Blenders • Photo → Camcorders • Mobiles → Other brands • Children → Toys, Furniture for children • Home and garden → Garden equipment, Others • Furniture → Lamps, lighting • Auto → Spare parts utility — simple subcategories Auto/Motorcycles, explicitly mentioned by the customer: Spare parts, Tuning, Clothing, Others (provided that the probe forms confirm the absence of specific fields); — with high probability works any other simple subcategory in the sections PC, Electronics, Mobiles, Photo, Children, Furniture, Home and garden — since the engine is universal, new subcategories are added by editing one line of mapping without reworking the logic; — within 5 working days after submission of Stage 2, the customer can test any simple subcategory — if something does not work, I will fix it for free within the bug-fixing period.
2.7 Probe Bazoš.cz for Stage 3 (bonus, without separate payment)
As part of Stage 2, I conduct a short probe (1–2 hours) of the Czech site Bazoš.cz: — check that the Slovak account + Slovak proxy publishes on .cz without triggering re-verification; — check that the publication form is identical to .sk (selectors, fields, Dropzone); — based on the results, I fix the final figure for Stage 3 in addition to this technical specification before the start of Stage 3.
This is not included in the cost of Stage 2 as separate work — a side result of developing the universal category engine.
2.8 Included in the bug-fixing period of Stage 1 item
As part of the bug-fixing period of the first stage (that is, before the start of Stage 2 and without separate payment):
— adding the column product_id in the UI on the "Items" tab for convenient searching and identifying items; — the values of the column are taken from the product_id field in Excel during import (as already in Palets.xlsx with the format #P001, #P004, #P005).
3. What is NOT included in the second stage
The following items are agreed as separate stages or not included in the project at all:
→ Stage 3 (Bazoš.cz):— full publication on Bazoš.cz with support for all 5 modules of Stage 2; — parallel site module app/sites/bazos_cz/; — Excel extension for selecting site publication; — live test on Czech PSČ; — estimated cost: 10,000–12,000 UAH, 4–5 days (final figure after probe in Stage 2).
→ Stage 4 (scaling and complex categories):— parallel operation of more than 10 accounts on one PC (pool of browser workers, parallel queues, GUI optimization); — support for categories with unique fields: Motorcycles/Scooters (with engine volume, year), Auto/Cars (full cars), Real estate (real estate with area) — if required; — estimated cost: ~22,000 UAH, 8–10 days.
→ Stage 5 (multi-PC, optionally):— operation of two or more PCs with a shared database (PostgreSQL) for centralized management of accounts and publications; — synchronization of status between instances; — estimated cost: ~25,000 UAH, 10–12 days.
If independent operation is sufficient for two PCs (different sets of accounts on each PC, without sync) — Stage 5 is not needed.
→ Not included in the project at all (by agreement with the customer): — paid promotion / topovanie / Commercial ad; — anti-detect / emulation of browser "fingerprints" beyond the current logic; — analytics, reports, dashboards on ad effectiveness; — categories with fundamentally different form fields (full cars, real estate).
4. Acceptance criteria for Stage 2
Acceptance is conducted according to the checklist:
Rotation module:— [ ] the rotation interval is configurable globally and for the account; — [ ] the "Update selected account" button starts rotation only for the selected account; — [ ] items with status reserve are skipped; — [ ] when the limit of 50 ads is reached, rotation for the account stops and is logged.
Schedule module:— [ ] a schedule can be set for the account in two modes (specific time / range with interval); — [ ] the application itself starts rotation according to the schedule; — [ ] the schedule table on the "Settings" tab displays the next launches.
Monitoring module:— [ ] periodic URL checking is started by timer; — [ ] check frequency is configurable in the UI; — [ ] inactive ads receive the status inactive; — [ ] the filter by status inactive works on the "Items" tab.
Groups module:— [ ] at least 2 groups can be created and accounts linked to them; — [ ] filters by groups work on all tabs; — [ ] start/stop queue by group starts publication only for accounts of that group.
Excel synchronization module:— [ ] the "Save results to Excel" button updates the necessary columns in the source file.