Natural Language and Ask a Question Nodes
Most nodes check something precise: a keyword, an author, a language, a score from a fixed model. The Natural Language and Ask a Question nodes let you describe what you want in your own words instead, and an AI model judges each post against it.
Both live on the AI tab of the Rules menu (the filter icon in the editor's left sidebar). Both are marked metered, because each post they judge runs on a GPU and every feed has an hourly budget for them.
Which one to use
Natural Language scores a post against one statement you write, such as "is a job posting and does not mention internships". Use it for a yes/no idea that keywords can't capture.
Ask a Question asks a question about each post, in one of three forms:
- Yes / no: the chance the answer is yes, from 0 to 100%. The same idea as Natural Language, on a different, cheaper model.
- Pick one of my options: you define the categories, and the node reads the chance that the post belongs to the one you choose. Nothing else in Graze can do this.
- Rate on my scale: you list ordered levels, and the node places the post on them.
If you're not sure, start with Natural Language for a single yes/no idea. Reach for Ask a Question when you want your own categories or a graded scale.
Natural Language: the fields
- Criterion (the text box): a statement about the post, up to 1,000 characters.
- Operator and Threshold: how the score is compared, for example at least 75%. New nodes start at at least 75%.
- Admit posts when over budget: what happens when the feed's hourly budget runs out (see below). Off by default.
Ask a Question: the fields
- Question kind: Yes / no, Pick one of my options or Rate on my scale.
- Question (the text box): what you're asking, up to 1,000 characters.
- For Pick one of my options: at least two options, each with a name and an optional description ("what it means"). Use Add option for more. Then choose which one the node reads under Chance it is.
- For Rate on my scale: at least two levels, numbered from 0 (the lowest) upward. Use Add level for more.
- Operator and Threshold (or Level for a scale).
- Admit posts when over budget.
If the option chosen under Chance it is no longer matches one of your options, the node warns that it "can never match".
How scores and thresholds behave
Natural Language scores pile up near 0% and near 100%. They don't spread evenly, so most thresholds in between behave alike: 50% and 80% usually select the same posts. If moving the threshold seems to do nothing, move it a long way rather than a little, and check the wording of your criterion.
Pick one of my options reads your chosen option, not the winner. "At least 70% likely to be about the NBA" can still match a post the model thinks is more likely about college basketball.
Rate on my scale uses a level number, not a percentage. With three levels, compare against 0, 1 or 2. The answer can land between levels: 1.6 means the post sits between your second and third levels, nearer the third. Treat levels as an order, not a measurement.
Which text is judged
Both nodes read a single piece of text from each post: the first one of these that isn't empty.
- The post's own text.
- The description of a link card.
- The title of a link card.
- The alt text of a link card's image.
- The text of a quoted post.
- The alt text of a video.
Everything after the first non-empty field is ignored. So for a post with text and a link card, only the post text is judged. A post with none of these (for example an image with no text) never matches, and isn't charged.
Writing good criteria and questions
Write a statement about the post. "is about the NBA" works better than a bare topic like "NBA".
Put exclusions in the same sentence. "is about the NBA and does not mention trade rumours" separates posts far more sharply than an "is about the NBA" node next to a "mentions trade rumours" node, and costs one judgement instead of two.
Use "and does not …" for exclusions. "but not about …" also works. Avoid "other than …": it pushes every score towards zero, so nothing clears the threshold. Naming something your posts never mention is harmless.
Keep it to one idea and its exclusions. Long criteria that stack four or five unrelated clauses score worse, not better.
For questions, write it literally. The model answers the question you wrote, not the one you meant. If you catch yourself explaining what you really meant, put that explanation in the question. Keep numbers, dates and counting out of it; use an Attribute Comparison node for those.
Use Debugging a Post to see how real posts score before you settle on a threshold.
Hourly budgets
Every feed gets its own hourly budget for each node type. The two budgets are separate and never pooled, so running out of one doesn't affect the other:
- Natural Language: 2,000 posts judged per feed per hour.
- Ask a Question: 500 questions asked per feed per hour.
Ask a Question is counted per question, not per post. Every Ask a Question node is charged separately for the same post, so a feed with three of them reaches about 167 posts an hour, not 500.
You're only charged for posts a node actually judges. Graze runs a feed's cheapest conditions first, and a Logic node set to All of these only passes on posts that survived its other conditions. So putting a cheaper condition next to a metered node under All of these (a language, keyword, list or author filter) means the node only sees posts that already matched, which is usually a few hundred an hour instead of tens of thousands. Any of these doesn't do this: every post is offered to every branch.
When the budget runs out
The node stops judging until the hour turns over. Admit posts when over budget decides what it answers in the meantime:
- Off (the default): the node matches nothing, so your feed goes quiet for the rest of the hour.
- On: the node stops filtering and lets every post through.
Your feed's Rate Limits page shows how much of each budget you've used, the hours you ran out, and which nodes are spending it. You can also ask for a higher budget there.
When you test these nodes in Debug, they're charged to your own Debug budget, not the feed's. See Debugging a Post.