{
  "schema": "oneshots.page-packet.v1",
  "slug": "efood-google-reviews",
  "version": 1,
  "title": "An everyday idea. A Firefox add-on by the end.",
  "subtitle": "One continuing DeepSeek conversation, from a live restaurant page to a public Firefox extension.",
  "language": "en",
  "published_on": "2026-11-12",
  "period": {
    "from": "2026-11-06",
    "through": "2026-11-12"
  },
  "canonical_url": "https://oneshots.iuserobots.com/p/efood-google-reviews/v1/",
  "author": {
    "display_name": "Stelios",
    "role": "Idea, product direction and hands-on feedback"
  },
  "implementation": {
    "model": "DeepSeek Flash",
    "harness": "Claude Code",
    "mode": "One continuing, interactive conversation"
  },
  "result": {
    "label": "Published Firefox add-on",
    "version": "1.0.0",
    "overlay_version": "3.0.1",
    "url": "https://addons.mozilla.org/firefox/addon/efood-google-reviews/"
  },
  "summary": "A simple wish: see a restaurant’s Google reviews while choosing food on e-food. The same AI conversation investigated the page, wrote and tested the overlay, adapted it for Firefox, refined it with its owner, and followed it through Mozilla signing and publication.",
  "milestones": [
    {
      "date": "6 Nov",
      "title": "Start with the page, not a platform.",
      "text": "The request was to put real Google reviews beside each restaurant on the live e-food list. The agent inspected the page and discovered its existing Google Places library. No new review backend or developer-owned API key was needed."
    },
    {
      "date": "6 Nov",
      "title": "Make the first thing work.",
      "text": "The first working review panel was reported about three minutes after the request. Live checks then caught a wrong branch of a restaurant chain. Reading the restaurant’s own page supplied the branch information needed for a better match."
    },
    {
      "date": "6–8 Nov",
      "title": "Make it something a person can install.",
      "text": "“It has to work on Mozilla too.” A userscript was not the final answer: extra installation tools were rejected. The same conversation produced a standalone Firefox extension, its package, icons, listing and privacy text."
    },
    {
      "date": "8 Nov",
      "title": "Less code. Less guessing.",
      "text": "A request for less code cut an approximately 25.9 KB script to 10.4 KB. Actual visual feedback fixed awkward chips and navigation behaviour. A further correction replaced case-by-case patches with structural card discovery and general name-and-branch ranking."
    },
    {
      "date": "9–10 Nov",
      "title": "Carry it through the unglamorous part.",
      "text": "Mozilla validation required a manifest correction. The owner handled account sign-in and two-factor authentication; the agent handled packaging and submission. A signed self-distribution release came first. Review took longer than the agent initially promised."
    },
    {
      "date": "12 Nov",
      "title": "A real public destination.",
      "text": "The public Firefox listing became available. The published signed file was downloaded and checked, and its extension loaded in a clean Firefox Developer Edition profile without disabling signature checks. The work could now leave the development conversation."
    }
  ],
  "owner_direction": [
    "Support Firefox, not just the browser already under automation.",
    "Deliver a normal add-on, not a userscript-manager homework assignment.",
    "Use less code, inspect the actual result, and generalise rather than patch individual examples."
  ],
  "what_oneshot_means": "One retained conversation carried the undertaking from new idea to published product. It does not mean one prompt, zero corrections, or an unattended process. The owner supplied the judgment; the agent did the implementation and release work.",
  "boundaries": [
    "The public release is 1.0.0, with overlay 3.0.1. A later draggable-panel improvement is local, not in this release.",
    "Google supplies up to five written reviews. Matching is heuristic and still biased toward the original Piraeus-area use case.",
    "There is no developer-operated review backend or analytics. The browser still talks to e-food and Google. A claimed seven-day cache expiry is not implemented in the published source.",
    "The result is a published add-on, not a claim of widespread adoption, Android testing or perfect usability."
  ],
  "evidence": {
    "basis": "Original conversation reviewed from its first product request through publication, selected execution results, both signed packages, and the complete published overlay source.",
    "timing": "First working panel timing is from the original implementation report, not a new speed benchmark.",
    "artifact_sha256": "982cfea64a6de5a68716f89cb56207ce9284eb96ef04f611cd5bf05f0d120e4a",
    "raw_conversation_public": false
  },
  "delivery": {
    "html": "Complete page, inline CSS, embedded public metadata, no external assets or executable JavaScript.",
    "json": "This metadata plus the complete HTML document and its SHA-256 in one packet.",
    "updates": "Manually published revisions only; no live conversation feed, background polling or automatic AI generation.",
    "privacy": "No analytics, cookies, visitor database or application request log."
  },
  "document": {
    "media_type": "text/html; charset=utf-8",
    "sha256": "8a0bb676572654188d7e030bb356d17b18e0e7a74d23c8c141da6b9eac2d8627",
    "bytes": 15979,
    "html": "<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta name=\"color-scheme\" content=\"light\"><meta name=\"description\" content=\"One continuing DeepSeek conversation: a restaurant-review idea becomes a published Firefox add-on. The work, the corrections, and the real result.\"><meta name=\"referrer\" content=\"no-referrer\"><meta property=\"og:type\" content=\"article\"><meta property=\"og:title\" content=\"An everyday idea. A Firefox add-on by the end.\"><meta property=\"og:description\" content=\"One continuing DeepSeek conversation, from a live restaurant page to a public extension.\"><link rel=\"icon\" href=\"data:,\"><link rel=\"canonical\" href=\"https://oneshots.iuserobots.com/p/efood-google-reviews/v1/\"><title>From an idea to a Firefox add-on · OneShots</title><style>\n:root{color-scheme:light;--ink:#172b28;--muted:#52645c;--paper:#f6f4ed;--line:#cbd1c4;--green:#285746;--wash:#e7ecdf;--accent:#c9df92}\n*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.65 system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif}a{color:inherit;text-underline-offset:.22em}a:focus-visible,summary:focus-visible{outline:3px solid var(--green);outline-offset:5px}header,main,footer{max-width:1120px;margin:auto;padding-left:clamp(22px,6vw,76px);padding-right:clamp(22px,6vw,76px)}header{padding-top:27px;display:flex;justify-content:space-between;align-items:center;font-size:13px;gap:12px}.brand{text-decoration:none;font-weight:800;letter-spacing:.14em}.edition{color:var(--muted)}.hero{padding-top:76px;padding-bottom:54px}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:11px;font-weight:750;color:var(--green)}h1{font-family:Georgia,\"Times New Roman\",serif;font-weight:400;font-size:clamp(43px,7vw,78px);line-height:1.07;letter-spacing:-.048em;max-width:850px;margin:20px 0 25px}h1 em{font-style:italic;color:var(--green)}.intro{max-width:650px;color:var(--muted);font-size:clamp(18px,2vw,21px);line-height:1.65}.actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:29px}.button{display:inline-block;border-radius:5px;background:var(--green);color:#fff;padding:12px 20px;text-decoration:none;font-size:14px;font-weight:650}.small-link{font-size:13px;color:var(--muted)}.byline{margin-top:28px;font-size:12px;color:var(--muted)}.strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;display:flex;gap:16px 36px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.strip strong{display:block;font-size:13px;color:var(--ink);font-weight:650}.story{padding-top:55px}.section-label{font-size:11px;font-weight:750;letter-spacing:.14em;text-transform:uppercase;color:var(--green);margin-bottom:22px}.step{display:grid;grid-template-columns:90px 1fr;gap:28px;border-bottom:1px solid var(--line);padding:29px 0}.step:first-of-type{padding-top:0}.date{font-size:12px;color:var(--muted);padding-top:7px}.step h2{font:400 clamp(24px,3vw,31px)/1.25 Georgia,serif;letter-spacing:-.02em;margin:0 0 12px}.step p{color:var(--muted);max-width:680px;margin:0;font-size:16px}.quote{margin:53px 0 0;padding:30px clamp(22px,4vw,40px);background:var(--wash);border-radius:8px}.quote blockquote{font:400 clamp(25px,3.5vw,35px)/1.3 Georgia,serif;letter-spacing:-.02em;margin:0 0 17px}.quote p{font-size:14px;color:var(--muted);margin:0;max-width:760px}.direction{padding-top:44px}.direction h2{font:400 28px/1.3 Georgia,serif;margin:0 0 17px}.direction ul{padding-left:20px;max-width:780px;color:var(--muted);font-size:15px}.direction li{padding:5px 0}.limits{margin-top:41px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}summary{cursor:pointer;font-size:14px;font-weight:650}.limits ul{padding-left:20px;color:var(--muted);font-size:13px;max-width:800px}.limits li{margin:12px 0}.evidence{font-size:12px;color:var(--muted);margin:30px 0 0;max-width:820px}.evidence code{font-size:11px;overflow-wrap:anywhere}footer{padding-top:45px;padding-bottom:36px;color:var(--muted);font-size:12px}footer .bottom{border-top:1px solid var(--line);padding-top:20px;display:flex;gap:15px;justify-content:space-between;flex-wrap:wrap}.closing{font:italic 21px/1.4 Georgia,serif;margin-bottom:32px;color:var(--green)}@media(max-width:580px){.edition{font-size:11px}.hero{padding-top:47px;padding-bottom:35px}.step{grid-template-columns:1fr;gap:9px;padding:25px 0}.date{padding-top:0}.story{padding-top:36px}.strip{gap:13px 25px}.quote{margin-top:36px}.actions{gap:15px}.byline{max-width:300px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{header,footer,.actions,details{display:none}body{background:white;font-size:11pt}.hero{padding-top:0}h1{font-size:38pt}.step{break-inside:avoid}.quote{break-inside:avoid}main{padding:0}.story{padding-top:25px}}\n</style></head>\n<body><header><a class=\"brand\" href=\"/\">ONESHOTS</a><span class=\"edition\">Field note 001 · 12 November 2026</span></header><main>\n<section class=\"hero\"><div class=\"eyebrow\">A small thing, carried all the way through.</div><h1>An everyday idea.<br>A Firefox add-on<br><em>by the end.</em></h1><p class=\"intro\">See a restaurant’s Google reviews without leaving the food-delivery page. A simple wish became a public Firefox add-on—in one continuing DeepSeek conversation.</p><div class=\"actions\"><a class=\"button\" href=\"https://addons.mozilla.org/firefox/addon/efood-google-reviews/\" rel=\"noreferrer\">See the Firefox add-on ↗</a><a class=\"small-link\" href=\"#story\">Read how it happened ↓</a></div><p class=\"byline\">Idea &amp; product direction: Stelios. Implementation: DeepSeek Flash, using Claude Code.</p></section>\n<div class=\"strip\"><div><strong>One conversation</strong>Interactive, not one literal prompt</div><div><strong>6–12 November</strong>Build, refine, sign, publish</div><div><strong>A public result</strong>Firefox add-on 1.0.0</div></div>\n<section class=\"story\" id=\"story\" aria-label=\"The development story\"><div class=\"section-label\">From wish to something shareable</div><article class=\"step\"><div class=\"date\">6 Nov</div><div><h2>Start with the page, not a platform.</h2><p>The request was to put real Google reviews beside each restaurant on the live e-food list. The agent inspected the page and discovered its existing Google Places library. No new review backend or developer-owned API key was needed.</p></div></article><article class=\"step\"><div class=\"date\">6 Nov</div><div><h2>Make the first thing work.</h2><p>The first working review panel was reported about three minutes after the request. Live checks then caught a wrong branch of a restaurant chain. Reading the restaurant’s own page supplied the branch information needed for a better match.</p></div></article><article class=\"step\"><div class=\"date\">6–8 Nov</div><div><h2>Make it something a person can install.</h2><p>“It has to work on Mozilla too.” A userscript was not the final answer: extra installation tools were rejected. The same conversation produced a standalone Firefox extension, its package, icons, listing and privacy text.</p></div></article><article class=\"step\"><div class=\"date\">8 Nov</div><div><h2>Less code. Less guessing.</h2><p>A request for less code cut an approximately 25.9 KB script to 10.4 KB. Actual visual feedback fixed awkward chips and navigation behaviour. A further correction replaced case-by-case patches with structural card discovery and general name-and-branch ranking.</p></div></article><article class=\"step\"><div class=\"date\">9–10 Nov</div><div><h2>Carry it through the unglamorous part.</h2><p>Mozilla validation required a manifest correction. The owner handled account sign-in and two-factor authentication; the agent handled packaging and submission. A signed self-distribution release came first. Review took longer than the agent initially promised.</p></div></article><article class=\"step\"><div class=\"date\">12 Nov</div><div><h2>A real public destination.</h2><p>The public Firefox listing became available. The published signed file was downloaded and checked, and its extension loaded in a clean Firefox Developer Edition profile without disabling signature checks. The work could now leave the development conversation.</p></div></article></section>\n<aside class=\"quote\"><blockquote>Not “one prompt, no human.”<br>One conversation that didn’t stop at the demo.</blockquote><p>One retained conversation carried the undertaking from new idea to published product. It does not mean one prompt, zero corrections, or an unattended process. The owner supplied the judgment; the agent did the implementation and release work.</p></aside>\n<section class=\"direction\"><h2>The human part wasn’t incidental.</h2><ul><li>Support Firefox, not just the browser already under automation.</li><li>Deliver a normal add-on, not a userscript-manager homework assignment.</li><li>Use less code, inspect the actual result, and generalise rather than patch individual examples.</li></ul><p class=\"evidence\">The first useful overlay appeared in minutes. Firefox adaptation, refinement and release followed. Much of the later elapsed time was Mozilla review—not six days of continuous coding. The agent also overpromised signing speed and needed its owner to stop unhelpful status polling.</p></section>\n<details class=\"limits\"><summary>What shipped—and what did not</summary><ul><li>The public release is 1.0.0, with overlay 3.0.1. A later draggable-panel improvement is local, not in this release.</li><li>Google supplies up to five written reviews. Matching is heuristic and still biased toward the original Piraeus-area use case.</li><li>There is no developer-operated review backend or analytics. The browser still talks to e-food and Google. A claimed seven-day cache expiry is not implemented in the published source.</li><li>The result is a published add-on, not a claim of widespread adoption, Android testing or perfect usability.</li></ul></details>\n<p class=\"evidence\"><strong>Basis of this account.</strong> Original conversation reviewed from its first product request through publication, selected execution results, both signed packages, and the complete published overlay source. No raw chat or private account information is published. This is a dated account, not a live status feed.<br><br>Published XPI SHA-256: <code>982cfea64a6de5a68716f89cb56207ce9284eb96ef04f611cd5bf05f0d120e4a</code></p>\n</main><footer><p class=\"closing\">Making something is allowed to be a pleasure.</p><div class=\"bottom\"><span>OneShots · A place for things that made it out of the conversation.</span><span><a href=\"/p/efood-google-reviews/v1/packet.json\" download=\"oneshots-efood-v1.json\">Download the whole page · JSON packet</a> · <a href=\"/p/efood-google-reviews/v1/page.html\" download=\"oneshots-efood-v1.html\">HTML</a></span></div><p>No analytics. No cookies. No external assets. This page does not poll or generate anything in the background.</p></footer>\n<script type=\"application/json\" id=\"page-metadata\">{\"schema\":\"oneshots.page-packet.v1\",\"slug\":\"efood-google-reviews\",\"version\":1,\"title\":\"An everyday idea. A Firefox add-on by the end.\",\"subtitle\":\"One continuing DeepSeek conversation, from a live restaurant page to a public Firefox extension.\",\"language\":\"en\",\"published_on\":\"2026-11-12\",\"period\":{\"from\":\"2026-11-06\",\"through\":\"2026-11-12\"},\"canonical_url\":\"https://oneshots.iuserobots.com/p/efood-google-reviews/v1/\",\"author\":{\"display_name\":\"Stelios\",\"role\":\"Idea, product direction and hands-on feedback\"},\"implementation\":{\"model\":\"DeepSeek Flash\",\"harness\":\"Claude Code\",\"mode\":\"One continuing, interactive conversation\"},\"result\":{\"label\":\"Published Firefox add-on\",\"version\":\"1.0.0\",\"overlay_version\":\"3.0.1\",\"url\":\"https://addons.mozilla.org/firefox/addon/efood-google-reviews/\"},\"summary\":\"A simple wish: see a restaurant’s Google reviews while choosing food on e-food. The same AI conversation investigated the page, wrote and tested the overlay, adapted it for Firefox, refined it with its owner, and followed it through Mozilla signing and publication.\",\"milestones\":[{\"date\":\"6 Nov\",\"title\":\"Start with the page, not a platform.\",\"text\":\"The request was to put real Google reviews beside each restaurant on the live e-food list. The agent inspected the page and discovered its existing Google Places library. No new review backend or developer-owned API key was needed.\"},{\"date\":\"6 Nov\",\"title\":\"Make the first thing work.\",\"text\":\"The first working review panel was reported about three minutes after the request. Live checks then caught a wrong branch of a restaurant chain. Reading the restaurant’s own page supplied the branch information needed for a better match.\"},{\"date\":\"6–8 Nov\",\"title\":\"Make it something a person can install.\",\"text\":\"“It has to work on Mozilla too.” A userscript was not the final answer: extra installation tools were rejected. The same conversation produced a standalone Firefox extension, its package, icons, listing and privacy text.\"},{\"date\":\"8 Nov\",\"title\":\"Less code. Less guessing.\",\"text\":\"A request for less code cut an approximately 25.9 KB script to 10.4 KB. Actual visual feedback fixed awkward chips and navigation behaviour. A further correction replaced case-by-case patches with structural card discovery and general name-and-branch ranking.\"},{\"date\":\"9–10 Nov\",\"title\":\"Carry it through the unglamorous part.\",\"text\":\"Mozilla validation required a manifest correction. The owner handled account sign-in and two-factor authentication; the agent handled packaging and submission. A signed self-distribution release came first. Review took longer than the agent initially promised.\"},{\"date\":\"12 Nov\",\"title\":\"A real public destination.\",\"text\":\"The public Firefox listing became available. The published signed file was downloaded and checked, and its extension loaded in a clean Firefox Developer Edition profile without disabling signature checks. The work could now leave the development conversation.\"}],\"owner_direction\":[\"Support Firefox, not just the browser already under automation.\",\"Deliver a normal add-on, not a userscript-manager homework assignment.\",\"Use less code, inspect the actual result, and generalise rather than patch individual examples.\"],\"what_oneshot_means\":\"One retained conversation carried the undertaking from new idea to published product. It does not mean one prompt, zero corrections, or an unattended process. The owner supplied the judgment; the agent did the implementation and release work.\",\"boundaries\":[\"The public release is 1.0.0, with overlay 3.0.1. A later draggable-panel improvement is local, not in this release.\",\"Google supplies up to five written reviews. Matching is heuristic and still biased toward the original Piraeus-area use case.\",\"There is no developer-operated review backend or analytics. The browser still talks to e-food and Google. A claimed seven-day cache expiry is not implemented in the published source.\",\"The result is a published add-on, not a claim of widespread adoption, Android testing or perfect usability.\"],\"evidence\":{\"basis\":\"Original conversation reviewed from its first product request through publication, selected execution results, both signed packages, and the complete published overlay source.\",\"timing\":\"First working panel timing is from the original implementation report, not a new speed benchmark.\",\"artifact_sha256\":\"982cfea64a6de5a68716f89cb56207ce9284eb96ef04f611cd5bf05f0d120e4a\",\"raw_conversation_public\":false},\"delivery\":{\"html\":\"Complete page, inline CSS, embedded public metadata, no external assets or executable JavaScript.\",\"json\":\"This metadata plus the complete HTML document and its SHA-256 in one packet.\",\"updates\":\"Manually published revisions only; no live conversation feed, background polling or automatic AI generation.\",\"privacy\":\"No analytics, cookies, visitor database or application request log.\"}}</script></body></html>\n"
  }
}
