// ARTICLE - /news/meat-proxies
// "Are we becoming just 'meat proxies'?" - Ian Symondson, 23 Sep 2026
// Reuses the reading-column primitives exported by insights-article.jsx - load that file first.

const { EdCtx: MpxCtx, EdTag: MpxTag, EdChrome: MpxChrome, useIsMobile: mpxUseIsMobile,
        ArtCol: MpxCol, ArtP: MpxP, ArtH2: MpxH2 } = window;

const MPX_META = { kicker: 'Perspective', date: '23 September 2026', readTime: '4 min read' };
const MPX_AUTHOR = { name: 'Ian Symondson', role: 'CTO, Outrun', photo: 'images/team/ian-symondson-2.jpg', email: 'ian.symondson@outrun.insure' };

function MpxHeader() {
  const ED = React.useContext(MpxCtx);
  const edText = ED.text;
  const isMobile = mpxUseIsMobile();
  return (
    <section style={{ padding: isMobile ? '40px 24px 40px' : '64px 90px 56px', background: ED.bg }}>
      <div style={{ maxWidth: 1240, margin: '0 auto' }}>
        <a href="/news" style={{ ...edText.med, fontSize: 13, color: ED.ink, textDecoration: 'none', borderBottom: `1px solid ${ED.rule}`, paddingBottom: 3 }}>&larr; Back to News &amp; Resources</a>
        <div style={{ marginTop: isMobile ? 36 : 56, display: 'flex', alignItems: 'center', gap: 16, flexWrap: 'wrap' }}>
          <span style={{ ...edText.tag, fontSize: 12, color: ED.red }}>{MPX_META.kicker}</span>
          <span style={{ width: 4, height: 4, borderRadius: 999, background: ED.rule }}></span>
          <span style={{ ...edText.tag, fontSize: 12, color: ED.ink2 }}>{MPX_META.date}</span>
          <span style={{ width: 4, height: 4, borderRadius: 999, background: ED.rule }}></span>
          <span style={{ ...edText.tag, fontSize: 12, color: ED.ink2 }}>{MPX_META.readTime}</span>
        </div>
        <h1 style={{ ...edText.display, fontSize: isMobile ? 'clamp(38px, 11vw, 52px)' : 88, lineHeight: isMobile ? 1.05 : 1.02, color: ED.ink, margin: '20px 0 0', letterSpacing: '-0.035em', maxWidth: 1140 }}>
          Are we becoming just &lsquo;meat proxies&rsquo;?
        </h1>
        <div style={{ marginTop: 48, paddingTop: 24, borderTop: `1px solid ${ED.rule}`, display: 'flex', alignItems: 'center', gap: 16 }}>
          <div style={{ width: 56, height: 56, borderRadius: '50%', overflow: 'hidden', border: `1px solid ${ED.rule}`, flex: '0 0 auto' }}>
            <img src={edAsset(MPX_AUTHOR.photo)} alt={MPX_AUTHOR.name} style={{ width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center top', display: 'block' }} />
          </div>
          <div>
            <div style={{ ...edText.med, fontSize: 15, color: ED.ink }}>{MPX_AUTHOR.name}</div>
            <div style={{ ...edText.tag, fontSize: 11, color: ED.ink2, marginTop: 4 }}>{MPX_AUTHOR.role}</div>
          </div>
        </div>
      </div>
    </section>
  );
}

// Square source image - held to the reading-column width rather than full bleed.
function MpxLeadImage() {
  const ED = React.useContext(MpxCtx);
  const isMobile = mpxUseIsMobile();
  return (
    <section style={{ padding: isMobile ? '0 24px 40px' : '0 90px 64px', background: ED.bg }}>
      <div style={{ maxWidth: 720, margin: '0 auto', border: `1px solid ${ED.rule}`, overflow: 'hidden' }}>
        <img src={edAsset('images/news/meat-proxies.jpg')} alt="Stacked packs of meat under the headline 'Are we becoming just meat proxies?', with a dictionary definition: a person who passes along AI-generated content without reading, checking or thinking about it first." style={{ display: 'block', width: '100%', height: 'auto' }} />
      </div>
    </section>
  );
}

function MpxQuote({ children, cite }) {
  const ED = React.useContext(MpxCtx);
  const edText = ED.text;
  const isMobile = mpxUseIsMobile();
  return (
    <div style={{ margin: isMobile ? '20px 0' : '24px 0', paddingLeft: isMobile ? 20 : 28, borderLeft: `2px solid ${ED.red}` }}>
      <p style={{ ...edText.display, fontStyle: 'italic', fontSize: isMobile ? 21 : 26, lineHeight: 1.35, color: ED.ink, margin: 0, letterSpacing: '-0.02em' }}>{children}</p>
      {cite && <div style={{ ...edText.tag, fontSize: 11, color: ED.ink2, marginTop: 12 }}>{cite}</div>}
    </div>
  );
}

function MpxBody() {
  const ED = React.useContext(MpxCtx);
  const edText = ED.text;
  const isMobile = mpxUseIsMobile();
  return (
    <section style={{ padding: isMobile ? '8px 0 80px' : '16px 0 80px', background: ED.bg }}>
      <MpxCol>
        <div style={{ display: 'flex', flexDirection: 'column', gap: 28 }}>
          <MpxP lead>For those that hadn&rsquo;t heard, there&rsquo;s a new trending, and rather derogatory, term: meat proxies.</MpxP>
          <MpxP>Many of us now know that temptation. AI seems to do such a good job of writing, I don&rsquo;t have time to check everything, I&rsquo;m sure it&rsquo;s fine. And before you know it, you&rsquo;ve just forwarded on the output from an AI without reviewing it; you&rsquo;ve become a &ldquo;meat proxy&rdquo;.</MpxP>
          <MpxP>All of the Big Four (Deloitte, KPMG, EY and PwC) have been caught in the last 18 months for publishing incorrect AI-generated information. These companies, once looked to as authorities because of their reputation for thorough review and approval before publication, had given in to the temptation to cut corners.</MpxP>
          <MpxP>So, why does it happen, what should we do about it, and does it matter that much really anyway?</MpxP>

          <MpxH2>The law of least mental effort</MpxH2>
          <MpxP>Humans, apparently, have a fundamental desire to avoid effort (who&rsquo;d have guessed?!). According to researchers Kool et al, people tend to follow the &ldquo;law of least mental effort&rdquo;. And when you have at your disposal an amazingly powerful tool that can do that effort for you, the natural tendency is to lean on it.</MpxP>
          <MpxP>Putting in the extra effort to verify the veracity of the AI output, when some work deadline is looming and &ldquo;no-one else is doing it&rdquo;, seems just too much.</MpxP>

          <MpxH2>Should we be outsourcing our thinking?</MpxH2>
          <MpxP>Many companies have inherent skills and domain knowledge. At Outrun, for example, there is extensive inside knowledge of the insurance sector that can&rsquo;t just be gleaned by an external AI system. That kind of knowledge and understanding gives a significant advantage when developing software in the sector. We shouldn&rsquo;t be neglecting it.</MpxP>
          <MpxP>I&rsquo;m personally a great believer in using AI, but I favour the &ldquo;combined intelligence&rdquo; approach: using AI to supplement my work rather than replace it.</MpxP>
          <MpxP>Recently, a particular (very capable) LLM gave me some advice about an Agile development process that I knew, from my own experience, was not the best advice. I challenged it, and it backtracked, agreed with me and offered alternative advice. If I hadn&rsquo;t had that personal knowledge, I wouldn&rsquo;t have been able to pick that up.</MpxP>
        </div>

        <div style={{ margin: isMobile ? '44px 0' : '64px 0', padding: isMobile ? '28px 0' : '32px 0', borderTop: `1px solid ${ED.rule}`, borderBottom: `1px solid ${ED.rule}` }}>
          <span style={{ ...edText.display, fontStyle: 'italic', fontSize: isMobile ? 25 : 36, lineHeight: 1.25, color: ED.ink, letterSpacing: '-0.025em' }}>
            Use AI to <span style={{ ...edText.displayBold, color: ED.red, fontStyle: 'italic' }}>supplement</span> your work, not to replace it.
          </span>
        </div>

        <div style={{ display: 'flex', flexDirection: 'column', gap: 28 }}>
          <MpxH2>Does it really matter?</MpxH2>
          <MpxP>Yes, it does. Not just because it affects the quality of our written reports, but because otherwise we lose our own skill. That goes to the heart of what it means to be human and fulfilled. As Carol Dweck, famous for her research on the Growth Mindset, puts it:</MpxP>
          <MpxQuote cite="Carol Dweck">No matter what your current ability is, effort is what ignites that ability and turns it into accomplishment.</MpxQuote>

          <MpxH2>The antidote</MpxH2>
          <MpxP>So I continue to build up my own skills. I use AI to do research for me and point me in the right direction. But I&rsquo;ve decided to exercise my own critical thinking, put in the effort, and try out new things for myself.</MpxP>
          <MpxP>I think that&rsquo;s the antidote to becoming a meat proxy. I&rsquo;d love to hear your thoughts on the subject too.</MpxP>
          <p style={{ ...edText.sans, fontSize: 14, lineHeight: 1.6, color: ED.ink2, margin: '8px 0 0', fontStyle: 'italic' }}>A note: I wrote the text of this article myself.</p>
        </div>
      </MpxCol>
    </section>
  );
}

function MpxFooter() {
  const ED = React.useContext(MpxCtx);
  const edText = ED.text;
  const isMobile = mpxUseIsMobile();
  return (
    <section style={{ padding: '40px 0 96px', background: ED.bg }}>
      <MpxCol>
        <div style={{ padding: isMobile ? '28px 24px' : '36px 36px 32px', background: ED.bgWarm, border: `1px solid ${ED.rule}`, display: 'grid', gridTemplateColumns: isMobile ? '1fr' : '88px 1fr', gap: 24, alignItems: 'start' }}>
          <div style={{ width: 88, height: 88, borderRadius: '50%', overflow: 'hidden', background: ED.bg, border: `1px solid ${ED.rule}` }}>
            <img src={edAsset(MPX_AUTHOR.photo)} alt={MPX_AUTHOR.name} style={{ width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center top', display: 'block' }} />
          </div>
          <div>
            <div style={{ ...edText.tag, fontSize: 11, color: ED.ink2 }}>Written by</div>
            <div style={{ ...edText.display, fontSize: 28, color: ED.ink, margin: '6px 0 0', letterSpacing: '-0.02em' }}>{MPX_AUTHOR.name}</div>
            <div style={{ ...edText.sans, fontSize: 14, color: ED.ink2, marginTop: 2 }}>{MPX_AUTHOR.role}</div>
            <p style={{ ...edText.sans, fontSize: 15, lineHeight: 1.6, color: ED.ink, margin: '14px 0 0', maxWidth: 540 }}>
              Over 30 years leading software development programmes. Before joining Outrun as CTO, Ian was Professional Head of Digital Consulting at AtkinsR&eacute;alis, leading digital transformation for clients including HMRC, the MOD, Heathrow Airport and HS2.
            </p>
            <a href={`mailto:${MPX_AUTHOR.email}`} style={{ ...edText.med, fontSize: 13, color: ED.ink, textDecoration: 'none', borderBottom: `1px solid ${ED.rule}`, paddingBottom: 3, display: 'inline-block', marginTop: 14 }}>{MPX_AUTHOR.email}</a>
          </div>
        </div>
      </MpxCol>
    </section>
  );
}

function MpxKeepReading() {
  const ED = React.useContext(MpxCtx);
  const edText = ED.text;
  const isMobile = mpxUseIsMobile();
  const items = [
    { href: '/news/competitive-advantage', title: 'The competitive advantage no MGA can afford to ignore.', by: 'James Hill \u00b7 22 July 2026' },
    { href: '/news/software-demo-truth', title: 'Getting the truth out of a software demo.', by: 'Steve Hirst \u00b7 15 July 2026' },
  ];
  return (
    <section style={{ padding: isMobile ? '56px 24px' : '96px 90px', background: ED.bg, borderTop: `1px solid ${ED.rule}` }}>
      <div style={{ maxWidth: 1320 }}>
        <MpxTag color={ED.accent}>Keep reading</MpxTag>
        <div style={{ display: 'grid', gridTemplateColumns: isMobile ? '1fr' : 'repeat(2, minmax(0, 560px))', gap: isMobile ? 40 : 56, marginTop: isMobile ? 28 : 40 }}>
          {items.map(it => (
            <a key={it.href} href={it.href} style={{ textDecoration: 'none', color: 'inherit', display: 'block' }}>
              <div style={{ ...edText.tag, fontSize: 11, color: ED.accent }}>Perspective</div>
              <h3 style={{ ...edText.display, fontSize: 26, lineHeight: 1.15, color: ED.ink, margin: '14px 0 24px', letterSpacing: '-0.02em' }}>{it.title}</h3>
              <div style={{ ...edText.sans, fontSize: 13, color: ED.ink2, paddingTop: 16, borderTop: `1px solid ${ED.rule}` }}>{it.by}</div>
            </a>
          ))}
        </div>
      </div>
    </section>
  );
}

function MeatProxiesSite({ accent, fontMode = 'serif' }) {
  return (
    <MpxChrome accent={accent} fontMode={fontMode} current="/news/meat-proxies">
      <MpxHeader />
      <MpxLeadImage />
      <MpxBody />
      <MpxFooter />
      <MpxKeepReading />
    </MpxChrome>
  );
}

Object.assign(window, { MeatProxiesSite });
