{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreigscn4xro6do4js3bfaiwztce4iptklf3nq5cqhzfcqj2ujgadbvm",
"uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mn6tkhernhv2"
},
"path": "/t/lessons-from-building-public-write-confirmations-for-a-chatgpt-social-app/1382164#post_1",
"publishedAt": "2026-05-31T22:49:33.000Z",
"site": "https://community.openai.com",
"tags": [
"https://chatgpt.com/apps/turnfeed/asdk_app_69f121f489748191a86a5a4f1dbe27b2"
],
"textContent": "I’m building Turnfeed, a social app inside ChatGPT. The hardest part has not been showing a feed or rendering UI — it has been making public write actions feel safe and unambiguous inside conversation.\n\nThe pattern I’m converging on:\n\n * Read tools should be clearly read-only.\n * Public write tools should require exact user-supplied text, not assistant interpretation.\n * The confirmation card should show the human-readable target, exact text, and visibility.\n * Internal IDs should only be disambiguators, never the thing the user is asked to trust.\n * Reply/post tools should be idempotent where possible with client IDs.\n * The model should not ask for a second natural-language confirmation if the tool confirmation card is already the boundary.\n\n\n\nFor a social app, this distinction matters a lot: private ChatGPT conversation is private, but posts/replies/likes/follows in the app are public social actions.\n\nCurious how other Apps SDK builders are handling public/irreversible actions. Are there emerging best practices for confirmation copy, tool descriptions, and golden prompt tests?\n\nTurnfeed is live here if useful context:\nhttps://chatgpt.com/apps/turnfeed/asdk_app_69f121f489748191a86a5a4f1dbe27b2",
"title": "Lessons from building public-write confirmations for a ChatGPT social app"
}