diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000..71f852f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,112 @@
+name: Bug report
+description: Report a reproducible FlowExtract problem
+title: "[Bug] "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for helping test FlowExtract.
+
+ Do not include API keys, credentials, access tokens, full provider responses, or sensitive document content in this public issue. If a reproduction document is useful, use a public, synthetic, or sanitized example.
+
+ - type: textarea
+ id: happened
+ attributes:
+ label: What happened?
+ description: Describe the failure and the point in the workflow where it occurred.
+ placeholder: "Example: Extraction completed, but the Amount field was returned as a string and validation failed."
+ validations:
+ required: true
+
+ - type: textarea
+ id: expected
+ attributes:
+ label: What did you expect?
+ validations:
+ required: true
+
+ - type: dropdown
+ id: stage
+ attributes:
+ label: Stage
+ options:
+ - Document parsing
+ - OCR
+ - Schema
+ - Provider request
+ - Structured output
+ - Validation
+ - Review
+ - Persistence or restore
+ - Export
+ - Other
+ validations:
+ required: true
+
+ - type: dropdown
+ id: document-type
+ attributes:
+ label: Document type
+ options:
+ - Digital PDF
+ - Scanned PDF
+ - PNG
+ - JPG or JPEG
+ - Other
+ validations:
+ required: true
+
+ - type: input
+ id: pages
+ attributes:
+ label: Approximate page count
+ placeholder: "Example: 3"
+
+ - type: input
+ id: language
+ attributes:
+ label: Document language
+ placeholder: "Example: English"
+
+ - type: dropdown
+ id: provider
+ attributes:
+ label: AI provider
+ options:
+ - Qwen China (Beijing)
+ - Qwen Singapore
+ - Qwen Hong Kong
+ - OpenAI
+ - Anthropic
+ - Gemini
+ - Not applicable
+ validations:
+ required: true
+
+ - type: input
+ id: model
+ attributes:
+ label: Model
+ description: Model ID only. Do not include credentials.
+
+ - type: input
+ id: browser
+ attributes:
+ label: Browser and operating system
+ placeholder: "Example: Chrome 140 on Windows 11"
+
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Reproduction steps
+ description: Include only the minimum steps needed to reproduce the issue. Do not paste sensitive document text or full provider responses.
+ validations:
+ required: true
+
+ - type: checkboxes
+ id: safety
+ attributes:
+ label: Public issue safety
+ options:
+ - label: I confirmed that this issue does not contain API keys, credentials, access tokens, full provider responses, or sensitive document content.
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..3ba13e0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: false
diff --git a/.github/ISSUE_TEMPLATE/real_world_feedback.yml b/.github/ISSUE_TEMPLATE/real_world_feedback.yml
new file mode 100644
index 0000000..cd5616a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/real_world_feedback.yml
@@ -0,0 +1,127 @@
+name: Real-world test feedback
+description: Share results from using FlowExtract on an actual document workflow
+title: "[Feedback] "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Real-world failures and corrections are especially useful for FlowExtract V0.1 testing.
+
+ Do not include API keys, credentials, access tokens, full provider responses, or sensitive document content. Use public, synthetic, or sanitized examples if a reproduction is needed.
+
+ - type: input
+ id: document
+ attributes:
+ label: What kind of document did you process?
+ placeholder: "Example: supplier invoice, purchase order, bank statement"
+ validations:
+ required: true
+
+ - type: dropdown
+ id: document-type
+ attributes:
+ label: Input format
+ options:
+ - Digital PDF
+ - Scanned PDF
+ - PNG
+ - JPG or JPEG
+ - Mixed
+ - Other
+ validations:
+ required: true
+
+ - type: input
+ id: fields
+ attributes:
+ label: What fields were you trying to extract?
+ placeholder: "Example: vendor, invoice number, date, total"
+ validations:
+ required: true
+
+ - type: input
+ id: field-count
+ attributes:
+ label: Approximate number of fields
+ placeholder: "Example: 8"
+
+ - type: dropdown
+ id: provider
+ attributes:
+ label: AI provider
+ options:
+ - Qwen China (Beijing)
+ - Qwen Singapore
+ - Qwen Hong Kong
+ - OpenAI
+ - Anthropic
+ - Gemini
+ validations:
+ required: true
+
+ - type: input
+ id: corrected
+ attributes:
+ label: How many fields required manual correction?
+ placeholder: "Example: 2 of 8"
+
+ - type: input
+ id: review-time
+ attributes:
+ label: Approximately how long did review take?
+ placeholder: "Example: 90 seconds"
+
+ - type: textarea
+ id: worked
+ attributes:
+ label: What worked well?
+ description: Focus on concrete workflow behavior.
+
+ - type: textarea
+ id: friction
+ attributes:
+ label: What was the biggest problem or slowest step?
+ validations:
+ required: true
+
+ - type: textarea
+ id: previous
+ attributes:
+ label: What was your previous workflow?
+ placeholder: "Example: manually copy values into Excel"
+
+ - type: dropdown
+ id: time-saved
+ attributes:
+ label: Did FlowExtract save time?
+ options:
+ - Yes
+ - About the same
+ - No
+ - Not sure yet
+ validations:
+ required: true
+
+ - type: dropdown
+ id: reuse
+ attributes:
+ label: Would you use FlowExtract again for this workflow?
+ options:
+ - Yes
+ - Maybe
+ - No
+ validations:
+ required: true
+
+ - type: textarea
+ id: improvement
+ attributes:
+ label: What single improvement would make FlowExtract significantly more useful?
+
+ - type: checkboxes
+ id: safety
+ attributes:
+ label: Public issue safety
+ options:
+ - label: I confirmed that this issue does not contain API keys, credentials, access tokens, full provider responses, or sensitive document content.
+ required: true
diff --git a/README.md b/README.md
index a3c2961..81393e5 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,14 @@ Local first AI assisted document extraction, validation and human review.
[简体中文](README.zh-CN.md)
+## Try V0.1.0 and send feedback
+
+Live app: https://flowextract.edwardxie421.workers.dev
+
+Testing FlowExtract with a real document? Please report bugs and real-world test feedback through [GitHub Issues](https://github.com/edwardsage419/FlowExtract/issues/new/choose).
+
+Do not include API keys, credentials, full provider responses, or sensitive document content in public issues. If a reproduction file is useful, use a public, synthetic, or sanitized example.
+
FlowExtract is an open source browser application for turning PDFs and document images into structured, reviewable data. The first release is deliberately small: upload a document, define a schema, extract with your own AI provider key, validate results locally, correct questionable fields, and export JSON, CSV, or XLSX.
## V0.1 workflow
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 4b837b6..d8a0a5b 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -4,6 +4,14 @@ Local First 的 AI 辅助文档数据提取、验证与人工复核工具。
[English](README.md)
+## 试用 V0.1.0 与反馈
+
+在线版本:https://flowextract.edwardxie421.workers.dev
+
+如果你正在使用真实文档测试 FlowExtract,请通过 [GitHub Issues](https://github.com/edwardsage419/FlowExtract/issues/new/choose) 提交 Bug 或真实使用反馈。
+
+请勿在公开 Issue 中提交 API Key、凭据、完整 Provider Response 或敏感文档正文。如需提供复现文件,请使用公开、虚构或已脱敏的示例。
+
FlowExtract 是一个开源浏览器应用,用于把 PDF 和文档图片转换成可以人工复核的结构化数据。V0.1 刻意控制范围:上传文档,定义 Schema,使用自己的 AI Provider API Key 完成初始提取,在本地执行确定性验证,只修正可疑字段,然后导出 JSON、CSV 或 XLSX。
## V0.1 工作流
diff --git a/src/App.test.tsx b/src/App.test.tsx
index 3bd2911..8e06d4b 100644
--- a/src/App.test.tsx
+++ b/src/App.test.tsx
@@ -24,6 +24,7 @@ describe('FlowExtract workspace', () => {
expect(screen.getByText(/4\. Review/i)).toBeInTheDocument();
expect(screen.getByText('v0.1.0')).toBeInTheDocument();
expect(screen.getByRole('option', { name: /Qwen \(Alibaba Cloud\) — Verified in Beijing/i })).toBeInTheDocument();
+ expect(screen.getByRole('link', { name: 'Feedback' })).toHaveAttribute('href', 'https://github.com/edwardsage419/FlowExtract/issues/new/choose');
});
diff --git a/src/App.tsx b/src/App.tsx
index 71325d0..34c0422 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -169,7 +169,10 @@ export default function App() {
-
+
);
}
diff --git a/src/styles.css b/src/styles.css
index c7d69f0..1a6308e 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -73,7 +73,7 @@ input:focus, select:focus { outline: 2px solid #c7d2fe; border-color: #818cf8; }
.export-row .step { margin-right: auto; }
.error-banner { margin: 12px 14px 0; padding: 10px 12px; border: 1px solid #fecaca; border-radius: 9px; background: #fef2f2; color: #991b1b; font-size: 13px; }
.muted { color: #667085; }.status-line { font-size: 12px; }
-footer { padding: 10px 28px 22px; color: #667085; font-size: 11px; }
+footer { padding: 10px 28px 22px; color: #667085; font-size: 11px; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }\nfooter a { color: #475467; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 1100px) { .workspace-grid { grid-template-columns: 1fr 1fr; }.right-column { grid-column: 1 / -1; }.topbar { align-items: start; flex-direction: column; } }
@media (max-width: 760px) { .workspace-grid { grid-template-columns: 1fr; padding: 8px; }.right-column { grid-column: auto; }.project-strip { padding: 10px 14px; flex-direction: column; align-items: stretch; }.project-strip input { width: 100%; }.schema-card-grid { grid-template-columns: 1fr 1fr; }.topbar { padding: 16px; }.top-actions { width: 100%; }.provider-grid { grid-template-columns: 1fr; } }
diff --git a/tests/e2e/workflow.spec.ts b/tests/e2e/workflow.spec.ts
index c233e79..800e80b 100644
--- a/tests/e2e/workflow.spec.ts
+++ b/tests/e2e/workflow.spec.ts
@@ -7,4 +7,5 @@ test('shows the complete FlowExtract workflow shell', async ({ page }) => {
await expect(page.getByText('2. Schema')).toBeVisible();
await expect(page.getByText('3. AI Extraction')).toBeVisible();
await expect(page.getByText('4. Review')).toBeVisible();
+ await expect(page.getByRole('link', { name: 'Feedback' })).toHaveAttribute('href', 'https://github.com/edwardsage419/FlowExtract/issues/new/choose');
});