TIDRIVO — LOCAL PRODUCT PHOTO REVIEW Match supplier photos to exact product SKUs, review each assignment, and download original image copies with a CSV mapping and an exception report. Keep your original inputs. Tidrivo processes selected files in your browser. 1. Prepare a UTF-8 CSV with lowercase sku,title headers. One supplier at a time. SKUs must be unique, exact and unpadded, up to 128 characters. Leading zeros are significant. Other CSV cells may contain up to 4096 characters. 2. Select PNG/JPEG images or a folder containing only those image files. SKU.png matches that exact SKU, position 1. SKU__02.jpg means position 2. If both interpretations are valid, choose the correct product yourself. 3. Optionally select a URL CSV with filename,url or File Name,Link headers. Filenames may match original names, generated image-0001.jpg names, or exact images/image-0001.jpg archive paths. Names must identify one image uniquely. These links are data only: the app never fetches them or verifies reachability. Upload the exported images through your existing hosting process, then load its filename/URL CSV. After matching, it is checked automatically. Your assignments, positions and exclusions stay intact, including if URL validation fails. The download area shows the checked filename, included-photo URL coverage and missing count. Export uses a snapshot of the checked CSV; changing/removing the URL file starts a new check and requires fresh approval. Correct the manifest and retry. Approve the updated review before downloading again. Duplicate aliases for the same image are rejected. If an output basename collides with another source name, use its full images/ archive path in the manifest. Changing product/images or resetting clears the old manifest and review. Reloading clears the working session. 4. Match the collection. Review previews and exceptions. Assign a product and position (1–99) to each image, or exclude it. Resolve duplicate positions. For a shared photo, click Assign to another variant, enter an exact SKU from the suggestions and choose its position. Repeat for each intended variant; naming similarity never creates shared assignments automatically. Remove deletes only that extra assignment. Exclude omits the whole photo and all its assignments; unchecking restores the choices. The same photo cannot repeat a SKU, and two photos cannot use the same SKU and position. 5. If you need to stop before finishing, select Save review draft. Keep tidrivo-draft.json with the original catalog, photos and any URL CSV. The draft saves decisions, including unfinished assignments, separately from a reviewed handover. It contains catalog rows and photo names, so treat it as supplier data. The draft contains no photo bytes, checked URL snapshot or approval. 6. Acknowledge the review and download the ZIP. If any included photos lack URLs, load/check their URL CSV or explicitly choose the preparation ZIP with missing URLs. Ordinary review approval alone cannot export missing URLs. Shared photos count once for coverage; excluded photos are not included in that count. Products without images remain listed in its exception report. There must be at least one assigned image. The ZIP contains unchanged image copies under safe generated filenames, original-products.csv, project.json, mapping.csv, exceptions.csv and README.txt. Original CSV may contain formulas: do not open it as a trusted spreadsheet. Report CSVs escape formula-like cells, but import SKU columns as TEXT to retain leading zeros in spreadsheet software. JSON preserves exact parsed strings. Each physical image appears once in the ZIP and needs just one uploaded URL. Mapping rows repeat its output filename/URL for each assigned variant. project.json schema4: decisions retain primary sku/position and optional shares:[{sku,position}], while images is a flattened list of assignments. An image ID/output path may therefore repeat in images. To resume, match the same product CSV and original photos in the same order. Then select the draft JSON or the project.json from your review ZIP under Restore a saved review. The app checks parsed catalog values and original filenames/order and SHA-256 fingerprints of every selected photo, including excluded photos. A changed photo rejects the restore without replacing any current choices. Fingerprints detect changed bytes, not the authenticity of a saved file edited by someone else. In a fresh session, load the URL CSV again. Restoring in the same session keeps the current checked URLs. Unfinished choices still need review. Unfinished excluded choices remain excluded. Invalid restores keep current choices and checked URLs. Undo last edit recovers one project-name/assignment/exclusion/share edit or successful restore; it retains checked URLs and requires fresh approval. Reset/new sources clear undo. Older completed archives with schema 1 remain historical downloads. The draft is a separate format. Use the preparation ZIP as input to your existing hosting and store import process. If you upload the generated copies, load their actual filename/URL manifest here and download an updated mapping. The app accepts original and generated names and preserves the supplied URLs. Verify hosting and target-store import in your own authorized workflow. Limits: 500 products, 500 images, 10 MiB/image, 100 MiB total, 1 MiB/CSV, 64 MiB per review JSON, 500 assignments per image, 5000 assignment slots per collection (including excluded choices and blank slots), 50 CSV columns, 4096 characters/cell, 8192 pixels/side and 16 million pixels/image. Each processing job has a 30-second deadline. Reduce the collection if it expires. Reset/cancel clears the working collection. Reloading clears the session. There is no automatic saving. Keep input files and the downloaded ZIP for restore. Use a maintained browser. Images are decoded by its native codecs; header bounds are not a guarantee against every decoder flaw. Never distribute private source files or URL tokens without checking the contents of the handover. SUPPLIER PROFILES (OPTIONAL) Use Supplier setup when a UTF-8 product CSV has different SKU/title column names or photos have a fixed filename prefix/suffix. Enter exact original headers, choose a profile name and enable the profile. Preview the selected catalog and photo filenames, then Match this collection to run the actual image checks. The preview does not decode photos or approve a download. No regex or AI guesses. Affixes are removed only for matching, before the file extension; original CSV bytes and source names are retained. Nonmatching affixes need manual review. Save supplier profile downloads a small portable JSON file; it is not a saved review. Save review draft retains assignments and exclusions separately. Settings lock during a review. To resume after restart, load the same profile, select the same catalog/photos in the same order, preview, match, then restore the draft or project JSON and add your URL file. Changed profiles are rejected on restore, so a mapping cannot silently change your choices. Named projects and photo fingerprints require version 0.5.0 or later. New drafts use schema3 and review projects use schema4, with or without a supplier profile. Older unprofiled and profiled reviews can be imported only through the explicit unverified-import acknowledgment shown after an ordinary restore attempt. The old review cannot prove that your selected photos have the original contents. Check all imported assignments and exclusions before approving. Saving a new draft or ZIP binds those choices to the currently selected photo bytes. PROJECT NAMES Give each batch an optional name of up to 80 characters, such as a client, supplier and season. The name is stored in the draft and project.json; it is not used as a filesystem path. Renaming keeps assignments, exclusions and URLs. Restoring recovers the name with the choices; Undo recovers the previous name and choices. Nothing is saved automatically or sent to a server. Photo fingerprints are computed locally using Web Crypto in HTTPS or localhost. Keep the exact original files; even a re-encoded photo with the same visible appearance has different bytes and will not pass a verified restore.