Ok, final solution:
- format all my raise-with’s as tasks (wanted to do this anyway for better tracking)
- Use dataviewjs to get my list of tags
- For each tag, render a heading with it and a span which is a stringified dataview block:
```
TASK
FROM <tag>
WHERE !completed AND contains(tags, "<tag>")
```
I ended up keeping the js approach purely because I didn’t like the visuals of grouping by tag. Adding WHERE !completed AND contains(tags, "<tag>") weeded out completed tasks and tasks that are on the same page as the tag in question but don’t contain it.
Much happier with this, thanks!