new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A Hungarian gas‑boiler quoting chat widget. The customer answers a short set of questions (clicking suggested options or typing freely), gives their contact details, then immediately sees an itemised estimate. The company owner receives the same quote + the customer's details by e‑mail.查看完整 README ↗
A Hungarian gas‑boiler quoting chat widget. The customer answers a short set of questions (clicking suggested options or typing freely), gives their contact details, then immediately sees an itemised estimate. The company owner receives the same quote + the customer's details by e‑mail.
public/widget.js ──POST──► api/faq-agent.js ──► OpenAI (model via .env) = conversation only
(chat UI) │
├──► PRICES table = deterministic price calc
└──► Resend = e-mail to owner
The AI never does arithmetic. It only runs the Hungarian conversation and,
once every answer is collected, emits a hidden JSON block of the customer's
choices (not prices). The backend looks each choice up in the fixed PRICES
table, sums it, and builds the quote. This is why the total can never be
miscalculated by the model.
All prices are in HUF and are shown as‑is (no VAT note, no base/call‑out
fee). The total is simply the sum of the applicable items below. Source of the
numbers: the company's price sheet (milan.xlsx). Edit them in one place:
the PRICES object at the top of api/faq-agent.js.
| Step | Question | Options → amount added |
|---|---|---|
| 1 | Csere vagy új beépítés? | replacement / new install — controls step 2 & the demolition line |
| 2 | Jelenlegi kazán (only if replacement) | nyílt égésterű +60 000 · kondenzációs +0 · turbós +60 000 |
| 3 | Új kazán típusa | kombi 24 kW +450 000 · tárolós 46 L +900 000 · külső 125 L +900 000 |
| 4 | Kémény / égéstermék‑elvezetés | tetőn ki +380 000 · tégla kéménybe +600 000 · társasházi gyűjtőkémény +600 000 |
| 5 | Életvédelmi (Fi) relé | van +50 000 · nincs +100 000 |
| — | Always added (not asked) | vizes rendszerre kötés +300 000 · gyári üzembe helyezés +50 000 |
| — | Added on replacement only | régi kazán/kémény bontása +90 000 (csak csere esetén) |
Total = sum of the selected rows + the always‑added standard costs.
APPLIANCE_INCLUDED = true).nincs, +0).isQuoteReady) from a running hidden
state block the model maintains — so the quote always appears even if the model
phrasing varies. The model never computes the price..env (already git‑ignored):
OPENAI_API_KEY — from https://platform.openai.com/api-keysOPENAI_MODEL — copy the exact model ID from your OpenAI dashboard. The
task is tiny, so the cheapest tier is plenty (e.g. gpt-5.4-nano, or
gpt-5.4-mini). The model never affects price accuracy — that's computed
in the backend.RESEND_API_KEY — free at https://resend.comLEAD_EMAIL_TO — where quotes are sent (default [email protected])LEAD_EMAIL_FROM — leave as the [email protected] test sender to start;
later verify your own domain in Resend and change it.node server.js → http://localhost:8888api/faq-agent.js is the serverless endpoint, public/ is static.<script>
window.KAZAN_CONFIG = {
apiUrl: "https://YOUR-APP.vercel.app/api/faq-agent",
assetsUrl: "https://YOUR-APP.vercel.app"
};
</script>
<script src="https://YOUR-APP.vercel.app/widget.js"></script>
Every completed lead is also appended as a row to a Google Sheet (timestamp,
name, phone, e-mail, postal code, budget, timeline, the four choices, and the
estimated total). This is optional — leave SHEETS_WEBHOOK_URL empty and
the quote/e-mail flow still works exactly as before.
Setup (one-time, ~3 minutes, no Google Cloud project needed):
Create a Google Sheet. In the first row, add these headers (this exact
order — it matches the row array in sendLeadToSheet):
Időbélyeg | Név | Telefon | E-mail | Irányítószám | Tervezett keret | Tervezett kivitelezés | Jelenlegi kazán | Új kazán | Kémény | Életvédelmi relé | Becsült végösszeg (Ft)
In that sheet: Extensions → Apps Script. Replace the contents with:
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
sheet.appendRow(data.row);
return ContentService
.createTextOutput(JSON.stringify({ ok: true }))
.setMimeType(ContentService.MimeType.JSON);
}
Deploy → New deployment → Web app. Set Execute as = Me, and
Who has access = Anyone. Deploy, authorise, and copy the Web app URL
(ends in /exec).
Paste that URL into SHEETS_WEBHOOK_URL in .env (and into the same env var
in the Vercel dashboard). Done — new leads now land in the sheet.
The sheet only fills in once the customer completes the whole flow (same point the owner e-mail is sent). It runs in parallel with the e-mail, so neither blocks the other.
PRICES object in api/faq-agent.js.SYSTEM_PROMPT in api/faq-agent.js.public/style.css (navy #111827, gold #FBBF24,
blue #025888). Replace public/logo.svg with the company's real logo.PHONE constant in public/widget.js.