Skip to main content
LUNA (Label Understanding & Notation Assistant) is an AI-powered tool that turns a plain-language label description into working policy syntax. Instead of writing DSL by hand, LUNA guides you through a step-by-step loop of generation, evaluation, signal review, and refinement until your label is performing the way you intend.
LUNA is currently in beta and is actively being improved. Text content is supported today; image support is coming soon.

How LUNA Works

LUNA follows a four-step iterative loop:
  1. Define Your Label — provide a label name and plain-language description; LUNA generates the syntax
  2. Evaluate Content — test the generated label against a dataset of real examples
  3. Review Signals — for any misclassified items, indicate which signals are firing correctly or incorrectly
  4. Clarify & Refine — answer LUNA’s clarifying questions to drive a refined, more accurate version of the syntax
You can repeat the loop as many times as needed. When you’re satisfied with the results, insert the label directly from within LUNA.

Step 1: Define Your Label

The first step is telling LUNA what you want the label to detect. Two fields are required to generate:
  • Label name — a short, descriptive name for the label (e.g., hate_speech, spam_promotion)
  • Content modality — select Text (image support is coming soon)
You can also provide a Description — a natural-language explanation of what the label should and should not apply to. This field is optional, but the more specific you are, the better the initial result will be. Once ready, click Generate. The syntax will stream into the editor: here’s an example of what a completed generation looks like. LUNA_define_label_filled

Step 2: Evaluate Content

With syntax generated, the next step is testing it against real content.
You can add your label without testing by clicking Insert label selection

Selecting a Dataset

Choose an existing dataset or create a new one. Your dataset should include a mix of content that should trigger the label and content that should not. A minimum of 3 positive (Label) and 3 negative (Not label) examples is required before running evaluation.
If you are using LUNA in an existing policy it will select your current dataset.

Labeling Rows

For each row in the dataset, mark it with one of the following:
ActionKeyboard shortcut
Label (positive example)
Not label (negative example)
Skips
Navigate up/down /
Focused viewspacebar
LUNA_content_labelled

Running Evaluation

Once you have enough labeled examples, click Run evaluation. Moonbounce tests the generated syntax against your dataset and shows you which rows were correctly and incorrectly classified.
  • If all reviewed items are correctly classified, you can proceed directly to inserting the label
  • If there are misclassifications, LUNA may automatically run an optimization pass (auto-patch) — if it finds deterministic improvements, it removes redundant rules and re-runs evaluation silently; a toast notification confirms any rules that were removed
LUNA_content_label_review

Step 3: Review Signals

This step appears when misclassifications remain after evaluation. Signals are the individual rules that contribute to a label match. For each misclassified item, LUNA shows you the signals that fired and asks you to mark each one:
ValueMeaning
TrueThis signal is correctly firing for this item
FalseThis signal should not have fired for this item
UnknownYou’re not sure
This feedback tells LUNA precisely which parts of the syntax are working and which are not, giving it the information it needs to produce a better refinement. LUNA_review_signals

Step 4: Clarify & Refine

After signal review, LUNA generates clarifying questions based on the feedback it received. Each question is aimed at resolving ambiguity in the label definition — for example, distinguishing borderline cases or tightening the scope. For each question, either select a suggested answer or type a custom one, then click Submit. LUNA refines the DSL and returns you to the Define Label step with updated syntax already in the editor. From there, you can run another round of evaluation or insert the label if you’re satisfied with the result. LUNA_review_questions

Inserting or Refining Your Label

At the end of a loop, you have two options:
  • Insert label selection — adds the label to your policy. Use this when the evaluation results meet your expectations.
  • Evaluate Content — returns you to Step 2 to run another round of evaluation and refinement. Use this when you want to keep improving the label before committing it.
LUNA_second_evaluation

Tips for Best Results

  • Be specific in your description. Vague descriptions produce vague syntax. Include examples of what the label should and should not apply to, edge cases, and context about your platform.
  • Use a representative dataset. The evaluation step is only as useful as the examples in it. Include a realistic mix of positive and negative cases, including borderline examples.
  • Expect iteration. One or two refinement rounds is normal. LUNA is designed to improve with each pass of feedback.

We’d Love to Hear From You

Whether you have a suggestion, feedback, or a bug to report, here are the best ways to get in touch:
  • In the App: Use the Feedback button for direct suggestions.
  • On Slack: Reach out to the team in your shared channel.
  • With your AM: Talk to your dedicated account manager.
  • Via Email: Send a message to support@moonbounce.io.