Inspiration
AI photo critiques are easy to generate, but they usually stop after telling a photographer what to change. They do not answer the question that matters after the next shoot: did the new photo actually improve?
PicSpeak already provided single-photo critique before OpenAI Build Week. During Build Week, we used Codex and GPT-5.6 to extend it into a measurable practice loop: critique, retake, compare, plan, and shoot again.
What it does
PicSpeak Retake Coach starts from a completed photo critique. The photographer selects the original image, keeps its shooting target, and uploads a new retake.
GPT-5.6 Terra evaluates the original and retake together under the same rubric across five dimensions:
- Composition
- Lighting
- Color
- Emotional impact
- Technical execution
For every dimension, PicSpeak shows before-and-after scores, visible evidence, the remaining gap, and a concrete next-shoot action with an observable success check.
The application calculates every score delta and overall average in Python instead of relying on model-generated arithmetic.
If the two images are unrelated or comparison confidence is low, PicSpeak keeps the explanation visible but does not claim improvement or add the result to the progress curve. Reliable attempts are saved as part of the same retake chain.
The paired diagnosis can also become a GPT Image 2 visual-reference brief, giving the photographer a concrete target for the next shoot. Generated references are planning aids and never affect progress scores.
How we built it
The frontend uses Next.js, React, TypeScript, and Tailwind CSS. The backend uses FastAPI, Pydantic, SQLAlchemy, PostgreSQL, asynchronous review tasks, and S3-compatible object storage.
A Retake Coach request sends two ordered image inputs—Image A as the original and Image B as the retake—to GPT-5.6 Terra through the Responses API contract.
Strict Structured Outputs require all five dimensions, visible evidence, comparison confidence, next actions, success checks, and a visual-reference prompt. Pydantic validates the response before it reaches the product.
GPT-5.6 provides visual reasoning and coaching language. Application code owns arithmetic, authorization, persistence, confidence handling, and progress-chain selection.
Codex was our primary Build Week development environment. It helped us:
- Map PicSpeak's existing upload, review, task, history, and image-generation flows
- Design the paired comparison schema and trust boundaries
- Implement the GPT-5.6 backend path and responsive interface
- Preserve backward compatibility with the existing single-photo workflow
- Add contract and regression tests
- Perform desktop and mobile browser QA
- Document the pre-event baseline and Build Week contribution
Challenges we ran into
The hardest challenge was making improvement credible.
Using the original photo's stored score could mix results from different models. We solved this by rescoring both images together in the same GPT-5.6 evaluation.
Allowing the model to calculate score changes could introduce arithmetic inconsistencies. We instead calculate all deltas and averages deterministically on the server.
We also needed to handle unrelated images honestly. Comparison confidence is therefore part of the product experience rather than hidden metadata: unreliable pairs cannot become progress claims.
Finally, Retake Coach had to fit into an existing production application without breaking uploads, quotas, authentication, asynchronous tasks, review history, or image generation.
Accomplishments that we're proud of
- Built a real paired GPT-5.6 vision workflow rather than changing a model label
- Added evidence-backed comparison across five photography dimensions
- Made every recommendation testable with a success check
- Prevented unrelated or low-confidence images from producing false progress
- Created persistent progress chains for the same photographic exercise
- Connected the paired diagnosis to a GPT Image 2 visual target
- Preserved the existing PicSpeak critique workflow
- Completed automated tests, type checking, linting, production builds, and responsive browser QA
What we learned
We learned that a strong AI product should separate model judgment from application truth.
GPT-5.6 is excellent at identifying visible differences and expressing useful coaching. Deterministic code is better for arithmetic, authorization, persistence, and deciding whether a result is reliable enough to affect progress.
We also learned that confidence and comparability should be visible product behaviors, not implementation details.
Codex was especially valuable for working across a mature repository. It could follow a feature from frontend interaction through API contracts, task processing, persistence, tests, and responsive UI while keeping existing behavior intact.
What's next for PicSpeak Retake Coach
Next, we plan to add:
- A direct two-slot original-and-retake upload flow
- Branching practice sessions for different shooting goals
- Shareable progress reports
- Longer-term coaching recommendations across multiple shoots
- Camera and EXIF-aware suggestions
- More visual-reference controls for planning the next attempt
Built With
- 2
- api
- clerk
- cloudflare
- codex
- css
- fastapi
- gpt
- gpt-5.6
- image
- next.js
- openai
- postgresql
- pydantic
- python
- r2
- react
- responses
- s3
- sqlalchemy
- tailwind
- terra
- typescript
- vercel
- websockets
Log in or sign up for Devpost to join the conversation.