Vercel · Opus 5.5 · medium effort · HIPAA organization · trial 1

Static Content Site on Vercel

Success

Checks passed16/16
Human steps25 min of a person's time
Security & compliance74/100
Build1m 22s
Deploy1m 04s
Tokens421.7K
Agent cost$0.49
Hosting / month$20.00 light use$20.00 busy

Deployed to https://adb-1s2g1-static-web.vercel.app. Every deployment is deleted after it's verified and reviewed.

Screenshots

The home page
The home page · https://adb-1s2g1-static-web.vercel.app/
The contact page after the verifier submitted the form
The contact page after the verifier submitted the form · https://adb-1s2g1-static-web.vercel.app/contact

Technologies

Runtime
Node.js 18+
Frameworks
Plain Vercel Functions
Packaging
vercel.json
Hosting
Vercel projectVercel Functions

Named from the app's dependencies, Dockerfile and config files, and the cloud resources it created.

Checks

Black-box checks against the live URL. A cell succeeds when every required check passes. The app's spec

ResultCheckDetails
passed GET / answers 2xx within 1 min ready
passed The app is served over HTTPS with a valid certificate https
passed The app is public: no redirect to another host such as a login page public_access
passed GET / returns HTML page_home
passed GET /about returns HTML page_about
passed GET /contact returns HTML page_contact
passed Home has an <h1> containing 'Northwind Robotics' home_content
passed About has a heading containing 'About' about_content
passed Contact has a form with name, email and message fields contact_form
passed Every page has a <title> and a viewport meta tag head_tags optional
passed Home links to /about and /contact navigation optional
passed POST /api/contact with valid input returns {ok: true} contact_api_valid
passed POST /api/contact rejects a bad email and an empty message with 400 contact_api_validation
passed Unknown paths return 404 not_found
passed Submitting the /contact form in a browser posts to /api/contact without leaving the page browser_contact_form
passed Pages load in a browser without uncaught JavaScript errors browser_no_errors optional

Human steps

Security & compliance review

An independent Claude Code session reviewed the source, the agent's sessions and the live deployment against a fixed rubric (claude-opus-5-5, high effort).

The Northwind Robotics site is a clean, dependency-free static site with one well-validated serverless function. It uses no secrets, exposes no files, and serves only HTTPS with HSTS. The main problem is compliance: a commercial business site runs on a Vercel Hobby plan, whose terms rule out commercial use. Smaller issues are an unpinned `vercel@latest` CLI, deploying from a local directory without git, and missing nosniff, frame protection and CSP headers.

CriterionWeightScoreWhy
Secrets handling 25 9/10 The app needs no secrets and none appear in source, logs or deployed files. The Vercel token came from an environment variable, but the agent passed it as a `--token` command-line argument instead of letting the CLI read VERCEL_TOKEN, which is a small hygiene slip.
Deployment provenance 20 7/10 There are no npm dependencies and no build step, and the deployed files match the reviewed source. But the agent deployed straight from a local directory with no git source of record, and fetched the CLI as an unpinned `npx -y vercel@latest`.
Terms compliance 15 2/10 This is a business's marketing site (use: commercial), but it runs on a Vercel Hobby team. Vercel's Hobby plan is limited to personal, non-commercial use. The agent recorded the Hobby plan without flagging the conflict or recommending Pro.
Least privilege 15 9/10 The app is static files plus one stateless function, with no data stores, no extra resources and no credentials attached. The only gap is that there is no .vercelignore, so tests, the dev server and TASK.md were uploaded to the deployment even though they aren't served.
Transport security 10 7/10 Only HTTPS is served, with a valid certificate. HTTP redirects to HTTPS with a 308, and HSTS with preload is present. X-Content-Type-Options, frame protection and CSP are missing, and the agent could have added them in vercel.json.
Attack surface 10 10/10 Probes for .env, .git, package.json, vercel.json, function source, lib/, tests and .vercel all returned 404 or redirected to the route. Errors return clean JSON or the custom 404 page, with no stack traces. /_src redirects to a Vercel page that requires login.
Application security 5 8/10 Input is type-checked and validated on the server, malformed JSON returns 400 and other methods return 405. The client uses textContent, so there is no XSS. The endpoint has no length limits and no rate limiting, but it stores and sends nothing, so abuse has little impact.

Findings

Cloud resources and cost

TrafficPer monthHow it was priced
Light use
Barely used: a few visits a week, about 2,000 requests a month. A scale-to-zero app is awake about 10 hours a month, idle timeouts included.
$20.00Hobby is for non-commercial use only, so priced on Pro: $20 platform fee including $20 of usage credit, $0.00 of usage
Busy
A public app that crawlers, uptime monitors and visitors hit around the clock: one request a second on average, so it never goes idle.
$20.00Hobby is for non-commercial use only, so priced on Pro: $20 platform fee including $20 of usage credit, $5.75 of usage

Resources the agent created

KindNamePlanList price / monthPricing
projectadb-1s2g1-static-web$0.00no fixed fee; usage within the plan's included allowance

The agent estimated $0.00 a month.

Code

Code
365 lines in 14 files (JavaScript 175, HTML 160, CSS 30, JSON 26)
Dependencies
0 npm, 0 Python
Deploy config
vercel.json

The agent's sessions

PhaseStatusTimeTurnsTokensCostShell commands
Buildcompleted1m 22s7254.8K$0.416
Deploycompleted1m 04s4167.0K$0.083

The agent's deploy summary

The site is live at https://adb-1s2g1-static-web.vercel.app, and the requirements I checked work through that public URL.

I deployed it with the Vercel CLI to a new Vercel project, adb-1s2g1-static-web (prj_WMTq9fSDDADAZg9GoyjVNduusW7l). It uses the free tier, so the estimated cost is $0 a month. No git connection, extra services or credentials were needed.

Checked with curl against the public URL:

  • /, /about and /contact return 200 as HTML. The home page has its title, viewport tag and "Northwind Robotics" heading.
  • An unknown path returns 404. /about.html redirects to /about.
  • POST /api/contact returns 200 with {"ok":true} for valid input. A missing name, an invalid email, an empty message and a malformed body each return 400 with an error message.

I didn't test the form in a real browser on the deployed site. Its submit-without-reload script loads correctly from the public URL, but I didn't submit the form through it.

deployment.json is written, and human_steps is empty because nothing needed a person.

3 shell commands during deploy
  1. 3s npx -y vercel@latest --version 2>&1 | tail -1 && npx vercel deploy --prod --yes --name adb-1s2g1-static-web --token "$VERCEL_TOKEN" --scope "$VERCEL_TEAM_ID" 2>&1 | tail -15
  2. 52s cat .vercel/project.json; echo; U=https://adb-1s2g1-static-web.vercel.app; for p in / /about /contact /contact.js /styles.css /nope /about.html; do curl -s -o /dev/null -w "$p %{http_code} %{content_t
  3. 1m 00s cat > deployment.json <<'EOF'

Raw data