Doop
Doop is an open-source multiplayer design canvas and design MCP for Claude Code, Codex, and any AI agent. Design side by side with agents — free in beta.
PicSpeak critiques photos across composition, lighting, color, impact, and technique, then creates GPT Image 2 visual references for the next shoot.
DesignPython · TypeScriptGitHub @AsaZhou923OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
PicSpeak is an AI-powered photography critique web app that lets users upload photos and receive instant professional feedback on composition, lighting, color, and technical execution.
Taken from the repository README
Loading the full README.
Read the full README ↗AI photography critique that turns feedback into the next shot. PicSpeak scores composition, lighting, color, impact, and technique, explains the visible evidence, converts the weakest point into a practical retake target, and can generate a GPT Image 2 visual reference. Guest mode works without registration.
Live product · Public critique example · Retake Coach · Prompt library · Gallery
Most critique tools stop after describing one image. PicSpeak keeps the advice attached to the next attempt:
Upload a photo
-> five-dimension critique with visible evidence
-> prioritized next-shoot action and success check
-> upload the retake
-> compare original and retake on one rubric
-> save progress and generate the next visual target
| Public critique | GPT-6 Retake Coach |
|---|---|
| GPT Image 2 prompt library | Public critique gallery |
|---|---|
| Area | What it provides |
|---|---|
| Critique | Guest mode, direct object-storage upload, Flash and Pro depth, five scored dimensions, EXIF-aware evidence, sharing, export, and re-analysis |
| Practice loop | Next-shoot checklists, source-review continuity, same-photo reruns, new-photo retakes, favorites, and filtered history |
| Retake Coach | Paired original/retake evaluation, comparability and confidence handling, deterministic deltas, remaining gaps, success checks, and progress chains |
| AI Create | Template and prompt controls, quality and aspect-ratio choices, GPT Image 2 credits, review-linked references, download, reuse, and generation history |
| Public learning | 50 crawlable prompt examples, critique gallery, trilingual Lens Notes, update history, and server-rendered SEO/GEO content |
| Multilingual UX | English, Simplified Chinese, and Japanese across navigation, errors, public guidance, prompt-language labels, generation, and checkout |
| Platform | Clerk sign-in, guest/authenticated quotas, Lemon Squeezy billing, WebSocket task updates, PostgreSQL persistence, and S3-compatible storage |
| Surface | URL |
|---|---|
| Product home | picspeak.art/en |
| Public critique walkthrough | /reviews/rev_8424d4fbde054759 |
| Retake Coach | /retake |
| GPT Image 2 prompt examples | /generate/prompts |
| Critique gallery | /gallery |
| Lens Notes | /en/blog |
| Product updates | /en/updates |
Next.js 15 / React 18
-> direct image upload to S3-compatible storage
-> FastAPI review and generation APIs
-> in-process or standalone async worker
-> OpenAI Responses critique / GPT Image 2
-> PostgreSQL review, task, billing, and progress records
| Layer | Technology |
|---|---|
| Frontend | Next.js 15 · React 18 · TypeScript · Tailwind CSS |
| Backend | Python 3.11 · FastAPI · SQLAlchemy 2.x · Alembic |
| Database | PostgreSQL |
| Storage | S3-compatible object storage, including Cloudflare R2 or MinIO |
| Authentication | Clerk plus guest sessions and legacy Google OAuth compatibility |
| Billing | Lemon Squeezy subscriptions, activation codes, and generation credit packs |
Storage reads use short-lived S3 GET URLs for AI requests and generated images. Photo results use the signed backend image proxy; public Gallery thumbnails use a stable backend route that checks the current publication and approval state. OBJECT_BASE_URL is retained for configuration compatibility and is no longer required for these image reads.
For an existing public R2 bucket, deploy and verify these read paths before disabling its public development URL and any other public bucket domains. Turning off the public URL before the backend update can interrupt image display and AI requests. Storage cleanup is a separate maintenance operation; changing the Free history window does not delete objects.
PicSpeak existed before the submission window. The Build Week contribution extended the existing single-photo product into an auditable retake loop rather than only replacing a model name. The pre-event baseline is b74ddfb; the core paired-comparison implementation landed in 2a626aa.
The original Build Week implementation used GPT-5.6 Terra. The current runtime follows the selected mode: GPT-6 Sol for Flash and the stronger GPT-6.1 Sol for Pro. The paired scoring and server-owned delta contract remain unchanged, and saved results retain their actual model provenance.
| Before Build Week | Added during Build Week |
|---|---|
| One-photo critique | One GPT-5.6 Terra request evaluates the original and retake together |
| Five standalone scores | Before/after scores, visible evidence, and server-calculated deltas |
| Advice inferred from one image | Prioritized next-shoot actions with observable success checks |
| Recent-vs-previous history averages | Progress curves limited to the same retake chain |
| Review-linked image prompts | The paired diagnosis becomes a GPT Image 2 visual target |
Three implementation rules keep the result auditable:
git clone https://github.com/AsaZhou923/picspeak.git
cd picspeak
cp backend/.env.example backend/.env
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r backend/requirements.txt
The workspace uses the model-specific OpenAI settings below. The retained Qwen-compatible backend path is configured independently:
OPENAI_API_KEY=
OPENAI_API_BASE_URL=https://api.openai.com/v1
OPENAI_SCORE_MODEL=gpt-6-sol
OPENAI_SCORE_REASONING_EFFORT=low
OPENAI_REVIEW_MODEL=gpt-6-sol
OPENAI_REVIEW_REASONING_EFFORT=low
OPENAI_REVIEW_TIMEOUT_SECONDS=180
OPENAI_PRO_MODEL=gpt-6.1-sol
OPENAI_PRO_REASONING_EFFORT=high
# Optional complete endpoint override; otherwise /responses is appended.
RETAKE_ANALYSIS_API_URL=
RETAKE_ANALYSIS_MODEL=gpt-6.1-sol
RETAKE_ANALYSIS_REASONING_EFFORT=high
RETAKE_ANALYSIS_TIMEOUT_SECONDS=180
Run migrations and start the API:
cd backend
python scripts/ensure_runtime_schema.py
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
cp frontend/.env.local.example frontend/.env.local
cd frontend
npm install
npm run dev
Open http://localhost:3000.
# Backend, from the repository root
./.venv/bin/python -m pytest backend/tests
# Frontend
cd frontend
npm run typecheck
npm run lint
npm run test
npm run build
The frontend and backend can be deployed independently. The backend includes a container definition and can run an embedded worker or python -m app.worker_main as a separate process. Build and serve the frontend with npm run build && npm run start.
Issues and pull requests are welcome. Keep changes scoped, include the relevant tests, and preserve the privacy boundary between public demos and private user reviews.