إنتقل إلى المحتوى الرئيسي

مرجع تهيئة الملف التعريفي

تسرد هذه الصفحة كل إعداد يقبله ملف Sweepy التعريفي. أبقِها مفتوحة أثناء تحرير ملفك التعريفي. وللحصول على جولة إرشادية، راجع إعداد Sweepy بدلًا من ذلك.

مكان الملفات التعريفية​

يقرأ Sweepy الملفات التعريفية من مجلد profiles/ داخل دليل Sweepy. ويستخدم كل ملف تعريفي صيغة YAML، وهي صيغة نصية بسيطة تُنظَّم بالإزاحة والنقطتين. افتح أحدها في Notepad أو VS Code أو أي محرر نصوص لديك.

ابدأ من config.sample.yaml أو من ملف جاهز مثل profiles/paralegal_nyc.yaml. انسخ قالبًا، وأعد تسميته، وحرّر القيم:

الطرفية
copy config.sample.yaml profiles\my_search.yaml
notepad profiles\my_search.yaml

ثم وجّه مسحًا إلى ذلك الملف:

الطرفية
sweepy --profile profiles/my_search.yaml
ملاحظة

يحمل الملف التعريفي تهيئتك كاملة. أنشئ ما تريد من الملفات التعريفية: ملف لكل مدينة أو عائلة وظيفية. ويحفظ Sweepy حالة المسح خارج الملف التعريفي، في ذاكرة الاكتشاف المؤقتة وقاعدة بيانات السجل ومجلدَي logs/ وresults/.

حذر

استخدم المسافات للإزاحة، ولا تستخدم علامات الجدولة قط. يرفض YAML علامات الجدولة، وعلامة جدولة واحدة شاردة تجعل الملف التعريفي كله غير قابل للقراءة.

مثال ملف تعريفي كامل​

يعرض المثال أدناه ملف أليكس التعريفي كاملًا. والأسطر التي تبدأ بـ # تعمل كتعليقات، ويتجاهلها Sweepy:

profiles/paralegal_nyc.yaml
# ─────────────────────────────────────────────────
# Sweepy — Alex's Paralegal Profile (New York City)
# ─────────────────────────────────────────────────

# Your name. It appears in the PDF report header.
name: "Alex Rivera"

# Set true to write rotating debug logs under logs/.
debug: false

# ─── Job search ───────────────────────────────────
search:
# Every title Sweepy searches at the same time.
titles:
- "Paralegal"
- "Legal Assistant"
- "Litigation Support Specialist"
- "Legal Secretary"

# Your target market.
location: "New York, NY"

# true keeps remote roles only. false keeps remote, hybrid, and on-site roles.
remote_only: false

# false removes hybrid roles from every report.
include_hybrid: true

# Annual salary floor. Use 0 to skip salary filtering.
min_salary: 65000

# true reads pay from the posting text when a board omits structured pay.
salary_from_description: true

# ─── Resume ───────────────────────────────────────
resume:
# Path to a PDF or DOCX resume. Forward slashes work on Windows.
path: "Alex_Rivera_Resume.pdf"

# Terms that carry the most weight when Sweepy scores a posting.
must_have_skills:
- "Westlaw"
- "LexisNexis"
- "e-discovery"
- "Contract Review"
- "Legal Research"

# 1.0 is standard. Raise it to reward exact skill matches.
keywords_weight: 1.5

# Interchangeable terms. Sweepy matches every member of a group either way.
synonyms:
- ["e-discovery", "ediscovery", "electronic discovery"]
- ["legal research", "case law research"]
- ["docketing", "case calendaring"]
- ["legal assistant", "legal secretary"]
- ["contract review", "contract analysis", "agreement review"]

# Optional: one resume per role family. Sweepy picks the best fit for each posting.
tracks:
- name: "Paralegal Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Paralegal.pdf"
color: "#1D4ED8"
route_keywords: ["paralegal", "litigation", "e-discovery"]
- name: "Legal Assistant Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Legal_Assistant.pdf"
color: "#7E22CE"
route_keywords: ["legal assistant", "legal secretary", "scheduling"]

# ─── Platforms ────────────────────────────────────
platforms:
greenhouse: true
ashby: true
lever: true
workable: true
aggregators: false

# Extra ATS domains. Sweepy labels matching postings with this name.
custom:
- name: "SmartRecruiters"
domain: "smartrecruiters.com"
enabled: true
- name: "Breezy HR"
domain: "breezy.hr"
enabled: true

# ─── Sources ──────────────────────────────────────
sources:
jobspy:
linkedin: true
indeed: true
glassdoor: true
zip_recruiter: true

# Leave a list empty to fall back to the seed lists in data/sources/.
ashby:
orgs:
- "crosby"
- "normlaw"
- "hargrove-firm"
- "lawhive"
workable:
slugs:
- "shegerianand-associates-1"
- "harper-james"
- "legalvision"
builtinnyc:
enabled: true
categories:
- "jobs/legal"
- "jobs/legal/search/paralegal"

# ─── Cache and history ────────────────────────────
cache:
enabled: true
ttl_seconds: 3600 # reuse discovery results for an hour

history:
enabled: true
retention_days: 4 # hide a reported posting for four days
match: "url+role" # "url" matches only an identical posting address
path: null # null uses ~/.sweepy/history.db

orchestrator:
timeout_per_source_seconds: 180
circuit_breaker:
failure_threshold: 5
cooldown_seconds: 30

# ─── Report layout ────────────────────────────────
report:
style: "cards" # "cards" (default) or "legacy"
cards_per_page: 6 # cards on each PDF page
max_cards: 24 # 0 or less shows every match
destinations: [] # extra folders for a copy of the PDF
assessment: "agent" # "keyword" accepts reports without agent judgments

# ─── Exports ──────────────────────────────────────
export:
format: "pdf,csv,json" # add "png" for page images
output_dir: "results"
tracking: true # job-tracking columns in the CSV
description_chars: 1000 # posting excerpt length in the CSV and JSON

كل الإعدادات​

يعود Sweepy إلى القيم الافتراضية أدناه لأي إعداد تتركه. ولا يزال يحتاج إلى search.titles وsearch.location وresume.path ليعيد تطابقات مفيدة.

القسمالمفتاحمطلوبالافتراضيالوصف
المستوى الأعلىnameلا"Job Seeker"اسمك. يظهر في ترويسة تقرير PDF.
المستوى الأعلىdebugلاfalseاضبطه على true لكتابة سجلات تصحيح متغيرة في logs/.
searchtitlesنعم[]المسميات الوظيفية التي تستهدفها. يبحث Sweepy عن كل مسمى في وقت واحد.
searchlocationنعم""سوقك، مكتوبًا بالصيغة "City, State".
searchremote_onlyلاfalseاضبطه على true لإبقاء الوظائف عن بُعد فقط.
searchinclude_hybridلاtrueاضبطه على false لحذف الوظائف الهجينة.
searchmin_salaryلا0الحد الأدنى للراتب السنوي. القيمة 0 تعطّل المرشح.
searchsalary_from_descriptionلاtrueيقرأ نطاقات الأجر من نص الإعلان عندما لا تنشر المنصة أجرًا مهيكلًا. اضبطه على false لاستخدام الحقول المهيكلة فقط.
resumepathنعم""مسار سيرتك الذاتية بصيغة PDF أو Word (DOCX).
resumemust_have_skillsلا[]المصطلحات التي تحصل على أعلى وزن في الاحتساب.
resumekeywords_weightلا1.0مضاعف تطابقات المهارات. والقيم الأعلى تكافئ التداخل.
resumesynonymsلا[]مجموعات من المصطلحات المتبادلة. راجع مرادفات السيرة الذاتية.
resumetracksلا[]سيرة ذاتية واحدة لكل عائلة وظيفية. راجع مسارات السيرة الذاتية.
resume.tracks[]nameنعملا ينطبقالتسمية المعروضة على بطاقة التقرير وفي شارة المسار.
resume.tracks[]pathنعملا ينطبقمسار السيرة الذاتية لذلك المسار بصيغة PDF أو DOCX.
resume.tracks[]colorلا#1D4ED8لون الشارة كرمز سادس عشري أو اسم لون مثل navy.
resume.tracks[]route_keywordsلا[]كلمات مفتاحية تسند إعلانًا إلى هذا المسار.
platformsgreenhouseلاtrueتشغيل عمليات بحث Greenhouse.
platformsashbyلاtrueتشغيل عمليات بحث Ashby.
platformsleverلاtrueتشغيل عمليات بحث Lever.
platformsworkableلاtrueتشغيل عمليات بحث Workable.
platformsaggregatorsلاfalseتشغيل تغذيات المجمّعات المجانية مثل Remotive وAdzuna.
platformscustomلا[]نطاقات إضافية لأنظمة تتبع المتقدمين (ATS). ويأخذ كل إدخال name وdomain وenabled.
sourcesjobspy.linkedinلاtrueالاستعلام من LinkedIn عبر python-jobspy.
sourcesjobspy.indeedلاtrueالاستعلام من Indeed عبر python-jobspy.
sourcesjobspy.glassdoorلاtrueالاستعلام من Glassdoor عبر python-jobspy.
sourcesjobspy.zip_recruiterلاtrueالاستعلام من ZipRecruiter عبر python-jobspy.
sourcesgreenhouse.enabledلاtrueيفتح مصدر Greenhouse أو يغلقه.
sourcesgreenhouse.boardsلا[]رموز منصات Greenhouse. والفراغ يعود إلى data/sources/greenhouse_boards.txt.
sourcesashby.enabledلاtrueيفتح مصدر Ashby أو يغلقه.
sourcesashby.orgsلا[]معرّفات مؤسسات Ashby. والفراغ يعود إلى data/sources/ashby_orgs.txt.
sourceslever.enabledلاtrueيفتح مصدر Lever أو يغلقه.
sourceslever.companiesلا[]رموز شركات Lever. والفراغ يعود إلى data/sources/lever_companies.txt.
sourcesworkable.enabledلاtrueيفتح مصدر Workable أو يغلقه.
sourcesworkable.slugsلا[]معرّفات حسابات Workable. والفراغ يعود إلى data/sources/workable_slugs.txt.
sourcesbuiltinnyc.enabledلاtrueيفتح مصدر Built In NYC أو يغلقه.
sourcesbuiltinnyc.categoriesلا[]مسارات فئات Built In NYC مثل jobs/legal. والفراغ يعود إلى data/sources/builtin_categories.txt.
sourcesbuiltinnyc.detail_pagesلاfalseيقرأ النص الكامل لكل إعلان من صفحة تفاصيله. وتتصدى Built In لتلك الصفحات بعد بضع طلبات، فيجلب Sweepy صفحة واحدة في كل مرة ويتوقف عند أول تصدٍّ. ولا يزال الإعلان يوفر الشركة والموقع والأجر.
sourcesenabledلا["jobspy", "ats"]المحركات التي تعمل. أضف hirehunt أو openroles أو jobdrop أو apify بعد تثبيت كل منها. راجع المصادر والمنصات.
sourcesjobspy.sitesلا["linkedin", "indeed", "glassdoor", "zip_recruiter"]منصات JobSpy كقائمة. وتتقدم على القيم المنطقية بنمط jobspy.linkedin.
sourcesjobspy.fetch_descriptionsلاtrueيجلب نص الإعلان كاملًا للاحتساب. اضبطه على false لعمليات مسح أسرع بنتائج أضعف.
sourcesjobspy.proxiesلا[]أهداف الوسيط المكتوبة بالصيغة user:pass@host:port. وتبقى بيانات اعتماد الوسيط على جهازك.
sourcesjobspy.user_agentلاnullوكيل المستخدم لطلبات JobSpy. اتركه ليُستخدم وكيل Chrome المدمج.
cacheenabledلاtrueيعيد استخدام نتائج الاكتشاف بين عمليات المسح.
cachettl_secondsلا3600عدد الثواني التي يعيد فيها Sweepy استخدام نتيجة مخزنة.
cachepathلاnullموقع قاعدة بيانات الذاكرة المؤقتة. والقيمة null تستخدم ~/.sweepy/cache.db، ويتجاوز SWEEPY_CACHE_PATH الاثنين.
historyenabledلاtrueيخفي الإعلانات التي أبلغت عنها عمليات مسح سابقة.
historyretention_daysلا4عدد الأيام التي يخفي فيها Sweepy إعلانًا أُبلغ عنه قبل أن يظهر مرة أخرى.
historymatchلا"url+role"القيمة url تطابق عنوان إعلان مطابقًا فقط. وurl+role تطابق أيضًا المسمى والشركة والموقع أنفسهم على منصة أخرى.
historypathلاnullموقع قاعدة بيانات السجل. والقيمة null تستخدم ~/.sweepy/history.db، ويتجاوز SWEEPY_HISTORY_PATH الاثنين.
orchestratortimeout_per_source_secondsلا180عدد الثواني التي يجوز لمصدر واحد أن يعمل فيها قبل أن يوقفه Sweepy.
orchestratorcircuit_breaker.failure_thresholdلا5عدد الإخفاقات المتتالية قبل أن يتجاوز Sweepy ذلك المصدر.
orchestratorcircuit_breaker.cooldown_secondsلا30عدد الثواني التي ينتظرها Sweepy قبل إعادة محاولة مصدر متجاوَز.
reportstyleلا"cards"تخطيط التقرير: cards أو legacy.
reportcards_per_pageلا6عدد البطاقات الموضوعة في كل صفحة PDF.
reportmax_cardsلا24أعلى عدد للبطاقات. والقيمة 0 أو أقل تعرض كل تطابق.
reportdestinationsلا[]مجلدات إضافية تتلقى نسخة من ملفات PDF وPNG.
reportassessmentلا"agent"القيمة agent تمنع التقرير ما دامت أي بطاقة تحمل تداخل كلمات مفتاحية وحده. وkeyword تسمح بتقارير دون تقييمات الوكيل.
exportformatلا"pdf,csv"أي مزيج من pdf وcsv وjson وpng، مفصولًا بفواصل.
exportoutput_dirلا"results"مجلد ملفات تقريرك. وينشئه Sweepy عند غيابه.
exporttrackingلاtrueيضيف أعمدة تتبع الوظائف إلى CSV: date_applied وstatus وinterview_stage وoffer_amount وoffer_date وfollow_up_date وcontact وnotes. وينقل Sweepy القيم التي تدخلها إلى عمليات المسح اللاحقة للملف التعريفي نفسه. اضبطه على false للبيانات الخام فقط.
exportdescription_charsلا1000عدد أحرف نص الإعلان المحفوظة في CSV وJSON. ويقطعها Sweepy عند حد جملة. والقيمة 0 تحفظ الإعلان كاملًا.
تلميح

تظهر التفاصيل عن المصادر ودعم المنصات في المصادر والمنصات. وتشرح قواعد الفتح هناك كيف تعمل platforms.* وsources.* معًا. وتعيش الكتل الاختيارية hirehunt وopenroles وjobdrop وapify تحت sources أيضًا، ويسرد مرجع الأوامر المفاتيح التي تضبط مفاتيحها.

مسارات السيرة الذاتية​

المسار سيرة ذاتية مسماة. استخدم المسارات عندما تستهدف وظيفتين أو مسمىين مختلفين وتريد احتساب كل إعلان مقابل المستند الصحيح.

profiles/paralegal_nyc.yaml
resume:
tracks:
- name: "Paralegal Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Paralegal.pdf"
color: "#1D4ED8"
route_keywords: ["paralegal", "litigation", "e-discovery"]
- name: "Legal Assistant Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Legal_Assistant.pdf"
color: "#7E22CE"
route_keywords: ["legal assistant", "legal secretary", "scheduling"]

يأخذ كل إدخال أربعة حقول:

  • name يسمّي المسار. وتعرض بطاقة التقرير هذه التسمية، فاكتب كلمة أو كلمتين.
  • path يشير إلى ملف السيرة الذاتية لذلك المسار بصيغة PDF أو DOCX.
  • color يضبط لون الشارة. استخدم رمزًا سادس عشريًا مثل #1D4ED8، أو اسم لون مثل navy.
  • route_keywords تحدد الإعلانات التي يسندها Sweepy إلى هذا المسار.

يوجّه Sweepy كل إعلان بحسب تداخل الكلمات المفتاحية. ويعدّ التطابقات الكاملة للكلمات بين عنوان الإعلان ووصفه وبين route_keywords لكل مسار. ويسند Sweepy الإعلان إلى المسار ذي أعلى عدد. وعندما يتعادل مساران، يستخدم Sweepy الأول في قائمتك.

تلميح

ترسل route_keywords الإعلان إلى سيرة ذاتية، ولا تغيّر نسبة التطابق قط. أضف العبارات التي تستخدمها كل عائلة وظيفية فعلًا في إعلاناتها.

إذا تركت tracks، استخدم Sweepy resume.path كمسار ضمني واحد.

مرادفات السيرة الذاتية​

تحمل resume.synonyms مجموعات من الكلمات التي تعني الشيء نفسه. ويعامل Sweepy كل كلمة في المجموعة كمساوية للأخرى. فتعمل المطابقة في الاتجاهين. راجع إضافة مصطلحات خاصة بمجالك لقائمة التنسيق الأوسع.

profiles/paralegal_nyc.yaml
resume:
synonyms:
- ["e-discovery", "ediscovery", "electronic discovery"]
- ["legal research", "case law research"]
- ["docketing", "case calendaring"]
- ["legal assistant", "legal secretary"]
- ["contract review", "contract analysis", "agreement review"]

تحتاج المجموعة إلى مصطلحين على الأقل، وإلا تجاهلها Sweepy. ويتجاهل الاحتساب حالة الأحرف ويتعامل مع صيغ المفرد والجمع المنتظمة. ولا يزال المحرك يطابق العبارات كاملة، فاسرد legal research وlegal researcher كمصطلحين منفصلين عندما تريد احتساب الاثنين.

يكتب أليكس e-discovery على سيرة ذاتية. والإعلان الذي يقول electronic discovery يطابقها الآن، لأن المصطلحين ينتميان إلى المجموعة نفسها.

تلميح

أضف مجموعة كلما لاحظت الخطأ نفسه مرتين. انسخ صياغة الإعلان الحرفية إلى المجموعة بجانب مصطلحك.

أخطاء تنسيق شائعة​

تعود معظم الملفات التعريفية المعطوبة إلى خطأين شائعين.

مسارات Windows تحتاج إلى شرطات مائلة أو شرطات مائلة عكسية مزدوجة. يقرأ YAML الشرطة المائلة العكسية الواحدة كمحرف إفلات. ومسار مثل C:\Users\Alex سيفسد الملف.

profiles/paralegal_nyc.yaml
resume:
path: "C:/Users/Alex/Documents/Alex_Rivera_Resume.pdf" # ✅ works
# path: "C:\\Users\\Alex\\Documents\\Alex_Rivera_Resume.pdf" # ✅ also works
# path: "C:\Users\Alex\Documents\Alex_Rivera_Resume.pdf" # ❌ breaks YAML
حذر

شرطة مائلة عكسية واحدة شاردة في مسار تمنع Sweepy من قراءة ملفك التعريفي. ويكتب معالج الإعداد شرطات مائلة لك، فانسخ ذلك النمط عندما تحرّر يدويًا.

التعليقات تبدأ بـ #. يتجاهل Sweepy كل ما يأتي بعد # في ذلك السطر. واستخدم التعليقات لتدوين سبب أهمية قيمة ما، كما يفعل الملف التعريفي المثال.

الإزاحة تحدد البنية. أزح كل مستوى بمسافتين. وعلامة جدولة واحدة في أي مكان بالملف تفسد YAML.