· XingAI Invest AI
Email Is the Decision, PDF Is the Explanation
UI는 한국어입니다. 글 본문은 아직 영어 또는 중국어만 있습니다.
The mistake: sending more data
The first version of our daily-picks email worked technically. It read the worker cache, selected top signals, and sent an email. But the product shape was wrong: it looked like a raw table.
Tables ask the user to analyze. A morning brief should help the user decide.
So we split the product into three surfaces:
Email = Decision summary
PDF report = Explanation
Dashboard = Exploration
Email: under 30 seconds
The email now answers one question:
What should I do today?
It contains:
- Today's playbook.
- Consensus score.
- Suggested exposure and cash allocation.
- One top opportunity.
- What we see.
- Today's actions.
- A dashboard CTA.
- A PDF attachment card.
It intentionally does not show raw RSI/volume tables. Those belong in the report.
PDF: premium explanation
The attached PDF is the slower surface. It explains why the email says what it says.
The report includes:
- Cover.
- Executive summary.
- Market story.
- Allocation model.
- Top opportunities.
- Signal breakdown.
- Full watchlist.
- Risk dashboard.
- Action plan.
- Disclaimer.
- Methodology.
- Appendix.
The PDF is generated by the worker from the same cached decision payload. It does not ask the API to recompute anything.
Dashboard: exploration
The dashboard remains the place for curiosity: symbol scope, macro radar, engine cards, signal feeds, and deeper inspection. The email should never try to become a dashboard in the inbox.
Product principle
One screen should carry one decision.
That means the email should be short enough to understand in a line at a coffee shop. The PDF should be rich enough to justify the recommendation later. The dashboard should be open-ended enough to explore.
Engineering principle
The design shift did not change the decision boundary:
- Worker owns decision semantics.
- FastAPI reads cache.
- React renders.
- Email and PDF are delivery formats over the same cache.
That is the important part. Product polish should not create a hidden second decision engine.
Takeaway
Do not deliver more data. Deliver clarity.
Further reading: ADR-017 (docs/adr/017-premium-daily-brief-email-pdf.md).