pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Turn raw customer feedback into decisions: what to fix first, and why.
Live app: https://insightflow-blond.vercel.app
Built for Build Battle 2026 (Frontend Arena, AI × Web Development).
The dataset, and why cleaning comes first
The sample file has 7,000 reviews but only 320 distinct ones. A few sentences repeat hundreds of times, so treating rows as customers gives the wrong ranking.檢視完整 README ↗Turn raw customer feedback into decisions: what to fix first, and why.
Live app: https://insightflow-blond.vercel.app Built for Build Battle 2026 (Frontend Arena, AI × Web Development).
| Requirement | Where it lives |
|---|---|
| Feedback management: submit, import CSV, search, filter, sample data | New session popup (upload CSV, paste, add one), /feedback, "Use sample data" on /import. Each import can be its own session with its own dashboard, tracker and reports |
| AI-powered analysis: sentiment, topics, grouping, Adaption | Issue groups and sentiment for all 320 distinct reviews; a key-free matcher for new feedback; Adaption cleaning on /import |
| Analytics dashboard: metrics, sentiment, issues, trends, filters | /overview: category, sentiment and period filters drive every widget |
| Recommendations: priorities with a reason | /priorities: ranked issues, the score arithmetic, quotes, and actions |
| Reports and tracking: save/track, export | /tracker (drag cards between columns), /reports (print to PDF, CSV export, copy summary to share in chat or email, saved reports you can reopen and delete) |
The sample file has 7,000 reviews but only 320 distinct ones. A few sentences repeat hundreds of times, so treating rows as customers gives the wrong ranking.
score = 100 × (0.40 × volume + 0.35 × negative share + 0.25 × severity)
It is a ranking heuristic, not a measurement, and the app shows the arithmetic for every issue.
Being plain about this matters more than sounding impressive.
scripts/label.mjs: rules written after reading all 320 distinct reviews. I cross-checked them with a live language model (DeepSeek, scripts/validate-llm.mjs): sentiment agreed on 318 of 320 reviews (99%). The model used finer issue names (74 vs my 21), so the curated groups are kept for stability. The model output is committed in data/llm-labels.json.src/lib/match.ts), with no key. Leave-one-out accuracy on the sample: 88% on issue, 96% on sentiment. When nothing is close it says so, and those reviews are grouped with each other by similarity into new issues (src/lib/group.ts). Those groups are named after their most-repeated review and get a severity from keywords (money and fraud words rank highest), so any dataset gets a ranking. The names are rough, not written by a model.src/lib/analyze.ts has a server-side model labeling function (AI SDK + DeepSeek, schema-validated) that is not wired into the UI.[email], [phone], [card] before anything is stored.First visit. The root URL opens a short welcome: real reviews on a board that you tap to sort into their issue, and the path from 7,000 reviews to one decision. After you continue once, the root URL goes straight to the dashboard. The welcome can be reopened from the avatar menu.
npm install
npm run dev # http://localhost:3000
npm run build && npm start
No environment variables are required. To re-run the offline model cross-check, put DEEPSEEK_API_KEY in .env.local and run node --env-file=.env.local scripts/validate-llm.mjs.
A browser test walks the full flow (filters, tracking, drag and drop, search, CSV export, saved reports, the import popup, personal-data flagging, duplicate protection):
npm start # in one terminal
node scripts/smoke.mjs # or: BASE=https://insightflow-blond.vercel.app node scripts/smoke.mjs
A second test covers the phone layout (bottom bar, bottom-sheet popup, card lists, swipeable rows, no sideways scroll at 320 to 414px wide):
node scripts/phone.mjs # or: BASE=https://insightflow-blond.vercel.app node scripts/phone.mjs
Next.js 16 (App Router, TypeScript), Tailwind CSS 4, Recharts, PapaParse, zod, Playwright (tests). Deployed on Vercel.
src/app/ pages: overview, feedback, priorities, tracker, reports, import
src/components/ shell, import popup, filters, shared UI
src/lib/ data layer, store, matcher, scan, Adaption results
scripts/ dedupe → label → build-analysis pipeline, Adaption summary, tests
data/ sample.csv, analyzed.json, Adaption summary + trimmed output
docs/ ADAPTION.md, DEMO.md, screens/, planning/ (early notes)
Data pipeline: node scripts/dedupe.mjs && node scripts/label.mjs && node scripts/build-analysis.mjs regenerates data/analyzed.json from data/sample.csv.