This sits inside Balladic, which my team and I have been bootstrapping over the past year. You re welcome to check it out if you re interested, but I think the part most of you would be interested in is the on-the-fly generated narration UI s. This is more of a conceptual flyover than a technical one, but ask if you re interested in the behind-the-scenes, and ye shall receive.Sort of true to the name, Balladic, we generate a new Narrative page for all users every night, as well as ballad/project-specific narratives for every single ballad. The presentation aims at something like a book chapter - what s hot today, how did the past week go, so on and so forth. It s driven by a series of back-and-forth calls between various open-weights models, along with some classic algorithmic parsing, compression and that sort of thing (tokens are pricy). Roughly, it goes like this:1. Data synthesis: parse changelogs, comments (anonymised of course), all kinds of activity. Split it, morph it, stretch it - until we can synthesize a clean informational tincture. Essentially dragging out the between-the-lines.2. Fact-checking: pass that to a fact-checker with MCP access. This guy goes through all statements that could be understood as representing a fact, and uses mcp.balladic.com/mcp to probe and query. It then appends its verdict to the original synthesis doc it was passed.3. Compilation: the final doc including the fact-checking appendix gets some further treatment, and is then passed to our UI renderer. This is our own twist on @json-render (which does a very nice job by the way).Behind the scenes, there s a custom memory bank with some nice tricks to prevent hallucinations and cancerous growths. Happy to explain more about that bit if anyone s interested.All LLM work runs on European GPU s, and we use a mixture of Mistral and chinese open-weight models. Brought up a demo without auth to show it off here - hope there s some inspiration to catch.