Output Sounds Polished But Is Not Actionable

The answer reads beautifully and you cannot use a line of it. Here is how to force file paths, commands, and numbers via a schema instead of more adjectives.

You asked for help debugging a deploy. The model returned four polished paragraphs about “considering your environment configuration”, “investigating the deployment pipeline”, and “reviewing relevant logs”. No file paths. No exact commands. No config values to check. It reads like a consultant’s deck, not a fix.

Fastest fix: change the verb and demand artifacts. Replace "Advise on how to fix X" with "Produce a numbered fix. Every step must contain one shell command in a code block, one file path, and the one-line expected result. If you have no concrete command, write INSUFFICIENT_INFO and ask for the data you need." That single rewrite turns most polished prose into a runbook. If you are calling an API and need a hard guarantee, skip prompting and use native structured outputs (constrained decoding) so the model physically cannot emit prose where a command field belongs — see Step 2.

Polish without artifacts is decoration: it satisfies the form of a useful answer without supplying any handle a human can act on. The model is being polite, not unhelpful. Training nudges chat models toward a consultative, hedging register on open-ended asks, and that register simply has very few artifacts in it. As of June 2026 this is well documented: independent reviews of Claude Opus 4.7 flag excessive hedging and unsolicited disclaimers, while GPT-5.5 leans the other way and will sometimes assert a step it did not verify. Neither default is a runbook. You get one by asking for the shape, not the tone.

Which bucket are you in?

Symptom in your outputLikely causeGo to
Prose like “you might consider reviewing the logs”Prompt asked for advice, not artifactsStep 1
Steps exist but have no command/path/numberNo artifact requirementStep 2
Output echoes “you may want to consider…”Soft verbs leaked from your promptStep 3
Steps are generic, could apply to any projectNo example + generic inputSteps 4 and 6
Every other sentence has “may”, “might”, “depending on”RLHF hedging on an open askStep 3

Common causes

1. Prompt asked for advice, not artifacts

“How should I think about X” gets you a thinking frame. “Produce X” gets you X. The verb decides whether you receive a deliverable or a discussion.

How to spot it: your prompt verb is “advise”, “explain how”, “discuss”, or “consider”.

2. No artifact requirement

If you do not say “include at least one file path, one command, one number”, the model omits them in favor of prose. Prose is cheaper to generate and reads as thoughtful.

How to spot it: your prompt has no list of required artifacts.

3. Soft verbs in the prompt leak into the output

If your prompt says “consider whether…”, the model echoes “you might want to consider…”. Soft verbs are contagious.

How to spot it: your prompt contains “consider”, “think about”, “explore”, or “look into”.

4. No example of the actionable output you want

You described actionable but did not show it. The model defaults to its training average of “actionable”, which is mostly still prose.

How to spot it: your prompt describes the form without showing one instance of it.

5. RLHF politeness and hedging on open asks

Modern chat models hedge on open questions to avoid being wrong. Hedging hides artifacts behind “may”, “might”, and “depending on”. This is the same tendency that shows up as over-disclaiming in Opus 4.7-class models; the fix is to forbid the hedge words explicitly (Step 3).

How to spot it: every other sentence has a hedge word.

Before you change anything

  • List the artifacts a useful answer would contain: file paths, commands, numbers, version pins, code snippets, schema fragments, named tools.
  • Save the polished output so you can diff it against the actionable version.
  • Decide who acts on the output and what they need to act.
  • Plan a schema or template that requires artifacts as fields.
  • Identify the soft verbs in your current prompt to replace.

Information to collect

  • The current prompt.
  • The polished output that was not actionable.
  • A list of the artifacts an actionable version would contain.
  • The downstream consumer of the output (a teammate, a script, a CI job).
  • The model and any system prompt in play.

Shortest path to fix

Step 1: Replace “advise” with “produce”

Bad:  "Advise on how to fix the deploy."
Good: "Produce a 5-step fix as a numbered list. Each step must include:
       - one command to run (in a code block),
       - one file path to inspect or edit,
       - the expected result (1 line)."

The verb “produce” plus the artifact list forces concreteness.

Step 2: Mandate artifacts in a schema (and enforce it at the API)

In chat, paste the schema and tell the model to fill it:

Output schema:
[
  {
    "step": <int>,
    "command": "<exact shell command>",
    "file": "<absolute or relative path>",
    "expected_output": "<one-line string>"
  }
]

Schema fields cannot be filled with prose. If the model has nothing concrete, it must write UNKNOWN.

If you call an API, do not rely on the prompt alone. As of June 2026 both major vendors ship native structured outputs that compile your JSON Schema into a grammar and constrain decoding, so the model literally cannot emit a token that breaks the schema:

  • OpenAI (GPT-5.5): pass response_format with type: "json_schema" and strict: true (in the Responses API the field is text.format). With strict: true, every property must be listed in required, and every object needs additionalProperties: false; mark optional fields with an anyOf that includes a null type. See OpenAI’s structured-outputs guide.
  • Anthropic (Sonnet 4.6 / Opus 4.7): use the output_format parameter and send the header anthropic-beta: structured-outputs-2025-11-13, or set "strict": true on a tool definition and force it with tool_choice. See Anthropic’s structured-outputs docs.

Constrained decoding is the difference between “please return JSON” (hope) and “the field can only contain a command” (guarantee). A command string field cannot be padded with “you might consider”.

Step 3: Forbid soft verbs

Forbidden: "consider", "might want to", "you could", "perhaps", "explore".
If you cannot give a concrete next step, write "INSUFFICIENT_INFO"
and ask for the specific data you need.

Banning the hedges forces the model to either commit or escalate. Pair this with Step 2’s UNKNOWN field so the model has a legal way to say “I don’t know” instead of padding with prose.

Step 4: Provide a concrete example

Like this:
1. Run `vercel logs --since=10m --level=error` to see recent errors.
   File: vercel.json (check buildCommand)
   Expected: log shows "Error: env STRIPE_KEY missing"

Not like this:
1. Consider reviewing your deployment logs to look for any
   anomalies that might be relevant to the issue.

The contrast makes the form unambiguous. One real example outperforms three sentences describing the example.

Step 5: Have the model self-audit

Append:

After writing, count artifacts per step:
- Does each step have exactly 1 command, 1 file, 1 expected_output? Yes/No
- Total artifacts across the output: <count>
- If artifacts are fewer than 15 across a 5-step output, rewrite for more concreteness.

Artifact-counting is mechanical, and models are reliable at mechanical checks.

Step 6: Use real input data

If your prompt is generic (“help me debug”), the output will be generic. Paste the actual error message, the actual config, the actual log lines. Concrete input pulls concrete output. This matters more than any phrasing trick: a model with no specifics can only return the training average, which is prose.

How to confirm the fix

  • Output contains three or more artifacts per logical unit (per step, per bullet, per section).
  • A teammate reading the output can execute the fix without asking a follow-up question.
  • Soft verbs (“consider”, “might”, “perhaps”) appear zero times.
  • Running the same prompt with the same input produces outputs with similar artifact counts.
  • The output reads more like a runbook than a memo.

FAQ

Why does the model keep hedging even after I ask for specifics?

Hedging is a default register, not a content choice, so “be specific” rarely overrides it. You have to remove the room to hedge: a JSON field named command has nowhere to put “you might want to”. Use Step 2’s schema, and at the API level use native structured outputs so the constraint is enforced during decoding rather than requested in prose.

Does a more capable model fix this on its own?

Partly. As of June 2026, reasoning-tier settings (the “Thinking”/“Pro” picker options) produce more concrete steps than the instant tier, and constrained-decoding modes raise schema compliance to roughly 99% in vendor benchmarks. But model choice does not replace the artifact requirement. The cleanest results come from a capable model and a schema, not one or the other.

What counts as an “artifact”?

Anything a reader can copy and act on without interpretation: an exact shell command, a file path, a config key and its value, a version pin, a code snippet, a precise error string, or a named tool or menu path. “Review your settings” is not an artifact; “set maxDuration: 60 in vercel.json” is.

The model wrote INSUFFICIENT_INFO. Did the prompt fail?

No, that is the prompt working. It means the task genuinely lacks concrete handles given what you pasted. Add the missing input (the real error, the real config) and rerun. A model that admits it is missing data is more useful than one that invents a confident, wrong command.

Can I enforce this without touching the API?

Yes. In chat, paste the schema in the prompt and add the self-audit from Step 5. You lose the hard decoding guarantee, but the schema-plus-audit combination removes most prose padding on its own. Reserve native structured outputs for repeated or automated tasks where a malformed answer would break a downstream script.

If it still fails

  1. The task may genuinely lack concrete handles given your input. Paste more input data.
  2. Switch the model to its reasoning tier (“Thinking” or “Pro”), which hedges less than the instant tier on open asks.
  3. Split into a multi-step workflow: the first prompt extracts facts, the second produces the action plan from those facts.
  4. For repeated tasks, enforce a JSON-Schema action-plan template at the API level with native structured outputs (Step 2).

Prevention

  • Default: every “advise” prompt names the artifacts it must produce.
  • Keep an actionable-output checklist per task type (deploy fixes, code reviews, PRDs).
  • Treat any output without artifacts as a draft, not a deliverable.
  • Audit accepted outputs: count artifacts; if the count is low, your prompts need tightening.
  • Replace “advise / discuss / consider” with “produce / list / write” as your default verbs.
  • For team workflows, agree on a minimum artifact density (for example, “every step has a command”).

Tags: #Troubleshooting #Prompt #Prompt quality #Vague answer