Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Demo for the second Conduto meeting. It shows how scattered project data (Excel cost sheets, Microsoft Project schedules, PDF contracts and change orders, Dynamics GP ledger exports) becomes one consolidated, verified and traceable view of project control and profitability, independent of the ERP decision.
It runs fully without any AI key. A local engine handles everything:
A Claude key only adds free-form answers and reading scanned PDFs.
All data is synthetic. 18 fictional projects (Ecuador, Peru, Brazil) and 150 generated source files in the formats Conduto actually uses. Project, client and person names are invented, and the UI says so everywhere.
| Screen | What it shows |
|---|---|
| Portfolio | All projects in USD: forecast vs bid margin, cost and schedule efficiency, pending change orders, alerts, auto-generated insights, and a strip linking to data quality. Filters at the top (status, country, terrain, health, search) drive every card, chart and table. Every card opens the list behind it (projects, contracts, margins, each pending change order with its PDF). Export to Excel |
| Data & quality | 150 files → 11.7k records → 18 projects → 100% traceable. Every counter, file-type chip, quality check and coverage cell opens the files or records behind it. Four automatic checks (see below) and a list of the problems they found, filterable by country. Cost-without-progress anomalies, coverage per project, and the trained models with their measured accuracy |
| Project | KPIs (each tile opens its detail: the cost and schedule efficiency tiles open an activity-by-activity breakdown); the "where is the margin going" waterfall and its drivers; S-curve; schedule Gantt; cost by activity; detected anomalies; the accounting-vs-Excel check for that project; change orders; events; welding production. Every number opens its source: the Excel cell, PDF page, Microsoft Project task or GP ledger row |
| Ask | Questions in ES/EN/PT. Without a key, a local classifier understands 19 question types, then runs read-only SQL or document search. Answers cite PDF pages and exact Excel/GP cells, and show how they were built. With a key, Claude answers free-form questions |
| Bids | Open bids read from the sales system (Dynamics 365 Sales in the demo). Every open pipeline bid is checked against what comparable closed jobs really cost: the margin left at the historical cost, the price needed to keep the planned margin, and the comparable projects. Won bids link to the project they became; lost bids keep their reason |
| Connectors | The ten connectors: three working in the demo (SharePoint/OneDrive project folders, Dynamics GP, Dynamics 365 Sales) with "Sync now", "Test the connection" and run history; six available for the pilot or after the accounting-system decision (SAP S/4HANA, Dynamics 365 Finance, Project Online, Primavera P6, Outlook, Power BI); one planned (daily site reports). Each shows what it reads and how it maps to the common model |
| Load data | A guided four-step flow (choose a file → the system reads it → you check → saved and traceable), with a plain explanation of why the screen exists. It shows what was understood in one sentence, lists only what needs a person's check, and keeps the technical detail folded away (see below) |
| Benchmarks | Historical cost per inch of diameter per kilometre and per kilometre, by terrain (filterable; each terrain card opens its projects), an overrun heatmap by activity, and a bid estimator |
| Methodology | Architecture, design principles, roadmap, and the data we need for discovery |
The four automatic checks on the Data & quality screen:
What Load data does with each file type:
Language switch (ES/EN/PT) is in the top bar. ?lang=en in any URL opens it in English.
| Model | What it does | Measured on | Accuracy |
|---|---|---|---|
| Cost-line mapper (char n-grams + logistic regression) | Excel labels in ES/PT/EN, abbreviated or misspelled → 18 standard activities | 82 hand-written labels never used for training | ~96% |
| Question classifier (words + char n-grams, entities masked) | Question → one of 19 question types, in 3 languages | 65 hand-written questions | ~89% |
Both train in a few seconds at startup. The errors are shown on the Data & quality screen; that is why a person reviews every import. Where the local engine is unsure, it falls back to document search instead of guessing.
backend/ FastAPI + SQLAlchemy (SQLite) + openpyxl/reportlab/pypdf + scikit-learn + Anthropic SDK (optional)
app/seed/ synthetic data: real .xlsx / .pdf / .xml / GP exports + database with lineage
app/ml/ label mapper, question classifier, entity extraction, training
app/services/ KPIs (earned value), anomalies, ERP reconciliation, data quality, benchmarks, search,
ask (local engine + Claude agent), ingestion (Excel/PDF/Microsoft Project, groundedness, triage), export
tests/ 42 tests (API, ingestion round-trips, models, checks, SQL guard, mocked AI paths, connectors and bids)
frontend/ Next.js 16 (App Router) + Tailwind 4 + ECharts
The dataset and models are generated by build.py (about 25 s), or automatically on first start if missing, so no database service is needed.
# backend
cd backend
python -m venv .venv
.venv/Scripts/pip install -r requirements-dev.txt # Windows (use .venv/bin/pip on macOS/Linux)
.venv/Scripts/python build.py # optional: prebuild the dataset (otherwise done on first start)
.venv/Scripts/python -m uvicorn app.main:app --port 8000
.venv/Scripts/python -m pytest -q # tests
# frontend (new terminal)
cd frontend
cp .env.example .env.local
npm install
npm run dev # http://localhost:3000
Optional: set ANTHROPIC_API_KEY before starting the backend.
claude-opus-5, with server-side refusal fallback).The repository deploys as two Vercel projects from the same GitHub repository: one for the API (backend/) and
one for the website (frontend/). Both run on the free Hobby plan.
backend → Deploy.
build.py (declared in backend/pyproject.toml), which generates
the demo dataset and trains the models, so they ship with the deployment.ANTHROPIC_API_KEY. Without it, everything runs on the local engine.https://conduto-api.vercel.app. Open
<address>/api/health to check it answers.frontend →
environment variable NEXT_PUBLIC_API_URL = the API address from step 2 → Deploy.CORS_ORIGINS to the website address (the default * also works).Use the projects' main .vercel.app addresses, not preview addresses: Vercel protects previews with a login by default.
How it behaves on Vercel:
backend/app/config.py). Files imported with "Load data" last while that instance is running, then the demo
returns to its clean state. For a presentation with one person clicking, one instance serves everything.Open the website a few minutes before the meeting so the API is warm. "Reset demo" in the sidebar restores the clean dataset.
Historico_…2019.xlsx: the local model maps 11/11 rows, with "Sold. + END" shown under "Needs your check"; totals reconcile; confirm and save; benchmarks go from 10 to 11.OC-012 PDF: every field verified in the text.OC-013: detected and queued for OCR. Line to use: "We don't guess.".mpp would need MPXJ).