Two recommended paths to a modern, maintainable foundation, plus a legacy-stack fallback. Option B gets the full operational foundation live by November 1, 2026 (with a 90-day speed-bonus target of October 1).
Engagement Proposal
| Module | Status | Strategic category |
|---|---|---|
| Content & CMS | ||
| CMS + content migration | $35,000 | Website Essential · AWS Retirement |
| Bookings & Registration | ||
| Online Registration (Cruise + Small Group) | Phase 2 | Website Essential · Easier on Modern Stack |
| Azamara Transfer † | $4,000 | Website Essential · AWS Retirement |
| JonnieO API integration † | Phase 2 | AWS Retirement |
| Silversea API integration | $6,000 | Website Essential |
| Analytics & Optimization | ||
| GA4 / GTM full implementation | $18,000 | Website Essential |
| AI-optimized blog architecture | $8,000 | Website Essential · AEO-ready |
| Trip Finder + Calendar upgrade | TBD | Pending CMS scoping, may be CMS-handled |
| Search reimplementation | TBD | Pending CMS scoping, may be CMS-handled |
| Modernization & Infrastructure | ||
| Document generation modernization † | Phase 2 | AWS Retirement |
| Custom Experiences | ||
| PYOT reimplementation | TBD | Pending scoping |
Pricing convention. Items with dollar amounts are currently scoped — these are the modules priced and ready to land inside the initial engagement. Phase 2 items are on the roadmap but get scoped (and quoted) once the new stack is live and priorities firm up. TBD items have open dependencies (e.g., the CMS work may absorb some of them) so quoting them now would be premature.
† AWS-retirement items. These modernize legacy systems rather than push new capability. Azamara is bundled into all three options at no additional cost — it's revenue-critical right now. Silversea is comped in Option B as part of the parallel-bundle scope. Custom Registration migration is included in the A and B rebuild scope.
Azamara is included in all three options. The other modules are split across the options. Option A is the rebuild + Azamara only. Option B adds CMS + GA4 in parallel (25% bundle discount) and comps Silversea on top of the comped clone. Option C works the legacy stack and sequences pieces as priorities allow. Items not in scope for the option you pick stay on this list, queued for later under the continued retainer.
Each option is a fixed-rate monthly retainer plus optional fixed-price modules. The differences are what you get inside the 120-day delivery window, and how much of the foundation is in place by November 1, 2026. A 90-day speed-bonus target sits inside the 120-day window for both A and B.
All retainer rates are negotiable after Day 90, once actual scope and capacity are known — independent of when final delivery lands.
Options A and B both put PerryGolf on a modern, maintainable stack. Option B adds the operational efficiency right away, based on the existing roadmap. Option C is a viable path forward on the current PHP / AWS site — it's just more expensive because more of the work routes through the legacy codebase. Remaining AWS-retirement modules (JonnieO, Doc Gen) are deliberately deferred to Year 1; they're not on the critical path for the move to best-in-class.
A clean rebuild of perrygolf.com with an updated Azamara integration. New stack, no other modules, fractional CTO relationship. Everything Option A delivers is also inside Option B — A is not mutually exclusive with B, it's the floor of it.
The no-regret place to start. The big win: key-man risk is removed and PerryGolf owns the codebase. Val can still make content changes, with light coaching on the new stack. Site speed increases. Roland off the critical path. Every piece of A is preserved inside B — choosing A doesn't close the door on modules later, it just defers them.
The cleanest exit from key-man risk. PerryGolf owns a modern, standard, transferable codebase, ready to be handed off to any developer, brought in-house, or continued with MarginWise. $25,000 clone value comped. Trade-off: no CMS, no analytics implementation, no Silversea, no new feature work. Deferred to a later module conversation.
Option B is Option A plus the parallel modules. Same retainer relationship, same comped clone, same comped Azamara, same maintainable foundation — with CMS, GA4 / GTM, and Silversea bundled into the same 120-day delivery window from July 1, 2026, instead of sequenced after the fact. Picked because it's what the existing roadmap already calls for, just done in one motion.
This is the full scope — the version we think is right. If pricing becomes the gating constraint, there's a trimmed-down "Lean" version of each module we can talk through. Default plan is everything above.
Both options put PerryGolf on the same maintainable foundation. B adds the parallel modules at a lower monthly rate. Here's what each path costs through the Day 120 acceptance window:
Delta from A to B. For ~$26k more than the baseline rebuild over four months, PerryGolf gets the four pieces that aren't in A — CMS, GA4 / GTM, Silversea, and the AI blog — delivered in the same 120-day window instead of strung out across follow-up engagements at full list price. $25k clone + $6k Silversea comped + $13.25k in bundle discount = $44.25k in total value off list in B. Same maintainable foundation either way; B just gets you the day-to-day operational lift right away.
The website becomes self-service. Sasha can A/B test in real time, swap banners, add images, push promotions, add or remove cruises, publish blog posts — things that today take days of dev tickets and back-and-forth calls. The Val-and-Roland bottleneck on content updates goes away. Content velocity goes up, dev queue load goes down, external vendor spend on small site changes goes away.
The full operational foundation in a single 120-day window. A modern site, self-managed content platform, complete analytics, and modernized cruise integrations, all live together. $25,000 clone comped + $14,750 bundle savings. One operating cadence instead of three sequential engagements.
Option B gets the website itself substantially off legacy AWS by Day 120. The Clone milestone is what's being sold here — it's the "off AWS" deliverable inside the current commercial terms. Phases 2 and 3 cover the remaining AWS-resident services that aren't required for the website to be complete; those sit outside this scope and would be picked up under the continued retainer.
If a PerryGolf decision or blocker holds us up, the target extends one-for-one, no penalty to MarginWise, no delivery credit owed. Every blocker flagged in writing within two business days. No end-of-engagement surprises.
If a rebuild isn't on the table this year, we can still move PerryGolf forward on the existing perrygolf.com. MarginWise carves out dedicated dev capacity, acts as fractional CTO, and works alongside Roland to evolve specific pieces of the current PHP stack over time. It's a real path, and we can deliver it — it's just the longer, more expensive way to get to the same destination.
The retainer is higher because the work is harder. Every change has to route through the legacy PHP stack, coordinate with Roland's availability, and absorb the friction of an older codebase. Same MarginWise team, more coordination overhead per unit of output. That's the trade.
Keep moving without committing to a rebuild this year. Useful if there's a reason to defer the modernization decision — budget cycles, other priorities, sequencing around other initiatives. The work is real, the team is the same, and MarginWise can absolutely do it. The honest framing: it isn't the best move — investments into the legacy stack carry less forward than investments into the new one, and the per-month cost is higher because of the coordination tax. But if Options A or B aren't workable right now, this keeps things moving without giving anything up that can't be picked up later.
Both A and B sit on top of the same rebuild. The clone is the milestone that represents the "off AWS" deliverable in the commercial terms — it's the central thing being paid for in this engagement. Target acceptance: November 1, 2026 (Day 120), with a 90-day speed-bonus target of October 1. Comped against an active retainer.
Everything in this Phase 1 bucket is website-related. The other AWS-resident services (Document Generation, JonnieO) live outside what's being sold here — they're sequenced through the continued retainer in Phase 2.
Net-new functionality. Online Registration (Cruise + Small Group), JonnieO API, Silversea API (parallel module in Option B).
Deferred modernizations. Document Generation (Docmosis) carries forward through the clone and modernizes in Phase 2. Azamara Transfer is bundled into A and B.
Hitting November 1, 2026 (Day 120) is a real commitment, not an aspiration. Applies to Options A and B. The fourth month is built in for testing, validation, and team readiness — we'd rather promise a window we know we can hit than over-promise a 90-day window. The speed bonus rewards finishing the core work inside 90 days.
We think we'll need the fourth month (days 91–120) for end-to-end testing, validation, CMS training, and dry-runs with Sasha. The first 90 days is the build itself — site rebuild, modules, integrations. The extra 30 days is the breathing room that turns "built" into "ready to operate." If we can compress the core into 90 days, the speed bonus reflects that.
Delayed stakeholder feedback or sign-offs; pending content decisions; third-party access not provisioned on request (PGGO, GTM, Pardot, Cloudflare, cruise partner credentials, hosting, DNS); mid-flight scope changes; vendor-side blockers. Each one flagged in writing within two business days, with target-date impact stated explicitly.
Once the 120-day delivery lands, the retainer continues at $15,000/month and this is what PerryGolf gets every month — strategic and operational ownership of the digital practice. Renegotiation window opens at Day 90, once actual scope and capacity are known — so the commercial reset doesn't have to wait for final acceptance. Phase 2 AWS-retirement work (Document Generation, JonnieO) is picked up under this continued retainer, not the initial 120-day scope.
Roadmap ownership, quarterly planning, technology decisions, vendor selection, architecture review. Year-two planning and strategic input on initiatives outside the website (Salesforce simplification, marketing automation).
Module delivery oversight. Cross-team coordination with Gordon's team, sales, and marketing. Stakeholder alignment with Brett, Alex, and Harrison. Steering call participation.
Quick-win customer journey improvements. A/B testing strategy and review. Continuous UX and conversion improvements.
Analytics support for Sasha. CMS workflow and training for Kayla. ChatGPT and AI workflow support for the sales team. Ad-hoc team availability.
Site monitoring and incident response. Transactional email oversight. Analytics monitoring (UTM, GA4 events, performance). Bug triage and prioritization.
Feature builds with defined scope. Full system migrations. Significant new third-party integrations. More than 40 hours of focused dev work in a single category in any single month.
The legal and financial layer, written so neither side is ever surprised. The full text lives in the SOW; this is the shape of it.
All rates negotiable after Day 90 — independent of final acceptance. Day 90 is the natural rate-and-capacity reset, regardless of whether the speed-bonus delivery target was hit. Original rate remains in effect until both parties agree to a change in writing.
$25,000 clone value is comped against an active 12-month engagement and recoverable on a stepped schedule.
Months 1–6: full $25,000 clawback on termination. Months 7–12: prorates as $25,000 × (12 − completed months) ÷ 6. After month 12: no clawback, clone fully earned.
Retainer: monthly, billed in advance, due on the 1st.
Modules: 100% on acceptance, Net 30, provided retainer is active throughout delivery.
Bonuses: billed on validation, 30–90 days post-launch, Net 30.
14 calendar days to accept or provide written rejection citing specific failures of agreed criteria. Modules deemed accepted if no written response is received within 14 days. If rejected, 30 days to remedy, re-delivery triggers a new 14-day window.
Uptime: 99.9% on MarginWise-operated sites.
Defect resolution: P1 within 24 hours, P2 within 5 business days, P3 within 30 days. Defect vs. feature definitions finalized in the project SOW.
Speed bonus (A): +$5,000 if core rebuild is accepted by Day 90 (Oct 1) instead of Day 120.
Speed bonus (B): +$10,000 if full parallel scope is accepted by Day 90 instead of Day 120.
Quality / SLA (A and B): +$2–4k per module if Web Vitals targets met at launch and defect SLA held for 60 days post-launch.
Cap: total bonuses per module capped at 25% of the module's net (post-bundle-discount) price. Speed bonuses are paid at the engagement level, not per module.
Completed: 100% of module value (at net bundle-bonus price). Partially completed: 75% if at least one deliverable has been completed per its acceptance criteria. Initiated: 25% if kickoff held and work commenced but no deliverable completed. Uncommenced: 0%. Termination invoice within 10 business days of effective date.
No end-of-engagement surprises. These are the things we're tracking from Day 1, with explicit owners and mitigations.
Option B's 120-day window needs GP available for technical decisions and architecture sign-offs. Estimate: 2–3 hours per week max during the delivery window, likely less, but planning for the high end.
Mitigation: agenda-driven weekly check-in, decisions queued in writing so GP can respond async when synchronous time isn't workable.
Pending PYOT changes and other in-flight design decisions don't need to be finalized before kickoff, but understanding the direction sooner rather than later minimizes duplicate work in the clone and CMS workstreams.
Mitigation: design-direction working session in the first two weeks of July. Capture intent, not finished comps.
Option B doesn't require Roland on the critical path. MarginWise can deliver the rebuild and modules without his ongoing involvement.
Mitigation: documented as an explicit expectation up front so there's no late surprise about who's doing what, and so Roland's bandwidth isn't a delivery dependency.
Our own risk: scope expansion or mid-flight rethinks on our side, wanting to do more than what's in the SOW. This is the failure mode where the 120-day target slips for reasons that aren't PerryGolf's fault.
Mitigation: written SOW with explicit acceptance criteria per workstream. Anything beyond is a written change-order, not a quiet expansion.
When new ideas show up mid-flight — and they will — we don't want to play the "that's out of scope" card. Here's the protocol instead:
Every in-flight scope ask flows through Brett, with Sasha copied. One channel, one decision-maker, no parallel asks. Keeps the team aligned and stops the same request from being half-actioned in three places.
Transparent and same-shape every time: (1) what's being asked for, (2) the risk/impact on the Day 120 commitment, (3) what MarginWise can do, and (4) our proposed way to fit it in while still hitting the date.
Pulling it all together, here's the full arc of the engagement, from ramp through year-two planning.
Same maintainable foundation as Option A, at a lower monthly retainer, with CMS, GA4 / GTM, Azamara, and Silversea all running in parallel with the clone during a single 120-day window. A 25% bundle discount on the three paid parallel modules, stepped clone protection on both sides, and the AEO-ready AI-optimized blog absorbed into scope. One operating cadence instead of three sequential engagements — modern site, self-managed content, full analytics, modernized cruise integrations, and AI-search discoverability, all live together.
The Day 120 target is contingent on PerryGolf responsiveness on stakeholder decisions, content, third-party access, and sign-offs. PerryGolf-controlled blockers extend the target one-for-one with no penalty to MarginWise and no delivery credit owed. Speed bonus of $10k available if the full scope is accepted by Day 90 (Oct 1).