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).