Under the hood

How Stynch reads a post

A LinkedIn post goes through a linguistic analysis chain built in-house: cleaning, lemmatization, part-of-speech typing, discourse segmentation. It comes out as seven distinct vector representations, computed for each post and then aggregated per profile.

A profile is therefore neither a text nor a score. It is a point in seven spaces, comparable with any other profile in each of them.

Post Profile 7 coordinates keyword lexical semantic topic features style dense
Each post is projected into seven spaces, then aggregated at profile level.

Representations

Seven spaces per post

Each one captures a different dimension of the text. None is enough on its own.

keyword

Relevant terms

Terms and expressions extracted from the post, enriched with the profile hashtags and description.

lexical

Vocabulary proximity

GloVe vectors trained on a corpus of LinkedIn posts, averaged with TF-IDF weighting.

semantic

Meaning

512-dimension multilingual embeddings (Matryoshka Representation Learning), computed locally with ONNX Runtime.

topic

Topics

Output of an ensemble multi-classification, detailed below.

features

Syntax and enunciation

A vector of about 158 grammatical and enunciative features, measured on each post.

style

Discursive profiles

Stylistic classification of the post and the profile, based on the discourse analysis layers.

dense

Overall proximity

64-dimension dense vector, used for fast comparisons between profiles.

Topics

Fifteen classifiers, a consensus of three signals

Classifying a short, allusive and often multi-topic post is a hard problem. Stynch does not rely on a single model. Fifteen classifiers are implemented, each based on a different mathematical logic:

  • lexical: keyword counting with an Aho-Corasick automaton, TF-IDF;
  • probabilistic: naive Bayes with Laplace smoothing, conditional probabilities P(topic|word);
  • information theory: mutual information between word and topic, discriminant entropy of each word;
  • neighbourhood: lexical k-nearest neighbours, and semantic ones on reference posts per topic;
  • learning: Random Forest, similarity to topic centroids in embedding space.

They are benchmarked against each other on reference sets. In production, posts and profiles are classified by consensus between three orthogonal signals: raw keyword frequency, Bayesian probability, mutual information. Each signal is normalized to [0,1] before fusion, so that none overrides the others.

A post without topical vocabulary stays unclassified: no topic is assigned by default.

Keywords Bayes Mutual info. min-max [0,1] then fusion topic vector
Consensus of three orthogonal signals: frequency, probability, information (diagram).

Syntax

158 features measured on each post

The syntactic vector describes how a post is written, regardless of its topic:

  • structure: length of paragraphs, sentences and words, hashtag blocks, punctuation;
  • verbs: tenses, moods, passive voice, imperative, and eight structural verb classes (assertion, narrative or epistemic attribution, construction, operation, connection, stasis, modulation);
  • sentence types: declarative, interrogative, exclamative, imperative;
  • quotations: named or anonymous source, status of the statement (observed, reported, proposed, hypothetical);
  • nine tones, from factual to provocative;
  • seven enunciation axes: emphasis, formality, temporality, certainty, emotion, collective or individual orientation, knowledge stance (teaching, promoting, testifying);
  • vocabulary rarity by TF-IDF: generic, common, specialized, rare words.

Each metric is placed within the actual corpus distribution using quartiles and interquartile range. Not standard deviation: the distributions observed on LinkedIn are not Gaussian. This is the basis of the copywriting analysis.

Structure Punctuation Verbs Sentences Quotations Tones Enunciation Lexicon
One post, about 158 features grouped into families (illustrative values).

Discourse

A rhetorical structure for LinkedIn writing

Stynch implements Rhetorical Structure Theory, adapted to French LinkedIn posts: short sentences, fragments, persuasive register.

  1. The post is segmented into elementary discourse units, in three passes: paragraphs, sentences, internal markers.
  2. Each unit gets one of twelve relations (elaboration, contrast, concession, cause, result, condition, evidence, sequence, summary, motivation…), through a lexical score on discourse markers calibrated for LinkedIn, a position bias and structural analysis.
  3. The relation is checked against the semantic distance between units: a contrast should link distant units, an elaboration close ones.
  4. Each relation becomes a vector (angle, amplitude): 0° for continuation, 90° for rupture, beyond that for counter-argument. The post then reads as a path in a rhetorical plane, normalized into a fingerprint comparable from one post to another.
convention 0° elaboration 90° contrast >90° concession elaboration cause contrast concession elaboration summary one post = one path
Each rhetorical relation is a vector; the post becomes a comparable path (diagram).

Four per-post analysis layers are built on this path:

  • copywriting archetypes: AIDA, PAS, BAB, FAB, ACCA, PSB, 4C, 4U, 4P, SLAP… recognized by the curvature of the path, not by keywords;
  • editorial intent: nine intents and thirty-seven formats;
  • funnel: TOFU, MOFU or BOFU depending on the overlap between the post and the author's own field, and lifecycle: evergreen, reactive or hybrid;
  • discursive profiles, through entropy-based discriminant analysis.

A fifth layer works on the whole corpus: the semantic gap between consecutive lines measures whether the author unrolls a continuous thread or moves by pivots, and a recursive grammar derives their stylistic family and subtype.

Interpretation thresholds are not set by hand: they are recomputed as empirical percentiles (p20, p40, p60, p80) on a corpus of reference profiles. Each displayed level covers the same share of a real population.

Ideas

Co-occurrence graphs

The mindset is a graph: the notions an author associates, post after post. The co-occurrence matrix is built over a sliding window, after lemmatization and extraction of fixed expressions ("employer brand" stays one unit).

Nodes are selected through a relevance vector that weights each term by its rarity against the LinkedIn lexicon: a common word does not structure a mindset. Links are ranked by Dice index, equivalent forms are merged, and recurring editorial noise is penalized. Mentions and citations form a second graph, the influence map.

recruitment employer brand talent culture onboarding manager interview candidates
The notions an author associates, weighted by rarity (fictional example).

Comparison

Fourteen reference populations

A value on its own says nothing. Each metric is expressed as a percentile within real populations: reference profiles, panel, segment, topic, follower bracket, editorial neighbours, cited profiles, and their combinations. Distributions are stored per metric and per population, over time windows recomputed every month.

A profile's neighbours are computed with three strategies (semantic, lexical, weighted) and three scopes (global, by topic, by topic vector). This feeds the rankings and positions.

P78 the profile population: same topic, same follower bracket
A value is only read through its position in a real population (diagram).