# Yuan Zhou — engineering articles > Senior AI Engineer and full-stack developer. M.S. Computer Science, Tsinghua University. Official website: https://yuanzhou.dev Author profile: https://yuanzhou.dev/about Resume: https://yuanzhou.dev/resume GolfJoy case study: https://yuanzhou.dev/work/golfjoy Illustrated article index: https://yuanzhou.dev/writing RSS feed: https://yuanzhou.dev/feed.xml Independent synthetic answer-boundary lab: https://yuanzhou.dev/lab/grounded-answer ## Articles - [Building a Grounded AI Product Assistant](https://yuanzhou.dev/writing/grounded-ai-product-assistant): How Yuan Zhou built GolfJoy's source-grounded product assistant with structured retrieval, deterministic answers, human handoff, and revision-specific evaluations. Text alternative: https://yuanzhou.dev/text/articles/grounded-ai-product-assistant.txt - [Shipping CMS Content with Signed Snapshots](https://yuanzhou.dev/writing/signed-cms-content-releases): Yuan Zhou explains GolfJoy's China CMS content authority, authenticated draft previews, signed snapshots, database-free builds, and release validation. Text alternative: https://yuanzhou.dev/text/articles/signed-cms-content-releases.txt - [Moving an Eight-Bay Venue to Production](https://yuanzhou.dev/writing/eight-bay-venue-rollout): How Yuan Zhou coordinated GolfJoy's New Zealand venue rollout with local rules, device registration, booking reconciliation, write freezes, and recovery boundaries. Text alternative: https://yuanzhou.dev/text/articles/eight-bay-venue-rollout.txt - [Pricing a Booking Across Rate Boundaries](https://yuanzhou.dev/writing/booking-across-price-boundaries): How I fixed time-band booking prices in GolfJoy Play: interval splitting, shared server quotes, one final rounding step, and venue-specific rollout. Text alternative: https://yuanzhou.dev/text/articles/booking-across-price-boundaries.txt - [A Checkout Return Is Not Proof of Payment](https://yuanzhou.dev/writing/checkout-return-is-not-payment-proof): How I made GolfJoy Play payment returns read-only and transaction-specific, with Stripe account checks, fixed subscription invoices, refunds and honest pending states. Text alternative: https://yuanzhou.dev/text/articles/checkout-return-is-not-payment-proof.txt - [One Booking Platform, Different Venue Rules](https://yuanzhou.dev/writing/venue-specific-booking-capabilities): How I separated GolfJoy Play presentation capabilities from venue booking rules, preserving existing behavior while adding desktop grids and mobile bay cards. Text alternative: https://yuanzhou.dev/text/articles/venue-specific-booking-capabilities.txt - [A Sensor Protocol Core That Does Not Own the Socket](https://yuanzhou.dev/writing/native-sensor-protocol-boundary): How I structured GolfJoy’s shared C++17 sensor parser around bounded frames, injected time, validated placement events and honest real-device acceptance boundaries. Text alternative: https://yuanzhou.dev/text/articles/native-sensor-protocol-boundary.txt - [Turning CAD Into a Useful Web Configurator](https://yuanzhou.dev/writing/cad-to-web-3d-configurator): How I built GolfJoy’s 3D simulator configurator: correct product identity, simplified STEP assets, lazy-loaded GLB models, compatibility rules and honest checkout eligibility. Text alternative: https://yuanzhou.dev/text/articles/cad-to-web-3d-configurator.txt - [From an AI Conversation to a Confirmed Handoff](https://yuanzhou.dev/writing/ai-handoff-with-explicit-consent): How I separated GolfJoy AI chat history, consent-aware analytics and customer-confirmed lead handoff, with useful fallback paths and measurable delivery states. Text alternative: https://yuanzhou.dev/text/articles/ai-handoff-with-explicit-consent.txt - [Extending a Session After the Screen Has Locked](https://yuanzhou.dev/writing/booking-extension-state-machine): How I repaired GolfJoy Play session extensions across early starts, completed bookings, delayed cleanup and device leases, including the staff action that bypassed the first fix. Text alternative: https://yuanzhou.dev/text/articles/booking-extension-state-machine.txt - [Device Control When the Result Is Uncertain](https://yuanzhou.dev/writing/device-authorizations-and-uncertain-results): How I modeled GolfJoy Play manual screen authorization with persistent state, short leases, bounded authentication retries and explicit unknown outcomes. Text alternative: https://yuanzhou.dev/text/articles/device-authorizations-and-uncertain-results.txt - [Sharing a Product UI Across Web and Native Hosts](https://yuanzhou.dev/writing/shared-web-native-client-contracts): How I moved GolfJoy Play screens into one shared client with host ports, validated view models, consistent resource states and structural deployment boundaries. Text alternative: https://yuanzhou.dev/text/articles/shared-web-native-client-contracts.txt - [Keeping Checkout Correct When Responses Arrive Late](https://yuanzhou.dev/writing/checkout-stale-response-recovery): How I repaired GolfJoy storefront checkout around pending discount validation, request cancellation, duplicate clicks, stale responses and browser-back recovery. Text alternative: https://yuanzhou.dev/text/articles/checkout-stale-response-recovery.txt - [Making Regional Boundaries Part of the Build](https://yuanzhou.dev/writing/regional-build-boundaries): How I enforced GolfJoy regional deployment boundaries through route exclusion, snapshot adapters, traced dependencies, reachable assets and runtime verification. Text alternative: https://yuanzhou.dev/text/articles/regional-build-boundaries.txt - [Resuming Onboarding Without Overwriting the Record](https://yuanzhou.dev/writing/resuming-onboarding-with-versioned-answers): How I made GolfJoy venue onboarding resume from verified server records, preserve original submissions and save versioned amendments without silently activating changes. Text alternative: https://yuanzhou.dev/text/articles/resuming-onboarding-with-versioned-answers.txt - [Carrying a Recommendation Into the Next Screen](https://yuanzhou.dev/writing/recommendation-context-in-a-configurator): How I connected GolfJoy product recommendations to its Builder using allowlisted context, a deliberate state reset and compatibility checks that remain authoritative. Text alternative: https://yuanzhou.dev/text/articles/recommendation-context-in-a-configurator.txt - [Changing Language Without Restarting the Product](https://yuanzhou.dev/writing/language-switching-without-losing-state): How I localized GolfJoy Play while preserving sessions, consent identity and machine-readable dates, and kept English shot speech independent of localized display values. Text alternative: https://yuanzhou.dev/text/articles/language-switching-without-losing-state.txt The illustrated HTML pages are the canonical sources. Text alternatives reproduce the same published content for readers and retrieval tools.