skilldrop-cli 0.16.7 → 0.16.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +1 -1
  2. package/catalogue.json +3 -2
  3. package/model-routing.json +4 -0
  4. package/package.json +1 -1
  5. package/packs/career/loops/apply/LOOP.md +19 -10
  6. package/packs/career/loops/apply/loop.json +9 -3
  7. package/packs/career/pack.json +27 -7
  8. package/packs/career/skills/application-form-answers/SKILL.md +146 -0
  9. package/packs/career/skills/application-form-answers/evals/eval_queries.json +34 -0
  10. package/packs/career/skills/application-form-answers/evals/evals.json +103 -0
  11. package/packs/career/skills/application-form-answers/evals/files/1/form.md +17 -0
  12. package/packs/career/skills/application-form-answers/evals/files/1/posting.md +20 -0
  13. package/packs/career/skills/application-form-answers/evals/files/1/resume.md +32 -0
  14. package/packs/career/skills/application-form-answers/evals/files/2/form.md +15 -0
  15. package/packs/career/skills/application-form-answers/evals/files/2/posting.md +21 -0
  16. package/packs/career/skills/application-form-answers/evals/files/2/resume.md +32 -0
  17. package/packs/career/skills/application-form-answers/evals/files/4/form.md +14 -0
  18. package/packs/career/skills/application-form-answers/evals/files/4/posting.md +25 -0
  19. package/packs/career/skills/application-form-answers/evals/files/4/resume.md +29 -0
  20. package/packs/career/skills/application-form-answers/evals/files/5/form.md +15 -0
  21. package/packs/career/skills/application-form-answers/evals/files/5/posting.md +18 -0
  22. package/packs/career/skills/application-form-answers/evals/files/5/resume.md +23 -0
  23. package/packs/career/skills/application-form-answers/evals/files/6/form.md +11 -0
  24. package/packs/career/skills/application-form-answers/evals/files/6/posting.md +28 -0
  25. package/packs/career/skills/application-form-answers/evals/files/6/resume.md +35 -0
  26. package/packs/career/skills/application-form-answers/evals/files/7/form.md +11 -0
  27. package/packs/career/skills/application-form-answers/evals/files/7/posting.md +19 -0
  28. package/packs/career/skills/application-form-answers/evals/files/7/resume.md +26 -0
  29. package/packs/career/skills/application-form-answers/manifest.json +31 -0
  30. package/packs/career/skills/cover-letter/scripts/claim_check.py +7 -4
  31. package/packs/career/skills/job-fit-analysis/SKILL.md +26 -10
  32. package/packs/career/skills/job-fit-analysis/evals/evals.json +26 -0
  33. package/packs/career/skills/job-fit-analysis/evals/files/6/linkedin-about.txt +5 -0
  34. package/packs/career/skills/job-fit-analysis/evals/files/6/posting.md +25 -0
  35. package/packs/career/skills/job-fit-analysis/evals/files/6/resume.md +35 -0
  36. package/packs/career/skills/job-fit-analysis/evals/files/7/resume.md +32 -0
  37. package/packs/career/skills/job-fit-analysis/manifest.json +1 -1
  38. package/packs/career/skills/resume-tailor/SKILL.md +37 -9
  39. package/packs/career/skills/resume-tailor/evals/evals.json +28 -0
  40. package/packs/career/skills/resume-tailor/evals/files/8/posting.md +25 -0
  41. package/packs/career/skills/resume-tailor/evals/files/8/resume.typ +31 -0
  42. package/packs/career/skills/resume-tailor/evals/files/9/linkedin-about.txt +5 -0
  43. package/packs/career/skills/resume-tailor/evals/files/9/posting.md +25 -0
  44. package/packs/career/skills/resume-tailor/evals/files/9/resume.md +35 -0
  45. package/packs/career/skills/resume-tailor/manifest.json +1 -1
  46. package/packs/career/skills/resume-tailor/scripts/claim_check.py +7 -4
@@ -0,0 +1,32 @@
1
+ # Helen Brooks
2
+
3
+ Bristol · helen.brooks@example.com
4
+
5
+ ## Employment
6
+
7
+ **Teacher of Geography** — Ashcombe Academy, Bristol
8
+ September 2022 – present
9
+
10
+ - Teach geography to ages 11–18; six classes a week at exam level.
11
+ - Redesigned the Year 9 scheme of work around four enquiry questions, working back from the end-of-year assessment.
12
+ - Built the department's online revision course in Moodle: 14 units with quizzes and short recorded explanations.
13
+ - Run two training sessions a year for colleagues on using Moodle quizzes.
14
+
15
+ **Career break** — full-time carer for a family member
16
+ August 2020 – August 2022
17
+
18
+ **Teacher of Geography, then Head of Geography (from 2015)** — St Oswald's School, Bath
19
+ September 2009 – July 2020
20
+
21
+ - Led a department of 5 teachers; wrote the department's schemes of work for ages 11–16.
22
+ - Introduced fieldwork booklets that students complete on a tablet.
23
+ - Mentored 6 trainee teachers through their placements.
24
+
25
+ ## Education
26
+
27
+ - PGCE Secondary Geography, University of Exeter, 2009
28
+ - BA Geography, University of Sheffield, 2008
29
+
30
+ ## Tools
31
+
32
+ Moodle, Google Classroom, Google Slides, Canva, Audacity
@@ -0,0 +1,14 @@
1
+ Orrell Leisure Group - Finance Analyst - online application
2
+
3
+ 1. Name (required)
4
+ 2. Email (required)
5
+ 3. Current or most recent job title (required)
6
+ 4. Current salary (required)
7
+ 5. Salary expectation (required)
8
+ 6. Which accounting qualification do you hold? Select one: AAT Level 2 / AAT Level 3 / AAT Level 4 / ACCA or CIMA part-qualified / ACCA or CIMA qualified / None (required)
9
+ 7. Years of experience preparing management accounts (number, required)
10
+ 8. Rate your Power BI skills: None / Beginner / Intermediate / Advanced (required)
11
+ 9. Tell us about a piece of analysis you built and who used it. (max 120 words, required)
12
+ 10. Why Orrell? (max 100 words)
13
+ 11. Do you have the right to work in the UK? (required)
14
+ 12. Are you related to anyone who works at Orrell? (required)
@@ -0,0 +1,25 @@
1
+ # Finance Analyst
2
+
3
+ **Orrell Leisure Group** · Birmingham · £36,000 – £40,000
4
+
5
+ Orrell runs 22 gyms across the Midlands. The Finance Analyst reports to the Financial Controller and produces the monthly management pack for site managers.
6
+
7
+ ## What you'll do
8
+
9
+ - Build the monthly management accounts pack: variance to budget by site, with commentary
10
+ - Own the month-end close for payroll and utilities accruals
11
+ - Maintain the site-level budget model and reforecast each quarter
12
+ - Build dashboards in Power BI for the operations team
13
+
14
+ ## What we need
15
+
16
+ - Part-qualified ACCA or CIMA, or AAT Level 4 complete
17
+ - At least 2 years in a management accounts or analyst role
18
+ - Advanced Excel (pivot tables, lookups, modelling)
19
+ - Experience preparing variance analysis and budget commentary
20
+ - Experience with Power BI or a similar reporting tool
21
+
22
+ ## Nice to have
23
+
24
+ - Experience in a multi-site business
25
+ - Experience with Sage or NetSuite
@@ -0,0 +1,29 @@
1
+ # Grace Mbeki
2
+
3
+ Birmingham · grace.mbeki@example.com · 07700 900455
4
+
5
+ ## Work
6
+
7
+ **Accounts Payable Clerk** — Halden Building Supplies, Birmingham
8
+ February 2021 – present
9
+
10
+ - Process around 400 supplier invoices a month in Sage 200, matching each to its purchase order and delivery note.
11
+ - Reconcile 60 supplier statements each month and chase the differences.
12
+ - Prepare the fortnightly payment run for the Finance Manager to approve.
13
+ - Built an Excel workbook (pivot tables and lookups) that lists invoices on hold by reason; the purchasing team now uses it every week.
14
+ - Support month-end by posting accruals for goods received and not yet invoiced.
15
+
16
+ **Finance Administrator** — Corrin Dental Group, Solihull
17
+ September 2018 – January 2021
18
+
19
+ - Raised sales invoices, banked receipts and kept the petty cash for four practices.
20
+
21
+ ## Qualifications
22
+
23
+ - AAT Level 3 Diploma in Accounting, 2020
24
+ - Studying AAT Level 4; two of five units passed
25
+ - A levels: Mathematics (B), Economics (C), 2018
26
+
27
+ ## Tools
28
+
29
+ Sage 200, Excel, Microsoft Teams
@@ -0,0 +1,15 @@
1
+ Calder House Hotel: Head Chef application
2
+
3
+ Name:
4
+ Phone:
5
+ Current position and employer:
6
+ Highest food safety qualification held, and the year:
7
+ Largest brigade you have led (number of chefs):
8
+ Largest number of covers you have run a service for:
9
+ Describe your experience of menu costing and the gross profit you have worked to (up to 150 words):
10
+ Do you need live-in accommodation? Yes / No
11
+ Do you hold a full UK driving licence? Yes / No
12
+ Do you have any unspent criminal convictions? Yes / No
13
+ When could you start?
14
+ Referee 1 (name, position, contact):
15
+ Referee 2 (name, position, contact):
@@ -0,0 +1,18 @@
1
+ Head Chef
2
+ Calder House Hotel, Peebles - 62 bedrooms, restaurant and events
3
+
4
+ You will lead the kitchen for our 120-cover restaurant and for weddings and events of up to 180 guests.
5
+
6
+ Requirements
7
+ - Level 3 Food Safety (Supervising Food Safety in Catering)
8
+ - Experience as a head chef, or as a sous chef with full responsibility for a kitchen
9
+ - Experience leading a team of 12 or more
10
+ - Menu design and costing to a gross profit target of 70%
11
+ - Experience of banqueting and events
12
+ - Stock control and supplier management
13
+
14
+ Desirable
15
+ - Experience in a hotel kitchen
16
+ - Experience with Procure Wizard or a similar ordering system
17
+
18
+ Salary 48,000 pounds plus tronc. Live-in available.
@@ -0,0 +1,23 @@
1
+ LEO TANAKA
2
+ Edinburgh | leo.tanaka@example.com | 07700 900271
3
+
4
+ Sous Chef, The Larder at Queensgate (80-cover restaurant), Edinburgh
5
+ May 2022 - present
6
+ - Run the kitchen on the head chef's two days off each week.
7
+ - Lead a brigade of 6 on service.
8
+ - Write and cost the weekly specials; do the fish and vegetable orders.
9
+ - Trained 3 commis chefs, one now a chef de partie.
10
+ - Keep the allergen matrix up to date for every menu change.
11
+ - Environmental health inspection in 2025: rated 5.
12
+
13
+ Chef de Partie, Harbour Rooms Hotel, Leith
14
+ March 2019 - April 2022
15
+ - Ran the sauce section; covered banqueting for weddings in summer.
16
+
17
+ Commis Chef, Harbour Rooms Hotel, Leith
18
+ August 2017 - March 2019
19
+
20
+ TRAINING
21
+ SVQ Level 3 Professional Cookery, Edinburgh College, 2019
22
+ Level 2 Food Safety and Hygiene for Catering, renewed 2024
23
+ Allergen awareness training, 2024
@@ -0,0 +1,11 @@
1
+ Northfield General Hospital - Clinical Nurse Educator - application questions
2
+
3
+ A. NMC PIN and date of first registration:
4
+ B. Current band:
5
+ C. How many years have you spent teaching, precepting or mentoring clinical staff?
6
+ D. Which electronic patient record systems have you used? (tick all that apply) [ ] Epic [ ] Cerner [ ] SystmOne [ ] Other
7
+ E. Do you hold a Basic Life Support instructor certificate? Yes / No
8
+ F. Describe a teaching resource you have written and how it was used. (max 120 words)
9
+ G. Are you currently subject to any fitness to practise proceedings? Yes / No
10
+ H. Do you require a Certificate of Sponsorship to work in the UK? Yes / No
11
+ I. Have you had an occupational health clearance in the last 12 months? Yes / No
@@ -0,0 +1,28 @@
1
+ # Clinical Nurse Educator — Surgical Division
2
+
3
+ **Northfield General Hospital** · Full time, permanent · Band 6
4
+
5
+ Northfield General is a 320-bed teaching hospital. The Surgical Division's education team supports 240 nursing staff across five wards.
6
+
7
+ ## The role
8
+
9
+ You will plan and deliver clinical education for surgical nursing staff: induction for new starters, annual skills updates, and ward-based teaching after incidents and audits.
10
+
11
+ ## You must have
12
+
13
+ - Current NMC registration (adult)
14
+ - A nursing degree
15
+ - At least 2 years' experience teaching, precepting or mentoring clinical staff
16
+ - At least 3 years' post-registration experience in an acute surgical or medical-surgical setting
17
+ - Experience using Epic, including supporting colleagues with it
18
+
19
+ ## It would help if you have
20
+
21
+ - A master's degree in nursing or education, or to be working towards one
22
+ - Basic Life Support instructor certification
23
+ - Experience running sessions in a simulation lab
24
+ - Experience writing teaching materials or guidelines
25
+
26
+ ## How to apply
27
+
28
+ Send a CV and a cover letter of no more than one page to the Surgical Education Lead. Closing date 24 October 2026.
@@ -0,0 +1,35 @@
1
+ # Maya Okafor, RN, BSN
2
+
3
+ Leeds, UK · maya.okafor@example.com · 07700 900142
4
+
5
+ ## Profile
6
+
7
+ Registered nurse with six years on an acute medical-surgical ward. Charge nurse on rotation since 2023.
8
+
9
+ ## Experience
10
+
11
+ **Staff Nurse, then Charge Nurse (rotating)** — Ward 14 Medical-Surgical, Aldermoor Hospital
12
+ August 2020 – present
13
+
14
+ - Care for up to 6 post-operative and acute medical patients per shift on a 28-bed ward.
15
+ - Take charge of the ward on rotation since March 2023: staffing, bed flow and escalation.
16
+ - Precept newly qualified nurses through their first 12 weeks; 9 preceptees so far.
17
+ - Wrote the ward's one-page guide to the sepsis screening tool and walked each shift through it at handover.
18
+ - Document in Cerner; ward superuser for the Cerner medication administration module since 2022.
19
+ - Member of the falls prevention working group.
20
+
21
+ **Healthcare Assistant** — Rowan Court Care Home
22
+ June 2017 – July 2020 (part time during degree)
23
+
24
+ - Personal care, observations and mealtime support for 30 residents.
25
+
26
+ ## Education and registration
27
+
28
+ - BSc (Hons) Adult Nursing, University of Bradford, 2020
29
+ - NMC registered nurse (adult), registered 2020
30
+ - Mentorship and Assessment in Practice module, 2022
31
+ - Basic Life Support provider, renewed January 2026
32
+
33
+ ## Other
34
+
35
+ - Volunteer first aider, Leeds 10K, 2023 and 2024
@@ -0,0 +1,11 @@
1
+ # Tidewell Outdoor Co. application: Marketing Assistant
2
+
3
+ 1. Name
4
+ 2. Email
5
+ 3. Which of these have you used? Google Analytics / HubSpot / Mailchimp / Canva / Adobe Express (list all that apply)
6
+ 4. How many months of marketing experience do you have, including internships?
7
+ 5. Share a social media campaign you ran and its results. (max 150 words)
8
+ 6. Can you work from our Manchester office three days a week? Yes / No
9
+ 7. What salary are you looking for?
10
+ 8. When did you or will you graduate, and with what result?
11
+ 9. Anything else you'd like us to know? (optional)
@@ -0,0 +1,19 @@
1
+ Marketing Assistant
2
+ Tidewell Outdoor Co. — Manchester (hybrid, 3 days in the office)
3
+
4
+ We make waterproof bags and sell them online and through 40 independent shops.
5
+
6
+ You will:
7
+ - Schedule and write social media posts across Instagram, TikTok and Facebook
8
+ - Help build the monthly email newsletter in HubSpot
9
+ - Pull weekly numbers from Google Analytics for the marketing meeting
10
+ - Support product photo shoots and trade shows
11
+
12
+ You have:
13
+ - At least 1 year of marketing experience (internships count)
14
+ - Experience running social media campaigns with measurable results
15
+ - Confident with Canva or Adobe Express
16
+ - Experience with Google Analytics and an email marketing tool such as HubSpot or Mailchimp
17
+ - A degree in marketing, communications or similar
18
+
19
+ Salary £24,000. Apply with a CV and short cover note.
@@ -0,0 +1,26 @@
1
+ PRIYA NAIR
2
+ Manchester · priya.nair@example.com · 07700 900318
3
+
4
+ EDUCATION
5
+ BA (Hons) Communications, 2:1 — University of Salford, 2023–2026
6
+ Dissertation: how local charities use short-form video
7
+
8
+ EXPERIENCE
9
+
10
+ Communications Intern — Greater Manchester Food Network (charity)
11
+ June 2025 – August 2025 (10 weeks)
12
+ - Wrote the fortnightly supporter newsletter.
13
+ - Made event posters and social media graphics in Canva.
14
+ - Interviewed three volunteers and wrote up their stories for the website.
15
+
16
+ Social Media Officer (volunteer) — Salford Film Society
17
+ September 2024 – June 2026
18
+ - Ran the society's Instagram account and posted before every screening.
19
+ - Started a weekly "what we're watching" reel.
20
+
21
+ Barista — Corner Grind Coffee
22
+ October 2023 – present (weekends)
23
+ - Serve customers, cash up, and train new weekend staff.
24
+
25
+ SKILLS
26
+ Canva, Instagram and TikTok, Microsoft Word and PowerPoint, basic video editing in CapCut
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "application-form-answers",
3
+ "version": "0.1.0",
4
+ "description": "Prepare the answers to a job application form from the person's resume: each question in the form's own order with either a drafted answer and the resume line behind it, or a note that it is theirs alone to answer (right to work, sponsorship, salary, declarations, monitoring questions), plus the questions that could screen the application out and the ones their resume already bears on. Works for any occupation. Use when the user says \"help me fill in this application form\", \"answer these application questions\", \"what do I put for these screening questions\", or pastes the questions from an online job application.",
5
+ "entrypoint": "SKILL.md",
6
+ "deps": {
7
+ "npm": [],
8
+ "pip": []
9
+ },
10
+ "env": {
11
+ "required": [],
12
+ "optional": []
13
+ },
14
+ "related": [
15
+ "cover-letter",
16
+ "job-fit-analysis",
17
+ "resume-tailor"
18
+ ],
19
+ "tags": [
20
+ "job-application",
21
+ "application-form",
22
+ "screening-questions",
23
+ "resume",
24
+ "career",
25
+ "job-search"
26
+ ],
27
+ "model": {
28
+ "tier": "standard",
29
+ "rationale": "Sorts questions into three kinds and drafts short answers from the resume. The hard rule is mechanical: a declaration is never answered for the person."
30
+ }
31
+ }
@@ -31,7 +31,7 @@ MULT = {"k": 1e3, "thousand": 1e3, "m": 1e6, "mm": 1e6, "million": 1e6,
31
31
  "bn": 1e9, "b": 1e9, "billion": 1e9}
32
32
  NUMBER = re.compile(r"(?<![\w.])(\d[\d,]*(?:\.\d+)?)(?:(k|mm|m|bn|b)\b|\s?(thousand|million|billion)\b)?"
33
33
  r"(\s?%|\s?percent\b|\s?per cent\b)?", re.I)
34
- WORD = re.compile(r"\.?[A-Za-z][A-Za-z0-9+#']*(?:\.[A-Za-z0-9]+)*")
34
+ WORD = re.compile(r"(?<![A-Za-z0-9])\.?[A-Za-z][A-Za-z0-9+#']*(?:\.[A-Za-z0-9]+)*")
35
35
  LIST_MARK = re.compile(r"^\s*(?:[-*•–>]+|\d+[.)]|#+|\|)\s*")
36
36
  LINK = re.compile(r"\[([^\]]*)\]\([^)]*\)")
37
37
  SUFFIXES = ("ations", "ation", "ments", "ment", "ings", "ing", "ers", "ies", "ed", "er", "es", "s", "ly")
@@ -73,8 +73,11 @@ def read(path):
73
73
 
74
74
 
75
75
  def clean(line):
76
- """A line with its markdown removed, so `**Go**` and `Go` read the same."""
76
+ """A line with its markup removed, so `**Go**` and `Go` read the same. Resumes kept as
77
+ Typst or LaTeX source escape `$`, `&`, `%` and `#`; the escapes are dropped too."""
77
78
  line = LINK.sub(r"\1", line)
79
+ line = re.sub(r"\\([$&%#_])", r"\1", line)
80
+ line = re.sub(r"(?<![$£€\w.,])\d+(?:\.\d+)?(?:em|mm|pt|cm|px|fr)\b", " ", line) # layout lengths
78
81
  line = line.replace("’", "'").replace("‘", "'").replace("–", " - ").replace("—", " - ")
79
82
  return re.sub(r"[*_`~]", "", line)
80
83
 
@@ -133,7 +136,7 @@ def phrases(line):
133
136
  so it only counts when it is name-shaped itself or opens a longer capitalised run."""
134
137
  text = LIST_MARK.sub("", clean(line))
135
138
  out, run, start_of_sentence = [], [], True
136
- tokens = re.findall(r"\.?[A-Za-z][A-Za-z0-9+#']*(?:\.[A-Za-z0-9]+)*|&|[.!?;:]\s|[,|·/()]|\s-\s", text + " ")
139
+ tokens = re.findall(r"(?<![A-Za-z0-9])\.?[A-Za-z][A-Za-z0-9+#']*(?:\.[A-Za-z0-9]+)*|&|[.!?;:]\s|[,|·/()]|\s-\s", text + " ")
137
140
  for i, tok in enumerate(tokens):
138
141
  if not (tok[0].isalpha() or tok[0] in ".&") or tok.strip() in (".", "!", "?", ";", ":"):
139
142
  if run:
@@ -200,7 +203,7 @@ def check(draft, sources, posting):
200
203
  if missing:
201
204
  add("name", " ".join(words), n, raw, all(key(w) in post_names for w in missing))
202
205
  elif len(content) > 1 and all(w.lower() not in PLAIN for w in content):
203
- flat = " ".join(key(w) for w in words)
206
+ flat = " ".join(key(w) for w in words if w != "&")
204
207
  if " " + flat + " " not in src_flat:
205
208
  add("combination", " ".join(words), n, raw)
206
209
  if posting:
@@ -25,18 +25,29 @@ These four rules outrank the steps below.
25
25
  "the candidate". Plain words, no scoring jargon, no mention of this skill. When they gave
26
26
  you a few lines and no resume, say "what you told me", never "your resume".
27
27
 
28
- 1. **Read the posting and list its requirements.** Keep the employer's own wording. Sort
28
+ 1. **Read everything the person gave you.** The resume is the main evidence, and so is
29
+ any other file of theirs they point to or that sits beside it: a LinkedIn summary, a
30
+ portfolio page, a project's README. Evidence from one of those counts in full: mark the
31
+ requirement `Met` or `Partly` on the strength of it, say where it came from, and say it
32
+ is not on the resume yet, because the employer will only see the resume.
33
+
34
+ When the posting is a link, read the full text. If you cannot open it, say so in one line
35
+ and ask for the text pasted in. Give no verdict and list no requirements for a posting you
36
+ have not read, and never rebuild one from what you remember of the employer. Do not guess
37
+ at why the link would not open.
38
+
39
+ 2. **List the posting's requirements.** Keep the employer's own wording. Sort
29
40
  them into what the posting calls required and what it calls preferred. When the posting
30
41
  doesn't say, treat what it lists first or repeats as required, and say you inferred it.
31
42
 
32
- 2. **Find what could get the application rejected.** Two kinds of requirement do it: the
43
+ 3. **Find what could get the application rejected.** Two kinds of requirement do it: the
33
44
  ones a recruiter or an application form checks before anyone reads the rest (a licence or
34
45
  registration, a degree, a certification, a minimum number of years, the right to work,
35
46
  location or shift, a clearance, a language), and any other required item the resume does
36
47
  not meet, such as a named system the posting lists under "must have". These go first,
37
48
  because one of them outweighs five met skills.
38
49
 
39
- 3. **Mark each requirement against the resume** with one of four words:
50
+ 4. **Mark each requirement against the evidence** with one of four words:
40
51
  - **Met**: the resume shows it. Quote the line.
41
52
  - **Partly**: the resume shows something close, smaller or older. Say what it shows and
42
53
  what is short: "team of 12; the posting asks for 20 or more".
@@ -54,7 +65,7 @@ These four rules outrank the steps below.
54
65
  date, mark it `Partly`, say the resume doesn't show how long, and ask. Never state a
55
66
  duration you worked out from a neighbouring date.
56
67
 
57
- 4. **Give a verdict the person can act on.** Open with a plain sentence that says whether
68
+ 5. **Give a verdict the person can act on.** Open with a plain sentence that says whether
58
69
  to apply, in the terms they asked ("Yes, apply", "Apply, but expect the degree to be a
59
70
  problem", "Probably not worth your weekend unless..."), then one of four labels and the
60
71
  reason:
@@ -65,24 +76,28 @@ These four rules outrank the steps below.
65
76
  true for it to be worth the time, and whether you would still send it.
66
77
  - **Not a match**: a requirement that cannot be worked around is unmet, such as a licence.
67
78
 
68
- The opening sentence counts every required item that is `Not met` or `Partly`, not only
69
- the worst one: "four of the six required items aren't met: the degree, the team size,
79
+ Write the table first and take the count from it. The opening sentence counts every
80
+ required item that is `Not met` or `Partly`, not only the worst one: "four of the six required items aren't met: the degree, the team size,
70
81
  advanced Excel and SAP". It must agree with the table below it. Give the verdict on what
71
82
  you know now; say what answer would raise it, but do not make the verdict wait on the
72
83
  answer. Do not soften a long shot into encouragement, do not harden a workable gap into a
73
84
  refusal, and do not give a percentage.
74
85
 
75
- 5. **Say what to bring forward.** List the two to four things already in the resume that
86
+ 6. **Say what to bring forward.** List the two to four things already in the resume that
76
87
  answer the posting best and are buried, understated or worded differently from the
77
88
  posting. Give the resume's wording and the posting's wording side by side.
78
89
 
79
- 6. **Close with what to do next**, in two to four lines: what to lead the application with,
90
+ 7. **Close with what to do next**, in two to four lines: what to lead the application with,
80
91
  what to say about the main gap, and the one or two questions whose answers would change
81
- the verdict ("Have you used Epic anywhere? If so, where and for how long?"). Never tell
92
+ the verdict ("Have you used Epic anywhere? If so, where and for how long?"). When a
93
+ required item is not shown, ask once whether anything outside the resume covers it: a
94
+ side project, a repository, a portfolio, a volunteer role. People leave their best
95
+ evidence off the page. Anything you credited from another file goes here too, as a line
96
+ to add to the resume. Never tell
82
97
  them to add a keyword they have not said is true, and do not end on a list of questions
83
98
  with no advice.
84
99
 
85
- 7. **Lay the reply out in this order:** the answer and verdict; what could get it rejected;
100
+ 8. **Lay the reply out in this order:** the answer and verdict; what could get it rejected;
86
101
  one table covering every requirement (requirement, required or preferred, status,
87
102
  evidence); what to bring forward; what to do next. Each requirement appears in the table
88
103
  once and nothing is repeated in a second table or restated section by section.
@@ -129,6 +144,7 @@ posting**, ask for the posting in one line: there is nothing to compare against.
129
144
  doesn't go in.
130
145
  - ❌ **Judging the person.** No remarks on age, gaps, family, health or anything a recruiter
131
146
  may not lawfully weigh.
147
+ - ❌ **Inventing the posting.** A link you could not open is not a posting you have read.
132
148
  - ❌ **Answering in a file.** They asked a question; the answer belongs in the reply.
133
149
  - ❌ **A verdict with no advice.** "Long shot" followed by questions leaves them where they
134
150
  started.
@@ -71,6 +71,32 @@
71
71
  "The reply gives a clear answer on whether it is realistic",
72
72
  "It does not credit him with a qualification, a cover count, a team size or a system that is not in the CV"
73
73
  ]
74
+ },
75
+ {
76
+ "id": 6,
77
+ "prompt": "Am I a fit for this? CV is resume.md, job is posting.md. My LinkedIn about text is in linkedin-about.txt too.",
78
+ "assertions": [
79
+ "The onboarding or training requirement is credited from the monthly onboarding webinar described in the LinkedIn text",
80
+ "The reply says that evidence is not on the CV and should be added to it",
81
+ "Owning renewals is marked partly or not met: she supported renewals alongside the account managers and did not own them",
82
+ "The 3+ years in customer success or account management is marked not met or partly: her roles are in support",
83
+ "Gainsight is marked not shown or not met, and Salesforce is credited from the CV",
84
+ "Leading a small team is marked met from leading 6 support agents",
85
+ "Working with a product team on feedback is credited from the Customer Advisory Board or the ticket-trends report",
86
+ "The reply opens with a clear answer on whether to apply"
87
+ ]
88
+ },
89
+ {
90
+ "id": 7,
91
+ "prompt": "Would I be a fit for this one? https://careers.brightloop.example/jobs/4471 - my CV is resume.md",
92
+ "assertions": [
93
+ "The reply says it could not open or read the link",
94
+ "It asks for the posting's text to be pasted in or saved as a file",
95
+ "It does not list the job's requirements or mark any as met or not met, as though it had read the posting",
96
+ "It gives no verdict on fit",
97
+ "It does not state what Brightloop does or what the role involves",
98
+ "The reply is short, about 120 words or fewer"
99
+ ]
74
100
  }
75
101
  ]
76
102
  }
@@ -0,0 +1,5 @@
1
+ About
2
+
3
+ I lead the support team at Hart & Lowe Software. Since January 2024 I've also run our monthly onboarding webinar for new customers, usually around 30 people on the call, and I co-chair the Customer Advisory Board with our Head of Product (8 customers, meets twice a year).
4
+
5
+ Outside work I volunteer as a reading mentor at a primary school.
@@ -0,0 +1,25 @@
1
+ # Customer Success Manager
2
+
3
+ **Brightloop** · Manchester (hybrid) · £48,000 – £55,000
4
+
5
+ Brightloop makes scheduling software for 900 dental and veterinary practices.
6
+
7
+ ## What you'll do
8
+
9
+ - Own a book of 60 mid-market accounts and be accountable for their renewals
10
+ - Run onboarding and training for new customers
11
+ - Lead quarterly business reviews
12
+ - Bring customer feedback to the product team
13
+
14
+ ## What we need
15
+
16
+ - 3+ years in customer success or account management at a B2B software company
17
+ - Experience owning renewals or a revenue target
18
+ - Experience running customer onboarding or training
19
+ - Confident with Salesforce and a customer success platform such as Gainsight
20
+ - Experience leading or mentoring a small team
21
+
22
+ ## Nice to have
23
+
24
+ - A customer success certification
25
+ - Experience working with a product team on customer feedback
@@ -0,0 +1,35 @@
1
+ # Nadia Rahman
2
+
3
+ Manchester · nadia.rahman@example.com · 07700 900612
4
+
5
+ ## Profile
6
+
7
+ Support team lead with seven years in B2B software support.
8
+
9
+ ## Experience
10
+
11
+ **Support Team Lead** · Hart & Lowe Software · March 2022 – present
12
+
13
+ - Lead a team of 6 support agents covering 310 customer accounts.
14
+ - Supported renewals for 40 accounts worth $1.2M a year by joining the account managers' quarterly reviews.
15
+ - Cut median first-response time from 9 hours to 3 hours by rewriting the triage rules in Zendesk.
16
+ - Built the weekly ticket-trends report in Salesforce that the Research & Insights team uses to plan fixes.
17
+ - Wrote 35 help-centre articles; self-service now resolves about a quarter of new tickets.
18
+ - Hire and onboard new agents; 4 hired since 2023.
19
+
20
+ **Support Agent, then Senior Support Agent** · Hart & Lowe Software · June 2019 – March 2022
21
+
22
+ - Handled billing and integration tickets for mid-market customers.
23
+ - Trained 5 new agents on the billing queue.
24
+
25
+ **Customer Service Adviser** · Pennine Water · September 2017 – May 2019
26
+
27
+ - Answered account and billing calls.
28
+
29
+ ## Education
30
+
31
+ BA English Literature, University of Leeds, 2017
32
+
33
+ ## Tools
34
+
35
+ Zendesk, Salesforce (reports & dashboards), Jira, Excel
@@ -0,0 +1,32 @@
1
+ # Tom Lindqvist
2
+
3
+ Senior Backend Engineer · Stockholm · tom.lindqvist@example.com
4
+
5
+ ## Experience
6
+
7
+ ### Senior Backend Engineer — Fjordcart (e-commerce platform), 2021 – present
8
+
9
+ - Tech lead for the checkout team (4 engineers).
10
+ - Rewrote the order service from a Python monolith module into three Go services.
11
+ - Cut checkout API p95 latency from 800 ms to 300 ms by removing synchronous calls to the inventory service.
12
+ - Moved order events onto Kafka; the warehouse and email systems now consume the same stream.
13
+ - Run the services on AWS ECS with Terraform; on the on-call rota, one week in five.
14
+ - Integrated two payment providers through their hosted checkout APIs.
15
+
16
+ ### Backend Engineer — Nordlys Media, 2018 – 2021
17
+
18
+ - Built the subscription billing service in Python and PostgreSQL.
19
+ - Reduced failed renewals by adding a retry schedule for declined cards.
20
+ - Mentored two junior engineers.
21
+
22
+ ### Junior Developer — Brevik Consulting, 2016 – 2018
23
+
24
+ - Client projects in Python and Django.
25
+
26
+ ## Skills
27
+
28
+ Go, Python, PostgreSQL, Kafka, AWS (ECS, RDS, SQS), Terraform, Datadog
29
+
30
+ ## Education
31
+
32
+ MSc Computer Science, KTH Royal Institute of Technology, 2016
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-fit-analysis",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Compare a job posting with a resume and say honestly whether to apply: each requirement marked met, partly met, not shown or not met, with the resume line it rests on; the requirements an employer screens on listed first; and the questions whose answers would change the picture. Works for any occupation and level. Use when the user asks \"am I a good fit for this job\", \"should I apply for this\", \"how does my resume match this posting\", or wants the gaps between a job description and their CV before applying.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {