netAIcad is a Chrome/Firefox extension that uses AI to solve Netacad quizzes and automate reading through course modules β with or without paying for an API key.
- π€ Three ways to solve a quiz:
- OpenAI GPT-4o Mini β via your own API key
- Google Gemini 2.5 Flash β via your own API key, free tier available
- π Web AI (ChatGPT) β no API key at all. Drives the real
chatgpt.comweb UI in a tab for you and auto-solves the entire quiz end-to-end (every question, submitted automatically, no manual clicking per question)
- π§© Matching questions supported β the "match each item to its option" question type is fully supported by every provider above, not just plain multiple-choice
- β Multiple-answer support β works with checkbox questions (choose two, choose three, etc.)
- π±οΈ Auto-select and auto-submit β the extension doesn't just suggest an answer, it selects it and clicks Submit for you
- πΆ Auto-Complete Module walker β a one-click button that walks the current module's reading sections, click-to-reveal boxes, and embedded self-check questions on your behalf, then stops and hands off at the module's real graded quiz
- π― Automatic question and option extraction from Netacad quizzes (Shadow DOM aware)
- β¨ Visual highlighting of suggested correct answers
- π Secure API key storage (only needed if you want the API-based providers)
- π¨ Compact, icon-based buttons that only appear when there's actually something for them to do
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked"
- Select the
netAIcadfolder - The extension should now appear in your extensions list
- Open Firefox and navigate to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Navigate to the
netAIcadfolder and selectmanifest.json - The extension should now be loaded
Note: the trusted-click fallback (used when a plain synthetic click doesn't register on a Netacad widget) relies on
chrome.debugger, which is Chrome-only. The extension still works in Firefox, but that specific fallback won't be available there.
- Just be logged in to chatgpt.com in your regular browser.
- That's it β the π Web AI button on a quiz page will open (or reuse) a ChatGPT tab, type the question in for you, and read back the answer, all automatically.
OpenAI (GPT-4o Mini)
- Sign up at OpenAI Platform
- Get your API key from OpenAI API Keys
- Very affordable pay-as-you-go pricing
Google Gemini (β FREE tier available)
- Sign up at Google AI Studio
- Get your free API key
- Generous free tier with excellent performance
Then, in the extension popup:
- Click the extension icon in your browser toolbar
- Paste your API key(s) and click Test to confirm they work
- Click Save Settings
You can mix and match β set up one, both, or neither (and just use Web AI) API key(s).
On a real graded quiz page, up to three buttons appear automatically once Netacad's quiz widget loads:
- π€ Get Answer from GPT β uses your OpenAI key
- β¨ Get Answer from Gemini β uses your Gemini key
- π Solve via Web AI β no key needed; click it once and it solves the entire quiz, question after question, selecting and submitting each answer automatically until it's done or you hit Stop
For the GPT/Gemini buttons, each click answers the current question only: the extension extracts the question (including matching-question rows), asks the AI, then selects and submits the suggested answer(s) for you. These buttons only show up while an actual graded quiz is on screen β not on regular reading pages.
While reading through a module's content (not on a quiz), a walker button appears. Clicking it:
- Walks every remaining incomplete section in the current module only
- Handles plain reading sections (smooth-scrolls through them so Netacad's own "seen" tracking fires), click-to-reveal boxes, and embedded self-check questions
- Skips things it can't safely automate β Labs, Practices, videos, and anything unrecognized β and lists them at the end so you know what to finish manually
- Stops and hands off to you the moment it reaches the module's real graded quiz/test
- Shows a floating progress overlay with a Stop button so you can cancel at any time
- Web AI (ChatGPT) β best if you don't want to pay for or manage an API key at all, and don't mind a browser tab briefly popping into focus while it works.
- GPT-4o Mini β very accurate and reliable, cheap pay-as-you-go pricing, answers one question per click.
- Gemini 2.5 Flash β free tier with generous limits, great for high-volume use.
Below are some screenshots demonstrating the extension in action:
Configure your API key(s) and test them right from the popup.
Buttons appear on Netacad quiz pages only while a graded quiz is active: GPT, Gemini, and Web AI.
The extension highlights the AI-suggested correct answer with a green border.
The extension highlights the AI-suggested correct answer with a green border.
The extension give you better results with 90% accuracy
The extension complete your course in no time
- Content Script (
content.js) runs on Netacad pages (in every frame) and detects quiz elements inside Shadow DOM (mcq-view, matching widgets, etc.) - It extracts the question text, options, whether it's single/multiple-answer, and β for matching questions β every row and its own option list
- Depending on which button you clicked:
- GPT/Gemini: Background Script (
background.js) sends the question to the OpenAI or Google API and gets back the correct letter(s) or row answers - Web AI:
background.jsopens/reuses achatgpt.comtab in your current window, briefly focuses it (to dodge Chrome's background-tab throttling), types the question in, waits for the reply, and parses it β then automatically repeats this for every remaining question in the quiz
- GPT/Gemini: Background Script (
- Either way, the extension then selects the suggested option(s)/row-matches using trusted clicks and submits the answer, advancing to the next question
shared.jsholds the prompt-building and answer-parsing logic used by both the API and Web AI code paths (and is unit-tested β see Testing)
Some of Netacad's Angular-based custom widgets ignore synthetic element.click() calls. robustClick() tries a plain click first and, if it doesn't register, falls back to a chrome.debugger-dispatched trusted input event via the background script.
The walker reads the course outline sidebar to find the current module's remaining topics, opens each one, and classifies its content (reading / click-to-reveal / self-check / video / unsupported) to decide how to handle it β using a real animated scrollIntoView({behavior: 'smooth'}) for reading sections so Netacad's own scroll-based "seen" tracking fires correctly. It stops the moment it detects the module's actual graded quiz/test, never attempting to answer it automatically.
manifest.json- Extension configurationcontent.js- Runs on Netacad pages: quiz solving UI/logic and the module walkercontent.css- Styles for buttons, highlighting, and the progress overlaybackground.js- Service worker: AI API calls, Web AI tab automation, trusted-click fallbackshared.js- Pure prompt-building/answer-parsing helpers shared by the API and Web AI code pathspopup.html/popup.js- Extension settings popup UItests/- Unit tests forshared.js(Node's built-in test runner, no dependencies)
node --test "tests/*.test.js"- API keys are stored locally in Chrome's sync storage
- No data is sent to any server except the AI provider you choose (OpenAI, Google, or ChatGPT's own web UI)
- The extension only runs on
netacad.comdomains (pluschatgpt.com/gemini.google.compurely to drive the Web AI tab) - The
chrome.debuggerpermission is only ever used as a same-tab, same-session trusted-click fallback β it isn't used to inspect or log anything - Your quiz data is only sent to an AI provider when you click a button
- AI suggestions may not always be correct - always verify answers
- Web AI requires you to already be logged in to
chatgpt.comin your browser - The module walker only walks the current module and stops at its graded quiz/test β it never attempts to answer a graded quiz for you
- The walker skips Labs, Practices, videos, and any content type it doesn't recognize, and lists them for manual review instead of guessing
- A few topics (e.g. an external "Final Project" submission tool) live outside Netacad's own content iframe entirely and aren't supported by the walker
Extension buttons not appearing
- Make sure you're on a Netacad quiz page with an active graded quiz (the GPT/Gemini/Web AI buttons only show up then) or a module content page (for the walker button)
- Refresh the page after installing or updating the extension
API errors (GPT/Gemini)
- Verify your API key is correct in the extension popup, and use the Test button to confirm
- Check that you have API credits/quota remaining
Web AI not working
- Make sure you're logged in to
chatgpt.comin the tab it opens - If it can't find the chat input, click the button again after the ChatGPT tab finishes loading
No answer highlighted / selected
- Check the browser console for errors (F12)
- Try a different provider button if one doesn't work
- If you see an "extension context invalidated" message, refresh the tab (this happens after reloading the extension itself)
This extension is for educational purposes only. Always verify AI suggestions and use your own judgment when answering quiz questions.





