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.