DevelopmentPayment protectionDetails
- Revisions within the package are free.
- If you do not respond within 3 days of delivery, the work is accepted automatically.
The money is reserved when you pay and released only once you accept the work.

Example result
Merging the monthly sales files of 9 shops into one Excel report
How it is run
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Folder: sales/2026-10, 9 files found
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 rows
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 rows
2026-11-02 09:14:04 WARN shop-07.csv: 3 rows without a price skipped (lines 88, 412, 913)
2026-11-02 09:14:05 INFO Done: 10,412 rows -> report-2026-10.xlsx (sheets "Sales" and "Totals")
Settings, not code
The column names of each shop live in settings.ini, so a new shop or a renamed column is a line there:
[columns]
date = Date, Sale date, Day
product = Product, Item, Name
quantity = Qty, Quantity, Pcs
price = Price, Unit price
A part of the code
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Reads one shop's file and gives it the report's column names."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: no column for '{name}' (looked for {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Files: a ZIP archive with merge_sales.py (310 lines), settings.ini, requirements.txt and a README with installing Python, running the script and what each message in the log means. The client runs it on their own computer.
Client: a small chain of 9 stationery shops; each shop sends its sales for the month as a CSV or Excel file, with slightly different column names. Task: one script that reads every file in a folder, brings the columns to one shape, and writes a single Excel report with all sales and a sheet of totals by shop.
The client and all details are made up.
About this service
Photos straight from a camera or phone are often 5-10 MB each: too heavy for a product page, a site gallery or an email. This Python script goes through a folder and saves a smaller copy of every picture: fitted to the width or height you set without stretching, compressed to the quality you choose, as JPEG or PNG. From Standard it can make several sizes at once and remove the hidden details photos carry, such as the camera and the place they were taken. Your originals stay untouched, and the results go to a separate folder. Send us the sizes you need and two or three sample photos. You run the script yourself on your computer. It resizes and compresses; it does not retouch, cut out backgrounds or fix colours.
What is included
- What you getA ZIP archive with the Python script, a README with step-by-step instructions and, from Standard, a settings file with your sizes and quality; the code is also shown on the order page.
- No stretchingProportions kept; crop or padding only if you ask
- Quality you chooseLighter files with the sharpness you are happy with
- Originals keptCopies go to a separate folder
- Hidden details removedFrom Standard, camera and location data stripped if you want
- Readable codeWith comments, easy to change a size later
How it works
- 1SizesYou give the sizes and send a few sample photos
- 2CodeWe write the script and the guide to running it
- 3Try itYou run it on a folder and look at the copies
- 4ChangesYou ask for changes within your package and send any error message
What we need from you
The sizes you need in pixels (for example 1600 px wide for the site and 400x400 for thumbnails) or the sizes your shop platform asks for, whether to crop or add padding when the shape differs, the file format and any weight limit, such as under 300 KB. Two or three of your photos as samples, roughly how many photos there are and whether they sit in subfolders. Your system: Windows, macOS or Linux.
We will ask you:
- Where will the photos go?
- Which sizes do you need?
- Any weight or format limits?
- Where will it run?
Compare packages
| Packages | BasicOne size$16 | StandardSizes with settings$33 | PremiumImage tool$67 |
|---|---|---|---|
| Deadline | 1 day | 2 days | 3 days |
| Revisions | 1 | 2 | 3 |
| Code | up to 150 lines | up to 400 lines | up to 1,000 lines |
| Files of code | 1 | up to 3 | up to 8 |
| Settings file | No | Yes | Yes |
| Clear error messages and a log | No | Yes | Yes |
| Run options and a guide to running it on a schedule | No | No | Yes |
| Guide to installing and running it (README) | Yes | Yes | Yes |
| Language | Python | Python | Python |
| Order Basic | Order Standard | Order Premium |
Payment protection
You pay when you order, but the money is released only for accepted work.
- Fixed priceThe package price does not change after you pay.
- The money is reservedWhen you pay, the amount is only reserved. It is released to the service once you accept the work.
- Checked before deliveryEvery result goes through a quality check before it reaches you, and you see it on the order page before accepting it.
- Free revisionsAsk for changes within your brief as many times as the package allows.
- Acceptance after 3 daysIf within 3 days of delivery you neither accept the work nor ask for changes, it is accepted automatically. If you write in the order chat after delivery, the order waits; once we answer, we may start the 3 days again and will say so in the chat.
- Redo or a full refundIf the result does not match your brief and the revisions did not fix it, or the work takes more than twice its deadline, write in the order chat: we will redo the work or refund the payment in full.
Questions and answers
Which formats can it read?
JPEG, PNG, GIF, BMP, TIFF and WebP. HEIC photos from iPhones and RAW files from cameras need an extra library; tell us if you have them and we will say whether they fit your package.
Will the photos lose quality?
Some, as with any compression, but at the usual settings it is hard to see on a screen. You set the quality in the settings and can try a few values on sample photos.
Can it make WebP too?
Yes, it can save WebP next to JPEG within the same package. If WebP is the main goal, see our offer for converting images to WebP.
Will you resize my photos for me?
No. You run the script on your computer, so your photos stay with you. A few samples are all we need.
Did not find your answer?


