You are reading a finished project. Nothing here changes.Why did it do that?See the plan gateWatch a buildSee one failImport a repoSee the architectureSign in to build your own
Northwind Cloud, demo project
Build a support agent that answers billing questions from our help center and escalates when it is not sure.
First build, v1. Preview is now on v14.
Built in 6m 31s for $1.46, inside the $1.20 to $2.00 estimate.
Northwind Helpline is ready. 7 conversations are waiting on a human, and 18 are still open.
In the full product this opens an editor. This demo is read-only.
import { NextResponse } from "next/server";
import { invoiceUrlFor } from "@/lib/help-center";
export async function GET(request: Request) {
const id = new URL(request.url).searchParams.get("id");
if (!id) return NextResponse.json({ error: "id required" }, { status: 400 });
const url = await invoiceUrlFor(id);
if (!url) return NextResponse.json({ error: "not found" }, { status: 404 });
return NextResponse.json({ url });
}7be0d15pending, becomes v15Keep answers as specific as the source1 filenot applied yetnot decided yet
Asked for: Keep answers as close to the source as possible
Accept all 1Revert all 1Demo action. Nothing is written: the verdict travels in the page address.
a41c9e2Add escalation reason to dashboard3 files2 days agook accepted, in v12
Asked for: Show me why each conversation was escalated, on the dashboard
Shipped in v12. There is nothing to decide: rolling this back is a deploy action, on the Deploy tab.
c93f7a0Invoice download links in answers2 files5 hours agook accepted, in v14
Asked for: When someone asks for an invoice, give them the download link
Shipped in v14. There is nothing to decide: rolling this back is a deploy action, on the Deploy tab.
$ npm run checks
> northwind-helpline@0.1.0 checks
> tsc --noEmit && eslint . && vitest run
Type check passed in 2.14s
Lint passed in 1.38s
Test Files 4 passed (4)
Tests 11 passed (11)The terminal is not shown on a phone. Editing and running commands on a phone keyboard is a poor experience, so the demo does not pretend otherwise. See D22.