# FeedbackFlow

FeedbackFlow is a pay-first indie inbox. A support thread wears the host app. People write from the app. The founder replies from one inbox. Paste one prompt into Cursor, Claude, or Codex to install it on Next.js, Expo, or Swift.

Who it is for: founders shipping a product who want reports without a tracked-user meter or a seat tax.

How it works:
- Web: global bottom-right Feedback FAB (.ff-fab). Required on websites.
- Expo / iOS / Swift: shake opens the sheet. First install and first launch after an update show a one-time tip. The only persistent door is a Settings row. Never a floating chip on every screen.
- Pay first: $19/month, $99/year, or $349 lifetime (a numbered 20-seat run, 10 left). No trial. Unlimited reporters.
- The sheet is a thread. The first message still sends pain (faces, stored as 1–5), type, optional email, screenshot, and console lines. Later messages can include one image. The reporter credential is an unguessable token in localStorage / Expo storage / UserDefaults. No reporter account.
- Founder replies show the next time the sheet opens. If they left an email, the reply is emailed. Push to their phone is not connected.
- Mild pain (🙂 or 😐) can open one App Store or Play Store write-review URL from project settings. That tap is not recorded as a submitted review.
- New reporter messages email the owner and fire the saved Slack or Discord webhook, including conversationId. Telegram posts only after a bot token and chat id are connected. Draft a reply only works after an API key is saved, and it never sends by itself.
- Welcome title and welcome text come from project settings (remote config). Optional metadata is a JSON object such as { "userId": "user_123", "plan": "pro" }.
- Widget credit is optional. A small www.tryfeedflow.com link appears only when the project setting `showAttribution` is on (default off). Not a banner. Not required.

Coming soon (not shipped): an MCP so Cursor or Claude can read reports (`list_reports`, `get_report`) and draft a fix. New features and wishes need a human approve in the inbox before any agent may implement. No autonomous deploys.

Canonical host: https://www.tryfeedflow.com
Landing: https://www.tryfeedflow.com/
Docs: https://www.tryfeedflow.com/docs
Install spec: https://www.tryfeedflow.com/llms.txt
Skill: https://www.tryfeedflow.com/skill.txt
MCP manifesto: https://www.tryfeedflow.com/mcp
AI agents: fetch https://www.tryfeedflow.com/llms.txt or send `Accept: text/markdown` on https://www.tryfeedflow.com/ and https://www.tryfeedflow.com/docs.

## For AI agents

AI agents can crawl this product.

- Fetch `https://www.tryfeedflow.com/llms.txt` for the install spec (also served as `text/plain`).
- Fetch `https://www.tryfeedflow.com/skill.txt` or `https://www.tryfeedflow.com/skill.md` for the skill card.
- Send `Accept: text/markdown` on `https://www.tryfeedflow.com/` and `https://www.tryfeedflow.com/docs` for a clean Markdown brief. Do not scrape the HTML.
- `robots.txt` allows GPTBot, ClaudeBot, Google-Extended, and other AI crawlers. It advertises these files.

Attribution (www.tryfeedflow.com inside a customer widget) is optional. It is controlled by the project setting `showAttribution` (default off). Honor that flag. Do not hard-require a credit.

## Install rules

- Web: bottom-right Feedback FAB (.ff-fab). Prefer `https://www.tryfeedflow.com/embed.js`.
- Expo / Swift: no global FAB. Shake opens the sheet. Settings row is the only persistent door.
- Wear the host theme. Never brand a host app as FeedbackFlow except on FeedbackFlow’s own marketing preview.
- The thread posts to `https://www.tryfeedflow.com/api/v1/conversations` with the project’s `ff_pk_` key and the device token. One-shot `POST https://www.tryfeedflow.com/api/v1/feedback` still accepts a single report.
- If you render the in-tree sheet, show the small www.tryfeedflow.com credit only when `showAttribution` is true (prop or GET `https://www.tryfeedflow.com/api/v1/project/{publicKey}`). Default off.

## Human docs

HTML docs live at https://www.tryfeedflow.com/docs. This Markdown response is the same product brief plus crawl and install rules — not an HTML dump.
