# Dream QA / 梦境问答台 Handoff Last updated: 2026-06-14 ## Current Product Direction The project is pivoting from a customs/pact-centered ritual into a step-by-step dream Q&A Gradio app. The repo and Space still use the `Dream Customs` name for continuity, but future product work should use the `Dream QA / 梦境问答台` direction: > 输入梦境,回答或跳过几个温和追问,最后得到一个和梦境细节相关的今日小 Tips。 The public hackathon experience is English-first. Keep the visible `English / 中文` toggle so Chinese remains a first-class path, but do not make judges land on a Chinese-only first screen. ## Deprecated Context Earlier implementation and smoke docs mention: - dream visitor - customs negotiation - permit ID - contraband - sealed pact - bedtime release Those are historical context, not the new target. Do not build new work around permit/contraband/sealed-pact unless the user explicitly reverses this pivot. ## Current Source Documents Read in this order: 1. `AGENTS.md` 2. `docs/spec.md` 3. `docs/prd.md` 4. `PRODUCT.md` 5. `DESIGN.md` 6. `docs/superpowers/plans/2026-06-08-dream-qa-refactor.md` 7. `docs/superpowers/plans/2026-06-08-dream-qa-refactor-doc-plan.md` Prototype references: - `docs/prototypes/2026-06-08-dream-qa-mobile-flow.png` - `docs/prototypes/2026-06-08-dream-qa-desktop-workbench.png` - `docs/prototypes/2026-06-08-dream-qa-tips-card.png` ## Product Decision Build a guided dream interpretation app, not a diagnosis app, not a fortune-telling app, and not a one-shot pact generator. Final positioning: > Dream QA helps you record a dream, answer or skip one gentle question, and leave with one grounded Morning Ticket whose first payload is a Today Tip. 2026-06-09 tone contract: - English mode is not just English UI chrome; generated anchors, questions, and Today Tips should read as natural English. - If the model receives Chinese anchors while the selected language is English, translate or paraphrase them unless a short exact quote is intentionally preserved. - Tiny actions should feel like five-minute first steps. Avoid urgent command phrasing such as "address it immediately." - The final card should show the Today Tip before interpretation; interpretation is supporting reflection and should use the user's answer when it names a real task. ## Model Decision Use: - `openbmb/MiniCPM-V-4.6` for image/sketch/note understanding. - `openbmb/MiniCPM5-1B` for text reasoning, follow-up questions, interpretation, and final Today Tip. Do not broaden to arbitrary small models unless MiniCPM paths fail. Voice input is allowed, but current MiniCPM pair does not directly transcribe raw audio. The submitted route uses `XiaomiMiMo/MiMo-V2.5-ASR` only for transcription; dream understanding and final generation stay inside MiniCPM. ## Contest Constraints - Build Small Hackathon. - Build window: 2026-06-05 to 2026-06-15. - App should ship as Gradio on Hugging Face Space. - Total model parameters must be <= 32B. - Strongest track: An Adventure in Thousand Token Wood. - Secondary narrative: Backyard AI due to real sleep/dream use case. ## MVP User Flow 1. User submits dream using text, image, voice, or a combination. 2. Audio is transcribed by a small adapter. 3. Image is converted into visual clues by MiniCPM-V-4.6. 4. App builds a `DreamQuestionIntake`. 5. MiniCPM5-1B creates a short dream summary and identifies the user's likely main question. 6. MiniCPM5-1B asks 1-3 gentle follow-up questions. 7. User answers, skips, adds detail, or asks for another angle. 8. MiniCPM5-1B drafts a grounded interpretation. 9. MiniCPM5-1B generates a final `TodayTipCard`. 10. Gradio renders a mobile-readable result card and plain text. Language behavior: - Default: English. - Toggle: `中文`. - The same intake/state/card pipeline serves both languages. - MiniCPM prompts should instruct the selected output language instead of duplicating the product flow. ## Required Output Fields - `dream_summary` - `main_question` - `dream_anchors` - `followup_questions` - `user_answers` - `interpretation` - `today_tip` - `tiny_action` - `caring_note` - `safety_note` The final `today_tip` must reference at least one concrete dream anchor. Generic wellness advice is a regression. ## Safety Boundary The product must never present itself as therapy, medical advice, or diagnosis. It should use playful, non-certain language. Severe distress should trigger a professional-help suggestion. ## Recommended Implementation Scope The existing package should be refactored rather than replaced from scratch: ```text app.py requirements.txt README.md dream_customs/ __init__.py schema.py prompts.py safety.py render.py pipeline.py models.py ui/ tests/ ``` Likely code files to change: - `dream_customs/schema.py` - `dream_customs/prompts.py` - `dream_customs/pipeline.py` - `dream_customs/render.py` - `dream_customs/ui/actions.py` - `dream_customs/ui/app.py` - `dream_customs/ui/copy.py` - `dream_customs/ui/styles.py` - tests covering schema, prompts, pipeline, render, UI actions, and safety ## Implementation Priorities 1. Preserve text-only demo fallback. 2. Replace pact schema with Q&A state and Today Tip output. 3. Preserve image and voice as optional evidence in the same intake. 4. Make follow-up questions a first-class user action. 5. Render one clear final tip, not a multi-field customs certificate. 6. Keep mobile readability. 7. Run tests and local Gradio smoke before any Space sync. 8. Run `python scripts/evaluate_today_tip_quality.py` before deployment. ## Repository Status This directory is a dedicated Dream Customs/Dream QA repository: - Local path: `/Users/junhaocheng/working-dir/ai-competitions/build-small-hackthon` - GitHub remote: `https://github.com/adjcjh777/dream-customs-build-small.git` - Hugging Face Space remote: `https://huggingface.co/spaces/build-small-hackathon/dream-customs` Continue to confirm `git remote -v` before pushing. ## Modal Backend Route The intended production-quality route remains: ```text Hugging Face Space Gradio UI -> HostedMiniCPMTextClient / HostedMiniCPMVisionClient -> private Modal endpoints -> MiniCPM5-1B text generation and MiniCPM-V-4.6 visual clue extraction ``` The Space defaults to `modal` for text, vision, and voice transcription backends, so a configured Space enters the private Modal routes first. The `model` auto route remains available for compatibility, and the `demo` backend remains available in developer settings as the deterministic fallback path. The public Space can run on ZeroGPU after `dream_customs.zerogpu` registers the lightweight `@spaces.GPU` startup probe. Modal credits still pay for the hidden GPU backend; the ZeroGPU probe is only there to make the HF hardware setting valid for this Gradio frontend. ## Resolved Decisions - Public UI name: `Dream QA`, with `Dream Customs` retained as project/Space continuity. - Language: English-first for the international hackathon, with Chinese available through an in-app toggle. - Recommendation quality: deterministic Today Tip eval is required before deployment. ## Final Submission Notes - Text and image are the recommended public demo path. - Voice is implemented through MiMo ASR and should be presented as optional until live transcription success is consistently proven. - Leave old `refs/pr/*` discussion refs in place unless cleanup is explicitly requested; they are useful audit history for the final hackathon push.