Python App Source with PyInstaller Build and Installer
برای فهمیدن دادهها و بیرون کشیدن نتیجه از آنها نوشته شده، خروجی را به شکل کد میدهد، و کار را در ۷ قدم شمارهگذاریشده پیش میبرد.
متن پرامپت
complete source code for the application + `build.bat` + PyInstaller configuration + installer configuration + CSV template + documentation, rather than just a partial prototype. i will upload csv and bulk pdf file. after clickig button match name and pdf file process file will be send to provided email id which in csv
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for Levenshtein
Failed to build Levenshtein
error: failed-wheel-build-for-install
× Failed to build installable wheels for some pyproject.toml based projects
╰─> Levenshtein
ERROR: Failed to install required packages
cpanel webmail Set up email on application tool
PDF Auto MATCHING LOGIC: EmployeeID, FirstName, MiddleName, LastName
NAME-BASED MATCHING
If Employee ID is not found in the filename, implement a controlled secondary matching method based on employee name.
Example:
PDF:
```
Abel Harry Anthony.pdf
```
CSV:
```
10152 | Abel | Harry | Anthony | abel@example.com
```
The application should identify:
```
Abel Harry Anthony
```
and match it with the CSV record.
The matching logic can be changed so the application uses any 3 of the 4 CSV fields:
* `ID`
* `First Name`
* `Middle Name`
* `Last Name`
Input PDF:
10004_Vihang_Wani_SalarySlip_March_2026.pdf
no need to rename the pdf file once it's attached also show dashboard me all attachments before sending email
can be built as a Windows desktop application that:
1. Imports an employee CSV.
2. Lets you select a folder containing hundreds/thousands of PDFs.
3. Extracts the Employee ID from each filename.
4. Finds the matching employee in the CSV.
5. Renames the PDF according to a defined format.
6. Shows success, unmatched, duplicate, and error reports.
7. Provides a one-click Windows build that produces a `.exe`.
For your example:Input: SumitShyamraoTunkikar_0020063_Aug_2026.pdf
CSV: 20063 | Sumit | Shyamrao | Tunkikar
Output: 20063_Sumit_Shyamrao_Tunkikar.pdf
Or
Input: Abel Harry Anthony.pdf
CSV: 10152 | Abel | Harry | Anthony
Output:10152_Abel_Harry_Anthony.pdf
Or
Input: AbhishekYadav_0020311_Aug_2026.pdf
CSV: 20311 | Abhishek | Yadav
Output:20311_Abhishek_Yadav.pdf
SAFETY
Original PDFs are preserved by default.
The output is written to a separate folder.
Add Naming Templates: Configure rename patterns:
add Placeholders: ${employeeid} ${firstname} ${middlename} ${surname} ${month} ${year}
Define how renamed pdf should look
example: Pattern
${employeeid}${firstname}${surname}SalarySlip${month}${year}
Or
${employeeid}${firstname}${middlename}${surname}SalarySlip${month}_${year}
Live preview
20311_Abhishek_Yadav_SalarySlip_August_2026.pdf
the specification to:
The matching logic can be changed so the application uses any 3 of the 4 CSV fields:
* `ID + First Name + Middle Name + Surname`
* `ID + First Name + Surname`
* `First Name + Middle Name + Surname` when no ID is present
* Handle concatenated names such as `SumitShyamraoTunkikar`
* Handle spaced names such as `Abel Harry Anthony`
* Normalize leading-zero IDs: `0020063` → `20063`
* Preserve the original PDFs
* Never overwrite an existing output PDF
* Separate Input and Output folders
* Add configurable naming templates:
* `${employeeid}`
* `${firstname}`
* `${middlename}`
* `${surname}`
* `${month} I will select month`
* `${year} I will select year`
* Extract `Month` and `Year` from the original filename where available
* Provide a live preview
* Provide a Preview/Review table before processing
* Export unmatched/duplicate/error reports
* Include Undo for the current output run
Match method: uses any 3 of the 4 CSV must
جایخالیهایی که باید پر کنی
{employeeid}«employeeid» را با مقدار واقعی خودت جایگزین کن{firstname}«firstname» را با مقدار واقعی خودت جایگزین کن{middlename}«middlename» را با مقدار واقعی خودت جایگزین کن{surname}«surname» را با مقدار واقعی خودت جایگزین کن{month}«month» را با مقدار واقعی خودت جایگزین کن{year}«year» را با مقدار واقعی خودت جایگزین کنچطور از این پرامپت استفاده کنم؟
این یک پرامپت در سطح «پیشرفته» از دسته داده و تحلیل است. برای اینکه بهترین نتیجه را بگیری، این مسیر را دنبال کن:
۱) کپی کن. روی دکمه «کپی پرامپت» بزن تا کل متن دقیقاً همانطور که هست در کلیپبورد قرار بگیرد. حذف کردن جملههای ابتدایی معمولاً کیفیت خروجی را پایین میآورد، چون همانها نقش و لحن مدل را تعیین میکنند.
۲) در یک گفتگوی تازه بچسبان. این پرامپت را به عنوان اولین پیام یک چت جدید بفرست. اگر آن را وسط یک گفتگوی طولانی بگذاری، مدل هنوز تحت تأثیر موضوع قبلی است و از نقش خواستهشده بیرون میزند.
۳) جایخالیها را پر کن. در این متن 6 جایخالی وجود دارد: {employeeid}، {firstname}، {middlename}، {surname}، {month}، {year}. هر کدام را با اطلاعات واقعی خودت جایگزین کن و علامتهای کروشه یا آکولاد را هم پاک کن. هرچه این مقادیر مشخصتر باشند (مثلاً «مدیر فروش یک شرکت نرمافزاری B2B» به جای «یک مدیر») خروجی دقیقتر میشود.
۴) به مدل زمینه بده. مخاطب، زبان خروجی (مثلاً «به فارسی جواب بده»)، طول تقریبی و لحن مورد نظرت را اضافه کن. بیشتر جوابهای ضعیف نتیجه نبودِ همین سه خط اضافهاند، نه ضعف خودِ پرامپت.
۵) یک بار اصلاح کن. جواب اول را نهایی فرض نکن. بنویس «این بخش را کوتاهتر کن»، «مثال واقعی اضافه کن» یا «سه نسخه متفاوت بده». دور دوم تقریباً همیشه بهتر از دور اول است.
۶) اعداد و منابع را راستیآزمایی کن. مدل ممکن است ارجاع یا آمار بسازد. هر عددی که قرار است جایی استفاده شود را از منبع اصلی چک کن.
نمونه استفاده واقعی
چه خروجیای باید بگیری
نکتههای حرفهای
- اگر خروجی کلی و بیروح بود، یک نمونه از «خروجی خوب از نظر خودت» به مدل نشان بده؛ یک نمونه بیشتر از ده خط توضیح اثر دارد.
- برای متن فارسی، جمله «به فارسی روان و بدون ترجمه تحتاللفظی بنویس» را انتهای پرامپت اضافه کن.
- جایخالیها را خالی نگذار؛ اگر مقداری را نمیدانی، به جای حذفش بنویس «فرض کن ...» تا مدل سرخود چیزی از خودش نسازد.
- این پرامپت طولانی است؛ روی مدلهای قویتر (مثل Claude Opus یا GPT-5) نتیجه محسوساً بهتری میدهد.