{
  "$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"
}