Rank community influencers with LLM authenticity
Objective
Marketing platforms rank influencers by follower count or graph centrality and end up paying
bots and engagement-farmers. Authentic influence is qualitative: do the posts read like real
expertise? Are the comments substantive? LLM_SCORE plugs that judgment directly into the
ranking query — the LLM grades each candidate's posts inline, then the planner sorts by a blend
of network position and authenticity. The wow moment: a single Cypher query downgrades the
"big follower count, hollow content" account and surfaces the smaller real expert.
Step 1: Set up community + posts
MERGE (alice:Creator {handle: "@alice_ml", followers: 18000,
bio: "10 years in production ML, write essays on training infra"})
MERGE (bob:Creator {handle: "@bob_ai_news", followers: 240000,
bio: "Daily AI news, breaking stories, community manager"})
MERGE (carol:Creator {handle: "@carol_robo", followers: 6500,
bio: "Roboticist at university lab, papers on locomotion"})
MERGE (dan:Creator {handle: "@dan_growth", followers: 410000,
bio: "Growth hacker, productivity tips, AI tools roundup"})
MERGE (eve:Creator {handle: "@eve_security", followers: 22000,
bio: "Offensive security, conference speaker, CTF organiser"})
MERGE (p1:Post {id: "P-101", text: "Detailed write-up: why our LR schedule changed at step 30k and how the gradient norm chart told us first.",
created: "2026-04-22"})
MERGE (p2:Post {id: "P-102", text: "AI is changing the world. Wow. Read more in my newsletter (link).",
created: "2026-04-22"})
MERGE (p3:Post {id: "P-103", text: "Walking gait failure mode for our quadruped on slick concrete; compensation via foot-IMU loop closure.",
created: "2026-04-23"})
MERGE (p4:Post {id: "P-104", text: "10 AI tools you NEED in 2026. Tool 1: ChatGPT. Tool 2: Notion. Tool 3: Canva.",
created: "2026-04-23"})
MERGE (p5:Post {id: "P-105", text: "Reverse-engineered the JWT logic in vendor X, find the timing oracle here. Demo CTF challenge attached.",
created: "2026-04-24"})
MERGE (alice)-[:POSTED]->(p1)
MERGE (bob)-[:POSTED]->(p2)
MERGE (carol)-[:POSTED]->(p3)
MERGE (dan)-[:POSTED]->(p4)
MERGE (eve)-[:POSTED]->(p5)
// Followers — small graph, just enough for centrality.
MERGE (alice)-[:FOLLOWS]->(carol)
MERGE (alice)-[:FOLLOWS]->(eve)
MERGE (carol)-[:FOLLOWS]->(alice)
MERGE (carol)-[:FOLLOWS]->(eve)
MERGE (eve)-[:FOLLOWS]->(alice)
MERGE (eve)-[:FOLLOWS]->(carol)
MERGE (bob)-[:FOLLOWS]->(dan)
MERGE (dan)-[:FOLLOWS]->(bob);
Step 2: Rank with LLM authenticity
// Blend follower scale with LLM-judged authenticity of recent posts.
MATCH (c:Creator)-[:POSTED]->(post:Post)
WITH c, collect(post) AS posts
UNWIND posts AS p
WITH c, p,
llm_score(
"Rate 0..1 how substantive this post is as a signal of real expertise. " +
"Reward concrete technical detail, specific numbers, and falsifiable claims. " +
"Penalize vague praise, listicles, and engagement-bait.",
p
) AS substance
WITH c, avg(substance) AS authenticity
RETURN c.handle AS creator,
c.followers AS reach,
authenticity,
authenticity * log(c.followers + 1) AS influence_rank
ORDER BY influence_rank DESC;
What's happening
LLM_SCOREruns once per post, with a prompt that encodes what your team means by "substantive." The result is a per-post signal you can average, percentile, or threshold — the model is a scalar in your query, not a service to call.authenticity * log(followers + 1)is the wow blend: log-scaled reach prevents the big-follower bias, multiplied by the LLM-judged content quality. Tiny tweaks change ranking philosophy without restructuring the graph.- Follower-only ranking would put
@dan_growthand@bob_ai_newsfirst. The blended ranking surfaces@alice_ml,@carol_robo, and@eve_security— the people whose posts actually contain expertise. - The structural data (follower edges) is still available — pair this with PageRank-style influence (recipe 011) to combine network position with content depth.
- This is also a moderation pattern: invert the prompt to find low-substance content at scale.
Try this next
// LLM-graded post leaderboard regardless of creator.
MATCH (c:Creator)-[:POSTED]->(p:Post)
WITH c, p,
llm_score("rate post substance 0..1, reward technical depth", p) AS substance
RETURN c.handle, p.text, substance
ORDER BY substance DESC;
// Mutual-follow communities (basic clustering).
MATCH (a:Creator)-[:FOLLOWS]->(b:Creator)-[:FOLLOWS]->(a)
WHERE id(a) < id(b)
RETURN a.handle, b.handle;
// Outliers: high reach but low LLM authenticity — likely accounts to deprioritize.
MATCH (c:Creator)-[:POSTED]->(p:Post)
WITH c, avg(llm_score("rate substance 0..1", p)) AS auth
WHERE c.followers > 100000 AND auth < 0.4
RETURN c.handle, c.followers, auth
ORDER BY c.followers DESC;