Gift Guide SG
Answer a short set of questions, set a budget in SGD, and get three concrete, locally-buyable suggestions — filtered for cultural and dietary landmines. No accounts, no server, nothing leaves the device.
- Status
- Both platforms implemented
- Platforms
- iOS · Android
- Role
- Spec, design and build
- Source
- PaisehSG/giftr (private)
Buying a gift in Singapore has failure modes that a generic recommender doesn’t know about. Clocks, sharp objects, certain flowers, anything containing pork or alcohol for the wrong recipient — get one wrong and the gift is worse than no gift. Gift Guide SG encodes those as rules.
You answer eight short questions about the person, set a budget, and get exactly three ranked suggestions — plus a drawer showing what was ruled out and why, which turns out to be the part people trust. A returning user reaches results in three taps.
Everything stays on the device. No accounts, no server, no sync.
How it’s built
A native monorepo. Both iOS (SwiftUI) and Android (Kotlin + Jetpack Compose) are fully implemented, and both generate gift ideas on-device — Apple Foundation Models on Apple Intelligence hardware, Gemini Nano via the ML Kit GenAI Prompt API on supported Android flagships.
The interesting constraint is keeping two native apps from drifting apart. One
shared/ directory is the single source of truth: questions.json and
design-tokens.json for the flow and the look, and a written prompt contract
covering the system instructions, the per-answer checklist of rule lines, the
output shape, and the app-side post-filter backstop. The native GiftPrompt and
GiftPostFilter units on each platform mirror that document line for line, and
drift between them is treated as a bug rather than a fact of life.
The question flow is loaded at runtime from Firestore, so the questionnaire and budget tiers stay identical across both platforms without shipping a client release.
No fallback, on purpose
Generation only runs where the on-device model is genuinely available. Anywhere else the app shows a plain notice instead of silently degrading to a canned catalogue — recipients, gift history and settings all keep working regardless.
On iOS, guided generation enforces the output shape structurally. Android has no equivalent, so the prompt appends a JSON schema sketch and a few-shot example, and the post-filter catches what slips through.
The screens
All eight from the spec: a launch note about on-device storage, a home screen of saved recipients with a Peranakan-tile header, the eight-step question flow with visible progress and back-without-losing-answers, an ang-bao reveal animation while generating (respecting reduced-motion), the three results with their ruled-out drawer, a gift detail with rationale and lead time and a sold-out backup, a recipient profile with gift-history timeline, and settings with JSON export and clear-all.
Scope
Version one is deliberately narrow: no accounts, no checkout, no live price or stock, no sharing, Singapore only.