Skip to content

content: rebuild Module 0 and Module 1 to the v2 production standard#31

Merged
projectamazonph merged 2 commits into
mainfrom
claude/amazon-ph-academy-alignment-3pvxz9
Jul 16, 2026
Merged

content: rebuild Module 0 and Module 1 to the v2 production standard#31
projectamazonph merged 2 commits into
mainfrom
claude/amazon-ph-academy-alignment-3pvxz9

Conversation

@projectamazonph

@projectamazonph projectamazonph commented Jul 16, 2026

Copy link
Copy Markdown
Owner

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.

  • Module 0 — full rebuild: real 4-tab nav (Home/Courses/Tools/Profile), the five real tools mapped to their actual unlock modules, real badges, an honest Ads Console preview, and the work loop (Read/Decide/Change/Explain). 0.3 now delivers the module's required artifact — a client-brief intake checklist — instead of a generic tool preview.
  • Module 11.1 replaced with the "Big Six + decision loop" lesson (migrated/adapted from docs/1-1-read-ppc-data-before-you-change-it.md) per the production order's explicit instruction to use it as the model. 1.2 fixes a text-encoding corruption and adds a fact card. 1.31.5 get voice-guide cleanup and corrected cross-references.
  • Fixed quiz-questions.json's Module 0 auction question, which taught the false "$0.01 above next bid" mechanic flagged in the content audit.
  • Applied the voice guide throughout: no emoji, no banned phrases, acronyms defined on first use per lesson, client-language blocks added.

This branch was rebased onto main after PR #29 (Release 1 trust-and-safety pass) landed — conflicts in 0.1, 0.2, 0.3, 1.2, and 1.5 were resolved in favor of this branch's fuller rewrite, while folding in #29's real module-list table into 0.2 and keeping #29's course-split logic in scripts/import-amph-content.ts untouched.

Test plan

  • Verified no legacy product references (AdCraft, AI Mentor, Formula Calculator, "Triage Arena") remain in Module 0/1
  • Verified no emoji or voice-guide banned phrases in the rewritten lessons
  • Fixed a stray text-encoding corruption in 1.2-cpc-ctr.mdx
  • Validated quiz-questions.json is well-formed JSON
  • Confirmed lesson numbers stay unique per module for the importer (@@unique([moduleId, lessonNumber]))
  • tsc --noEmit on scripts/import-amph-content.ts shows only pre-existing missing-node_modules noise, no new errors
  • Not run against a real database — the importer has not been exercised end-to-end in this session (no DATABASE_URL)

Generated by Claude Code

Summary by CodeRabbit

  • New Features

    • Added a new onboarding orientation covering navigation, lesson flow, account safety, and client briefs.
    • Added a foundational lesson on reading PPC data, including key metrics, formulas, diagnostics, and practical examples.
    • Expanded lessons on CPC, CTR, ACoS, TACoS, ROAS, profitability, and campaign troubleshooting.
    • Updated examples, practice scenarios, client-language guidance, checks, and takeaways throughout the curriculum.
  • Content Updates

    • Replaced outdated introductory and campaign-builder lessons with revised learning paths.
    • Updated the onboarding quiz to explain bids as spending ceilings.

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
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The 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.

Changes

Curriculum redesign

Layer / File(s) Summary
Onboarding orientation and account-safety lessons
content/curriculum/modules/0-onboarding/*, content/curriculum/quiz-questions.json, scripts/import-amph-content.ts
Onboarding now covers the learning path, platform navigation, account safety, client-brief intake, and bid-ceiling terminology; the import comment reflects the current slug format.
PPC metric foundations
content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx, content/curriculum/modules/1-foundations/1.1-what-is-ppc.mdx, content/curriculum/modules/1-foundations/1.2-cpc-ctr.mdx, content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx, content/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdx
Module 1 introduces a replacement metric-reading lesson and rewrites CPC/CTR, ACoS/TACoS, and ROAS instruction with updated formulas, examples, checks, and client-language sections.
Diagnostic patterns and action framework
content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx
The wrap-up lesson now uses consistent diagnostic patterns, a bottleneck-to-measurement framework, maximum-CPC guidance, revised scenarios, and a shorter Module 2 transition.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related issues

  • projectamazonph/amph-v2#24 — The PR implements the curriculum redesign by rewriting onboarding and foundation lessons around the three-course model.

Possibly related PRs

  • projectamazonph/amph-v2#26 — The PR rewrites curriculum lessons and the onboarding quiz introduced through the earlier curriculum import.
  • projectamazonph/amph-v2#29 — The PR overlaps on onboarding lesson rewrites, removal of legacy simulation framing, and platform/tool navigation updates.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: rebuilding Modules 0 and 1 to the v2 production standard.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/amazon-ph-academy-alignment-3pvxz9

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 14

🧹 Nitpick comments (1)
scripts/import-amph-content.ts (1)

261-261: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove 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

📥 Commits

Reviewing files that changed from the base of the PR and between e906bff and edfcb79.

📒 Files selected for processing (11)
  • content/curriculum/modules/0-onboarding/0.1-welcome.mdx
  • content/curriculum/modules/0-onboarding/0.2-platform-tour.mdx
  • content/curriculum/modules/0-onboarding/0.3-first-simulation.mdx
  • content/curriculum/modules/1-foundations/1.1-read-ppc-data-before-you-change-it.mdx
  • content/curriculum/modules/1-foundations/1.1-what-is-ppc.mdx
  • content/curriculum/modules/1-foundations/1.2-cpc-ctr.mdx
  • content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx
  • content/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdx
  • content/curriculum/modules/1-foundations/1.5-metrics-in-practice.mdx
  • content/curriculum/quiz-questions.json
  • scripts/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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment on lines +47 to +51
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment on lines +21 to +34
## 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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-L19
  • content/curriculum/modules/1-foundations/1.3-acos-tacos-profitability.mdx#L19-L19
  • content/curriculum/modules/1-foundations/1.4-roas-measuring-return.mdx#L42-L42
  • content/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

Comment on lines +23 to +49
## 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Comment on lines +57 to +59
**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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Comment on lines +72 to +123
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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")
PY

Repository: 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)
PY

Repository: 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)
PY

Repository: 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 satisfy ACoS = CPC / (AOV × CVR) or ROAS = 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.

Comment on lines +115 to +123
## 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Comment thread content/curriculum/quiz-questions.json Outdated
Comment on lines +46 to +52
"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."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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:


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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants