{"id":81,"date":"2025-07-17T10:45:24","date_gmt":"2025-07-17T10:45:24","guid":{"rendered":"https:\/\/paultrowler.com\/wordpress\/?page_id=81"},"modified":"2025-11-21T06:55:12","modified_gmt":"2025-11-21T06:55:12","slug":"the-abstract-deconstructor","status":"publish","type":"page","link":"https:\/\/paultrowler.com\/wordpress\/index.php\/the-abstract-deconstructor\/","title":{"rendered":"Chapter 14: The Abstract Advisor"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\"\/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>Abstract Advisor<\/title>\n\n  <!-- Tailwind CSS -->\n  <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n  <script>\n    tailwind.config = {\n      theme: {\n        extend: {\n          colors: {\n            primary: {\n              50:'#eff6ff',100:'#dbeafe',200:'#bfdbfe',300:'#93c5fd',\n              400:'#60a5fa',500:'#3b82f6',600:'#2563eb',700:'#1d4ed8',\n              800:'#1e40af',900:'#1e3a8a'\n            }\n          },\n          boxShadow: { soft:'0 10px 25px -10px rgba(30,64,175,0.25)' },\n          borderRadius: { '2xl':'1.25rem' }\n        }\n      }\n    }\n  <\/script>\n\n  <!-- Inter -->\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\/>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\/>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\"\/>\n\n  <style>\n    body { font-family: 'Inter', sans-serif; }\n    .mono {\n      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\"Courier New\", monospace;\n    }\n    .prompt-gap {\n      background:#dbeafe;\n      color:#1e40af;\n      padding:0 6px;\n      border-radius:4px;\n      font-weight:600;\n      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\"Courier New\", monospace;\n    }\n    .prompt-gap-filled {\n      background:#dcfce7;\n      color:#166534;\n      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\"Courier New\", monospace;\n    }\n  <\/style>\n<\/head>\n<body class=\"bg-primary-50 text-slate-800\">\n  <main class=\"max-w-6xl mx-auto p-6 md:p-10 space-y-6\">\n    <!-- Header -->\n    <section class=\"bg-white rounded-2xl shadow-soft border border-primary-100 p-6\">\n      <h1 class=\"text-2xl md:text-3xl font-semibold text-primary-900\">Abstract Advisor<\/h1>\n      <p class=\"mt-2 text-sm text-slate-700\">\n        Paste your draft abstract, then copy a bespoke prompt to use with ChatGPT. The AI will identify key improvements and begin a Socratic-style dialogue to help you refine it.\n      <\/p>\n    <\/section>\n\n    <!-- Main Grid -->\n    <section class=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n      <!-- Left Pane -->\n      <div class=\"bg-white p-6 rounded-2xl shadow-soft border border-primary-100\">\n        <h2 class=\"text-xl font-semibold text-primary-900 mb-4\">Your Draft Abstract<\/h2>\n        <form id=\"prompt-form\" class=\"space-y-4\">\n          <div>\n            <label for=\"abstract-text\" class=\"block text-xs font-medium text-primary-900 mb-1\">Paste your draft abstract here<\/label>\n            <textarea\n              id=\"abstract-text\"\n              data-target=\"gap-abstract\"\n              class=\"w-full rounded-xl border border-primary-200 bg-primary-50 focus:bg-white focus:ring-2 focus:ring-primary-200\/70 focus:border-primary-500 px-3 py-2 text-sm mono\"\n              placeholder=\"Paste your draft abstract\u2026\"\n              rows=\"12\"\n            ><\/textarea>\n          <\/div>\n          <div class=\"pt-2\">\n            <button\n              type=\"button\"\n              id=\"reset-button\"\n              class=\"w-full flex justify-center py-2 px-4 border border-primary-300 rounded-md text-sm font-medium text-primary-700 bg-white hover:bg-primary-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 transition-colors\"\n            >\n              Clear\n            <\/button>\n          <\/div>\n        <\/form>\n      <\/div>\n\n      <!-- Right Pane -->\n      <div class=\"bg-primary-900 p-6 rounded-2xl shadow-soft border border-primary-800 flex flex-col\">\n        <h2 class=\"text-xl font-semibold text-white mb-4\">Prompt to the AI platform (Visible excerpt)<\/h2>\n        <div\n          id=\"prompt-output-container\"\n          class=\"text-primary-200 leading-relaxed text-[15px] bg-primary-800 p-4 rounded-xl min-h-[220px] border border-primary-700\"\n        >\n          <p>Here is my draft abstract:<\/p>\n          <blockquote class=\"border-l-4 border-primary-700 pl-4 my-2 italic text-primary-300\">\n            <span id=\"gap-abstract\" class=\"prompt-gap\">Your abstract will appear here<\/span>\n          <\/blockquote>\n\n          <p class=\"mt-2 font-semibold text-primary-100\">\n            Please act as a Socratic advisor. Base your feedback on the principles in this reference document:\n          <\/p>\n          <p class=\"text-xs text-primary-300 my-2\">\n            https:\/\/paultrowler.com\/wordpress\/wp-content\/uploads\/2025\/08\/TrowlerAbstract.pdf\n          <\/p>\n\n          <p>\n            First, identify the main areas for improvement in my draft. Then begin a dialogue by asking one probing question at a time to help me refine the abstract.\n          <\/p>\n        <\/div>\n\n        <div class=\"mt-4 flex flex-wrap gap-3\">\n          <button\n            id=\"copy-button\"\n            class=\"inline-flex items-center gap-2 bg-primary-600 hover:bg-primary-700 text-white font-medium px-5 py-3 rounded-xl shadow-soft active:scale-[.99]\"\n          >\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n              <path d=\"M16 1H4a2 2 0 0 0-2 2v12h2V3h12V1zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H8V7h11v14z\"\/>\n            <\/svg>\n            <span id=\"copy-button-text\">Copy prompt &amp; open ChatGPT<\/span>\n          <\/button>\n          <!-- combined: removed separate ChatGPT link -->\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- Refinement ideas -->\n    <section class=\"bg-white rounded-2xl shadow-soft border border-primary-100 p-6\">\n      <h3 class=\"text-lg font-semibold text-primary-900 mb-2\">Refining the AI response to your prompt<\/h3>\n      <div class=\"text-sm text-slate-700 space-y-2\">\n        <p>After the first response, you can steer the dialogue. For example:<\/p>\n        <ul class=\"list-disc pl-5 space-y-1\">\n          <li>\u201cBased on the reference document, what is the weakest part of my abstract?\u201d<\/li>\n          <li>\u201cHelp me rewrite the sentence about my methodology to be more concise.\u201d<\/li>\n          <li>\u201cDoes my abstract clearly state the \u2018claim to significance\u2019?\u201d<\/li>\n        <\/ul>\n      <\/div>\n    <\/section>\n\n    <footer class=\"text-center text-xs text-slate-500 py-6\">\n      \u00a9 Professor Paul Trowler, 2025. All rights reserved.\n    <\/footer>\n  <\/main>\n\n  <script>\n    \/\/ Elements\n    const resetButton = document.getElementById('reset-button');\n    const form = document.getElementById('prompt-form');\n    const abstractInput = document.getElementById('abstract-text');\n    const abstractGap = document.getElementById('gap-abstract');\n    const copyButton = document.getElementById('copy-button');\n    const copyButtonText = document.getElementById('copy-button-text');\n    const promptOutputContainer = document.getElementById('prompt-output-container');\n\n    function updatePrompt(){\n      const value = abstractInput.value;\n      if (value.trim()){\n        const sanitized = value.replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\");\n        abstractGap.innerHTML = sanitized.replace(\/\\n\/g, '<br><br>');\n        abstractGap.classList.add('prompt-gap-filled');\n        abstractGap.classList.remove('prompt-gap');\n      } else {\n        abstractGap.innerHTML = 'Your abstract will appear here';\n        abstractGap.classList.remove('prompt-gap-filled');\n        abstractGap.classList.add('prompt-gap');\n      }\n    }\n\n    function resetForm(){\n      form.reset();\n      updatePrompt();\n    }\n\n    \/\/ Copy the prompt preview to clipboard AND open ChatGPT\n    function copyPromptToClipboardAndOpen(){\n      const ta = document.createElement('textarea');\n      ta.value = promptOutputContainer.innerText;\n      document.body.appendChild(ta);\n      ta.select(); ta.setSelectionRange(0, 99999);\n\n      let ok = false;\n      try { ok = document.execCommand('copy'); } catch(e){ ok = false; }\n      document.body.removeChild(ta);\n\n      if (ok){\n        copyButtonText.textContent = 'Copied! Opening ChatGPT\u2026';\n        copyButton.classList.add('bg-green-600','hover:bg-green-700');\n      } else {\n        copyButtonText.textContent = 'Open ChatGPT & paste manually';\n      }\n\n      \/\/ Open ChatGPT either way\n      window.open('https:\/\/chatgpt.com','_blank','noopener');\n\n      setTimeout(()=>{\n        copyButtonText.textContent = 'Copy prompt & open ChatGPT';\n        copyButton.classList.remove('bg-green-600','hover:bg-green-700');\n      }, 1600);\n    }\n\n    \/\/ Events\n    resetButton.addEventListener('click', resetForm);\n    copyButton.addEventListener('click', copyPromptToClipboardAndOpen);\n    abstractInput.addEventListener('input', updatePrompt);\n    abstractInput.addEventListener('change', updatePrompt);\n\n    \/\/ Init\n    updatePrompt();\n  <\/script>\n\n  <!-- Copyright 2025 Professor Paul Trowler All rights reserved. For personal use only for educational purposes, no part of this code to be copied, reused or sold-->\n<\/body>\n<\/html>\n\n\n\n\n<p class=\"has-text-align-center has-small-font-size wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abstract Advisor Abstract Advisor Paste your draft abstract, then copy a bespoke prompt to use with ChatGPT. The AI will identify key improvements and begin a Socratic-style dialogue to help you refine it. Your Draft Abstract Paste your draft abstract here Clear Prompt to the AI platform (Visible excerpt) Here is my draft abstract: Your [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-81","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":16,"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/81\/revisions"}],"predecessor-version":[{"id":1050,"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/81\/revisions\/1050"}],"wp:attachment":[{"href":"https:\/\/paultrowler.com\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}