Structure carries more signal than identity
Hashtag co-occurrence and interaction shape describe how discourse behaves without needing to say anything about who is speaking.
A research-first system for reading discourse patterns on X through structural signals — hashtag co-occurrence and interaction shape — rather than by building profiles of individuals.
Interface
What the user touches
Application
Where the rules run
Intelligence
Models and ingestion
Social listening tools mostly resolve to profiling: build a picture of a person, infer their politics, and score them. That is commercially popular and ethically difficult, particularly where the subjects never consented to analysis.
But the questions worth asking about public conversation are usually structural. How do topics cluster? Which communities share vocabulary? Where does discourse fragment or converge?
nabzx was built to answer those questions from behavioural signals — hashtag co-occurrence, interaction structure — treating aggregate discourse as the unit of analysis instead of the individual account.
Most social analytics tools answer "who is this person?" The more useful and more defensible question is "what shape is this conversation?"
A Next.js application that ingests public X data through Apify scrapers, runs structured analysis via OpenAI against purpose-built prompt schemas, and renders results as multi-axis discourse and ideology visualisations.
Structured analysis pipeline
A dedicated analysis layer with typed constants, prompts, and schemas so model output is parsed rather than read as prose.
Discourse radar
Multi-dimensional visualisation of conversation characteristics across defined axes.
Ideology and axis scoring
Separate charting for ideological positioning and per-axis scores across an analysed corpus.
Public data ingestion
Apify-based scraping restricted to public conversation data, kept behind a clear service boundary.
Analysis history
Persisted past analyses so results can be revisited and compared rather than regenerated.
Admin controls
An authenticated admin surface for settings and operational control over the analysis pipeline.
The commercially obvious version of this product is a profiling tool, which was the specific thing worth avoiding.
Aggregate discourse analysis is harder to make legible than a per-person score.
Model output that is not schema-constrained cannot be charted reliably.
Scraping public platforms is operationally fragile and needed isolation behind a service boundary.
Analysis runs are expensive enough that regenerating rather than persisting them is wasteful.
The product constraint and the ethical constraint turned out to be the same constraint: analyse the conversation, not the participants.
Hashtag co-occurrence and interaction shape describe how discourse behaves without needing to say anything about who is speaking.
The unit of analysis was fixed at the conversation level in the data model, so the ethical position is structural rather than a policy note.
Typed prompts and response schemas are what make model output chartable; free-text analysis cannot drive a radar.
Scraping lives behind its own module so platform changes affect one boundary rather than the analysis pipeline.
The unit of analysis is the discourse pattern. Individual accounts are inputs, never the output.
Typed prompts and parsed responses make the analysis reproducible and chartable rather than impressionistic.
Radar and axis visualisations communicate multidimensional structure that a single number would flatten away.
Phase 1
Build the Apify scraping boundary and define the typed analysis constants, prompts, and result schema.
Phase 2
Implement discourse and ideology scoring, then render results through radar and axis charts.
Phase 3
Add analysis history, authentication, and the admin settings surface.
nabzx is one of the ventures we design, build, and run in-house at AshaVid.