Inspiration

Every headline says the same thing: AI will take jobs.
Call centers, back-office ops, junior roles – exactly where a lot of workers with less flexibility and financial stability are.

We kept coming back to one idea:

AI will take tasks.
We must not let it take people with them.

We imagined someone like Anna – 46, call-center lead, reading about chatbots replacing her team. On paper she’s “support”. In reality she’s been doing live user research, prioritisation, incident coordination and cross-team work for years… which is basically Product / CX in disguise.

MagentaShift was born from that gap: titles and CVs scream “replaceable”, but the underlying skills often point to better, more future-proof roles.


What it does

MagentaShift turns “my job is at risk” into “I might actually be ready for something bigger”.

For a candidate, it:

  • Parses a CV/PDF, reads candidates Linkedin.
  • Builds an RPG-style skill tree with 20–30 skills, levels, and evidence snippets.
  • Generates multiple future builds (e.g. Product Manager, Business Analyst, CX PM) from the same history.
  • Computes a match score and a set of “quests” (learning steps) to close the gap.

For recruiters, it:

  • Converts candidates into anonymous skill avatars (no name, no age, no photo at first).
  • Shows match score, skill coverage, and gap cost in hours.
  • Lets them choose skills first, identity second.

How we built it

We combined:

  • Backend: Python + Flask + SQLite
  • Frontend: React + TypeScript + Telekom-style UI
  • AI: OpenAI GPT-4o for CV analysis and skill attibution, webscraper for Linkedin accounts.

Pipeline:

  1. Upload a PDF → pypdf extracts text.
  2. Send scrubbed text + a list of all skills in our job database into a carefully engineered system prompt.
  3. The model returns:
    • skills[] with id, name, type, category, level, evidence, etc.
    • metaSkills[], creativityScore, rpgClass.
  4. We store the profile in SQLite and expose it as JSON to the frontend.
  5. For each job, we compute a build using a weighted match formula like

[ \text{matchScore} = \frac{\sum (\text{skillMatch} \times \text{importanceWeight})}{\sum \text{importanceWeight}} ]

  1. Missing skills become quests with estimated hours; covered skills power the skill tree visualisation.
  2. A separate endpoint turns builds into avatars for the recruiter view.
  3. The assessment chat uses another prompt to refine skills and generate personalised questions and updates.

We tried to keep the architecture boring (Flask + React + JSON), and make the intelligence live in the prompts + scoring.


Challenges we ran into

  • Titles vs skills:
    The model loved calling people “Support Specialist” even when their behaviour was pure Product / BA. We had to teach it explicit mapping rules like:

    • “If they turn complaints + data into improvements, that’s User Research, Business Analysis, Product Strategy.”
  • String-based matching is brutal:
    Our first version only matched if the skill names were exactly equal, so “Customer Journey Optimization” didn’t count as “User Research”. We had to rework prompts and matching to be more generous without cheating.

  • Fair scoring:
    A flat matchedSkills / totalSkills score underestimates candidates who hit all critical skills but miss some nice-to-have ones. We added importance weights and thought hard about what “fair” means here.

What we learned

  • Transferable skills are everywhere, but invisible if you only look at titles.
  • Small prompt changes and naming conventions can completely change:

    • who looks like a “fit”,
    • and therefore who even gets a chance.
  • Building with LLMs is not “plug model, done” – it’s iterative product design:

    • define behaviours you want,
    • encode them in prompts,
    • test with real data
  • Fairness is not just about hiding names; it’s also about how you model and score skills.

What's next for Twoman_SHOW-2

If we had more than hackathon time, we’d love to:

  • Add semantic skill mapping (embeddings) so “Customer Journey Mapping” automatically aligns with “User Research” and “Product Strategy”.
  • Integrate short practical skill checks (micro-cases) to verify levels for key roles.
  • Pilot with a real company:
    • feed real employees’ CVs,
    • see who is actually “hidden talent” for future roles,
    • measure who gets promoted or re-skilled instead of laid off.

Built With

Share this project:

Updates

Submission history