On Mott Street

Visit Phở Heights.

Address

238 Mott Street

New York, NY 10012

(Demo address)

Black storefront with a red lantern; no signage with words. The door is the door.

Hours

Tuesday-Thursday
5:30pm - 10:00pm
Friday-Saturday
5:00pm - 11:00pm
Sunday
11:30am - 9:00pm (brunch + dinner)
Monday
Closed

Transit and parking

  • Four-minute walk from Spring Street (6).
  • Six-minute walk from Bowery (J, Z).
  • Street parking is metered. Garage on Lafayette is closest after 7pm.
  • Cycling: bike corral one block north on Prince.

Accessibility, dress, noise

  • Step-free entrance; ADA-accessible restroom on the ground floor.
  • Dress is whatever you want; the room is warm and low-lit.
  • Loud at peak (7-9pm). Quieter at 5:30 and after 9:30.
  • Quieter hours: Tuesday and Wednesday at 5:30pm.

Ready to come in? Reserve a table.

RampStack

Built by the RampStack trinity

How Phở Heights was built

The four-stage workup behind this hospitality + food demo, summarized. Generalized and pattern-level; no named competitors. The full Format A spec and the verification log live in the operated-side run record.

Stage 01

Basano · competitor review

  • Hospitality-food sites bury the menu behind a PDF link or a modal that breaks mobile. A diner who cannot scan a price and a dish in three seconds bounces; the field's leaders treat the menu as the page, not a download.
  • Reservation actions are routed offsite to third-party widgets that destroy the visual contract. The site's identity dissolves the moment the booking iframe loads.
  • Single-dish photography is rare. The field defaults to either a tiled grid of every plate (loses focus) or stock food imagery (loses identity). Edge-to-edge dish-on-linen is the convention the leaders use and the field abandons.
  • Chef and provenance content (where the ingredients come from, who is in the kitchen) is missing or buried in an About page. The hospitality wedge of 'the room is the experience' lives in this content, not in a hero tagline.
  • Structured data is sparse: most restaurant sites carry no Restaurant or Menu schema, forfeiting rich-result eligibility in the search results where diners decide. The field-wide gap is in disciplined JSON-LD with hasMenu, servesCuisine, and acceptsReservations.
  • The unspoken miss across the field: the menu's narrative voice. Dishes are either marketed (adjective stack) or under-described (one-line ingredient list). A confident, ingredient-literate, third-person voice on the menu is the position competitors leave on the table.

Stage 02

Krine · positioning

Position
An elevated phở house. Menu is the page; the broth is the brand. Ingredient-literate, chef-perspective copy; edge-to-edge dish photography; reservations honored on-site, not punted offsite.
Archetype
pass-finedining
Voice
Warm, chef's-perspective, ingredient-literate, confident, unfussy

Stage 03

Tholo · build plan

home

  • landing-page-copy
  • information-architecture
  • frontend-component-build
  • seo-technical

menu

  • information-architecture
  • frontend-component-build

reservations (demo)

  • frontend-component-build
  • landing-page-copy

visit

  • seo-technical
  • frontend-component-build

workup

  • landing-page-copy
  • frontend-component-build

Stage 04

Basano · verification

Holds(5)

  • Lang attribute, meta description, and heading hierarchy hold on every page; one H1, semantic landmarks (header, main, footer).
  • JSON-LD Restaurant present on every page with hasMenu, servesCuisine, openingHoursSpecification, and aggregateRating; the structured-data spine is correct.
  • Menu surfaced as the page (not a PDF link); name, description, and price visible per item; courses grouped.
  • Reservation flow is an on-site demo modal, clearly labeled; no offsite redirect to a third-party widget.
  • Edge-to-edge single-dish hero photograph; dark warm palette consistent with the pass-finedining register.

Fails(5)

  • Intentional noindex and nofollow on the demo build flagged across pages (correct for a demo, flagged against a production-ready standard).
  • Canonical URL declares the production rampstack.co host while the build is served from localhost during the audit; cross-origin canonical mismatch is the localhost-vs-production artefact, not a real defect.
  • Skip-navigation link is missing on every page; the audit reads this as an accessibility polish item, and it is a real one to fix in the next sweep.
  • Structured-data acceptsReservations field is encoded as a string 'True' rather than a boolean true; flagged as a schema.org best-practice item, simple fix.
  • Press pull-quote is a placeholder, not sourced from a real publication; a real build would carry one or more named-publication quotes.

Not assessable(3)

  • Core Web Vitals and page experience (no field data in a static fetch).
  • robots.txt and XML sitemap (single-page audit does not crawl).
  • Reservation backend integration (none in this build by design).