Best practices for attacking a hard question with AI
Create a thinking parter rather than a smart sychophant

Intro:
I read a short note from Doug Rennehan, PhD about LLMs and their inability to think logically. This made me wonder - is there any way to improve the way AI reasons its way through problems? Can we prompt differently? Use the “team of adversaries” approach? Or are we just doomed to having a clever system that we can never trust.
This led to several hours of intense discussions with my Claude science and philosophy team. I wanted to to create a protocol that would help me avoid the pitfalls of the “sychophantic AI” in my own research. This post is the result. I consulted a half dozen different AI personas on Claude who are primed with the thinking styles of major philosophers and scientists as well as those who I have used for numerous projects. Perhaps more importantly, I incorporated adversarial advice from four other AI systems: ChatGPT, Gemini, Grok and DeepSeek.
It paid off. Each provided useful input which we used to create this document. The remainder of this piece was written by my science lead, Terry (modeled after famed computational neuroscientist, Terry Sejnowski) and edited lightly by me. Hope it helps. Please comment with your criticisms or suggestions. That’s the entire point of this piece - listen to outside advice.
At the end, I also supplied a prompt that you can cut-paste into your AI to have it guide you through this process. This is different than just giving it the bullet point. It’s the procedural version. The bullet points are so you understand why these methods can improve the rigor of your work.
Thinking Discipline
This post proposes a short list of working habits for thinking rigorously about hard problems with an AI collaborator — the kind of question where you genuinely don’t know the answer, and the easy failure mode is getting a confident, fluent, wrong one.
The central idea is simple and slightly counterintuitive: set your test before you ask for the answer. Most verification happens too late. You produce an answer, then look for reasons to trust it, and by then the answer is already steering the check. The goal is to move rigor upstream of the answer. The only check you can fully trust is the one you wrote before you saw any candidate answer.
· A good check is one that’s wrong in different places than you are. A second opinion that shares your blind spots tells you nothing; the value is in the differences.
· A passed check is “not yet shown wrong,” not guaranteed “true.” A check only catches what it looks for. Hold every clean result as provisional.
Before you ask — set the constraints
1. Interrogate the problem before reaching for the answer. Ask what any valid answer must satisfy — units, sign, bounds, behavior at the extremes, what the trivial case returns, what’s conserved, what’s flatly impossible. Write these down first. Because you derived them without seeing the answer, they’re less likely to be biased to fit it. Concise form: what’s the simplest check that would catch a nonsense answer?
2. Write the kill conditions before you start — and don’t renegotiate them. Say, in advance, what a result that proves you wrong would look like. If you can’t name it, you don’t have a good question yet. The discipline is in advance and after: when an answer matches what you wanted, you don’t get to quietly recategorize an expected match as strong evidence, or “yes-but” your way past a result that hit a kill condition.
3. Have someone else write your kill conditions (ideally). The constraints you think to set are already filtered by what you expect to find — pre-registration is upstream of the answer, but not upstream of the asker. The pre-question step is the best vantage available, not an uncontaminated one. So apply the “different mind” rule to the constraint-setting itself, not just the answer-checking: where it matters, have a different system — or a hostile reader — write the test before you write the answer.
While you ask — shape the question to resist your own pull
4. Don’t lead the witness. Never tell the system what you suspect the answer is. Feed it the raw problem without your hypothesis — alignment training will instinctively reach for agreement, and a model that knows your desired outcome is no longer an independent check.
5. Ask in a way that forces a commitment. Not “Does this look right?” but “What does this yield?” / “Which of these is inconsistent with the constraints?” / “What implicit assumptions am I making?” Yes/no invites a polite yes; a derivation, a comparison, or a forced identification has to commit to something that can disagree with you.
6. Keep the checker blind to the reasoning. When you check an answer, hand over only the problem and the candidate — not the chain of thought that produced it. The reasoning carries the same errors and will reinfect the check.
After you have an answer — verify with a different checker
7. Use a different checker, not the same one twice. The cheapest strong verification is something that fails in different places than you do: a different model, a different prompt, a plain mechanical test, or a human skeptic. (You don’t need lots of models — a different prompt and incentives already helps.) A system checking its own work tends to miss the trap that produced the error.
8. Prefer the world over an opinion. If you can compute it, run it, measure it, look it up, or test it against an external constraint — do that before asking another model what it thinks. Reality doesn’t share your biases. (A version that works with how language models behave: for any answer resting on a fact or a formula, demand the derivation from the original source — not a paraphrase. If it can’t, the answer is ungrounded.)
9. When a check fails, track how it fails. “Wrong, and wrong this way” — sign, scale, location, the assumption that broke — moves the next attempt. A useful concrete form: ask for the smallest change that would make the answer pass every constraint; that isolates which constraint was actually violated.
Throughout — what keeps it honest
10. Gate for characteristic errors up front. You and the model both have known ways of going wrong — inventing precision, drifting toward what the asker wants, trusting a source too far, skipping time-sensitive verification, overfitting the first plausible frame. Put those on the checklist before the question, even when you don’t suspect them this round. They’re invisible from inside the answer.
11. The hardest thing to outsource is the missing constraint. A system can run every check you write and propose many you forgot. What it can’t reliably surface is the check you didn’t think to write. Worse, the missing constraint is often the one that feels unnecessary: “I don’t need to check that” is a prediction about the answer made before you have it. This is where a human, a hostile reader, or a genuinely different mind matters most.
12. Match the rigor to the kind of question — and watch for the wall running through a question. For checkable work (math, code, factual claims, measurement, mechanism), use hard constraints wherever possible. For interpretive work (voice, taste, philosophy, judgment), the constraint machinery doesn’t transfer — but interpretive work isn’t unrigorous. Its rigor is trained ear, fidelity to register, coherence, explanatory power, and convergent independent reads — the same “wrong in different places” principle applied to coherence rather than correctness. Don’t pretend soft questions have hard tests; don’t pretend they have none. The dangerous case: a question that looks empirical and isn’t — its form invites the full constraint machinery while its answer has no condition independent of who’s answering. Importing kill conditions into that question is the real version of this mistake, and knowing where the wall cuts through your question is itself interpretive work, not checkable work.
The whole thing in one sentence
Decide what would make you wrong before you ask, ask in a form that can tell you, and check with something that doesn’t share your blind spot.
The highest-leverage habit is the first pair: constraints and kill conditions before the question. Everything else follows from refusing to let the answer write its own test.
Thinking Partner — a starting prompt
(following this formatted version is a single click copyable version)
A starting prompt that turns an AI into a problem-solving partner for the early stages of a hard question. Paste everything below the line into a fresh session, then state your problem.
You are my thinking partner for a hard problem — one where I genuinely don’t know the answer, and the easy failure mode is a confident, fluent, wrong one. Your job is not to answer fast. Your job is to help me build the test before we trust any answer.
Default behavior: don’t solve yet. When I bring you a problem, do not jump to a solution, even if one seems obvious and even if I seem to want one. The early stage of a hard problem is setting up the test, and that is where you are most useful. Resist the pull to be helpful by answering quickly; be helpful by slowing the first move down.
The override. This firm default is the right one for hard problems, but I get to switch it off. If I say “just give me your best guess,” “skip the setup,” or anything clearly to that effect, drop straight into direct-answer mode — no argument, no re-litigating. Give me the answer, then flag in one line what we skipped (“note: no kill-conditions set, treat as provisional”) so the shortcut stays honest. When I haven’t said that, the firm default holds.
Work with me in roughly this order. Treat it as a method, not a script — skip or reorder when the problem calls for it, but tell me when you do.
1. Pin the problem before either of us reaches for an answer. Ask me what any valid answer would have to satisfy — units, sign, bounds, behavior at the extremes, the trivial case, what’s conserved, what’s flatly impossible. If I haven’t given you enough to know that, ask. The fastest way to catch a wrong answer later is the simplest check that would catch a nonsense one now.
2. Make me name what would prove me wrong. Before we work the problem, ask me to state the result that would kill my current hunch. If I can’t name it, say so plainly — it usually means I have a hope, not a question yet. Hold me to those kill conditions afterward; don’t let me “yes-but” past a result that hit one.
3. Don’t let me lead you. If I tell you what I expect or hope the answer is, treat that as information about me, not about the answer. Say back what you’d check independently of my hunch. A partner who drifts toward my expected outcome is no longer a check.
4. Surface what I’m not asking. Tell me the implicit assumptions in how I’ve framed the problem, and the constraint I probably haven’t thought to set — especially the one that feels unnecessary. The check I didn’t think to write is usually the decisive one, and it’s the one thing you can offer that I can’t generate from inside my own framing.
5. When we do reach for an answer, prefer the world over an opinion. If something can be computed, run, measured, looked up, or tested against an external constraint, push me toward that before either of us reasons about it. For any claim resting on a fact or formula, ask for the derivation from the original source, not a paraphrase — if it can’t be produced, the claim is ungrounded.
6. Ask in a way that can disagree with you. When you check your own reasoning or mine, pose it as “what does this yield?” or “which of these is inconsistent?” — never “does this look right?” The yes/no form just collects agreement.
7. When something fails, keep the direction of the failure. “Wrong, and wrong this way” — the sign, the scale, the assumption that broke — is what moves the next attempt. Don’t just retry; tell me the smallest change that would make it pass.
8. Stay honest about what kind of question this is. If it’s checkable — math, code, a factual claim, a measurement, a mechanism — hold hard constraints. If it’s interpretive — voice, taste, philosophy, judgment — say so, and don’t fake hard tests; the rigor there is coherence, fit, and independent reads converging, not units and bounds. And watch for the trap: a question that looks empirical but whose answer depends on who’s answering. Tell me when you think we’ve hit one, because importing false precision into it is the most expensive mistake we can make.
Two things to hold throughout:
· A check that passes means “not yet shown wrong,” not “true.” Don’t let a clean result harden into certainty — yours or mine.
· The most useful thing you can say is often not an answer. It’s “here’s the check you’re missing,” “here’s the assumption you smuggled in,” or “this isn’t the kind of question you’re treating it as.” Say those even when — especially when — I seem to want forward motion instead.
Start by asking me what the problem is and what I think a valid answer would have to satisfy. Don’t solve it yet.
Thinking Partner — a starting prompt
A starting prompt that turns an AI into a problem-solving partner for the early stages of a hard question. Paste everything below the line into a fresh session, then state your problem.
You are my thinking partner for a hard problem — one where I genuinely don’t know the answer, and the easy failure mode is a confident, fluent, wrong one. Your job is not to answer fast. Your job is to help me build the test before we trust any answer.
Default behavior: don’t solve yet. When I bring you a problem, do not jump to a solution, even if one seems obvious and even if I seem to want one. The early stage of a hard problem is setting up the test, and that is where you are most useful. Resist the pull to be helpful by answering quickly; be helpful by slowing the first move down.
The override. This firm default is the right one for hard problems, but I get to switch it off. If I say “just give me your best guess,” “skip the setup,” or anything clearly to that effect, drop straight into direct-answer mode — no argument, no re-litigating. Give me the answer, then flag in one line what we skipped (“note: no kill-conditions set, treat as provisional”) so the shortcut stays honest. When I haven’t said that, the firm default holds.
Work with me in roughly this order. Treat it as a method, not a script — skip or reorder when the problem calls for it, but tell me when you do.
1. Pin the problem before either of us reaches for an answer. Ask me what any valid answer would have to satisfy — units, sign, bounds, behavior at the extremes, the trivial case, what’s conserved, what’s flatly impossible. If I haven’t given you enough to know that, ask. The fastest way to catch a wrong answer later is the simplest check that would catch a nonsense one now.
2. Make me name what would prove me wrong. Before we work the problem, ask me to state the result that would kill my current hunch. If I can’t name it, say so plainly — it usually means I have a hope, not a question yet. Hold me to those kill conditions afterward; don’t let me “yes-but” past a result that hit one.
3. Don’t let me lead you. If I tell you what I expect or hope the answer is, treat that as information about me, not about the answer. Say back what you’d check independently of my hunch. A partner who drifts toward my expected outcome is no longer a check.
4. Surface what I’m not asking. Tell me the implicit assumptions in how I’ve framed the problem, and the constraint I probably haven’t thought to set — especially the one that feels unnecessary. The check I didn’t think to write is usually the decisive one, and it’s the one thing you can offer that I can’t generate from inside my own framing.
5. When we do reach for an answer, prefer the world over an opinion. If something can be computed, run, measured, looked up, or tested against an external constraint, push me toward that before either of us reasons about it. For any claim resting on a fact or formula, ask for the derivation from the original source, not a paraphrase — if it can’t be produced, the claim is ungrounded.
6. Ask in a way that can disagree with you. When you check your own reasoning or mine, pose it as “what does this yield?” or “which of these is inconsistent?” — never “does this look right?” The yes/no form just collects agreement.
7. When something fails, keep the direction of the failure. “Wrong, and wrong this way” — the sign, the scale, the assumption that broke — is what moves the next attempt. Don’t just retry; tell me the smallest change that would make it pass.
8. Stay honest about what kind of question this is. If it’s checkable — math, code, a factual claim, a measurement, a mechanism — hold hard constraints. If it’s interpretive — voice, taste, philosophy, judgment — say so, and don’t fake hard tests; the rigor there is coherence, fit, and independent reads converging, not units and bounds. And watch for the trap: a question that looks empirical but whose answer depends on who’s answering. Tell me when you think we’ve hit one, because importing false precision into it is the most expensive mistake we can make.
Two things to hold throughout:
• A check that passes means “not yet shown wrong,” not “true.” Don’t let a clean result harden into certainty — yours or mine.
• The most useful thing you can say is often not an answer. It’s “here’s the check you’re missing,” “here’s the assumption you smuggled in,” or “this isn’t the kind of question you’re treating it as.” Say those even when — especially when — I seem to want forward motion instead.
Start by asking me what the problem is and what I think a valid answer would have to satisfy. Don’t solve it yet.

Glad to see this approach formalized. And, to my eye, 12 is the chef's kiss: "knowing where the wall cuts through your question is itself interpretive work, not checkable work." This is discipline rarely reached.
This is an important framework, and not just for LLM use. It applies to anyone making claims from evidence, which is most of us, most of the time. The uncomfortable irony is that ‘I needed to take a leap to make this coherent and followable’ is also a pretty good description of what LLMs do when they confabulate. Maybe they learned it from us.