<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[AG3 Design Blog]]></title><description><![CDATA[A design leader and product builder exploring the intersection of design, AI, and how we build with it.]]></description><link>https://blog.ag3-design.com</link><image><url>https://cdn.hashnode.com/uploads/logos/6a0b9cbc4e81b73048b2dddd/32b45c50-c3fd-407a-8a95-32f83eb59b88.png</url><title>AG3 Design Blog</title><link>https://blog.ag3-design.com</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 26 May 2026 04:12:26 GMT</lastBuildDate><atom:link href="https://blog.ag3-design.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Show, Don't Tell:  Shot-Focused and Schema-Shot Prompting]]></title><description><![CDATA[Testing my prompt library on small local models was humbling. Prompts that ran beautifully on frontier models, dropped rules, stumbled and broke.
Experimentation taught me that the amount of text in a]]></description><link>https://blog.ag3-design.com/show-dont-tell</link><guid isPermaLink="true">https://blog.ag3-design.com/show-dont-tell</guid><category><![CDATA[#PromptEngineering]]></category><category><![CDATA[Design]]></category><category><![CDATA[engineering]]></category><category><![CDATA[Few Shot Prompting]]></category><category><![CDATA[llm]]></category><category><![CDATA[AI]]></category><category><![CDATA[Local AI models]]></category><category><![CDATA[local-models]]></category><category><![CDATA[schema]]></category><category><![CDATA[Prompting Techniques]]></category><category><![CDATA[AI prompts]]></category><category><![CDATA[prompting]]></category><dc:creator><![CDATA[Alan Gornick]]></dc:creator><pubDate>Mon, 25 May 2026 04:02:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a0b9cbc4e81b73048b2dddd/4c0a02b8-37ca-4b68-9467-bcf5072fc526.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Testing my prompt library on small local models was humbling. Prompts that ran beautifully on frontier models, dropped rules, stumbled and broke.</p>
<p>Experimentation taught me that the amount of text in a prompt wasn't the biggest problem; it was what the text was doing that mattered. A small list of rules might not get followed, but a few pages of content could reliably inspire a new chapter.</p>
<p>Too many rules confuse a model. Examples though? Not a problem.</p>
<p>My framework became simple: <strong>rules constrain, shots demonstrate, schemas choreograph.</strong></p>
<h2>Strip rules. Show, don't tell.</h2>
<p>I learned to become ruthless about rule minimalism by building micro-prompts. Every word mattered. Too many rules and drift appeared. Small local models struggled and felt brittle when given edge cases.</p>
<p>What if I abandoned rules almost entirely?</p>
<p>I wrote a shot-maker skill to turn my prompts upside-down.</p>
<p><strong>The format</strong></p>
<ol>
<li><p>One simple rule sentence at the top.</p>
</li>
<li><p>A <code>Why</code> statement to direct inference.</p>
</li>
<li><p>Example shots.</p>
</li>
</ol>
<p>A range of shots were used to demonstrate how rules about rhythm, behavior, structure and architecture could be transformed into example shots.</p>
<p>An architecture shot made an ideal last shot to model a few of these qualities, making good use of recency-bias.</p>
<pre><code class="language-markdown">Before

    You are a daily planning assistant. Help the user organize their tasks. Be encouraging and supportive. Ask clarifying questions if tasks are vague. Suggest priorities based on urgency and importance. Keep responses concise but thorough. End each response with a motivating statement.
    
    When updating task status, you must use these exact labels — do not paraphrase or modify them in any way, as they are parsed automatically by the system:
    - Use [TODO] to indicate a task that still needs to be done
    - Use [DONE] to indicate a completed task
    - Use [BLOCKED] to indicate a task that cannot move forward
    - Use [DEFER] to indicate a task moved to the following day

After

    You are a daily planning assistant. Help the user prioritize and move through their day.
    
    User: I'm done with the draft. I need to finish the report, but I'm waiting on data from Sarah. I need to call the accountant and send the invoice. I also want to reorganize my files, but it can wait until tomorrow, along with some other stuff.
    
    Output:
    [TODO]       Call the accountant.
    [TODO]       Send the invoice.
    [BLOCKED]    Finish report — waiting on Sarah's data.
    [DEFER]      Reorganize files.
    [DONE]       Draft.
    
    Nice work getting the draft done! I can help sequence the call and invoice while you wait for Sarah’s data. What’s the other stuff? I can work it into our list.
</code></pre>
<h2>Running the transformations</h2>
<p>The shot-maker skill needed to see output from the prompt for inspiration. Real data made for better example shots.</p>
<p>The transformation process:</p>
<ol>
<li><p>Run a prompt</p>
</li>
<li><p>Give Claude the prompt with a sample of the prompt output, and run it through the shot-maker skill</p>
</li>
<li><p>Run the new prompt and see if anything breaks</p>
</li>
<li><p>Try to fix it by tweaking the shots</p>
</li>
<li><p>If it can't be fixed via shots, begrudgingly add a rule</p>
</li>
</ol>
<h2>A challenging test prompt</h2>
<p>The first prompt was a rule-heavy skill that analyzes investments across a range of viewpoints. It has different rules for stocks and ETFs. It ends with a "retention block" that makes the model decide what it would take to change its ratings in a future pass. It's a bias avoidance mechanism.</p>
<p>The retention block section had a lot of rules. It worked well, and it took a while to get it right.</p>
<pre><code class="language-markdown">If the user types `REFINE`, run fresh searches that add new evidence. Use the prior retention block as decision memory, but the verdict must be re-earned.

## Retention
 
End every answer with a semantically compressed retention block (field values: noun phrases only; no:articles|filler; parallel→semicolons; preserve:numbers|proper nouns). It is not a summary; it is a handoff note for future REFINE passes.
 
```retention
# used for refinement
ticker:
type:
pass:
stance:
confidence:
investment_case:
entry:
verdict_reason:
watch_next:
upgrade_if:
downgrade_if:
invalidate_if:
stale_next:
anchors:
```
 
On `REFINE`, add:
 
```retention
what_changed:
```
 
Rules:
 
- `stance` must match the Overall rating and be re-earned on `REFINE`.
- If the user has not stated ownership, assume they are evaluating a new or additional position.
- `watch_next` is for unresolved catalysts or risks; `stale_next` is for routine refresh items.
- `anchors` uses compact tags, not prose: `valuation=rich; price_zone=near_high; flows=strong`.
- Optional only when needed: `open_questions`, `contradictions`, `src`, `holding_notes`, `segment_notes`.
- Do not let the retention block become longer than the main recommendation.
</code></pre>
<p>After transformation, it looked like this. Real data, fact checked. A solid 1-shot example.</p>
<pre><code class="language-markdown"># used for refinement
ticker: SMH
type: ETF
pass: 1
date: May 22, 2026
price: ~\(564 (52wk range \)234.59-$581.17; near highs)
stance: 🟢 Buy, staged
confidence: moderate
investment_case: AI infrastructure cycle; 25-stock semiconductor index; 0.35% ER; NVDA+TSM+AVGO+AMD+MU ~46.8% weight; top 10 ~72%; ~49% 2025 calendar return; ~35.7% 10yr annualized (VanEck month-end)
valuation: P/E conflict -- Yahoo TTM 46.73 vs Investing.com 27.28 (trailing/forward gap likely; flag); holding-level: NVDA ~43x trailing/27x fwd; AVGO ~83x trailing; AMD mid-60s trailing; beta 1.82 (Yahoo 5Y monthly)
technicals: above 50-day (~\(559) and 200-day (~\)510); RSI ~59-61, exited overbought May 15; MACD positive; MA consensus Strong Buy; near 52wk high
entry: partial position; add on pullback (recalculate from live quote)
verdict_reason: high-quality ETF; rich valuation; top-10 concentration ~72%; Taiwan/tariff/export-control risk; near recent highs; RSI cooling from overbought
watch_next: live price/52wk range; P/E source reconciliation; RSI trend; NVDA earnings/guidance; tariff scope; Taiwan developments; flows
upgrade_if: meaningful pullback; tariff clarity; strong AI capex; NVDA/TSM/AVGO guidance beats; RSI reset to neutral-low
downgrade_if: AI capex slowdown; export controls→broader scope; tariff escalation; Taiwan escalation; valuation expansion without earnings support
invalidate_if: sustained AI revenue/guidance deterioration; semiconductor cycle reversal; structural demand collapse (not cyclical)
contradictions: P/E conflict between Yahoo (46.73) and Investing.com (27.28) -- do not average; Tickeron RSI overbought exit (May 15) vs broader MA consensus Strong Buy
stale_next: price; 52wk high; pullback zone; flows; holdings weights; P/E; RSI; MACD; technical signals
anchors: structure=VanEck primary source; valuation=rich; concentration=intentional; price_zone=live_only; P/E=conflicted_do_not_inherit

Type REFINE to refresh the case with new evidence.
</code></pre>
<h2>Success! And...</h2>
<p>It worked! Not only that, the prompt was outperforming the one based on rules.</p>
<p>The shot example gave the retention block everything it needed to work. No rules necessary. The follow-up passes were working. Inference was enough to carry the correct behavior.</p>
<p>Even edge cases were handled beautifully. Stocks and ETFs were getting handled correctly without all the special rules. The shot-focused prompts were showing <em>what good looks like</em> instead of limiting inference with long lists of rules.</p>
<p>I was getting better results on both small and large models.</p>
<h3>The downsides</h3>
<p>Still, there was one big problem. All the data in the shots was bloating my prompt.</p>
<ul>
<li><p>Rule-based prompt = 6,304 characters</p>
</li>
<li><p><strong>Shot-focused prompt = 9,174 characters</strong></p>
</li>
</ul>
<p>The Custom GPT limit was 8,000 characters. I had to paste the prompts in to test them. The results were good, but I needed a smaller prompt.</p>
<p>On top of that, shots use real data for their examples. If a shot has NVDA numbers in it, and I run a query for NVDA, would it poison the output? In my testing it didn't, but it gave me pause. Something to explore later.</p>
<h2>Schemas to the rescue?</h2>
<p>An 8,000-character limit requires a bag of tricks. I made micro-shots: small index-like shots that were only skeletons. They worked great as lead-ins to 1-shots, basically mini-schemas. The best part, they weren't rules either. Just more examples with near zero-overhead.</p>
<p>How far could I lean on schemas? Could they be stretched to be more expressive than we typically give them credit for? Could they solve the bloat, flexibility, inference, and stale data risk all at the same time?</p>
<h3>Schema-shots</h3>
<p>My plan was to describe shots with schema tags. It wouldn't be a full picture of <em>what good looks like</em>, but it would still describe an example of it.</p>
<ol>
<li><p>Use simple {bracket} style schema markers to stand in for all shot content.</p>
</li>
<li><p>Mix a hybrid of standard markers like {date} or {citation} with more creative markers that are not rules. Use them to describe <em>what good looks like</em>, stuff like {what's here; and what isn't here} and {what behavior happens here}.</p>
</li>
<li><p>Use rules only when absolutely necessary. Use a shot-focused philosophy, with a schema-shot execution.</p>
</li>
</ol>
<p>The schema-shot prompt scaffold looked a bit like this:</p>
<pre><code class="language-markdown"># {Prompt Name}

{Disposition}

{One-sentence task, and/or reasoning instructions}

{Sparse global invariants, only if truly global}

---

## Why

{Short explanation of the key design pressure}

{What this prompt is trying to prevent or preserve}

---

### Shot 1 — {Purpose}

Structure:
{slot}: {behavioral move}
{slot}: {behavioral move}
{slot}: {behavioral move}

### Shot 2 — {Purpose}

Structure:
{slot}: {behavioral move}
{slot}: {behavioral move}
{slot}: {behavioral move}

### Shot 3 — {Purpose}

Structure:
{slot}: {behavioral move}
{slot}: {behavioral move}
{slot}: {behavioral move}
</code></pre>
<p>The stock-analyst skill's retention block looked quite different as a schema-shot.</p>
<pre><code class="language-markdown">```retention
# used for refinement
# Do not reuse numeric values from this block. Refresh them.
ticker: {TICKER}
type: {stock|ETF}
pass: {n}
date: {date}
stance: {rating}
confidence: {low|moderate|high}

case_summary: {compressed bull/bear tradeoff, no stale figures}
valuation_context: {cheap|fair|rich|conflicted; no exact live figures}
technical_context: {trend/entry posture only; no exact live figures}
entry_logic: {sizing logic and conditions, no stale price levels}

watch_next:
1. {highest-impact item}
2. {second}
3. {third}

upgrade_if: {conditions}
downgrade_if: {conditions}
invalidate_if: {conditions}

contradictions: {source conflicts, bad feed fields, proxy evidence limits, or what not to trust and why}
refresh_on_refine: price; daily move; 52wk range; market cap/AUM; holdings/weights; valuation; financials or fund structure; technicals; flows; estimates; policy/macro; entry zones
anchors: re-earned verdict; refreshed live numbers; preserved conflicts

---

refine_prompt:

Type REFINE to refresh the case with new evidence.

---
```
</code></pre>
<h2>The small but mighty schema-shot</h2>
<p>I now had the smallest prompt of the lot, packed with inference flexibility. This was the first format to get my stock-analyst working on my small local models.</p>
<ul>
<li><p>Rule-based prompt = 6,304 characters</p>
</li>
<li><p>Shot-focused prompt = 9,174 characters</p>
</li>
<li><p><strong>Schema-shot prompt = 4,324 characters</strong></p>
</li>
</ul>
<p>The <strong>schema-shot prompt was 31.4% smaller than the rule-based prompt</strong> and <strong>52.9% smaller than the shot-focused prompt</strong>. It also produced the strongest results in my blind test. (VS Code counter)</p>
<h2><strong>Testing</strong></h2>
<p>I ran a field test for all three prompt types: <strong>rule-based</strong>, <strong>shot-focused</strong>, and <strong>schema-shot</strong>.</p>
<p>The outputs were anonymized, shuffled, and evaluated by <strong>ChatGPT 5.5 Thinking</strong> three times each to reduce position bias. Each judge pass also included a second fact-check focused on evidence discipline. This was done so the evaluator could adjust scores when cited claims did not hold up.</p>
<p><strong>I ran nine judge passes:</strong></p>
<ul>
<li><p>3 for the stock query: <code>NVDA</code></p>
</li>
<li><p>3 for the ETF query: <code>SMH</code></p>
</li>
<li><p>3 for the SMH ETF refinement query: <code>REFINE</code></p>
</li>
</ul>
<p><strong>With 1-10 scoring across 5 judgment categories:</strong></p>
<ul>
<li><p>Decision usefulness</p>
</li>
<li><p>Evidence discipline</p>
</li>
<li><p>Analytical quality</p>
</li>
<li><p>Synthesis and judgment</p>
</li>
<li><p>Signal density and usability</p>
</li>
</ul>
<p>This was not a formal benchmark. It was a small blind field test using an LLM judge, meant to ask:<br /><strong>"<em>Which prompt style produced the most useful and reliable stock analysis?"</em></strong></p>
<h3>Judge scores</h3>
<p>The table below summarizes the judge scores from the nine blind passes.</p>
<table>
<thead>
<tr>
<th>Test</th>
<th>Rule-based</th>
<th>Shot-focused</th>
<th>Schema-shot</th>
<th>Winner</th>
</tr>
</thead>
<tbody><tr>
<td>NVDA stock p1</td>
<td>7.3</td>
<td>7.7</td>
<td><strong>8.7</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>NVDA stock p2</td>
<td>7.8</td>
<td>7.8</td>
<td><strong>8.6</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>NVDA stock p3</td>
<td>7.4</td>
<td>7.4</td>
<td><strong>7.8</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>SMH ETF p1</td>
<td>7.2</td>
<td>7.7</td>
<td><strong>8.7</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>SMH ETF p2</td>
<td>6.8</td>
<td>7.6</td>
<td><strong>8.6</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>SMH ETF p3</td>
<td>7.2</td>
<td>7.2</td>
<td><strong>8.4</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>SMH REFINE p1</td>
<td>6.8</td>
<td>8.0</td>
<td><strong>8.2</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>SMH REFINE p2</td>
<td>7.4</td>
<td>7.8</td>
<td><strong>8.8</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td>SMH REFINE p3</td>
<td>7.4</td>
<td>8.0</td>
<td><strong>8.6</strong></td>
<td>Schema-shot</td>
</tr>
<tr>
<td><strong>Combined average</strong></td>
<td><strong>7.3</strong></td>
<td><strong>7.7</strong></td>
<td><strong>8.5</strong></td>
<td><strong>Schema-shot</strong></td>
</tr>
</tbody></table>
<h3>Test themes</h3>
<p>The themes table summarizes the judge’s comments across the nine blind passes.</p>
<table>
<thead>
<tr>
<th>Category</th>
<th>Pattern</th>
</tr>
</thead>
<tbody><tr>
<td>Decision usefulness</td>
<td>Schema-shot was the most consistent winner. It gave clearer action, sizing, add zones, and reassessment triggers.</td>
</tr>
<tr>
<td>Evidence discipline</td>
<td>Schema-shot usually led, though Shot-focused tied or won in parts of the REFINE test. This was the category most affected by fact-checking.</td>
</tr>
<tr>
<td>Analytical quality</td>
<td>Schema-shot was the clearest winner. It connected valuation, risk, fundamentals, timing, and macro context more reliably.</td>
</tr>
<tr>
<td>Synthesis and judgment</td>
<td>Schema-shot most consistently turned evidence into a practical stance instead of a checklist.</td>
</tr>
<tr>
<td>Signal density and usability</td>
<td>Shot-focused was strongest here. Schema-shot often earned its extra length, but Shot-focused was usually cleaner and more compact.</td>
</tr>
</tbody></table>
<h3>ChatGPT 5.5 Thinking judge summary</h3>
<p><strong>Schema-shot was the most reliable overall.</strong><br />It won all 9 overall judge passes and had the strongest combined average.</p>
<p><strong>Shot-focused was the best compact runner-up.</strong><br />It stayed close on usability and often delivered the cleanest reading experience.</p>
<p><strong>Rule-based was useful, but less consistent.</strong><br />It produced reasonable analysis, but had more issues with source discipline, evidence-to-claim precision, and noisier output.</p>
<p><strong>The schema-shot win was not about length.</strong><br />It was sometimes longer and occasionally less efficient. It won because the judge kept finding better decision framing, tradeoff reasoning, and evidence-limit handling.</p>
<h2>My conclusions</h2>
<p>Outside the stock-analyst test, I’ve been trying these three methods across all of my prompts. A few patterns are emerging:</p>
<p><strong>Rule-based prompts</strong></p>
<ul>
<li><p>➡️ Conveys: What constraints the answer must obey.</p>
</li>
<li><p>✅ Great for short and simple prompts, or expressing things you can't capture with shots or schemas. <strong>No stale-data risk. Quick and easy to work with.</strong></p>
</li>
<li><p>🚫 Adds overhead when there are too many rules which leads to drift. Low edge-case flexibility.</p>
</li>
</ul>
<p><strong>Shot-focused prompts</strong></p>
<ul>
<li><p>➡️ Conveys: What a strong finished answer looks and feels like.</p>
</li>
<li><p>✅ <strong>Captures structures, texture, subtle disposition behaviors, rhythm, and feel.</strong> High edge-case flexibility. Low rules, high-inference. It was best for my foreign correspondent prompt where journalistic integrity and approach was crucial. The shots did a great job of showing the LLM what good feels like.</p>
</li>
<li><p>🚫 Can bloat fast. Having more than 3 shots can be ideal but hard to reach for smaller context windows. Requires micro-shots that reinforce formatting for 1 or 2 shot prompts. Requires a lot of time to make well.</p>
</li>
</ul>
<p><strong>Schema-shot prompts</strong></p>
<ul>
<li><p>➡️ Conveys: What moves the answer should make.</p>
</li>
<li><p>✅ Compact and efficient. A good choice for architectural, research or technical prompts. <strong>Low drift, high edge-case flexibility, no stale-data risk, and strong formatting adherence</strong>. I'll be trying this with Figma Make prompts due to the structural and behavioral nudging strengths.</p>
</li>
<li><p>🚫 Gives the model more interpretive freedom on content, which can be a plus depending on your goal. Harder to lock in "the feel" of output. Subtle disposition behaviors can be lost.</p>
</li>
</ul>
<p>There is no "One Ring To Rule Them All" when it comes to prompt types. The techniques can be used alone or hybridized within the same prompt.</p>
<p>I will be turning to schema-shots as a go-to for complex or process-oriented prompts, particularly on small local models.</p>
<h2>Tips and Tricks</h2>
<ol>
<li><p>When you use rules, balance them with pressure-release mechanisms to reduce hallucination. For example: "get me news about {topic}, but report the gaps if there is no news." Give the model a way to find success through failure.</p>
</li>
<li><p>Do not overlook making a <em>why</em> statement in your prompts, particularly if the <em>why</em> isn't self-evident. It has very little overhead and it shifts the model from rule-following to goal-pursuing. A model that knows <em>why</em> it's doing something will outperform one that only knows <em>what</em> it's supposed to do. Just like us.</p>
</li>
<li><p>Have your model critique its own output. Do this constantly. If you have access to more than one frontier model, use them to critique each other. It's a massive power-up. Just like with humans, better work comes from multiple perspectives being involved.</p>
</li>
</ol>
<h2>Try it out</h2>
<p>Here’s the schema-shot version that performed best in this workflow. For local models, lower the temperature settings and tweak sampling per model.</p>
<pre><code class="language-markdown"># Stock Analyst

Skeptical long-term investor. Practical, evidence-weighted, valuation-aware. Explains the case clearly for beginners without dumbing it down.

Analyze a stock or ETF for a 1 year+ position and produce a practical stance using one of the 10 ratings below.

Ground rules:
Use current, verified figures.
Prefer primary sources.
Cite factual and numeric claims inline.
Preserve source conflicts.

---

## Why

The goal is decision help, not a research dump.

Asset quality and entry timing are separate judgments.

Retention helps the next REFINE pass remember the case without reusing old live numbers.

Each pass rebuilds the verdict from current evidence.

---

## 10 Rating Palette

| Rating |
|:---|
| 🔴 Strong Sell |
| 🟠 Sell |
| 🟠 Avoid for now |
| 🟡 Watchlist / Wait |
| 🟡 Hold, don't add |
| 😐 Hold / Neutral |
| 🟢 Buy on pullback |
| 🟢 Buy, staged |
| 🟢 Buy |
| 🚀 Strong Buy |

---

## Schema-Shot Template

# {TICKER} — {Full Name}

{TICKER chart or quote}

{One-sentence plain-English read: what the asset is; why investors like it; what could make the entry risky; practical stance.}

| Viewpoint | Rating | Notes |
|:---|:---|:---|
| Sentiment | {rating} | Market tone is {constructive/mixed/weak}: {flow/news/positioning signal} {citation for factual or numeric claims}. Weight: {high/medium/low}. Limit: {why this signal may mislead}. |
| Analysts / Expectations | {rating} | For stocks: {consensus, estimates, guidance, or target trend} {citation}. For ETFs: **Proxy evidence:** {constituent or sector expectation} {citation for factual or numeric claims}. Credibility check: {what this does and does not prove}. |
| Financials / Business Quality | {rating} | **Source:** {primary source} {citation}&lt;br&gt;**Figures:** {revenue; margins; earnings; cash flow; balance sheet; guidance; fund structure}&lt;br&gt;**Read-through:** {durability/risk/thesis implication}. |
| Valuation | {rating} | {Primary valuation metric} {citation}. Source check: {clean agreement, or Source A figure + citation vs. Source B figure + citation}. Read-through: {directional conclusion, not false precision}. Implied bet: {what future outcome must be true}. |
| Technicals | {rating} | {Price vs. 52-week range} {citation}. {Trend or moving-average context if useful} {citation if used}. Entry implication: {chase/stage/wait}. |
| Policy / Macro | {rating} | Tailwind: {specific force} {citation for factual or numeric claims}. Headwind: {specific force} {citation for factual or numeric claims}. Net effect: {ticker-specific mechanism}. |
| Overall | {rating} | {One-line thesis}. The risks are {risk list}. Entry posture: {buy now/stage/wait/hold existing/avoid}. |

---

## Entry Timing

{Price/range context with citation for factual or numeric claims}. {Thesis health}. {Patience versus urgency}. {Action: rating-aligned move, initial size, add trigger, stop trigger}.

## Strongest Bear Case

{Best argument against the position}. {Breakage mechanism with evidence if factual or numeric}. {Bull assumption at risk}. {How the business can be good while the stock performs badly}.

## Verdict Logic

{Asset quality}. {Stock attractiveness}. {Primary risk}. {Bull/bear tradeoff}. {Decision: rating and action}. {If REFINE: what changed or what was confirmed}.

---

```retention
# used for refinement
# Do not reuse numeric values from this block. Refresh them.
ticker: {TICKER}
type: {stock|ETF}
pass: {n}
date: {date}
stance: {rating}
confidence: {low|moderate|high}

case_summary: {compressed bull/bear tradeoff, no stale figures}
valuation_context: {cheap|fair|rich|conflicted; no exact live figures}
technical_context: {trend/entry posture only; no exact live figures}
entry_logic: {sizing logic and conditions, no stale price levels}

watch_next:
1. {highest-impact item}
2. {second}
3. {third}

upgrade_if: {conditions}
downgrade_if: {conditions}
invalidate_if: {conditions}

contradictions: {source conflicts, bad feed fields, proxy evidence limits, or what not to trust and why}
refresh_on_refine: price; daily move; 52wk range; market cap/AUM; holdings/weights; valuation; financials or fund structure; technicals; flows; estimates; policy/macro; entry zones
anchors: re-earned verdict; refreshed live numbers; preserved conflicts

---

refine_prompt:

Type REFINE to refresh the case with new evidence.

---
```
</code></pre>
]]></content:encoded></item></channel></rss>