content: rebuild Module 0 and Module 1 to the v2 production standard#31
Conversation
Full Release 2 rewrite per docs/CURRICULUM-REDESIGN.md's production order (steps 1-2): rebuild Module 0 and rewrite Module 1 using the Big Six lesson as the model. - Module 0: replace all AdCraft/AI Mentor/"three simulations" legacy copy with the real platform (Home/Courses/Tools/Profile nav, five named tools, real badges). 0.3 now delivers the module's required artifact — a client-brief intake checklist — instead of a generic simulation preview. - Module 1: migrate docs/1-1-read-ppc-data-before-you-change-it.md into 1.1 as the new decision-loop opener, fix a text-encoding corruption in 1.2, correct the "Quality Score" claim per the content audit's required replacement language, and remove legacy tool references from 1.5. - Fix quiz-questions.json's Module 0 auction question, which taught the false "$0.01 above next bid" mechanic flagged in the content audit. - Apply the voice guide throughout: no emoji, no banned phrases, acronyms defined on first use per lesson, client-language blocks added. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QSfREMzPnGxjrUPSbz3PGp
📝 WalkthroughWalkthroughThe PR redesigns onboarding and Module 1 curriculum lessons around course orientation, account safety, PPC metric diagnosis, profitability, and client communication. It removes the legacy PPC introduction, adds a replacement foundations lesson, updates quiz wording, and aligns an import-script comment. ChangesCurriculum redesign
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint install timed out. The project may have too many dependencies for the sandbox. Comment |
There was a problem hiding this comment.
Actionable comments posted: 14
🧹 Nitpick comments (1)
scripts/import-amph-content.ts (1)
261-261: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRemove the comment that restates the next line.
The implementation and variable names already explain the transformation, while the filename example creates another value that can become stale.
Proposed cleanup
- // Build slug from filename: "1.2-cpc-ctr.mdx" → "1.2-cpc-ctr" const fileSlug = file.replace('.mdx', '');As per coding guidelines, comments should explain why rather than merely restating code.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/import-amph-content.ts` at line 261, Remove the redundant comment immediately preceding the slug construction in the import flow; leave the implementation and variable names unchanged.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@content/curriculum/modules/0-onboarding/0.1-welcome.mdx`:
- Line 75: Define the onboarding acronyms on first use: in
content/curriculum/modules/0-onboarding/0.1-welcome.mdx lines 75-75, expand
Product or ASIN to “Amazon Standard Identification Number (ASIN)”; in
content/curriculum/modules/0-onboarding/0.2-platform-tour.mdx lines 27-27,
expand XP to “experience points (XP).”
In `@content/curriculum/modules/0-onboarding/0.3-first-simulation.mdx`:
- Around line 47-51: Update the “What’s still missing” list in the onboarding
checklist to include the required daily budget, stating that it must be
confirmed or derived from the client’s $500 monthly ceiling before work begins.
Preserve the other missing facts unchanged.
In
`@content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx`:
- Line 15: Update the sentence’s first occurrence of “Amazon PPC metrics” to
“Amazon pay-per-click (PPC) metrics,” preserving the rest of the guidance
unchanged.
- Line 25: Remove every em dash from the five lessons:
content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx
(lines 25-25), 1.2-cpc-ctr.mdx (19-19, including table placeholders),
1.3-acos-tacos-profitability.mdx (19-19), 1.4-roas-measuring-return.mdx (42-42),
and 1.5-metrics-in-practice.mdx (19-19). Replace each separator with an
appropriate comma, period, or parenthetical form while preserving the lesson
content.
- Around line 21-34: Update the “Meet the Big Six” section to identify CPC, CTR,
CVR, ACoS, TACoS, and ROAS as the six calculated metrics, while describing
impressions and clicks as supporting inputs rather than Big Six members. Remove
the claim that Amazon reports all eight metrics per keyword and ad group, and
clarify that TACoS typically requires combining advertising spend with broader
product or business sales data, including organic sales.
In `@content/curriculum/modules/1-foundations/1.2-cpc-ctr.mdx`:
- Around line 41-52: Revise the CPC terminology and calculations in the table
and explanatory text around the bamboo cutting board and wireless earbuds
examples. Label AOV × CVR × target ACoS as the maximum CPC for the selected
target, not “break-even CPC,” add or state the target ACoS needed to reproduce
the listed values, and correct the later claim around reaching a 25% target so
it does not imply clicks are unprofitable without comparing against the
product’s actual break-even margin.
- Around line 107-116: In the fact card metadata, replace both “pending
content-owner review” placeholders for “Last verified” and “Next review due”
with completed, valid dates before publishing, while preserving the existing
source URL and ownership details.
In `@content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx`:
- Around line 53-71: Update
content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx lines
53-71 to state that rising TACoS requires checking the underlying ad spend, ad
sales, and organic sales values; present declining organic sales as one possible
explanation rather than a definitive diagnosis. Update
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx lines 53-61
with the same framing, making organic decline a hypothesis to investigate
instead of the conclusion.
In `@content/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdx`:
- Line 79: Update the ROAS comparison in the curriculum content so the $50 and
$1,000 inputs are labeled as ad spend rather than sales, while preserving the
corresponding revenue calculations and surrounding guidance.
In `@content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx`:
- Around line 23-49: Revise the diagnoses in Patterns 1 and 3 so aggregate
CTR/CVR or CPC/CVR metrics do not establish a single root cause. In Pattern 1,
require checking search-term intent alongside product-page performance before
concluding the listing is the problem or targeting is fine; in Pattern 3,
acknowledge targeting, placement, competition, and listing factors and require
both search-term and product-page checks before attributing the issue to keyword
quality.
- Around line 115-123: Revise the “maximum-CPC formula” guidance to describe
$0.69 as the maximum affordable average CPC, not a hard keyword bid cap. In the
surrounding bidding example, instruct learners to compare the threshold with
realized CPC and acknowledge auction-level bids and dynamic bidding adjustments,
rather than stating that every bid above $0.69 is invalid.
- Around line 57-59: The “What to do” guidance should replace the ambiguous
“invest in review generation” wording with compliant methods such as Amazon’s
Request a Review feature or Vine, while explicitly prohibiting incentives or
requests for positive reviews. Preserve the surrounding organic-ranking,
listing-optimization, and temporary ad-spend recommendations.
- Around line 72-123: Reconcile the worked examples with the documented metric
formulas: in
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx lines
72-123, update the week 1/3/6 table values so ACoS = CPC / (AOV × CVR) and ROAS
= AOV × CVR / CPC remain consistent; in
content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx lines
97-115, update the CPC/CVR/price or related sales figures so clicks, orders, ad
sales, ACoS, TACoS, and ROAS all reconcile, preserving the intended
instructional conclusions.
In `@content/curriculum/quiz-questions.json`:
- Around line 46-52: Update the quiz entry’s optionB and explanation so they
distinguish the entered base bid from the effective ceiling after Amazon applies
placement adjustments and dynamic bidding. Describe the adjusted bid as the
maximum cap while preserving the guidance about auction-determined costs and
monitoring realized CPC.
---
Nitpick comments:
In `@scripts/import-amph-content.ts`:
- Line 261: Remove the redundant comment immediately preceding the slug
construction in the import flow; leave the implementation and variable names
unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: a8ac3b14-ed49-482c-89ea-4181c24c10cd
📒 Files selected for processing (11)
content/curriculum/modules/0-onboarding/0.1-welcome.mdxcontent/curriculum/modules/0-onboarding/0.2-platform-tour.mdxcontent/curriculum/modules/0-onboarding/0.3-first-simulation.mdxcontent/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdxcontent/curriculum/modules/1-foundations/1.1-what-is-ppc.mdxcontent/curriculum/modules/1-foundations/1.2-cpc-ctr.mdxcontent/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdxcontent/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdxcontent/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdxcontent/curriculum/quiz-questions.jsonscripts/import-amph-content.ts
💤 Files with no reviewable changes (1)
- content/curriculum/modules/1-foundations/1.1-what-is-ppc.mdx
| Before you touch a PPC task, ask for the facts that control the decision: | ||
|
|
||
| After you complete this lesson, you'll get a quick tour of the platform so you know exactly where everything is. Then you'll dive into Module 1, where you'll learn the metrics that every PPC manager lives and breathes by. | ||
| - Product or ASIN. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Define onboarding acronyms on first use.
Both lessons introduce platform jargon without expansion.
content/curriculum/modules/0-onboarding/0.1-welcome.mdx#L75-L75: Change the first reference to “Amazon Standard Identification Number (ASIN).”content/curriculum/modules/0-onboarding/0.2-platform-tour.mdx#L27-L27: Change the first reference to “experience points (XP).”
As per coding guidelines, define jargon and use direct language for the Filipino VA audience.
📍 Affects 2 files
content/curriculum/modules/0-onboarding/0.1-welcome.mdx#L75-L75(this comment)content/curriculum/modules/0-onboarding/0.2-platform-tour.mdx#L27-L27
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/modules/0-onboarding/0.1-welcome.mdx` at line 75, Define
the onboarding acronyms on first use: in
content/curriculum/modules/0-onboarding/0.1-welcome.mdx lines 75-75, expand
Product or ASIN to “Amazon Standard Identification Number (ASIN)”; in
content/curriculum/modules/0-onboarding/0.2-platform-tour.mdx lines 27-27,
expand XP to “experience points (XP).”
Source: Coding guidelines
| Using the checklist above, list which facts the client already gave you, and which facts you still need to ask for before you could safely start work. Write your answer before reading further. | ||
|
|
||
| ## The Other Four Tools | ||
| **What the client gave you:** the product (bamboo cutting board), that it's an existing listing (not a brand-new launch), and a monthly budget ceiling ($500). | ||
|
|
||
| After Campaign Builder, there are four more tools waiting for you: | ||
| **What's still missing:** the business objective (is "slow sales" about visibility, conversion, or both?), a target ACoS or profitability rule, current stock position, any price or promotion plans, and whether you have approval to change bids and budgets yourself or need sign-off first. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Include the daily budget in the missing facts.
The client supplied a $500 monthly ceiling, but the checklist requires a daily budget. The model answer should require converting or confirming that daily limit before work begins.
Proposed correction
-**What's still missing:** the business objective (is "slow sales" about visibility, conversion, or both?), a target ACoS or profitability rule, current stock position, any price or promotion plans, and whether you have approval to change bids and budgets yourself or need sign-off first.
+**What's still missing:** the business objective (is "slow sales" about visibility, conversion, or both?), the approved daily budget within the $500 monthly ceiling, a target ACoS or profitability rule, current stock position, any price or promotion plans, and whether you have approval to change bids and budgets yourself or need sign-off first.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Using the checklist above, list which facts the client already gave you, and which facts you still need to ask for before you could safely start work. Write your answer before reading further. | |
| ## The Other Four Tools | |
| **What the client gave you:** the product (bamboo cutting board), that it's an existing listing (not a brand-new launch), and a monthly budget ceiling ($500). | |
| After Campaign Builder, there are four more tools waiting for you: | |
| **What's still missing:** the business objective (is "slow sales" about visibility, conversion, or both?), a target ACoS or profitability rule, current stock position, any price or promotion plans, and whether you have approval to change bids and budgets yourself or need sign-off first. | |
| Using the checklist above, list which facts the client already gave you, and which facts you still need to ask for before you could safely start work. Write your answer before reading further. | |
| **What the client gave you:** the product (bamboo cutting board), that it's an existing listing (not a brand-new launch), and a monthly budget ceiling ($500). | |
| **What's still missing:** the business objective (is "slow sales" about visibility, conversion, or both?), the approved daily budget within the $500 monthly ceiling, a target ACoS or profitability rule, current stock position, any price or promotion plans, and whether you have approval to change bids and budgets yourself or need sign-off first. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/modules/0-onboarding/0.3-first-simulation.mdx` around
lines 47 - 51, Update the “What’s still missing” list in the onboarding
checklist to include the required daily budget, stating that it must be
confirmed or derived from the client’s $500 monthly ceiling before work begins.
Preserve the other missing facts unchanged.
|
|
||
| ## What you can do after this lesson | ||
|
|
||
| Read the six core Amazon PPC metrics together, identify the likely performance problem, and choose the first question to investigate before changing anything. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Define PPC at first use.
Change “Amazon PPC metrics” to “Amazon pay-per-click (PPC) metrics.”
As per coding guidelines, define jargon and use plain-spoken language for the Filipino VA audience.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx`
at line 15, Update the sentence’s first occurrence of “Amazon PPC metrics” to
“Amazon pay-per-click (PPC) metrics,” preserving the rest of the guidance
unchanged.
Source: Coding guidelines
| ## Meet the Big Six | ||
|
|
||
| These six metrics describe what happened between the search result and the sale. Amazon reports every one of them per campaign, per ad group, and per keyword. | ||
|
|
||
| - **Impressions** — how often Amazon showed the ad. | ||
| - **Clicks** — how often a shopper selected the ad. | ||
| - **CPC, cost per click** — average advertising cost for one click. `CPC = ad spend ÷ clicks`. | ||
| - **CTR, click-through rate** — the share of impressions that became clicks. `CTR = clicks ÷ impressions`. | ||
| - **CVR, conversion rate** — the share of clicks that became orders. `CVR = orders ÷ clicks`. | ||
| - **ACoS, advertising cost of sales** — advertising spend divided by ad-attributed sales. `ACoS = ad spend ÷ ad sales`. | ||
| - **TACoS, total advertising cost of sales** — advertising spend divided by total sales, including organic sales. `TACoS = ad spend ÷ total sales`. | ||
| - **ROAS, return on ad spend** — ad-attributed sales divided by advertising spend. `ROAS = ad sales ÷ ad spend`. | ||
|
|
||
| People call this group the Big Six even though it includes impressions and clicks as supporting signals. The name matters less than the job each number does. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Separate the six calculated metrics from impressions and clicks.
This section says there are six metrics but lists eight. It also implies TACoS is reported per keyword and ad group, even though its denominator includes total sales, including organic sales. Amazon describes campaign reporting around metrics such as CTR, ROAS, and ACoS, not keyword-level TACoS. (advertising.amazon.com)
Clarify that CPC, CTR, CVR, ACoS, TACoS, and ROAS are the “Big Six,” while impressions and clicks are inputs. Explain that TACoS normally requires combining advertising spend with wider product or business sales data.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx`
around lines 21 - 34, Update the “Meet the Big Six” section to identify CPC,
CTR, CVR, ACoS, TACoS, and ROAS as the six calculated metrics, while describing
impressions and clicks as supporting inputs rather than Big Six members. Remove
the claim that Amazon reports all eight metrics per keyword and ad group, and
clarify that TACoS typically requires combining advertising spend with broader
product or business sales data, including organic sales.
|
|
||
| These six metrics describe what happened between the search result and the sale. Amazon reports every one of them per campaign, per ad group, and per keyword. | ||
|
|
||
| - **Impressions** — how often Amazon showed the ad. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Remove em dashes from all five lessons.
content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx#L25-L25: replace all em-dash separators with commas, periods, or parentheses.content/curriculum/modules/1-foundations/1.2-cpc-ctr.mdx#L19-L19: replace all em dashes, including table placeholders where applicable.content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx#L19-L19: replace all em dashes throughout the lesson.content/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdx#L42-L42: replace all em dashes throughout the lesson.content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx#L19-L19: replace all em dashes throughout the lesson.
As per coding guidelines, “Do not use em-dashes. Use periods, commas, or parentheses instead.”
📍 Affects 5 files
content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx#L25-L25(this comment)content/curriculum/modules/1-foundations/1.2-cpc-ctr.mdx#L19-L19content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx#L19-L19content/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdx#L42-L42content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx#L19-L19
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx`
at line 25, Remove every em dash from the five lessons:
content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx
(lines 25-25), 1.2-cpc-ctr.mdx (19-19, including table placeholders),
1.3-acos-tacos-profitability.mdx (19-19), 1.4-roas-measuring-return.mdx (42-42),
and 1.5-metrics-in-practice.mdx (19-19). Replace each separator with an
appropriate comma, period, or parenthetical form while preserving the lesson
content.
Source: Coding guidelines
| ## Pattern 1: high CTR, low CVR, high ACoS | ||
|
|
||
| **What to do**: | ||
| 1. Check your main image — is it professional and clear? | ||
| 2. Review your price — are you competitive? | ||
| 3. Read your reviews — are there recurring complaints? | ||
| 4. Compare your listing to competitors shown alongside your ad | ||
| **The symptoms:** lots of clicks, almost no purchases, and a bad ACoS (advertising cost of sales). | ||
|
|
||
| **What NOT to do**: Don't lower your bids or pause keywords. The targeting is fine — the listing is the problem. | ||
| **The diagnosis:** this is a listing problem, not a targeting problem. The traffic is relevant — the keywords are working, CTR (click-through rate) proves that. Something on the product page is stopping people from buying: photos, price, reviews, or description. | ||
|
|
||
| > 💡 **Tip**: A quick way to diagnose this is to search your main keyword on Amazon and compare your listing to the top 3 competitors. If their photos look better, their reviews are stronger, or their price is lower — that's your answer. | ||
| **What to do:** check the main image for clarity, review price competitiveness, read reviews for recurring complaints, and compare the listing against the top three competitors shown alongside the ad. | ||
|
|
||
| ## Pattern 2: Low CTR, Good CVR, Low ACoS | ||
| **What not to do:** don't lower bids or pause keywords first. The targeting is fine — the listing is the problem. | ||
|
|
||
| **The symptoms**: Not many people click your ad, but those who do buy at a good rate. Your ACoS looks healthy — but you're barely selling anything. | ||
| ## Pattern 2: low CTR, good CVR, low ACoS | ||
|
|
||
| **What it means**: Your product page converts well for the people who find it. But your ad isn't showing up enough, or it's not standing out. | ||
| **The symptoms:** few clicks, but the ones you get convert well, and ACoS looks healthy. You're barely selling anything. | ||
|
|
||
| **What to do**: | ||
| 1. Check your impression volume — are you even getting shown? | ||
| 2. If impressions are low, increase bids to win more auctions | ||
| 3. If impressions are high but CTR is low, check keyword relevance | ||
| 4. Add more keyword variations to expand reach | ||
| **The diagnosis:** the product page converts well for the shoppers who find it, but the ad isn't showing up enough, or isn't standing out when it does. | ||
|
|
||
| **What NOT to do**: Don't assume your ads are "fine" just because ACoS looks good. Low ACoS with low volume means you're leaving money on the table. | ||
| **What to do:** check impression volume first. If impressions are low, the campaign may need a higher bid or wider targeting coverage to win more auctions. If impressions are high but CTR is still low, check keyword relevance instead. | ||
|
|
||
| ## Pattern 3: High CPC, Low CVR, Critical ACoS | ||
| **What not to do:** don't assume the ads are "fine" just because ACoS looks good. A low ACoS at low volume means money is being left on the table. | ||
|
|
||
| **The symptoms**: You're paying a lot per click, and those clicks almost never convert. Your ACoS is way above your margin. | ||
| ## Pattern 3: high CPC, low CVR, critical ACoS | ||
|
|
||
| **The diagnosis**: This is a **keyword quality problem**. You're bidding on keywords that are too expensive and too broad for your product. | ||
| **The symptoms:** paying a lot per click, and those clicks rarely convert. ACoS is well above margin. | ||
|
|
||
| **What to do**: | ||
| 1. Check your search term report — what actual searches are triggering your ads? | ||
| 2. Add negative keywords to eliminate irrelevant searches | ||
| 3. Move from broad to phrase or exact match for best terms | ||
| 4. Lower bids on expensive keywords that don't convert | ||
| 5. If a keyword consistently fails after 30+ clicks, pause it | ||
| **The diagnosis:** a keyword-quality problem — bidding on keywords that are too expensive and too broad for this product. | ||
|
|
||
| > ⚠️ **Watch out**: This is the most dangerous pattern because it actively loses money every day you don't fix it. Treat it as urgent. | ||
| **What to do:** pull the search-term report to see what's actually triggering the ad, add negative keywords for irrelevant searches, move from broad to phrase or exact match on the terms that do convert, and lower bids on expensive keywords that don't. If a keyword consistently fails to convert after 30 or more clicks, pause it. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Do not treat aggregate CTR and CVR as proof of one root cause.
High CTR with low CVR can still come from search-intent mismatch, not only the listing. Likewise, high CPC with low CVR can combine targeting, placement, competition, and listing problems. Require checking search terms and product-page performance before declaring targeting “fine” or naming keyword quality as the cause.
Also applies to: 133-138
🧰 Tools
🪛 LanguageTool
[style] ~25-~25: Consider using a synonym to be more concise.
Context: ..., low CVR, high ACoS The symptoms: lots of clicks, almost no purchases, and a bad ...
(A_LOT_OF)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx` around
lines 23 - 49, Revise the diagnoses in Patterns 1 and 3 so aggregate CTR/CVR or
CPC/CVR metrics do not establish a single root cause. In Pattern 1, require
checking search-term intent alongside product-page performance before concluding
the listing is the problem or targeting is fine; in Pattern 3, acknowledge
targeting, placement, competition, and listing factors and require both
search-term and product-page checks before attributing the issue to keyword
quality.
| **The diagnosis:** organic sales are shrinking. The ads are efficient, but the business is becoming more dependent on paid traffic to sell at all. | ||
|
|
||
| **What NOT to do**: Don't ignore this because ACoS looks healthy. A rising TACoS is a slow leak that eventually sinks the ship. | ||
| **What to do:** check organic keyword rankings, invest in review generation, and optimize the listing's title, bullets, and backend keywords for organic search. Consider a temporary ad-spend increase while the organic fix takes hold. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Replace “review generation” with approved review methods.
The phrase is ambiguous enough to suggest prohibited review manipulation. Name compliant options such as Amazon’s “Request a Review” feature or Vine, and explicitly prohibit incentives or requests for positive reviews. Amazon warns that manipulation may lead to review removal, delisting, or loss of selling privileges. (sellercentral.amazon.com)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx` around
lines 57 - 59, The “What to do” guidance should replace the ambiguous “invest in
review generation” wording with compliant methods such as Amazon’s Request a
Review feature or Vine, while explicitly prohibiting incentives or requests for
positive reviews. Preserve the surrounding organic-ranking,
listing-optimization, and temporary ad-spend recommendations.
| Product: a kitchen scale, $24.99, 30% margin, so a 30% break-even ACoS. | ||
|
|
||
| Use your search term report, placement data, and competitive analysis to understand **why** the bottleneck exists. Don't just treat the symptom. | ||
| **Week 1, launch:** | ||
|
|
||
| ### Step 3: Take One Action at a Time | ||
| | Metric | Value | Read | | ||
| |---|---|---| | ||
| | CPC | $1.20 | typical for this category | | ||
| | CTR | 1.2% | below average | | ||
| | CVR | 8% | decent | | ||
| | ACoS | 50% | above the 30% margin | | ||
| | TACoS | 40% | no organic sales yet | | ||
| | ROAS | 2.0x | below the 3.3x break-even | | ||
|
|
||
| Resist the urge to change everything at once. Make one adjustment, wait 3–7 days for data, then evaluate. | ||
| Week 1 of a launch isn't expected to be profitable yet. The question isn't "is this profitable" — it's "is this trending the right direction." | ||
|
|
||
| ### Step 4: Measure the Impact | ||
|
|
||
| Compare before and after metrics. Did your change improve the bottleneck metric without degrading others? | ||
|
|
||
| ## Scenario Walkthrough: Kitchen Scale | ||
|
|
||
| You manage ads for a kitchen scale ($24.99, 30% margin, break-even ACoS = 30%). | ||
|
|
||
| ### Week 1: Launch | ||
|
|
||
| | Metric | Value | Assessment | | ||
| |--------|-------|------------| | ||
| | CPC | $1.20 | Typical for kitchen | | ||
| | CTR | 1.2% | Below average | | ||
| | CVR | 8% | Decent | | ||
| | ACoS | 50% | Above 30% margin ❌ | | ||
| | TACoS | 40% | No organic sales yet | | ||
| | ROAS | 2.0x | Below 3.3x break-even | | ||
|
|
||
| > 🎯 **Analogy**: Week 1 is like opening day at a new restaurant. Of course you're not profitable yet — you're still figuring out the menu. The key question isn't "am I profitable?" but "am I trending in the right direction?" | ||
|
|
||
| ### Week 3: After Optimization | ||
|
|
||
| After adding negative keywords and tightening match types: | ||
| **Week 3, after adding negative keywords and tightening match types:** | ||
|
|
||
| | Metric | Value | Change | | ||
| |--------|-------|--------| | ||
| |---|---|---| | ||
| | CPC | $0.95 | ↓ 21% | | ||
| | CTR | 2.8% | ↑ 133% | | ||
| | CVR | 10% | ↑ 25% | | ||
| | ACoS | 32% | ↓ 36% | | ||
| | TACoS | 25% | ↓ 38% | | ||
| | ROAS | 3.1x | ↑ 55% | | ||
|
|
||
| Big improvements across the board. CTR more than doubled — better targeting means more relevant clicks. ACoS dropped from 50% to 32%, nearly at break-even. | ||
| CTR more than doubled from tighter targeting. ACoS dropped from 50% to 32%, nearly at break-even. | ||
|
|
||
| ### Week 6: Profitable | ||
| **Week 6, profitable:** | ||
|
|
||
| | Metric | Value | Change | | ||
| |--------|-------|--------| | ||
| |---|---|---| | ||
| | CPC | $0.85 | ↓ 11% | | ||
| | CTR | 3.5% | ↑ 25% | | ||
| | CVR | 11% | ↑ 10% | | ||
| | ACoS | 24% | ↓ 25% | | ||
| | TACoS | 12% | ↓ 52% | | ||
| | ROAS | 4.2x | ↑ 35% | | ||
|
|
||
| ACoS is now below break-even (24% < 30%). TACoS is healthy at 12% — organic sales are growing. The campaign is profitable and sustainable. | ||
| ACoS is now below break-even (24% vs. 30%), and TACoS at 12% shows organic sales are growing alongside the ads. The campaign is profitable and no longer carrying the whole load by itself. | ||
|
|
||
| > 📌 **Key Takeaway**: PPC optimization isn't a one-time fix. It's a process of reading metrics, diagnosing patterns, making targeted changes, and measuring results. Week over week, small improvements compound into big gains. | ||
| PPC optimization isn't a one-time fix. It's reading metrics, diagnosing the pattern, making one targeted change, and measuring the result — week over week, small improvements compound. | ||
|
|
||
| ## The Maximum Profitable Bid Formula | ||
| ## The maximum-CPC formula | ||
|
|
||
| Before making any bid decision, always calculate this: | ||
| Before any bid decision, calculate this: `maximum CPC = average order value × CVR × target ACoS`. | ||
|
|
||
| **Max CPC = AOV × CVR × Target ACoS** | ||
| For the kitchen scale at week 6: average order value $24.99, CVR 11% (0.11), target ACoS 25% (0.25). | ||
|
|
||
| For our kitchen scale: | ||
| - AOV (Average Order Value) = $24.99 | ||
| - CVR = 11% (0.11) | ||
| - Target ACoS = 25% (0.25) | ||
| - Max CPC = $24.99 × 0.11 × 0.25 = **$0.69** | ||
| `$24.99 × 0.11 × 0.25 = $0.69` | ||
|
|
||
| This means you should never bid above $0.69 on keywords for this product if you want a 25% ACoS. If Amazon suggests bids of $0.80–$1.20, you know those would push you above target. | ||
| Don't bid above $0.69 on keywords for this product if the target is 25% ACoS. If Amazon's suggested bid range is $0.80–$1.20, that range would push the campaign above target — treat it as a ceiling to check against, not a bid to accept by default. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '\n== File outline: 1.5-metrics-in-practice.mdx ==\n'
ast-grep outline content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx --view expanded || true
printf '\n== Relevant lines: 1.5-metrics-in-practice.mdx ==\n'
sed -n '1,220p' content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx
printf '\n== Relevant lines: 1.3-acos-tacos-profitability.mdx ==\n'
sed -n '1,220p' content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx
printf '\n== Quick arithmetic checks ==\n'
python3 - <<'PY'
from decimal import Decimal, getcontext
getcontext().prec = 28
# 1.5 week 1? infer from values
cases = [
("1.5 week1", Decimal("1.20"), Decimal("0.012"), Decimal("0.08"), Decimal("24.99"), Decimal("0.50")),
("1.5 week3", Decimal("0.95"), Decimal("0.028"), Decimal("0.10"), Decimal("24.99"), Decimal("0.32")),
("1.5 week6", Decimal("0.85"), Decimal("0.035"), Decimal("0.11"), Decimal("24.99"), Decimal("0.24")),
]
for name, cpc, ctr, cvr, aov, acos in cases:
cpa = cpc / cvr if cvr else None
roas = aov * cvr / cpc if cpc else None
spend_per_100_clicks = cpc * 100
sales_per_100_clicks = aov * cvr * 100
implied_acos = spend_per_100_clicks / sales_per_100_clicks if sales_per_100_clicks else None
print(name)
print(" CPC", cpc, "CTR", ctr, "CVR", cvr, "AOV", aov, "ACoS", acos)
print(" ROAS", roas)
print(" implied_ACoS", implied_acos)
# 1.3
ad_spend = Decimal("210")
ad_sales = Decimal("540")
total_sales = Decimal("810")
cpc = Decimal("0.90")
cvr = Decimal("0.12")
ctr = Decimal("0.018")
price = Decimal("29.99")
clicks_from_spend = ad_spend / cpc
orders_from_clicks = clicks_from_spend * cvr
ad_sales_from_orders = orders_from_clicks * price
acos = ad_spend / ad_sales
tacos = ad_spend / total_sales
roas = ad_sales / ad_spend
print("\n1.3")
print("clicks from spend", clicks_from_spend)
print("orders from clicks", orders_from_clicks)
print("ad_sales from orders", ad_sales_from_orders)
print("ACoS", acos, "TACoS", tacos, "ROAS", roas)
print("implied CTR from clicks maybe if impressions known? not enough")
PYRepository: projectamazonph/amph-v2
Length of output: 153
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "placeholder"Repository: projectamazonph/amph-v2
Length of output: 173
🏁 Script executed:
#!/bin/bash
set -euo pipefail
for f in \
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx \
content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx
do
echo "== $f =="
wc -l "$f"
echo
done
echo "== 1.5 excerpt =="
sed -n '60,140p' content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx
echo
echo "== 1.3 excerpt =="
sed -n '85,130p' content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx
echo
echo "== arithmetic checks =="
python3 - <<'PY'
from decimal import Decimal, getcontext
getcontext().prec = 28
def pct(x): return f"{(x*100):.2f}%"
# 1.5
aov = Decimal("24.99")
weeks = [
("week1", Decimal("1.20"), Decimal("0.08"), Decimal("0.50"), Decimal("2.0")),
("week3", Decimal("0.95"), Decimal("0.10"), Decimal("0.32"), Decimal("3.1")),
("week6", Decimal("0.85"), Decimal("0.11"), Decimal("0.24"), Decimal("4.2")),
]
for label, cpc, cvr, acos, roas in weeks:
implied_acos = cpc / (aov * cvr)
implied_roas = aov * cvr / cpc
print(label, "implied ACoS:", pct(implied_acos), "stated:", pct(acos))
print(label, "implied ROAS:", f"{implied_roas:.3f}x", "stated:", f"{roas}x")
# 1.3
ad_spend = Decimal("210")
ad_sales = Decimal("540")
total_sales = Decimal("810")
cpc = Decimal("0.90")
cvr = Decimal("0.12")
price = Decimal("29.99")
clicks = ad_spend / cpc
orders = clicks * cvr
implied_ad_sales = orders * price
print("1.3 clicks:", clicks)
print("1.3 orders:", orders)
print("1.3 implied ad sales:", implied_ad_sales)
print("1.3 stated ad sales:", ad_sales)
print("1.3 ACoS:", ad_spend / ad_sales)
print("1.3 TACoS:", ad_spend / total_sales)
print("1.3 ROAS:", ad_sales / ad_spend)
PYRepository: projectamazonph/amph-v2
Length of output: 7756
🏁 Script executed:
#!/bin/bash
set -euo pipefail
for f in \
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx \
content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx
do
echo "== $f =="
wc -l "$f"
echo
done
echo "== 1.5 excerpt =="
sed -n '60,140p' content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx
echo
echo "== 1.3 excerpt =="
sed -n '85,130p' content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx
echo
echo "== arithmetic checks =="
python3 - <<'PY'
from decimal import Decimal, getcontext
getcontext().prec = 28
def pct(x): return f"{(x*100):.2f}%"
aov = Decimal("24.99")
weeks = [
("week1", Decimal("1.20"), Decimal("0.08"), Decimal("0.50"), Decimal("2.0")),
("week3", Decimal("0.95"), Decimal("0.10"), Decimal("0.32"), Decimal("3.1")),
("week6", Decimal("0.85"), Decimal("0.11"), Decimal("0.24"), Decimal("4.2")),
]
for label, cpc, cvr, acos, roas in weeks:
implied_acos = cpc / (aov * cvr)
implied_roas = aov * cvr / cpc
print(label, "implied ACoS:", pct(implied_acos), "stated:", pct(acos))
print(label, "implied ROAS:", f"{implied_roas:.3f}x", "stated:", f"{roas}x")
ad_spend = Decimal("210")
ad_sales = Decimal("540")
total_sales = Decimal("810")
cpc = Decimal("0.90")
cvr = Decimal("0.12")
price = Decimal("29.99")
clicks = ad_spend / cpc
orders = clicks * cvr
implied_ad_sales = orders * price
print("1.3 clicks:", clicks)
print("1.3 orders:", orders)
print("1.3 implied ad sales:", implied_ad_sales)
print("1.3 stated ad sales:", ad_sales)
print("1.3 ACoS:", ad_spend / ad_sales)
print("1.3 TACoS:", ad_spend / total_sales)
print("1.3 ROAS:", ad_sales / ad_spend)
PYRepository: projectamazonph/amph-v2
Length of output: 7756
Reconcile the worked examples with the metric formulas.
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx#L72-L123: the week 1/3/6 tables don’t satisfyACoS = CPC / (AOV × CVR)orROAS = AOV × CVR / CPC. With AOV $24.99, week 1’s CPC $1.20 and CVR 8% imply about 60% ACoS and 1.67x ROAS, not 50% / 2.0x.content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx#L97-L115: ad spend, ad sales, ACoS, TACoS, and ROAS are consistent, but CPC/CVR/price imply about 233 clicks, 28 orders, and roughly $840 in ad sales, not $540.
📍 Affects 2 files
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx#L72-L123(this comment)content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx#L97-L115
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx` around
lines 72 - 123, Reconcile the worked examples with the documented metric
formulas: in
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx lines
72-123, update the week 1/3/6 table values so ACoS = CPC / (AOV × CVR) and ROAS
= AOV × CVR / CPC remain consistent; in
content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx lines
97-115, update the CPC/CVR/price or related sales figures so clicks, orders, ad
sales, ACoS, TACoS, and ROAS all reconcile, preserving the intended
instructional conclusions.
| ## The maximum-CPC formula | ||
|
|
||
| Before making any bid decision, always calculate this: | ||
| Before any bid decision, calculate this: `maximum CPC = average order value × CVR × target ACoS`. | ||
|
|
||
| **Max CPC = AOV × CVR × Target ACoS** | ||
| For the kitchen scale at week 6: average order value $24.99, CVR 11% (0.11), target ACoS 25% (0.25). | ||
|
|
||
| For our kitchen scale: | ||
| - AOV (Average Order Value) = $24.99 | ||
| - CVR = 11% (0.11) | ||
| - Target ACoS = 25% (0.25) | ||
| - Max CPC = $24.99 × 0.11 × 0.25 = **$0.69** | ||
| `$24.99 × 0.11 × 0.25 = $0.69` | ||
|
|
||
| This means you should never bid above $0.69 on keywords for this product if you want a 25% ACoS. If Amazon suggests bids of $0.80–$1.20, you know those would push you above target. | ||
| Don't bid above $0.69 on keywords for this product if the target is 25% ACoS. If Amazon's suggested bid range is $0.80–$1.20, that range would push the campaign above target — treat it as a ceiling to check against, not a bid to accept by default. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Treat this as a maximum average CPC, not a hard bid cap.
A keyword bid is the auction ceiling, while the formula estimates the average CPC affordable at the current conversion rate and target ACoS. Dynamic bidding can also adjust bids in real time. (advertising.amazon.com)
Tell learners to compare the calculated threshold with realized CPC rather than asserting that every keyword bid above $0.69 is invalid.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx` around
lines 115 - 123, Revise the “maximum-CPC formula” guidance to describe $0.69 as
the maximum affordable average CPC, not a hard keyword bid cap. In the
surrounding bidding example, instruct learners to compare the threshold with
realized CPC and acknowledge auction-level bids and dynamic bidding adjustments,
rather than stating that every bid above $0.69 is invalid.
| "question": "What does your Amazon PPC bid actually control?", | ||
| "optionA": "The exact price you'll pay for every click", | ||
| "optionB": "A ceiling — the most you'll pay, with the real cost decided by the auction and your settings", | ||
| "optionC": "A price that never changes once the campaign is live", | ||
| "optionD": "A guaranteed discount of one cent below the next bidder", | ||
| "correctAnswer": "B", | ||
| "explanation": "In a second-price auction, you pay just one cent more than the next highest bidder, not your full maximum bid. This means your actual CPC is often lower than your bid." | ||
| "explanation": "Your bid is a ceiling, not a fixed price. Relevance, targeting, placement modifiers, and bid strategy all affect what you actually pay. The safe habit isn't memorizing an auction formula — it's setting a defensible maximum bid and then watching your realized CPC in the reports." |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🌐 Web query:
Amazon Ads dynamic bidding placement adjustments base bid ceiling CPC maximum adjusted bid documentation
💡 Result:
In Amazon Ads, your final bid for an auction is determined by the interaction between your base bid, placement bid adjustments, and your selected dynamic bidding strategy [1][2][3]. The process follows a specific order of operations where placement adjustments are applied to the base bid, and the dynamic bidding strategy then acts upon that adjusted figure [1][2][3]. Base Bid and Placement Adjustments Your base bid is the foundational amount you set for a target [3]. Placement bid adjustments (also known as multipliers) are percentage increases (up to 900%) applied to your base bid for specific placements such as Top of Search or Product Pages [1][2][4]. The formula for the placement-adjusted bid is: Placement-Adjusted Bid = Base Bid x (1 + Adjustment Percentage) [4] Dynamic Bidding Strategies Once the placement-adjusted bid is established, Amazon's dynamic bidding strategy determines the final auction bid based on the predicted likelihood of conversion [1][5][3]: 1. Dynamic Bids – Down Only: Amazon will lower your bid when a conversion is less likely, but it will never raise your bid above your placement-adjusted bid [1][6][5]. In this scenario, your placement-adjusted bid acts as the effective ceiling [7][5][3]. 2. Dynamic Bids – Up and Down: Amazon can lower your bid when a conversion is unlikely, but it can also increase your bid when a conversion is highly likely [8][1][7]. - Top of Search: Amazon can increase the placement-adjusted bid by up to 100% [6][7][5]. - Product Pages and Rest of Search: Amazon can increase the placement-adjusted bid by up to 50% [6][7][5]. 3. Fixed Bids: Amazon uses your placement-adjusted bid exactly as set, without real-time adjustments based on conversion likelihood [1][6][7]. Because "Up and Down" bidding applies these percentage increases to your already-adjusted placement bid, the final maximum potential bid can significantly exceed your original base bid [6][7][3]. For example, if you set a $1.00 base bid with a +200% Top of Search adjustment, your placement-adjusted bid is $3.00. Under "Up and Down," Amazon could potentially increase that $3.00 bid by another 100%, resulting in a final auction bid of up to $6.00 [3].
Citations:
- 1: https://emplicit.co/amazon-placement-bid-adjustments-explained/
- 2: https://daniks.ai/blog/amazon-ppc-placements
- 3: https://ecombrainly.com/amazon-ppc-placement/
- 4: https://bulksheetpro.com/learn/placement-multipliers-bulk/
- 5: https://meetrel.ai/blog/how-amazons-ad-auction-works
- 6: https://www.sellerstack.ai/glossary/dynamic-bidding
- 7: https://landingcube.com/amazon-ads-dynamic-vs-fixed-bids/
- 8: https://advertising.amazon.com/library/guides/dynamic-bidding-sponsored-products
Distinguish the base bid from the effective ceiling. Option B is too absolute: the entered bid is the starting point, and Amazon can raise or lower the final auction bid through placement adjustments and dynamic bidding. Revise the answer and explanation to describe the adjusted bid as the cap, not the raw bid.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/curriculum/quiz-questions.json` around lines 46 - 52, Update the quiz
entry’s optionB and explanation so they distinguish the entered base bid from
the effective ceiling after Amazon applies placement adjustments and dynamic
bidding. Describe the adjusted bid as the maximum cap while preserving the
guidance about auction-determined costs and monitoring realized CPC.
Correctness fixes: reconcile the 1.3 and 1.5 worked-example numbers so ACoS/ROAS actually follow from the stated CPC/CVR/AOV, relabel 1.2's "break-even CPC" as "maximum CPC at target ACoS" (it's only break-even when the target equals the real margin), fix a ROAS ad-spend/sales mislabel in 1.4, soften 1.5's max-CPC guidance from a hard per-click cap to a realized-CPC comparison, stop treating a single CTR/CVR/CPC reading as proof of one root cause in 1.5's patterns 1 and 3, require checking the ad-sales/organic-sales split before blaming organic decline for a rising TACoS in 1.3 and 1.5, replace "review generation" with Amazon's compliant review mechanisms, clarify 1.1's Big Six vs. supporting inputs, add the daily-budget gap to 0.3's model answer, and reconcile the quiz's bid-ceiling question with 1.2's own dynamic-bidding content. Style: remove every em dash from the touched lessons and quiz JSON per the repo's voice guide, define ASIN/XP/PPC on first use, and drop a redundant comment in the importer. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QSfREMzPnGxjrUPSbz3PGp
Summary
Release 2 rewrite of Module 0 (Onboarding) and Module 1 (PPC Foundations) per
docs/CURRICULUM-REDESIGN.md's production order (steps 1–2: rebuild Module 0, rewrite Module 1 using the Big Six lesson as the model). Tracked under issue #24.0.3now delivers the module's required artifact — a client-brief intake checklist — instead of a generic tool preview.1.1replaced with the "Big Six + decision loop" lesson (migrated/adapted fromdocs/1-1-read-ppc-data-before-you-change-it.md) per the production order's explicit instruction to use it as the model.1.2fixes a text-encoding corruption and adds a fact card.1.3–1.5get voice-guide cleanup and corrected cross-references.quiz-questions.json's Module 0 auction question, which taught the false "$0.01 above next bid" mechanic flagged in the content audit.This branch was rebased onto
mainafter PR #29 (Release 1 trust-and-safety pass) landed — conflicts in0.1,0.2,0.3,1.2, and1.5were resolved in favor of this branch's fuller rewrite, while folding in #29's real module-list table into0.2and keeping #29's course-split logic inscripts/import-amph-content.tsuntouched.Test plan
1.2-cpc-ctr.mdxquiz-questions.jsonis well-formed JSON@@unique([moduleId, lessonNumber]))tsc --noEmitonscripts/import-amph-content.tsshows only pre-existing missing-node_modulesnoise, no new errorsDATABASE_URL)Generated by Claude Code
Summary by CodeRabbit
New Features
Content Updates