Traverse instead of classify flat
Each model decision sees only valid children of the current taxonomy node, reducing an open-ended labeling problem.
Open-source AI tooling
Academic Metrics turns publication metadata and abstracts into structured research data. Its classification pipeline recursively walks a three-level taxonomy and treats off-taxonomy model output as a correctness failure to repair, not a string to quietly accept.
System map
The package collects publication records through Crossref, enriches incomplete metadata, deduplicates articles, and coordinates classification and export through one pipeline. The goal is reusable structured data rather than a one-off dashboard.
The classifier does not ask for an unconstrained topic label. It traverses the NSF NCSES hierarchy one level at a time, carrying the selected parent into the next decision so every leaf has a valid path.
Before classification, separate stages extract methods, analyze sentence structure, and summarize the abstract. Those outputs give the classifier a smaller and more explicit evidence surface.
When the model returns a label outside the allowed children, the retry path tokenizes the rejected output and applies logit bias against those tokens. The system actively prevents the same invalid answer from recurring instead of dropping the record or normalizing it after the fact.
Academic Metrics ships as an installable Python package with a CLI, storage adapters, export paths, and full Sphinx documentation. The web demo is a separate collaborator-owned consumer; the reusable package is the project presented here.
The LLM stages run through an earlier embedded version of ChainComposer. Academic Metrics was its production proving ground: the classifier declares method extraction, sentence analysis, summarization, recursive classification, and theme recognition across three managers, then carries named outputs into later prompts. That implementation was later extracted and published as its own package.
Connected work
Engineering choices
The implementation details matter because each one closes a specific failure mode or keeps an important boundary visible.
Each model decision sees only valid children of the current taxonomy node, reducing an open-ended labeling problem.
Rejected labels change the next decoding attempt through token-level bias rather than merely repeating the prompt.
Collection, classification, and export remain reusable without coupling the system to one dashboard.
Where it landed
A documented, installable pipeline for collecting and classifying research publications with an explicit validity mechanism around unreliable model output.
Next case study
ChainComposer