Skip to content

Conversation

@Mattlee10
Copy link

Description

P360 is a biometric-powered decision support tool that helps high-performers know when they're in the best state to make important decisions.

Features

  • Check Readiness Command: Instantly view your decision readiness score (0-100)
  • Oura Integration: Secure OAuth connection to your Oura Ring
  • Smart Algorithm: Combines Sleep Score, Readiness Score, and HRV Balance
  • Clear Recommendations: Get actionable advice based on your biometric state
  • Privacy-First: No data stored on external servers

How It Works

Your decision readiness is calculated from:

  • Oura Readiness Score (primary)
  • Sleep Score (fallback)
  • HRV Balance (modifier)

Score Guide

Score Meaning
🟢 70+ Excellent - Great for important decisions
🔵 50-69 Good - Proceed with everyday decisions
🟡 30-49 Caution - Consider waiting
🔴 <30 Poor - Focus on recovery

Screencast

P360 Screenshot

Checklist

A biometric-powered decision support tool that helps high-performers know when they're in the best state to make important decisions.

Features:
- Check Readiness Command: Instantly view your decision readiness score (0-100)
- Oura Integration: Secure OAuth connection to your Oura Ring
- Smart Algorithm: Combines Sleep Score, Readiness Score, and HRV Balance
- Clear Recommendations: Get actionable advice based on your biometric state
- Privacy-First: No data stored on external servers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@raycastbot raycastbot added the new extension Label for PRs with new extensions label Jan 30, 2026
@raycastbot
Copy link
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 30, 2026

Greptile Overview

Greptile Summary

This PR adds a new P360 Decision Readiness extension that integrates with Oura Ring to help users determine optimal times for important decisions based on biometric data. The implementation is clean and follows Raycast extension best practices with proper OAuth integration, error handling, and user-friendly UI.

Key Changes:

  • New extension with Oura Ring OAuth integration using Raycast's PKCE proxy
  • Decision readiness algorithm combining Sleep Score, Readiness Score, and HRV Balance
  • Clear score thresholds (70+ excellent, 50-69 good, 30-49 caution, <30 poor)
  • Proper error handling and user feedback
  • Complete documentation with README and CHANGELOG

Issues Found:

  • Two unnecessary files included: LAUNCH_CONTENT.md and STORE_SUBMISSION_GUIDE.md contain Korean-language marketing/internal documentation that should be removed before merging

Positive Highlights:

  • Clean TypeScript implementation with proper type definitions
  • Secure OAuth flow implementation
  • Good error handling for API failures
  • CHANGELOG follows required format with {PR_MERGE_DATE} placeholder
  • Metadata folder includes required screenshots
  • Privacy-conscious design (no external data storage)

Confidence Score: 4/5

  • Safe to merge after removing the two unnecessary documentation files
  • The code quality is excellent with proper OAuth integration, error handling, and follows Raycast conventions. The only issues are two non-code files (marketing content and submission guide in Korean) that should be removed. These files don't affect functionality but should not be in the extensions repository.
  • LAUNCH_CONTENT.md and STORE_SUBMISSION_GUIDE.md should be removed as they contain internal documentation not needed for the extension

Important Files Changed

Filename Overview
extensions/p360/src/check-readiness.tsx Main command component with proper OAuth integration and error handling
extensions/p360/src/lib/oura.ts Oura API integration with proper error handling, includes mock mode flag
extensions/p360/LAUNCH_CONTENT.md Marketing content in Korean - should be removed, not needed for extension
extensions/p360/STORE_SUBMISSION_GUIDE.md Submission guide in Korean - should be removed, not needed for extension

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +1 to +268
# P360 Raycast Extension - 런칭 콘텐츠

Store 승인 후 사용할 런칭 채널별 콘텐츠입니다.

---

## 1. Product Hunt

### Tagline (60자 이내)
```
Know when to make important decisions with your biometric data
```

### Description
```
P360 brings decision support to your Raycast launcher.

The Problem:
You track your HRV, sleep, and readiness with your Oura Ring. But what do you actually DO with that data in the moment?

- Making impulse purchases when tired
- Sending emails you regret when stressed
- Scheduling important meetings at wrong times

The Solution:
One keystroke (⌘ + Space → "p360") tells you if now is a good time for important decisions.

How it works:
🟢 70-100: Great time for negotiations, important emails
🔵 50-69: Good for everyday decisions
🟡 30-49: Consider waiting for big decisions
🔴 0-29: Avoid major commitments, focus on recovery

Built for biohackers and high-performers who want to optimize their decision-making, not just track their sleep.

Privacy-first: Your data stays between you and Oura. Nothing stored on our servers.
```

### First Comment (Maker)
```
Hey PH! 👋

I built this because I kept making bad decisions when tired - impulsive purchases, emails I'd regret, committing to things I shouldn't have.

I already had all the data in my Oura Ring, but I never checked it at the right moment.

P360 puts that data exactly where I need it - one keystroke away in Raycast.

The algorithm is simple (intentionally):
- Primary: Oura Readiness Score
- Fallback: Sleep Score
- Modifier: HRV Balance

Would love your feedback! What other integrations would be useful?
```

---

## 2. Reddit - r/raycast

### Title
```
[Extension] P360 - Check your decision readiness from Oura Ring biometrics
```

### Post
```
Hey r/raycast!

Just published my first Raycast extension - P360 Decision Readiness.

**What it does:**
- Connects to your Oura Ring via OAuth
- Shows your decision readiness score (0-100)
- Gives actionable recommendations

**How to use:**
⌘ + Space → "p360" or "check readiness"

**Why I built it:**
I track everything with my Oura Ring but never checked the data at the right moment. Now I can see if I'm in a good state before sending important emails or making big decisions.

**Score guide:**
- 🟢 70+: Go for it
- 🔵 50-69: Good for routine stuff
- 🟡 30-49: Maybe wait
- 🔴 <30: Recovery mode

Available in the Raycast Store. Would love feedback!
```

---

## 3. Reddit - r/Biohackers

### Title
```
Made a Raycast extension that tells me when to make important decisions based on Oura data
```

### Post
```
Fellow biohackers,

I've been tracking with Oura for 2+ years but realized I was just collecting data without acting on it in real-time.

Built a simple tool that:
1. Pulls my Sleep Score, Readiness, and HRV from Oura
2. Calculates a "decision readiness" score
3. Shows it in Raycast with one keystroke

Now before any important email, purchase, or commitment, I just hit ⌘+Space → "p360" and know if I should proceed or wait.

**The algorithm (v1, intentionally simple):**
- Base: Readiness Score (or Sleep Score if unavailable)
- Modifier: HRV Balance (±5 points)

**Example use cases:**
- About to send a confrontational email? Check first.
- Big purchase decision? See if you're in an optimal state.
- Planning important meetings? Schedule when you're typically high.

Anyone else doing something similar? Would love to hear how you're using real-time biometric feedback.
```

---

## 4. Hacker News - Show HN

### Title
```
Show HN: P360 – Raycast extension for decision support using Oura biometrics
```

### Post
```
I built a Raycast extension that shows your "decision readiness" based on Oura Ring data.

Problem: I have years of sleep/HRV/readiness data but never check it when making actual decisions.

Solution: One keystroke (⌘+Space → "p360") shows if now is a good time for important decisions.

How it works:
- Connects to Oura API via OAuth
- Combines Readiness Score, Sleep Score, HRV Balance
- Returns a 0-100 score with recommendations

Tech stack:
- TypeScript + React (Raycast API)
- Oura API v2
- OAuth PKCE flow

The algorithm is intentionally simple:
- score = readinessScore ?? sleepScore
- hrvModifier = (hrvBalance - 50) * 0.1
- finalScore = clamp(0, 100, score + hrvModifier)

I'm not claiming this is scientifically rigorous - it's a useful heuristic that makes me pause before decisions when tired.

Raycast Store link: [STORE_URL]
Source (MIT): [GITHUB_URL if public]

Feedback welcome!
```

---

## 5. Twitter/X - Launch Thread

### Tweet 1 (Main)
```
Just launched P360 for Raycast 🚀

One keystroke tells you if now is a good time for important decisions.

Connects to your Oura Ring and shows your decision readiness score.

🟢 = Go for it
🔴 = Maybe wait

Free in Raycast Store: [LINK]

🧵 Here's why I built it...
```

### Tweet 2
```
I've tracked my sleep & HRV for 2+ years.

But I kept making bad decisions when tired:
- Impulse purchases
- Emails I'd regret
- Commitments I shouldn't make

The data was there. I just never checked it at the right moment.
```

### Tweet 3
```
Now it takes 1 second:

⌘ + Space → "p360" → See my readiness

If I'm below 50, I wait.
If I'm above 70, I proceed confidently.

Simple, but it's changed how I approach decisions.
```

### Tweet 4
```
The algorithm is intentionally simple:

Base = Oura Readiness Score
Modifier = HRV Balance (±5 pts)

Not trying to be scientifically perfect.
Just a useful heuristic that makes me pause.
```

### Tweet 5
```
If you use Raycast + Oura, give it a try:

[RAYCAST STORE LINK]

Privacy-first: Your data stays between you and Oura.

Would love feedback on what to add next.
Calendar integration? Email warnings? Let me know 👇
```

---

## 6. Launch Timing Strategy

### Best Days
- **Product Hunt**: Tuesday-Thursday (avoid Monday/Friday)
- **Hacker News**: Tuesday-Wednesday morning (US time)
- **Reddit**: Evening US time

### Recommended Sequence
1. **Day 0**: Raycast Store 승인 확인
2. **Day 1 (Tuesday)**:
- 오전 9시 PST: Product Hunt 런칭
- Twitter 런칭 스레드
3. **Day 1-2**:
- Reddit r/raycast 포스트
- Reddit r/Biohackers 포스트
4. **Day 2-3**:
- Hacker News Show HN

### 주의사항
- 모든 채널에 동시 포스팅하지 말 것 (스팸으로 보일 수 있음)
- 각 채널에서 engagement에 빠르게 응답할 것
- Product Hunt는 24시간 내 upvote 집중이 중요

---

## 7. Assets Checklist

런칭 전 준비할 것들:

- [ ] 스크린샷 3장 (Raycast Store용)
- [ ] Extension 아이콘 (512x512)
- [ ] Product Hunt 썸네일 (1270x760)
- [ ] Demo GIF (Twitter용, 15초 이내)
- [ ] GitHub repo public (선택)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file contains marketing/launch content in Korean and is not needed for the extension submission. Remove before merging.

Files like this should be kept in a separate repository or documentation folder, not in the Raycast extensions repository.

Comment on lines +1 to +133
# Raycast Store 제출 가이드

## 1. 스크린샷 준비 (필수)

Raycast Store에서 스크린샷은 매우 중요합니다. 아래 화면들을 캡처하세요:

### 필요한 스크린샷

```
metadata/p360-1.png - 메인 화면 (Decision Readiness 결과)
metadata/p360-2.png - Oura 연결 화면 (OAuth 프롬프트)
metadata/p360-3.png - 에러 처리 화면 (선택)
```

### 스크린샷 촬영 방법

1. **개발 모드 실행**
```bash
cd p360-raycast
npm run dev
```

2. **Raycast에서 테스트**
- `⌘ + Space` → "Check Readiness" 입력
- Oura 계정 연결 (처음 실행 시)

3. **스크린샷 캡처**
- `⌘ + Shift + 5` → Raycast 창만 캡처
- 또는 Raycast 내장 스크린샷: Extension 실행 중 `⌘ + S`

4. **스크린샷 저장 위치**
```bash
mkdir -p metadata
# 스크린샷을 metadata/ 폴더에 저장
```

### 좋은 스크린샷 팁

- **녹색 상태 (70+)** 를 보여주면 positive한 인상
- **테이블 데이터가 잘 보이도록** 스크롤 위치 조정
- **다크 모드** 권장 (대부분 Raycast 유저가 다크모드 사용)

---

## 2. 아이콘 확인

현재 아이콘이 placeholder입니다. 제대로 된 아이콘이 필요합니다:

```
assets/extension-icon.png (512x512 권장)
assets/oura-icon.png (현재 있음)
```

### 아이콘 제작 옵션

1. **직접 제작**: Figma, Sketch
2. **AI 생성**: Midjourney, DALL-E
3. **간단한 방법**: 이모지 기반 (🧠 또는 💚)

---

## 3. Store 제출 명령어

모든 준비가 완료되면:

```bash
cd p360-raycast

# 1. 린트 체크
npm run lint

# 2. 빌드 테스트
npm run build

# 3. Store 제출
npm run publish
# 또는
npx @raycast/api@latest publish
```

### 제출 시 필요한 정보

- **Raycast 계정**: https://raycast.com 에서 가입
- **Author 검증**: 처음 제출 시 이메일 인증 필요

---

## 4. 리뷰 프로세스

Raycast Store 리뷰는 보통 **2-5일** 소요됩니다.

### 리뷰 체크리스트

- [ ] README.md가 명확한가?
- [ ] 스크린샷이 있는가?
- [ ] OAuth 플로우가 작동하는가?
- [ ] 에러 핸들링이 되어 있는가?
- [ ] 개인정보 처리가 명시되어 있는가?

### 리젝션 사유 (피해야 할 것들)

- 스크린샷 없음
- 빈약한 설명
- 작동하지 않는 기능
- 보안 취약점

---

## 5. 제출 후 할 일

1. **승인 대기** (2-5일)
2. **승인 시 런칭 준비**
- Product Hunt 초안 작성
- Reddit 포스트 준비
- Twitter/X 런칭 트윗 준비

---

## Quick Commands

```bash
# 개발 모드
npm run dev

# 린트 수정
npm run fix-lint

# 빌드
npm run build

# Store 제출
npm run publish
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file contains submission guide content in Korean and is not needed for the extension submission. Remove before merging.

Internal documentation should not be included in the extensions repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants