Product Block 14 · Sellable today
Customer Status Portal
Replace status-check calls with a simple portal customers can trust.
Best fit: Sign shops, custom fabricators, contractors, agencies, printers, legal/admin services, and any company with multi-step jobs.
Customer Status Portal — build it without writing code
Drop the prompt below into Claude Code or Codex. The agent picks a sign shop / millwork / repair business that gets "where is my job?" calls, builds a status portal with their last 5 fake jobs preloaded, generates a 60-second Loom showing the customer self-serve flow, and produces the cold pitch.
You provide
You provide: (1) the prospect (sign shop / millwork / repair / property mgmt — Saul Signs and Signscenter are canonical first targets), (2) decision-maker email, (3) 5 sample job records (real or synthetic) with status updates we can render.
You get back
You get: a hosted status portal with searchable tracking IDs + photo upload trail + AI-written staff notes, a Loom of the lookup flow, and a draft cold pitch with the demo URL.
Runtime & cost
Roughly 90 minutes wall-clock. ~$2 in Claude tokens.
You are building a Customer Status Portal (Block 14 in the Cafecito AI new-hire playbook). Full reference at https://cafecito-ai.com/new-hire/blocks/14-customer-status-portal. Read it. Use plan mode. Stop at every [GATE].
INPUTS YOU NEED FROM THE HUMAN (ask before doing anything else):
1. Prospect — sign shop, custom millwork, repair shop, property mgmt (Saul Signs and Signscenter are canonical first targets)
2. Decision-maker email
3. 5 sample job records — either real (anonymized) or synthetic. Each: customer name, project type, intake date, current stage, photo URLs if any, latest staff note
ENVIRONMENT (verify):
- Working dir: /home/eratner/cafecito-ai
- Cloudflare account: f7a9b24f679e1d3952921ee5e72e677e
SECRETS TO CONFIRM:
- ANTHROPIC_API_KEY (Claude — staff-note → customer-update translation)
- (R2 storage doesn't need a separate secret)
THE PLAN:
STEP 1 — RESEARCH + JOB PIPELINE STAGES (10 min)
- Pull prospect site. Identify their typical project flow (e.g. for signs: estimate → approval → fabrication → install).
- Define the canonical stages (4-6 max). Each gets a customer-friendly label and a staff label.
- Wait for the 5 sample job records.
[GATE 1 — show stages + 5 jobs parsed, ask "proceed?"]
STEP 2 — SCAFFOLD WORKER (15 min)
- Create /home/eratner/cafecito-ai/portal-<prospect-slug>/.
- Worker handles: GET /track/:id (customer view), GET /admin (staff view + add update), POST /api/job/:id/update (admin only — staff posts a note + Claude translates to customer-friendly).
- Bindings: D1 PORTAL_DB, R2 PORTAL_R2 (job photos).
- Routes: /portal-demo/<prospect-slug>/track/:id and /portal-demo/<prospect-slug>/admin.
[GATE 2 — show worker.js + D1 schema, ask "deploy scaffold?"]
STEP 3 — STAFF-NOTE → CUSTOMER-UPDATE (10 min)
- Claude prompt: takes a terse internal note ("primer dry, install Tue PM") + the job context → returns a customer-friendly update ("Materials are prepped and your crew is scheduled for Tuesday afternoon — we'll text 30 min before arrival").
- Auto-detects customer language from the customer name + previous interactions; outputs in matching language.
[GATE 3 — show 3 sample staff-notes + their customer-friendly translations, ask "voice right?"]
STEP 4 — INGEST + RENDER (10 min)
- Run ingestion: insert the 5 sample jobs with their stages + staff notes.
- For each, generate the customer-facing version. Verify rendering at /track/:id for each.
[GATE 4 — show 5 tracking URLs, ask "proceed to deploy?"]
STEP 5 — DEPLOY + DEMO (10 min)
- Deploy via OAuth wrangler.
- Tell human: "Open one of the 5 tracking URLs on your phone. Show: search by tracking ID, see status timeline, see latest customer-friendly update, see photos. Switch to admin view, post a new staff note, watch it translate."
- Loom this 60-second flow.
[GATE 5 — confirm Loom recorded, ask "ready to draft pitch?"]
STEP 6 — DRAFT THE COLD PITCH (5 min)
- Email subject: "How often does someone call asking where their [sign / cabinet / repair] is in the queue?"
- Email body: 4 sentences, lead with the call-volume waste math, attach Loom, link demo URLs, name $5k 7-day pilot / $900/mo, one yes/no close.
[GATE 6 — show draft, ask the human to send manually]
STEP 7 — SHIP THE SUMMARY
- Single-line: "[BUSINESS] status portal live · 5 sample jobs · demo: [LOOM] · pitch sent."
- Append to /home/eratner/cafecito-ai/portal-shipped.md.
DONE.
GUARDRAILS: NEVER use real customer PII in the demo. The 5 sample jobs must be either anonymized or synthetic. Staff-note translation must pass an "owner-eye" check before any go to a customer. Cost ceiling: $3.
01Stack▾
- Cloudflare Workers
- Hono.js
- D1
- R2
- Claude API
- OpenAI API
- Resend optional
03Day-1 plan▾
A real prospect. A real demo. A real outbound message — all before 5pm.
-
09:00-09:45
Pick a status-heavy prospect.
Look for custom projects, long timelines, approvals, proofs, site visits, or repeated customer communication.
-
09:45-10:30
Map the job stages.
Define 5-7 generic stages: received, reviewed, waiting on customer, in production, scheduled, complete.
-
10:30-12:30
Build fake portal.
Customer lookup by fake job code, status timeline, files, next action, and plain-language summary.
-
12:30-14:00
Build admin update form.
Staff can update status, upload fake file, and generate customer-friendly summary.
-
14:00-17:00
Call with support-time wedge.
Ask how many status-check calls/emails come in and who answers them.
04Best practices & gotchas▾
-
Keep the portal boring and reliable.
Why: Customers want confidence, not a flashy dashboard.
-
Use job codes, not full auth, for the first demo.
Why: It makes the demo quick while avoiding real customer accounts.
-
Show next action clearly.
Why: Most status anxiety comes from not knowing who owes what next.
-
Do not expose internal notes.
Why: Summaries must be customer-safe and reviewed before sending.
05Prompts (copy-paste)▾
Drop these into Claude Code. Replace the [BRACKETED] fields with the prospect's details.
Turns internal status into customer-safe copy.
Write a customer-safe status update.
Inputs:
- job stage
- internal notes
- next action owner
- expected date
- files available
Output:
- one-sentence status
- next action
- expected timing
- customer-safe caveat
Remove internal blame, margin, vendor complaints, and private notes.
Builds a fake job-status portal.
Build a Cloudflare Workers + Hono customer status portal.
Routes:
- GET / lookup form
- GET /job/:code customer status page
- GET /admin staff list
- POST /admin/job/:id/status update status
- POST /admin/job/:id/file upload fake file metadata
Use D1 for jobs and R2 for files if uploads are implemented.
Use fake data only.
Deploy and print demo codes.
06Selling script▾
Discovery question (ask this first)
"How much of your team’s week is spent answering customers asking, where does my project stand?"
The frame
Status calls are usually a symptom that customers cannot see what is happening. A small portal reduces anxiety, protects staff time, and makes the business feel more professional without changing the underlying workflow.
The demo play
Show a fake customer entering a job code, seeing current stage, files, next action, and a clean AI-written summary. Then show staff updating the status in 20 seconds.
Objections
-
"Our process changes job by job."
"That is why the portal uses flexible stages and notes. It does not force your process into a rigid ERP."
-
"Customers can just call us."
"They can. The point is to reduce avoidable calls and make necessary calls better informed."
-
"We do not have clean data."
"The pilot can start manual: staff updates only active jobs. Automation comes later if the value is clear."
The close
"Let me launch a portal for one project type with fake data first, then pilot on 10 active jobs. $4,000 setup, $750/month if it reduces status-check load."
07Pricing notes▾
Anchor on staff hours and customer trust. Start with one project type and manual updates before integrations.