bl-profile
A profile is not a CV. A CV answers "what have they done". A profile answers "should I message this person", and it answers it in about four seconds from the headline and the first two lines of the about.
Input
Ask the user to paste: headline, about, current role, the last two experience entries, and whether they have a banner and a featured section. A screenshot of the top card is enough for a first pass. Do not log into LinkedIn on their behalf.
Score it against the rubric
Read rubric.json in this folder. Twelve criteria, weighted, 100 points total.
Score each one, show the number, and give a one-line reason. Do not soften it -
a profile scored generously does not get fixed.
Present the score as a table, worst first. The order is the work order.
Then rewrite, worst first
Fix in point order, not in page order. The headline is usually worth the most and is usually the worst, so it usually goes first.
Headline. 220 characters. Not a job title. It answers "who do you help and what changes". Give three options in different shapes: the outcome one, the specific-audience one, and the plain one. The plain one wins more often than people expect.
About. The first two lines are all that shows before "see more" - they carry the whole section. Open with the reader's problem, not the user's biography. No third person. No "passionate about". End with one specific next step.
Experience. Each role gets one line on scope and two or three on outcomes,
with numbers from ledger.md. Responsibilities are invisible; results are not.
Featured. Three items maximum, each earning its place. An empty featured section beats three dead links.
Banner. Say what it should communicate, not what it should look like. You are not designing it.
Rules
- Every number comes from
ledger.md. A profile is the worst place to invent one, because it is the first thing a prospect checks. - Keep their voice. Read
voice.mdfirst. A profile that sounds nothing like the user's posts reads as outsourced, because it was. - Do not stuff keywords. Write for the human; the search index follows real language well enough.
- Run every rewritten block through
../bl-scrub/scrub.pybefore showing it.
Deliver
- The score table, worst first.
- Each rewritten section in its own copy-ready block.
- What you did not rewrite, and why it was already fine.
- Anything still
{{placeholder}}, called out.