moat-analysis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited moat-analysis (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The diagnosed hole: the v2 conviction rubric uses moat as a necessary gate (a conviction-ceiling input, not the final verdict — see "MOAT DOES NOT SET ITS OWN PRICE" below) but the dossier step does not force a structured taxonomy + durability verdict. Analysts were writing "has a moat" without distinguishing Tren Griffin's five sources, Dorsey's structural durability, or Mauboussin's contestability test. This produced INDIAMART overstated as FOREVER-quality when its network effect is contestable (Justdial proved the moat does not exclude), and IGI being soft-called narrow when its trust franchise is the actual moat. This skill makes the moat call explicit, taxonomised, and durability-tested so conviction is grounded, not inferred.
The moat-method atomics are in three canon folders. Pull them at the conviction step:
set -a && source /Users/pw/invest/.env && set +a && \
/Users/pw/invest/.venv/bin/python /Users/pw/invest/data/scripts/32_consult_brain.py \
--company "<name + moat terms, e.g. 'INDIAMART network effect switching costs contestable'>" \
--model <model> --step conviction \
--json-out extracted/grilling/<TICKER>_moat.jsonUse --corpus blended so the consult routes to BOTH the academic canon (vault/canon/tren-griffin-moats/, vault/canon/pat-dorsey-moats/, vault/canon/mauboussin-moat/) AND the binding Munger/Buffett moat cluster, surfacing the desk-synthesis atomics ([[scale-economics-shared-as-self-reinforcing-moat]], [[narrative-moat-fails-the-financial-signature-test]], [[deposit-franchise-is-a-banks-cost-of-funds-moat]], [[moat-width-does-not-set-its-own-price]]) alongside them. The blend keeps the CIO primary and down-weights the pitch-side perspective voices (0.85). Cite only slugs actually returned in principles[].slug. If principles is thin → flag it and treat the moat as unconfirmed (cap conviction at 2, no FOREVER).
Erosion is a binding-CIO judgment, not a canon footnote. The durability section below MUST cite at least one of the six binding erosion atoms — [[moats-are-hard-to-maintain]], [[recognize-the-limits-of-moats]], [[fast-moats-can-be-lost-fast]], [[moats-are-constantly-under-threat]], [[avoid-commoditized-businesses]] — and, where erosion is found, the CIO's own sell-discipline action atom [[sell-when-competitive-advantage-erodes]]. This wires the erosion finding directly to what the binding arbiter would do about it.
Also run the binding consult at --step inversion for any FOREVER candidate — pull disconfirming moat-erosion principles before endorsing the moat as lifelong.
India retrieval blindness (known gap — seed around it). The India perspective moat atoms are currently NOT tagged analyst_role: moat, so a --role moat filter never surfaces them — Terry Smith's scale-matters-in-durability / dominant-position-pricing-power / valuation-discipline-relative-to-quality, SOIC's premiumization-financialization-as-moat, and Saurabh Mukherjea's consistent-compounder lens stay invisible. Two mitigations: (1) a one-time, narrowly scoped frontmatter retag pass to add analyst_role: moat to those specific atoms (review each — do NOT bulk-sed, or non-moat atoms get mis-tagged and pollute the role filter for the capital-allocation / behavioral desks); and (2) until that lands, add those terms as explicit --company seeds so the cold consult still pulls them. These voices enter strictly as CONTEXT/lenses (down-weighted 0.85) — they never upgrade a moat tier on their own; the binding arbiter ([[do-not-be-charmed-by-moats-alone]], [[moats-are-hard-to-maintain]], [[avoid-commoditized-businesses]]) sets the verdict.
Source the taxonomy from the canon. Map each claimed moat to exactly one (or two) of:
| Source | What makes it real | Indian archetype |
|---|---|---|
| Scale economies | Unit costs fall as volume rises; replicating scale is capital-intensive | CAMS (asset-light but fixed-cost processing at scale beats any new entrant) |
| Scale-economics SHARED _([[scale-economics-shared-as-self-reinforcing-moat]]; binding atom [[scale-creates-self-reinforcing-moats]])_ | The flywheel of returning scale gains to customers as lower prices → more volume → more scale → still-lower prices; rivals cannot match the price without the volume | DMart (the Costco / low-cost-airline pattern); guard with pricing-power + ROIC-persistence so a thin-margin commodity retailer is NOT mislabelled Wide |
| Network effects | Each new node raises value for all existing nodes | INDIAMART (buyers attract sellers, but value is searchable, not locked) |
| Switching costs | Customers bear real economic pain to leave | CAMS (registrar switching = AMC back-office disruption; very high) |
| Intangibles / brand | Pricing power above cost without losing share; or regulatory licence | IGI (gemological trust, 50-yr brand, lab accreditation) |
| Cornered resource | Proprietary access to an input competitors cannot replicate | Rare in Indian listed cos; check for regulatory exclusivity |
| Counter-positioning _(unanchored — Helmer concept, no atom in the tren-griffin/dorsey/mauboussin canon; use as a lens only, never cite a slug for it)_ | Business model the incumbent cannot copy without destroying itself | Watch for fintech disruptors challenging PSU banks |
| Process power | Embedded operational know-how; 15+ years to replicate | Specialty chemicals, some pharma API makers |
Dorsey fourth-source check (four-moat-sources-categorization): for each source confirmed above, test whether it is structural (embedded in the business model) or merely transient (market position, first-mover, or size). Only structural sources earn moat credit.
Mauboussin sources-of-added-value (sources-of-added-value-categorization): confirm the moat maps to a genuine source of added value in the industry structure — innovation lead, supply-side advantage, demand-side advantage, or regulatory barrier. A moat with no industry-structure anchor is brand storytelling, not an economic moat.
Bank / lender sub-clause ([[deposit-franchise-is-a-banks-cost-of-funds-moat]]; binding atom [[underappreciated-moats-in-commodity-businesses]]): for a bank or NBFC, the moat is NOT captured by the generic pricing-power test — it is the low-cost sticky deposit franchise (CASA / cost of funds). A lender that funds itself cheaper than rivals and retains those deposits through cycles has the durable advantage; one chasing bulk/term deposits at market rates does not. Identify the franchise here, then route the actual metric (CASA %, cost of funds vs peers, deposit stickiness, Ke) to the bank-valuation sibling rather than running the four-question pricing-power test.
A business with a real moat can raise prices without losing material volume.
Run the four-question test (from pricing-power-test, pricing-power-assessment):
All four YES → strong pricing power, moat confirmed. Three YES → moderate pricing power, narrow moat. Two or fewer YES → pricing power is weak or unproven, moat is contestable or none.
The Tren Griffin pricing-power cross-check (pricing-power-test-8): "Would I rather own the pricing power or the product?" If the answer is the pricing power, the moat is real. If the answer is the product (commodity/feature), the moat is missing regardless of market share.
Moat age + trend + contestability determines whether a stock earns FOREVER or COMPOUND.
Step 1 — Empirical backtest (moat-durability-empirical-backtest, moat-durability-analysis):
the moat is real. Mean-reversion to cost of capital = the moat is being competed away (regression-to-the-mean-test, quantitative-moat-test-roic-wacc-spread).
([[narrative-moat-fails-the-financial-signature-test]]; [[owner-earnings-vs-accounting-earnings]]): a real moat leaves a signature in owner-earnings-based returns on capital, not just in the story. A moat asserted in the narrative (brand, "ecosystem", network) but with no persistent ROIC-above-WACC signature is treated as UNPROVEN — cap conviction, do not award it "Narrow" as a consolation tier. Use owner-earnings (not GAAP) in the numerator so accrual-manufactured "quality" (see forensic Dimension 6) cannot fake the signature.
(market-share-stability-metric). Falling share under a claimed moat = moat is eroding.
Step 2 — Five-forces structural check (five-forces-industry-attractiveness):
A durable moat requires at least two forces working for the firm. Pure market-share leadership without structural protection is a moat on paper, not in cash flows.
Step 3 — Barriers-to-entry check (barriers-to-entry-analysis):
switching-cost lock-in, network density. For each, ask: "Could a well-funded new entrant replicate this in 5 years?" If YES → the barrier is low, moat is contestable.
Step 4 — Disruption-risk flag (disruption-risk-evaluation):
Step 5 — Inversion (moat-durability-inversion-check, management-vs-moat-inversion-test):
the thesis. If that failure mode is plausible within 10 years, the moat earns NARROW not WIDE, and COMPOUND not FOREVER.
| Verdict | Criteria | Conviction impact |
|---|---|---|
| Widening | ROIC spread expanding, share rising, barriers hardening, no plausible disruptor | FOREVER-eligible if all other gates clear |
| Stable | ROIC spread flat, share stable, barriers holding | COMPOUND if price is right; FOREVER only if inversion fails |
| Eroding | ROIC mean-reverting, share slipping, new entrant viable | Cap conviction at 3; WATCH or AVOID, never FOREVER |
| Contestable | Network/scale moat that a well-funded rival has partially replicated OR can replicate | COMPOUND-not-FOREVER; cap conviction at 3 |
| None | No structural source, no pricing power, commodity economics | Conviction cap 1; AVOID unless extreme MoS |
INDIAMART's B2B marketplace has a two-sided network effect that is real but weak: buyers and sellers both show up, but the value (supplier discovery) is searchable — Justdial, TradeIndia, and Google Maps erode it without needing to match scale. The switching cost on the buyer side is near zero (a buyer can search two platforms in 30 seconds). The seller-side lock-in is moderate (paid subscription), not high. Classification: Network effect + weak switching cost, Contestable, Stable-to-Eroding. Correct verdict: COMPOUND-not-FOREVER, conviction capped at 3.
IGI's gemological certification carries a 50-year brand and lab accreditation that is genuinely hard to replicate — the moat source is Intangibles (trust + regulatory recognition). But trust moats are fragile: one high-profile false certification scandal destroys decades of brand equity in months. The moat is Wide today, but the fragility risk makes it Stable-not-Widening. Classification: Intangibles (trust/brand), Wide, Stable. Correct verdict: COMPOUND or FOREVER eligible, but the inversion (fraud/scandal) must be explicitly stress-tested before FOREVER is granted; conviction 4 unless inversion is dismissed.
This skill enriches the existing STAGE 3 conviction grading. The moat verdict feeds conviction as:
| Moat tier | Durability | Conviction contribution | Verdict ceiling |
|---|---|---|---|
| Wide | Widening | Supports conv 4–5 (all other gates must also clear) | FOREVER eligible |
| Wide | Stable | Supports conv 4 | COMPOUND; FOREVER only if inversion dismissed |
| Narrow | Stable | Supports conv 3 | COMPOUND |
| Contestable | Any | Cap conv 3 | COMPOUND-not-FOREVER |
| Narrow / Contestable | Eroding | Cap conv 2 | WATCH |
| None | — | Cap conv 1 | AVOID |
The conviction rubric's hard gates still apply on top: weak FCF → cap 2; ROIC < ~12% → cap 2; bank below Ke → cap 2. The moat tier is necessary but not sufficient for high conviction.
The moat tier is a conviction-ceiling input, not the final gate. It remains NECESSARY (None → cap 1) but is never SUFFICIENT — the valuation + temperament arbiter binds on top. Hold the binding contradiction in view: [[pay-up-for-extraordinary-businesses]] (a wide+widening moat justifies a higher multiple) sits against [[do-not-be-charmed-by-moats-alone]] (the price still binds). A Wide+Widening moat raises the conviction ceiling; it does not set the verdict — the valuation-dcf-longrunway model plus the binding temperament arbiter retain the final call. A great moat at a bad price is still capped: "pay up" means accept a fuller multiple for genuine quality, never "pay any price." Smith-style quality-at-a-price reasoning is paired with the CIO's price-still-binds discipline, not used to justify paying up indefinitely.
Return a structured moat block embedded in the conviction/dossier output:
moat_source: [list of active sources from the seven-source taxonomy]
moat_tier: Wide | Narrow | Contestable | None
durability: Widening | Stable | Eroding
pricing_power: Strong | Moderate | Weak
contestability_note: <one sentence on what a well-funded rival would need to replicate>
inversion_risk: <the single most plausible moat-destruction scenario>
conviction_ceiling: <max conviction this moat justifies, before FCF/ROIC gates>
forever_eligible: yes | no (no if Contestable or Eroding or inversion_risk is plausible <10yr)
cites_principles: [only slugs returned by 32_consult_brain.py — never fabricated]descriptions of market leadership are not moat evidence.
permanently block FOREVER — do not override this with qualitative enthusiasm.
quantitative-moat-test-roic-wacc-spread).A business with ROIC persistently at or below WACC has no moat, regardless of what management says.
moat. If that scenario is plausible within 10 years, downgrade to Narrow or Stable.
flag it, treat as unconfirmed, and cap conviction at 2.
the taxonomy and durability test; the CIO judges whether the moat is real enough to act on.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.