WickedSpooky.org / Documentation · Markdown source

Case Study: WickedSpooky.ai The Creator Workbench

Design baseline: October 8, 2026 · Primary Region: US East (N. Virginia), us-east-1 · Owner: Wicked Spooky AI

Reading contract: This is a completed-design narrative and a specification for a build from scratch. Past tense describes the selected target architecture, not a claim that resources were deployed or tests passed. Implementation, measurements, incidents, and exam evidence remain not yet verified until linked artifacts replace the acceptance criteria below. Prices are a dated planning baseline, not a bill or quote.

1. The problem and the outcome we designed

We designed Creator for a one-person business that needed research, content preparation, publishing, community triage, and revenue reporting without employing a social media team. We normalized the source blueprint's speaker identity to Wicked Spooky AI. Research became a weekly content plan; original hooks, captions, carousels, and short-video scripts entered a review queue; approved versions became scheduled publications; comments and DMs became reviewable replies and qualified leads; attribution fed a daily brief.

The project served two purposes: an ultra-low-budget SAA-C03 training portfolio and a subscription business that could support growing demand. We retained production-quality correctness in the training mode, while limiting volume and expensive features. We made cost, approvals, recovery, and profitability part of admission control rather than promises made after a viral spike.

Creator's product identity remained creator.wickedspooky.ai; WickedSpooky.org remained the operations and documentation domain. This follows the existing service/domain model. DNS does not tie the product to WordPress or a particular runtime. This case study lives in the Documentation section and follows the repository's planned private access boundary; no access control is implemented by this document.

Business and technical acceptance criteria

ConstraintSpecificationEvidence required
Training firstOne tenant, synthetic identities, dry-run adapters by default; proposed AWS cash ceiling $10/month after credits, with a separate bounded live-test allowanceMonthly usage ledger and bill reconciliation
Portfolio qualityReal authentication, authorization, state transitions, retries, idempotency, and restore behavior; no mocked success claimsRepeatable tests with sanitized artifacts
Human authorityEvery external post, comment reply, or DM requires approval of its exact versionTampering, stale approval, revocation, and race tests
Elastic demandAccepted work queues durably and scales within resource, platform, and commercial limitsLoad curve, queue-drain trace, overload response
Sustainable subscriptionsAt least 30% runtime gross margin; target 50% operating contribution margin after allocated operating costFull-price unit economics and subscription settlement reconciliation
Headless operationBrowser is a control surface; jobs continue independently after it closesClose-browser workflow test
RecoveryNo silent loss of accepted work; regional recovery explicitly boundedBackup restore and pending-job reconciliation

These are design targets, not measured outcomes. Infrastructure/runtime cost includes AI inference, storage, transfer, secrets, logs, backups, retries, and paid platform dependencies. Labor, support, payment fees, refunds, and fixed overhead are also included in the subscription sustainability calculation.

2. Architecture and component-to-skill alignment

We used Amplify Gen 2 for the control surface and infrastructure definitions, with custom CDK resources for orchestration and messaging. Cognito identified users; AppSync enforced tenant-scoped operations; DynamoDB held business state; S3 held media and reports. EventBridge Scheduler triggered timed work; EventBridge distributed domain events; Step Functions orchestrated bounded jobs; SQS buffered work and DLQs exposed failures; Lambda implemented stateless processing and publishing adapters. Bedrock supplied model inference. Claude Code was a development aid, never the production orchestrator.

Creator operator / subscriber
  -> Amplify Gen 2 control surface -> Cognito -> AppSync -> DynamoDB
                                  |                |       |
                                  |                +-> command / outbox
                                  +-> signed S3 upload     |
                                                         v
Scheduler -> EventBridge -> SQS -> Lambda -> Step Functions -> Bedrock
                            |       |             |
                           DLQ      +-> S3 assets + DynamoDB drafts
                                                     |
                                  approve exact content version
                                                     |
Scheduler -> publish queue -> adapter Lambda -> platform API
                                       |            |
                                       +-> Secrets Manager / KMS
                                       +-> receipt / reconciliation
Platform + commerce webhooks -> verified ingress -> SQS -> attribution
Daily Scheduler -> aggregate -> optional bounded Bedrock summary -> S3 brief
All paths -> CloudWatch metrics/logs/alarms + audit and cost ledger

The task IDs below refer to the official SAA-C03 guide. A mapping states which architectural skill a component exercises; it does not claim every product feature is tested on the exam.

ComponentResponsibility and boundarySAA tasksProof artifact
Amplify Hosting / Gen 2, CDK, CIStatic control UI, repeatable environments, reviewed resource diffs; backend resources billed separately2.1, 2.2, 3.2, 4.2Clean deployment, rollback, generated resource inventory
Cognito and IAM/STSUser authentication, operator MFA, workload roles, least privilege; tenant membership separate from login1.1, 1.2Cross-tenant deny tests; IAM policy evaluation
AppSyncTenant-scoped queries and mutations; custom approval and entitlement resolvers; no direct status-setting by clients1.1, 1.2, 2.1Resolver authorization and pagination tests
DynamoDB, indexes, StreamsDurable state, conditional writes, transactional outbox, usage reservations; access-pattern-first keys2.1, 2.2, 3.3, 4.3Query plans, conditional race tests, restore evidence
S3Private media and research, versioned approved objects, lifecycle policies, signed uploads/downloads1.3, 3.1, 4.1Bucket-policy denial, checksum, retention and restore tests
EventBridge SchedulerTimed research, approved publication, local-time daily brief, cancellation/reconciliation2.1, 2.2, 4.2Duplicate, DST/timezone, expired-schedule tests
EventBridgeVersioned domain-event routing, isolated subscribers, delivery retry/DLQ2.1, 2.2, 3.5Event schema and target-failure evidence
Step Functions StandardShort durable orchestration, bounded retries, explicit failure states2.1, 2.2, 4.2Execution history with retry and catch paths
SQS / DLQsBuffer bursts, worker isolation, visibility timeout, partial batch failures, controlled redrive2.1, 2.2, 3.2, 3.5Backlog, poison-message and replay tests
LambdaStateless workers, right-sized memory, bounded concurrency, independent scaling2.1, 2.2, 3.2, 4.2Duration/memory benchmark and overload trace
BedrockReplaceable model adapter, structured output, token caps, latency/quality/cost evaluation2.1, 3.2, 4.2Token ledger and model evaluation; applied workload, not an exam guarantee
Secrets Manager / KMSScoped OAuth secrets, token rotation/revocation, encryption and key policies1.1, 1.2, 1.3Redacted rotation and denied-decrypt tests
Platform adaptersCapability checks, quota handling, external idempotency/reconciliation; approved content only1.2, 2.1, 2.2, 3.5Contract tests, 429/5xx and ambiguous-send cases
Webhook ingress (API Gateway + Lambda)HTTPS, provider signature verification, replay defense, durable acknowledgement1.2, 2.1, 3.4, 3.5Invalid-signature and duplicate-event tests
Attribution and daily briefDeduplicated conversion facts, bounded aggregation, source-linked summary2.1, 3.3, 3.5, 4.3Order/refund reconciliation and report lineage
CloudWatch, tracing, auditBusiness SLOs, queue age, failure alerts, redacted correlation IDs; durable approval audit outside short-lived logs2.2, 3.2, 4.2Alarm drill, trace, incident timeline
Budgets, Cost Explorer, cost exports, admission ledgerForecasting, full-price accounting, quotas and profitability controls4.1, 4.2, 4.3, 4.4Spend alerts, bill reconciliation, reservation races
Route 53 / TLS / delivery edgeStable ingress, encrypted transport, cacheable UI/media; signed private media delivery where needed1.3, 2.2, 3.4, 4.4DNS/TLS and origin-bypass tests
Subscription provider + entitlement resolverVerified paid status, quotas, renewal/cancellation, overage consent, auditable settlement1.2, 2.1, 2.2, 4.2Webhook replay and expired-subscription tests

3. End-to-end workflow and state model

StepSelected behaviorSAA task alignment
1. OnboardVerify subscription, tenant ownership and platform OAuth scopes; record brand voice and timezone1.1, 1.2, 2.1
2. AdmitAuthenticate, validate, reserve worst-case cost and included usage atomically; return job ID only after durable acceptance1.1, 2.2, 3.3, 4.2
3. ResearchScheduled adapters collect permitted sources, audience questions, trends, and hooks; cache by niche/time window with provenance2.1, 3.5, 4.2
4. GenerateBounded Bedrock calls produce original scripts, captions, carousel plans; schema checks and citations accompany drafts2.1, 3.2, 4.2
5. Store and reviewS3 stores assets; DynamoDB stores versions, hashes and review state; sensitive or unsupported material returns for revision1.3, 3.1, 3.3
6. ApproveServer validates approver role and conditionally approves the exact version, hash, destinations and schedule1.1, 1.2, 2.2
7. ScheduleApproval transaction creates outbox intent; dispatcher creates a deterministic schedule; reconciler repairs missing schedules2.1, 2.2
8. PublishWorker rechecks approval and entitlement, obtains a per-destination lease, validates capability, sends and saves platform receipt1.2, 2.1, 2.2
9. Triage communityVerified incoming comments/DMs become drafts; pricing intent becomes a lead; replies pass through the same approval gate1.2, 2.1, 3.5
10. AttributeSigned campaign IDs and UTM metadata link posts to clicks and verified orders; deduplicate and account for refunds1.3, 3.3, 3.5
11. BriefLocal-time morning aggregation reports revenue, attribution uncertainty, leads, approvals, failures and costs2.1, 3.5, 4.3
12. ReconcileSettle cost reservations, compare operational meter to billing exports, reconcile external receipts, check margins2.2, 4.1, 4.2, 4.3, 4.4

We keyed every entity and authorization check by tenant. Core records were Tenant, Subscription, Entitlement, BrandProfile, PlatformConnection, ResearchRun, Source, ContentVersion, Approval, PublishJob, DeliveryReceipt, CommunityItem, Lead, Click, Conversion, DailyBrief, UsageReservation, CostEntry and OutboxEvent. Indexes supported review queues, due work, platform receipts and daily aggregation without table scans. Large assets stayed in S3; event payloads carried IDs and object pointers.

Content followed DRAFT -> IN_REVIEW -> APPROVED -> SCHEDULED -> PUBLISHING -> PUBLISHED, with explicit REJECTED, CANCELLED, PARTIAL, FAILED and UNKNOWN_DELIVERY outcomes. Editing invalidated approval. Approval recorded tenant, approver, timestamp, version, immutable object version/checksum, platforms and expiry. Clients could not write approval or publication states directly.

The publish claim and approval/version check were one conditional transaction. Revocation before that claim blocked sending. After a network send began, cancellation became best effort with visible status; approval could not make an already accepted external action reversible. Partial multi-platform success retried only unfinished destinations.

At-least-once events were expected. Deterministic keys (tenant/contentVersion/platform/scheduleVersion) and conditional state changes protected each boundary. FIFO deduplication alone was insufficient. Where a provider lacked idempotency support, timeout after submission entered UNKNOWN_DELIVERY; reconciliation searched the provider receipt or required operator review instead of blindly reposting. We did not claim exactly-once delivery across AWS and third-party APIs.

Transactional outbox intent closed the database/event-publication gap. Dispatch retries could duplicate events, which consumers deduplicated. A scheduled reconciler repaired stranded outbox records and stale leases; it also checked schedules against authoritative approval state. Retention exceeded the retry/redrive window, while business receipts survived operational deduplication expiry. TTL deletion was eventual and never enforced authorization or expiration.

Research respected platform permissions and licensing. Unsupported scraping, universal DM automation, and guaranteed access to competitor comments were outside the contract. We began with permitted data and uploads. Video scripts and existing media were the economical default; generated video, transcription, and heavy rendering were separately metered add-ons. Bedrock outputs were untrusted data, never instructions with authority to publish or retrieve secrets.

4. Options and why we selected this path

All decisions below describe the completed design baseline. A new requirement can supersede a decision through a fail-forward record.

DecisionOptions consideredSelected path and reasonTradeoff / revisit triggerSAA tasks
Control surfaceAmplify static UI, SSR, custom S3/CloudFrontAmplify Gen 2 static client for fast portfolio delivery and repeatable backend definitionsAvoid SSR cost initially; reassess hosting transfer at sustained volume2.1, 3.4, 4.2, 4.4
RuntimeDeveloper agent loop, EC2 cron, managed orchestrationLambda + EventBridge + Step Functions; explicit state/retries and no idle serverMore service boundaries and IAM policies2.1, 2.2, 3.2, 4.2
Workflow typeStandard, Express, database-driven eventsStandard for bounded orchestration; approval stored as durable state and resumes a fresh jobNo long Lambda polling; Express only for short high-volume idempotent transforms after benchmark2.1, 2.2, 4.2
DatabaseDynamoDB, RDS/Aurora, relational analytics storeDynamoDB for tenant/key-based operational access and conditional writesJoins/ad hoc analytics less convenient; relational requirement triggers reevaluation3.3, 4.3
Capacity modeProvisioned free allowance, auto-scaled provisioned, on-demandOn-demand baseline to survive unpredictable tests; explicit max throughput and admission capsRequest units are paid. Optional provisioned training lab shares finite allowance across tables/indexes; switch mode through IaC, not an assumed instantaneous free-to-paid transition2.1, 3.3, 4.3
MessagingDirect synchronous calls, SQS, streaming logSQS workers + EventBridge fan-outDelivery duplicates and lag require idempotency; sustained ordered replay needs may justify Kinesis2.1, 2.2, 3.5
Compute for mediaLambda, ECS/Fargate, Batch/SpotLambda for bounded small work; S3 uploads bypass itWork beyond Lambda limits or sustained rendering moves to queued container/Batch workers, with a separate price2.1, 3.2, 4.2
StorageDatabase blobs, S3, EFS/EBSS3 for immutable object assets and lifecycle retentionSmall objects and retrieval charges can negate cold-tier savings1.3, 3.1, 4.1
NetworkVPC Lambda + NAT/endpoints, standard Lambda networkingNo customer VPC for baseline workers; HTTPS AWS/platform APIs and IAM protectionPrivate dependencies add private subnets, endpoints and deliberate NAT budgeting; public-subnet Lambda alone does not grant internet access1.2, 3.4, 4.4
AILargest model for all jobs, economical model routing, deterministic processingDeterministic aggregation first; economical supported Bedrock model for routine drafts; premium model only within allowanceQuality evaluation gates routing; model IDs/rates/version availability reviewed before launch3.2, 4.2
Keys and secretsPlain environment credentials, managed keys, customer-managed keysSecrets Manager scoped to adapter; AWS-managed/service encryption where adequate; customer-managed KMS where separate audit/key policy is requiredFixed secret/key costs accepted; broader enterprise isolation increases per-tenant cost1.1, 1.2, 1.3
Availability / DROne Region managed HA, warm standby, active-activeManaged multi-AZ regional services + backup/restore and reproducible IaCRegional outage delays publication; global tables and standby require paid SLA justification2.2, 4.1, 4.3, 4.4
BillingUnlimited cheap plan, flat subscription, metered subscriptionBase subscription with included usage, explicit overages and entitlementsMore accounting logic; avoids loss-making unlimited inference2.1, 4.2
ObservabilityUnlimited detailed logs, no logs, sampled redacted telemetryShort retention for operational logs and durable minimal business auditLower debug detail balanced against privacy and log cost1.3, 2.2, 4.1, 4.2

5. Free Tier assumptions versus paid-scale assumptions

We treated the owner's new Paid plan account as eligible for applicable offers, not as a free sandbox. For accounts opened under the program introduced July 15, 2025, AWS provides $100 at signup and up to $100 more through qualifying activities. Credits expire 12 months from account creation; the separate Free account plan lasts at most six months. Paid accounts incur charges beyond applicable allowances/credits. Account eligibility, earned balance, expiration and other workloads must be checked in Billing. Creating/joining an AWS Organization can immediately expire Free Tier credits; the multi-account lab is therefore isolated or deferred until that consequence is accepted. AWS Free Tier FAQ

We maintained two cost views: cash bill after verified offers/credits, and replacement cost at paid rates without credits or shared free allowances. Only replacement cost informed pricing. Legacy 12-month offers displayed on service pages were not assumed to apply to this new account; ambiguous eligibility was budgeted as paid until the console confirmed it. Allowances were shared according to each service's aggregation rules, never multiplied per tenant or sandbox. AWS billing guidance

ServiceTraining / recurring allowance assumptionPaid planning baseline / caveat
Lambda1M requests and 400,000 GB-seconds monthly, subject to offer rulesExample x86 first-tier compute $0.0000166667/GB-second; $0.20/M requests; memory, duration and architecture matter. Pricing
SQS1M requests/month across applicable RegionsCharge sends, receives, deletes, empty polls and payload chunks; FIFO/fair queue features differ. Estimate selected queue type. Pricing
Step Functions Standard4,000 transitions/month$0.000025/transition in us-east-1; retries add transitions, Express has separate request/duration metering. Pricing
Scheduler / event busScheduler 14M invocations/month; no assumption that custom bus events are freeScheduler excess example $1/M; custom events $1/M per 64 KB unit in cited examples; archives/replays add cost. Pricing
DynamoDB Standard25 GB storage; 25 RCUs/25 WCUs allowance applies to provisioned capacity, subject to aggregation rulesOn-demand requests are paid. Indexes, transactions, backups/PITR, exports and replicas add charges. Pricing
CognitoLite/Essentials: 10,000 direct/social MAUs; SAML/OIDC federation allowance only 50 MAUsPlus, M2M token usage, messaging and additional features differ; use selected identity flow and tier. Pricing
AppSync GraphQLBudget as paid unless this account's time-limited offer is confirmed$4/M queries/mutations, $2/M real-time updates, $0.08/M connection-minutes; transfer and backend charges additional. Pricing
Amplify HostingBudget paid; page's legacy 12-month allowances are conditionalStandard builds $0.01/minute; CDN storage $0.023/GB-month; served data $0.15/GB. Static UI avoids SSR meters. Backend is separately billed. Pricing
S3No universal always-free storage assumption for the new accountCharge storage, requests, lifecycle transitions, retrieval, versions, replication and transfer; cap uploaded/rendered bytes. Pricing
BedrockNo general always-free inference assumption; eligible credits may offset usageModel, Region, inference mode, input/output, cache and media prices vary; record exact selected rate card before enabling. Pricing
Secrets Manager / KMSNo perpetual free secret-storage assumption; qualifying KMS API allowance does not remove key chargesSecrets $0.40/secret-month and $0.05/10,000 API calls; customer-managed KMS key baseline $1/month, plus applicable requests/rotation charges. Secrets, KMS
CloudWatchPublished allowances include limited metrics/alarms and 5 GB log-related usage; confirm feature meterIngestion, retention, queries, tracing and high-cardinality custom metrics can dominate a small bill. Pricing

Rates above were checked October 8, 2026. They do not imply the whole system is free. DNS, messaging, webhook ingress, payment processing, platform APIs, WAF, backups and delivery require their own estimate. Before deployment, save a dated AWS Pricing Calculator estimate with Region, selected model, account offers and workload inputs. Recheck monthly and whenever the architecture or rate card changes.

Workload envelopes and reproducible calculations

The training envelope admitted one tenant, 30 research jobs, 120 draft jobs, 30 briefs, at most 60 approved destination publications, 1 GB of media and 2 GB of served UI data monthly. A 200-job orchestration subset at 15 transitions/job consumed 3,000 transitions before retries, leaving only 1,000 of the monthly allowance for retries and other workflows. A 50,000-call Lambda workload at 256 MB and 200 ms consumed 50,000 × 0.25 × 0.2 = 2,500 GB-seconds; Bedrock waiting time and heavier jobs must be measured separately.

For cost arithmetic, 100,000 Standard jobs at 15 transitions cost $37.50 at full rates, or $37.40 after a verified 4,000-transition allowance. One million AppSync queries cost $4 at the listed full rate. A 120-minute standard Amplify build month plus 2 GB served and 0.1 GB stored costs $1.20 + $0.30 + $0.0023 = $1.5023 before offers. Three secrets cost $1.20/month before API calls; one customer-managed key adds at least $1. These are partial calculations, not an all-in estimate.

For each model call, AI cost = inputTokens × inputRate + outputTokens × outputRate + cache/media charges, with rates normalized per token. A hypothetical $1/M input and $5/M output model with 4,000 input and 1,000 output tokens costs $0.009/call; 180 such calls cost $1.62. This is a sensitivity example, not a verified Claude price or model selection. Longer research context, multiple revisions, and generated media can multiply it. Measured provider token counters and timeout/retry charges replace estimates.

The commercial envelope started with a test scenario of 100 paying tenants and a 10× burst of admitted jobs. It used paid rates, per-tenant usage caps and measured worst-case included usage. No linear revenue assumption authorized unbounded compute. We included idle/fixed costs, failed jobs, free trials and cancelled accounts when modeling cohort profitability.

6. A self-sustaining subscription model

We replaced the original 30% markup idea with two explicit gates. A 30% markup on cost produces only 23.08% gross margin. The runtime floor is (net revenue - runtime cost) / net revenue >= 30%, so net revenue must be at least runtime cost / 0.70, a 42.86% markup. Our selected sustainability target is 50% operating contribution margin, including allocated support, fixed overhead and a maintenance/reinvestment reserve. That is a 100% markup on all-in cost, before accounting for payment fees and refunds. It is a planning policy, not a guaranteed financial result.

Let F be monthly fixed operating cost, N_floor the conservative paid subscriber count, V_p95 the measured per-tenant included-use cost envelope, S allocated support, and B a contingency/reinvestment reserve. We used:

C_all = F / N_floor + V_p95 + S + B
P_min = (C_all / (1 - 0.50) + fixedPaymentFee) / (1 - variablePaymentFee - refundReserveRate)
Runtime gate: net realized revenue >= C_runtime / 0.70

N_floor could not be a speculative viral forecast. During low enrollment, the founder funded the uncovered fixed-cost runway, raised price, or delayed commercial launch. Subscription revenue from customers was distinct from revenue attributed to their social posts; customer sales did not pay our AWS bill unless a separate contracted revenue share existed.

Proposed planMonthly price hypothesisIncluded usage ceilingOperating cost envelope
Solo$19One brand, two platforms, 120 text drafts, 60 destination publications, 30 briefs, 1 GB retained mediaAt most $8.00 all-in before payment fees/refunds
Studio$49Three brands, six connections, 400 text drafts, 240 destination publications, 90 briefs, 5 GB mediaAt most $21.00 on the same basis

These prices and allowances are unvalidated hypotheses, not active offers. One publication means one destination; retries/revisions and community drafting consume the relevant included allowance. Generated video, premium inference, large media transfer and paid platform dependencies require separate metering. We did not sell unlimited generation, comments or DMs.

Illustratively, assuming 3% variable payment cost, a $0.30 fixed transaction fee and a 2% refund reserve, Solo leaves $19 × 0.95 - $0.30 = $17.75; an $8 all-in envelope yields 54.93% operating contribution margin. Studio leaves $46.25 and yields 54.59% at $21. These fee rates are assumptions, not a provider quote. A Solo plan exceeds the 50% target only while all-in cost stays at or below $8.875; runtime cost must also remain at or below $12.425 for the 30% floor. The stricter operating envelope governs admission.

Before launching, we required a measured price sheet with exact model rates, per-feature costs, fixed-cost allocation, churn/refunds and fee terms. Overage price followed the same margin formula; overages required subscriber opt-in. Expired entitlements stopped new expensive work. Included work already accepted retained its reserved budget and visible completion/failure semantics.

Profitability guardrail

Admission conditionally reserved worst-case tokens, media bytes, retries and downstream runtime cost against both tenant allowance and a global spend ceiling. Parallel requests could not overspend the same balance. Reservations carried leases and a reconciliation state; ambiguous external or model charges stayed reserved until resolved. Failed attempts were included in cost accounting.

At 70% of allowance we notified; at 90% we offered an upgrade or approved overages; at exhaustion we rejected new premium work or offered a bounded economical mode. Forecast runtime margin below 35% triggered investigation, and below 30% blocked new subsidized work. The 50% operating target had its own envelope alarm. Thresholds were design policy and needed validation against billing lag and load tests.

We reconciled operational estimates daily to billing exports/Cost Explorer and settlements. Billing data and AWS Budgets are delayed; budget alerts are not hard spending caps. The admission ledger, maximum token limits, concurrency caps and adapter circuit breakers were the immediate controls. No mechanism guaranteed zero overshoot across already-running requests or external billing uncertainty; the contingency reserve covered that exposure.

7. Autoscaling boundaries and resiliency

SQS absorbed bursts while Lambda event-source maximum concurrency and reserved concurrency bounded drain rate. In training, expensive generation workers began at concurrency 2; commercial load testing began at 10, with a per-tenant outstanding-job ceiling of 20. These were initial IaC parameters, not discovered service limits. Concurrency stayed within account quotas and did not starve approval, webhook or reconciliation workers.

Effective throughput was the minimum of worker concurrency/duration, DynamoDB capacity/hot partitions, Bedrock token/request quotas, platform rate limits, and available commercial budget. Separate per-platform/tenant rate buckets enforced tokens or calls per time window; concurrency alone did not enforce a rate limit. Queue age, not just invocation count, drove scaling decisions. Caps increased automatically only within a preconfigured paid envelope; service-quota increases and architectural changes required engineering review. DynamoDB on-demand, AppSync, Scheduler and queues still had quotas, scaling constraints and downstream bottlenecks. Autoscaling never meant infinite instantaneous capacity.

Overloaded interactive requests returned an explicit throttled response with retry guidance before acceptance. Accepted work remained queued, with a deadline and visible status; overdue publications required a configured skip or review decision. Retryable 429/5xx responses used jittered exponential backoff and bounded attempts; permanent authentication/capability failures stopped immediately. SQS visibility exceeded processing timeout plus safe retry margin; partial batch responses prevented healthy messages being retried with poison messages. EventBridge target DLQs and worker DLQs handled different failure boundaries.

We designed a single-Region baseline using regional managed availability, S3 versioning and DynamoDB PITR/backup according to environment value. Business data recovery targets were RPO <= 24 hours in synthetic training, <= 15 minutes in commercial operation, and regional restore RTO <= 4 hours. These remained unmeasured objectives. A commercial requirement for surviving total regional loss required cross-Region backup/replication and a restore drill; PITR in the affected Region alone was not that guarantee. Replay verified current approvals, entitlements and existing platform receipts. The system tolerated a delayed report more readily than an unauthorized or duplicate post.

8. Security and observability

We separated creator, approver and operator permissions; trusted server context supplied tenant IDs. Cognito claims alone did not authorize cross-tenant queries. IAM roles scoped DynamoDB keys, S3 prefixes, secrets, KMS permissions and queue access where applicable. Private objects used Block Public Access and short-lived signed access. TLS protected network transport. OAuth tokens never appeared in prompts, client bundles, logs or evidence; adapters cached secrets only for a bounded interval and handled provider-specific refresh/rotation rather than assuming generic database-secret rotation worked for OAuth.

Data classification separated licensed public research, private brand material, personal messages/leads, commerce facts and audit records. Retention defaults were 7 days for debug logs, 30 days for research snapshots, and 90 days for private leads/messages unless a justified policy required otherwise. Approval/audit and financial retention required explicit legal/business selection before commercial launch. Deletion included backups/versions according to documented retention; changing a prefix or a hidden link never enforced access.

Structured telemetry carried tenant/job/content/version/destination/correlation IDs and redacted sensitive payloads. CloudWatch tracked queue oldest age, DLQ depth, Lambda errors/throttles/duration, workflow failures, Bedrock tokens/latency, DynamoDB throttles, publish ambiguity, approval-to-publish latency, verified conversion counts, cost/job and margin. We avoided per-tenant custom metric dimensions at large scale; tenant cost detail lived in the ledger and exports. Trace sampling connected job boundaries without retaining full prompts or messages.

Initial test SLOs were p95 acknowledgement <2 seconds at declared test load, 99% of due publications attempted within five minutes when providers were available, and daily briefs ready by 08:00 in tenant timezone. Provider failures and exhausted entitlements were reported separately, not removed silently from the denominator. Alarms triggered an operator runbook: identify correlation ID, pause affected admission/adapter, inspect DLQ or unknown receipt, repair, replay narrowly, and verify business state and cost.

9. SAA-C03 coverage and proof plan

The official exam has four domains: secure architectures 30%, resilient 26%, high-performing 24%, cost-optimized 20%. The guide is not exhaustive and a case study cannot guarantee a pass. We designed coverage of all 14 task statements, with extension labs for skills the economical Creator baseline does not exercise. Evidence status for every row is currently pending. A completed row must link the architecture decision, reproducible lab, sanitized output, failure/repair evidence, and a short explanation of why an alternative would be better under different requirements. Exam guide

TaskPortfolio proof requirementCoverage boundary
1.1 Secure access to AWS resourcesRoot MFA, role trust/resource policies, cross-tenant denials; federation and cross-account assume-role labMulti-account/SCP/Identity Center exercise isolated from credit-bearing account
1.2 Secure workloads and applicationsSigned ingress, secret handling, app authorization; draw and test segmented VPC, route tables, SG/NACL behaviorVPN/Direct Connect, WAF/Shield and endpoint choices compared in extension
1.3 Data security controlsTLS/key-policy denials, rotation, access/lifecycle rules, backup restore and classificationCompliance requirements explained rather than falsely claimed certified
2.1 Scalable, loosely coupled architectureHeadless event chain, independent worker scaling, outbox, containers/serverless comparisonLong media worker extension demonstrates container boundary
2.2 Highly available/fault-tolerant architectureDLQ and failure drills, regional recovery, RPO/RTO measurements, immutable rollbackCompare backup/restore, pilot light, warm standby and active-active
3.1 Scalable storageSigned object transfer and benchmark; object/file/block decisionEBS/EFS/FSx and hybrid storage extension
3.2 Elastic computeMemory/concurrency benchmark, backlog drain curve, compute-family selectionEC2 Auto Scaling/ALB and ECS/Batch lab for sustained rendering
3.3 Database performanceKey/index access patterns, throttling/hot-key test, conditional writesRelational engine/read-replica/proxy and cache comparison lab
3.4 Network performanceTLS/DNS/edge and transfer path diagram, bandwidth/latency testALB/NLB, hybrid, peering/Transit Gateway, PrivateLink and Global Accelerator decisions
3.5 Ingestion/transformationSigned events to S3 analytics, deduplication, JSON/CSV-to-Parquet and visualizationKinesis, Glue/Athena, secure lake and hybrid-transfer extensions
4.1 Storage costRetention/size/request model, storage-class break-even and restore/retrieval costDataSync/Storage Gateway/Transfer and backup choices compared
4.2 Compute costFull-price usage ledger, right-sizing, burst/steady break-even and cost guardrailSpot/on-demand/Savings Plans/Reserved Instances; no premature commitment
4.3 Database costProvisioned versus on-demand estimate including indexes/PITR and relational alternativeSchema/data migration and retention comparison
4.4 Network costNAT versus endpoints/no-VPC, CDN hit/egress model and cross-AZ/Region routesHybrid bandwidth and throttling plan; costed topology alternatives

Task definitions and detailed skill checklists: Domain 1, Domain 2, Domain 3, Domain 4.

Closing the skills outside the baseline

We defined five bounded extensions, each using synthetic data, a preflight estimate and same-day teardown. Each extension records every relevant detailed skill from the linked official task checklist as demonstrated, explained by comparison, or still missing. Only hands-on artifacts count as implementation proof; a comparison proves design reasoning.

  1. Identity and network lab: federation, STS, resource/key policies, account boundaries/SCPs, public/private topology, routing, SG/NACL, TLS and an endpoint/NAT comparison. Produce a hybrid VPN/Direct Connect bandwidth/security decision without buying a dedicated connection.
  2. Compute and availability lab: a small multi-AZ ALB + EC2 Auto Scaling or ECS workload; horizontal/vertical scaling, container/image rollback, failure recovery and purchase-option estimates. Compare L7 ALB, L4 NLB and appliance routing. Demonstrate improving a legacy service through load balancing, managed persistence and recovery without requiring application changes. Avoid persistent idle resources after the exercise.
  3. Database and migration lab: a temporary relational dataset with engine choice, read replica, connection pooling/proxy and cache benchmark; compare with DynamoDB hot-key/access patterns. Demonstrate a bounded schema/data move, backup restore, retention and replication behavior.
  4. Storage and hybrid-transfer lab: object versus file/block performance and cost; lifecycle minimum-duration/retrieval tradeoffs; compare EBS volume types, EFS/FSx, DataSync, Transfer Family and Storage Gateway. Execute the economical transfer/restore subset and document unexecuted enterprise alternatives.
  5. Analytics and regional-recovery lab: secure a small S3 lake, transform to Parquet, query/visualize bounded data, compare batch versus Kinesis streaming, and restore into a second Region. Record actual RPO/RTO, DNS/failover and quota readiness rather than assuming replication equals recovery.

Before labeling the portfolio complete, reconcile this registry against every detailed skill bullet in the then-current guide, explain all gaps, and finish the missing exercise or mark it unproven. The baseline deliberately excludes unnecessary enterprise services; excluding them saves money but does not remove the study requirement.

Detailed skill acceptance register

The following compact register makes the proof workload explicit. Each semicolon-separated item needs its own evidence link or an honest gap entry. All items are pending. The official task pages above remain authoritative if the exam changes; this register covers their current skills rather than claiming to enumerate every possible exam question.

TaskIndividual evidence checks
1.1Root/user safeguards; role/group/policy model; STS role boundaries; organizational policy exercise; resource-policy test; directory-to-role federation decision
1.2Secured VPC design; subnet isolation test; application security integration; protected hybrid connection design
1.3Requirement-to-control trace; stored-data encryption; transport encryption; key authorization; backup/replica recovery; access/retention policy; key rotation; certificate renewal
2.1Event/service/tier decomposition; scaling choice per component; decoupling proof; container threshold; serverless threshold; technology-fit comparison; purpose-built service selection
2.2Reproducible infrastructure; zone/Region availability design; business reliability metrics; single-failure removal; durable restore; DR selection; legacy reliability improvement; managed-service fit
3.1Performance-fit storage configuration; growth-fit storage configuration
3.2Independent compute scaling; metric-triggered elasticity; compute-feature fit; memory/instance sizing
3.3Read-replica configuration; database topology; engine choice; database category choice; cache integration
3.4Global/hybrid/tiered topology; growth-ready connectivity; resource placement; load-balancer fit
3.5Protected lake; stream design; transfer design; visualization; processing engine choice; ingestion configuration; format conversion
4.1Upload strategy; storage sizing; economical inbound transfer; growth policy; lifecycle rules; backup/archive choice; migration service; tier choice; retention choice; service cost comparison
4.2Load-balancer economics; scaling economics; compute-service economics; production/nonproduction availability; instance family; instance size
4.3Backup/retention economics; engine economics; service economics; data-shape economics; schema/data migration
4.4NAT layout; connection economics; transfer-aware routing; edge-cache value; network optimization; throttling economics; bandwidth sizing

For every comparison, record both the selected answer and the conditions that would change it. This distinguishes architectural judgment from memorizing service names. Knowledge topics such as shared responsibility, global infrastructure, pricing commitments, caching, network protocols, and recovery terminology accompany the practical checks; they also require independent study and scenario practice.

10. Validation and fail-forward evidence

We defined delivery slices: (1) identity/IaC/observability, (2) research and immutable drafts, (3) approval state machine, (4) dry-run publishing and receipt reconciliation, (5) live adapters and community drafts, (6) attribution and daily brief, (7) subscriptions and admission ledger, and (8) load/restore/extension labs. Each slice had an exam mapping, cost envelope, acceptance test and rollback artifact. Synthetic contracts came first; a bounded live trial proved provider behavior before enabling paid customers.

Required acceptance cases included cross-tenant denial, simultaneous approve/edit/revoke, duplicate schedule/event/webhook, retry after ambiguous publication, invalid provider signature, partial multi-platform success, 429/backoff, expired OAuth/subscription, exhausted allowance, token/byte overspend races, DLQ redrive, malformed AI output, prompt injection, cold starts, hot partition, restore and 10× burst. Performance and margin tests recorded dataset, concurrency, duration, Region, model/rate version, actual cost and assertion results. Success targets above were not substituted for measurements.

Fail-forward event record

No incidents are claimed yet. During the build, every meaningful design failure becomes an append-only case-study event. A failure is valuable evidence only when diagnosis and corrective verification are traceable.

FieldRequired content
Event identityID, date, build slice, environment, commit, affected SAA tasks
Intended behaviorRequirement and expected result; workload and budget
Observed failureExact symptom, user impact, scope, redacted logs/trace and reproducible input
DetectionAlarm/test/operator signal, first occurrence and detection time
DiagnosisHypotheses tested; evidence supporting root cause; distinction from correlation
ContainmentPause/reject affected work, preserve state, bound spend and external side effects
DecisionOptions compared, selected correction, cost/security/performance tradeoff
FixCode/IaC/config change and rollback procedure, linked commit
VerificationOriginal failing case now passes, regression checks, measured latency/cost/recovery
LearningWhy the assumption failed, SAA skill demonstrated, prevention and remaining risk
StatusOpen, contained, corrected, verified; never mark verified without artifacts

For example, a provider accepting a post before the client timed out is a planned fault-injection scenario, not an incident that has happened. Its expected lesson is that blind retries can duplicate external side effects; the proposed correction is unknown-delivery reconciliation. Actual outcome and evidence must be recorded after the experiment.

11. Completion criteria and remaining decisions

The design was complete when requirements, decisions, component/step mappings, pricing assumptions and proof criteria were reviewable. The implementation becomes complete only after the evidence registry demonstrates the promised behavior, full-price unit economics meet both margin gates, a restore is measured, and subscription/provider contracts are verified. A portfolio claim of broad SAA readiness additionally requires the extension checklist and practice-exam gap review; no pass guarantee follows from an architecture document.

Before building, confirm the AWS account creation date/credit eligibility, chosen Bedrock model and rate card, supported platform API capabilities/scopes, billing provider fees, conservative paid-subscriber floor, retention/classification policy and commercial recovery/SLO commitments. Keep prices and envelopes configurable. Design issues encountered while building are recorded as fail-forward events, resolved with evidence, and incorporated into the next version of this case study.