methodology
What is Aura?
What does "Aura" mean?
In everyday language, aura refers to the invisible energy or presence a person gives off — the vibe someone has before they even say a word. When people say someone "has aura," they mean that person commands attention, feels credible, and leaves an impression.
We borrowed that idea for careers. Your career aura is the impression your LinkedIn profile makes on a recruiter in the first few seconds — before any conversation happens. We turned that impression into a number (0 – 2,500) so you can measure it, improve it, and compare it.
It is not AI-generated. Every point comes from a transparent, rule-based formula applied to real profile data. Same inputs always produce the same score.
It is actionable. The breakdown tells you exactly which dimension is holding your score down and by how much — so you know what to fix.
It is competitive. All scores are on a public leaderboard. Career growth becomes a sport you can track and compare.
Why we chose the name "Aura"
In everyday language, aura refers to the intangible quality that surrounds a person — the impression they give off before they even speak. In a hiring context, that impression is formed the moment a recruiter opens your LinkedIn profile.
We chose the name because it accurately describes what we are measuring: not just your credentials on paper, but the overall signal strength of your professional presence. A profile with high aura is one where every section — headline, experience, education, projects, and summary — works together to make a recruiter stop scrolling.
We also chose it because it resonates with a younger audience. Framing career development as something you can level up — the same way you would in a game — makes the process less intimidating and more motivating.
How the score is calculated
Aura is the sum of 8 independently scored dimensions. Each dimension has a defined maximum. The final score is capped at 2,500 points.
MASTER FORMULA
Aura = H + E + Ed + Sk + Ab + Pr + C + R
max = 250 + 650 + 350 + 450 + 200 + 300 + 300 + 150 = 2,500
H = min(80 + L + R + B + T + Co + Sc, 250)
L = 50 if headline length ≥ 40 chars, else 25 if ≥ 25, else 0
R = 90 if [CTO / VP / Director / Head of]
= 70 if [Lead / Senior / Architect / Founder]
= 60 if [Engineer / Developer / Scientist / Analyst]
= 35 if [Intern / Student / Graduate]
= 15 if [Seeking / Aspiring / Passionate]
B = 55 if ["building", "launching", "scaling", "founded"]
T = 30 if any tech keyword found in headline
Co = 50 if prestige company name found
Sc = 50 if elite school name found
E = min(n×140 + Sr + Co + Rs + Iv + Mt, 650)
n = number of structured job entries
Sr = 180 if [CTO / VP / Director / Head of]
= 130 if [Principal / Staff / Architect / Quant Researcher]
= 80 if [Senior / Lead / Manager / Tech Lead]
Co = 200 if 2+ prestige companies found, else 140 if 1
Rs = 100 if research signal [IEEE / NeurIPS / ICML / thesis / lab…]
Iv = 70 if impact verbs [built / shipped / led / reduced…]
Mt = 100 if metric found [30% / 2M users / $1M / 10x…]
Ed = min(base + El + F + Dg + Hn + Re, 350)
base = 160 + min((entries−1)×40, 100) if any education found
El = if elite school: max(base, 220) + 80
F = 100 if [CS / Software Eng / AI / Data Science]
= 80 if [Engineering / Mathematics / Statistics / Physics]
= 55 if [Business / Economics / Finance / Design]
Dg = 90 if PhD, else 60 if Master's/MBA, else 30 if Bachelor's
Hn = 60 if [GPA 3.x+ / Dean's list / Cum Laude / Honours]
Re = 50 if [research / thesis / fellowship / NSF / grant]
Sk = min(min(s×22, 220) + T1 + T4 + T8 + S12, 450)
s = total unique skills listed
T1 = 80 if tech_skills ≥ 1
T4 = 70 if tech_skills ≥ 4
T8 = 60 if tech_skills ≥ 8
S12 = 50 if total skills ≥ 12
tech_skills = unique matches against 50+ language/framework regex
Ab = 0 if absent; else min(40 + Ln + Tk + Av + Pj + Ti + Mt, 200)
Ln = 25 if length > 150 chars, +25 if > 400 chars
Tk = 40 if 3+ tech skills, else 20 if 1+
Av = 35 if action verbs [built / shipped / led / published…]
Pj = 35 if project signal [github / portfolio / hackathon / paper…]
Ti = 20 if time mentioned [X years / X months]
Mt = 20 if metric found [% / users / $]
Pr = min(p×90 + Po + Sh + Tk, 300)
p = number of structured project/cert entries
Po = 100 if portfolio signal [github.com / hackathon / open source…]
Sh = 90 if shipped signal [deployed / won / 1st place / published…]
Tk = 40 if 3+ tech skills in project descriptions
C = (filled / 7) × 300
filled = count of present sections out of 7:
[name, headline, avatar, experience, education, skills, about]
each section is binary: 1 if present, 0 if missing
R = f(H + E + Ed + Sk + Ab + Pr + C)
let sub = sum of all 7 categories above
R = 150 if sub ≥ 1800
= 110 if sub ≥ 1300
= 70 if sub ≥ 850
= 40 if sub ≥ 450
= 15 otherwise
Scraping — quality over quantity
Most LinkedIn scrapers stop at the surface: they grab the job title and move on. We extract the full depth of each profile section.
For every experience entry, we capture the role title, company name, employment type, duration, and — most importantly — the full description. This is where the real signal lives: the bullet points where someone says "reduced API latency by 40%" or "led a team of 8 engineers." Without the description, the job is just a label.
For education, we capture the school name, degree type, field of study, GPA or grade if listed, and any activities or descriptions — including research projects and extracurriculars.
We also extract certifications, publications, honors, awards, and volunteer experience — all with their descriptions. A research paper published at NeurIPS is not just a line item; the abstract tells us what the person worked on.
The About section is treated as its own scoring category. It is the only part of LinkedIn where someone writes in their own voice — and it is the highest-signal input for distinguishing two candidates with identical job histories.
We run three scraping layers in sequence: a primary structured API, an enrichment fallback, and an HTML parser — ensuring coverage even for profiles with privacy restrictions.
Tiers
Built at GDGHack
RankedIn was built in a single hackathon sprint. The stack: Next.js 15 (App Router, server components), TypeScript, Tailwind CSS v4, Framer Motion, and Supabase (Postgres + Auth). The scoring engine is a custom-built text-mining pipeline — no AI APIs, no black box. Every point is explainable.