Create an itinerary for us as a backpack tour. We are going for 50 days. We will be starting our journey from SF, California, and we will stay there for a few days, explore the Bay Area. Then we want to move to different states step by step. We want to cover Las Vegas, then Chicago, Florida, Illinois, Texas, and moving eastwards towards NYC and related areas. We want to cover almost all the best places in the USA and all the different cultures and specific touristy and explorer type of places. Make it starting from 19th May up to fifty days.
best places to visit USA backpacking itinerary SF Las Vegas Chicago Florida Texas NYC 2026
| Day | Date | What to Do |
|---|---|---|
| 1 | May 19 | Arrive SF. Walk the Golden Gate Bridge, Crissy Field. Evening in North Beach (Beat Generation haunts – City Lights Bookstore) |
| 2 | May 20 | Fisherman's Wharf → Alcatraz Island tour (book ahead!). Ghirardelli Square. Sunset at Fort Mason |
| 3 | May 21 | Haight-Ashbury counterculture district → Golden Gate Park (de Young Museum, Japanese Tea Garden) → Castro neighborhood |
| 4 | May 22 | Day trip to Muir Woods (giant coastal redwoods) + Sausalito ferry back across the bay |
| 5 | May 23 | Oakland (Jack London Square, vibrant food scene) → Berkeley (University campus, Telegraph Ave). Train south to SJ for flight |
| Day | Date | What to Do |
|---|---|---|
| 6 | May 24 | Arrive. Tunnel View overlook, Valley Floor Loop walk, El Capitan views |
| 7 | May 25 | Hike Half Dome (permit required, book months ahead) OR Vernal & Nevada Falls via Mist Trail |
| 8 | May 26 | Mariposa Grove (giant sequoias) → Glacier Point sunset views → drive south toward Las Vegas |
| Day | Date | What to Do |
|---|---|---|
| 9 | May 27 | Arrive Vegas. Walk The Strip (Bellagio fountains, Caesars, MGM). Evening at Fremont Street Experience (old school Vegas, free light show) |
| 10 | May 28 | Day trip to Red Rock Canyon (morning hike) → Valley of Fire State Park (fire-red sandstone formations) |
| 11 | May 29 | Day trip to the Grand Canyon South Rim (~4.5 hrs drive, or book a guided day tour) |
| 12 | May 30 | Morning: Hoover Dam → Lake Mead. Afternoon: Rest/explore the Strip. Evening flight or overnight bus to Denver |
| Day | Date | What to Do |
|---|---|---|
| 13 | May 31 | Arrive Denver. 16th Street Mall, Union Station, RiNo Art District murals. Craft breweries (Denver is the craft beer capital) |
| 14 | June 1 | Day trip to Rocky Mountain National Park — Trail Ridge Road (highest continuous paved road in the US), Bear Lake hike, elk meadows |
| 15 | June 2 | Red Rocks Amphitheatre morning yoga/hike → Colorado State Capitol → evening train/bus to Chicago |
| Day | Date | What to Do |
|---|---|---|
| 16 | June 3 | Arrive. Millennium Park (Cloud Gate/The Bean), Art Institute of Chicago, Chicago Riverwalk. Deep dish pizza at Lou Malnati's |
| 17 | June 4 | Architecture boat tour on the Chicago River (best way to see the skyline). Willis Tower Skydeck. Navy Pier at sunset |
| 18 | June 5 | Hyde Park (University of Chicago, Obama's neighborhood), Museum of Science and Industry. Evening: jazz/blues at Buddy Guy's Legends |
| 19 | June 6 | Wicker Park + Logan Square (hipster cafes, vintage shops, street art). Lincoln Park Zoo (free). Chicago food crawl: Italian beef, Chicago hot dog |
| 20 | June 7 | Day trip to Milwaukee, Wisconsin (~1.5 hrs by Amtrak) — Harley-Davidson Museum, brewery tours. Back to Chicago for overnight bus south |
| Day | Date | What to Do |
|---|---|---|
| 21 | June 8 | Arrive. Lower Broadway honky-tonks (free live country music all day). Ryman Auditorium tour (mother church of country music) |
| 22 | June 9 | The Parthenon in Centennial Park. Johnny Cash Museum. Afternoon: 12 South neighborhood, hot chicken at Prince's (legendary!) |
| 23 | June 10 | Day trip to Franklin, TN (Civil War battlefield, charming Main Street). Evening bus to New Orleans |
| Day | Date | What to Do |
|---|---|---|
| 24 | June 11 | Arrive. French Quarter — Bourbon Street, Royal Street antiques, St. Louis Cathedral, Jackson Square street performers |
| 25 | June 12 | Garden District walking tour (stunning antebellum mansions). Magazine Street boutiques. Café du Monde for beignets + café au lait |
| 26 | June 13 | Swamp tour by airboat (alligators, cypress trees, bayou culture). Evening: live jazz in Frenchmen Street (better than Bourbon for real music!) |
| 27 | June 14 | City Park + New Orleans Museum of Art. Po'boy lunch at Domilise's. Afternoon bus/train to Houston |
| Day | Date | What to Do |
|---|---|---|
| 28 | June 15 | Arrive Houston. NASA Space Center (astronaut training facility, Mission Control). Evening: Montrose neighborhood, Vietnamese food in Midtown |
| 29 | June 16 | Museum District (Museum of Fine Arts, Natural Science Museum — many free). Buffalo Bayou Park at sunset. BBQ at Killen's |
| 30 | June 17 | Bus/drive to San Antonio (~3 hrs). The Alamo + River Walk (gorgeous pedestrian canal lined with restaurants & bars). Tex-Mex dinner |
| 31 | June 18 | Pearl District brunch. San Antonio Missions (UNESCO World Heritage Sites). Afternoon: bus to Austin |
| Day | Date | What to Do |
|---|---|---|
| 32 | June 19 | Arrive. South Congress Ave (SoCo) — vintage shops, food trucks, street art. Texas State Capitol (free tour). 6th Street live music at night |
| 33 | June 20 | Barton Springs Pool morning swim (spring-fed natural pool, iconic Austin). UT Austin campus. Afternoon: Rainey Street bars in converted bungalows |
| 34 | June 21 | Day trip to Enchanted Rock State Park (huge pink granite dome, great hiking). Evening flight or bus toward Miami |
| Day | Date | What to Do |
|---|---|---|
| 35 | June 22 | Arrive Miami. South Beach (Art Deco Historic District walking tour, Ocean Drive). Wynwood Walls street art museum. Cuban food in Little Havana |
| 36 | June 23 | Everglades National Park — airboat tour, alligator spotting, mangrove tunnels (about 1 hr from Miami) |
| 37 | June 24 | Drive the Overseas Highway (US-1) to Key West — iconic 7-Mile Bridge, snorkeling at John Pennekamp Coral Reef State Park |
| 38 | June 25 | Key West — Ernest Hemingway Home, Duval Street, Mallory Square sunset. Bus back to Miami for overnight to DC |
| Day | Date | What to Do |
|---|---|---|
| 39 | June 26 | Arrive DC. National Mall — Lincoln Memorial, Vietnam Veterans Memorial, WWII Memorial, Washington Monument (all free, open 24/7) |
| 40 | June 27 | Smithsonian museums (ALL FREE!) — Natural History, Air & Space, American History. Evening: Capitol Hill + Library of Congress |
| 41 | June 28 | Georgetown neighborhood (boutiques, canal). National Zoo (free). Evening: U Street Corridor — jazz bars, Afro-American cultural history |
| Day | Date | What to Do |
|---|---|---|
| 42 | June 29 | Arrive. Independence Hall + Liberty Bell (free!). Reading Terminal Market for a Philly cheesesteak. Old City historic district |
| 43 | June 30 | Philadelphia Museum of Art (Rocky steps!). Eastern State Penitentiary (haunting historic prison). South Street for street art & weirdness |
| Day | Date | What to Do |
|---|---|---|
| 44 | July 1 | Arrive NYC. Brooklyn Bridge walk → DUMBO neighborhood → Manhattan skyline from Brooklyn Heights Promenade. Pizza in Brooklyn |
| 45 | July 2 | Central Park morning. Metropolitan Museum of Art (pay-what-you-wish). Fifth Avenue + Times Square at night |
| 46 | July 3 | Statue of Liberty & Ellis Island (book ferry tickets ahead). High Line park. Chelsea Market for food. Whitney Museum |
| 47 | July 4 | 4th of July! 🇺🇸 — Macy's 4th of July Fireworks over the East River (one of the greatest fireworks shows on earth!) |
| 48 | July 5 | Day trip to The Catskills (mountain hiking, swimming holes, farm-to-table food scene, 2 hrs from NYC) OR Coney Island (beach + amusement park) |
| 49 | July 6 | Harlem (Apollo Theater, soul food, jazz history). Washington Heights (Dominican culture). Brooklyn — Bushwick street art murals |
| 50 | July 7 | Final morning: Greenwich Village + West Village. One World Trade Center / 9/11 Memorial. Depart or extend! |
San Francisco → Yosemite → Las Vegas → Grand Canyon
→ Denver → Chicago → Nashville → New Orleans
→ Houston → San Antonio → Austin
→ Miami → Florida Keys → DC
→ Philadelphia → New York City
| Topic | Advice |
|---|---|
| Budget | ~$80–120/day covering hostel, food, local transport, entry fees |
| Transport | Mix of: Amtrak (scenic), Greyhound/FlixBus (cheap), budget flights (Google Flights, Spirit/Frontier) |
| Booking | Book Alcatraz, Half Dome permit, Grand Canyon tours, NYC 4th of July spots well in advance |
| Best app | Rome2Rio for transport options between cities; Hostelworld for beds |
| Food strategy | Local markets, food trucks, and lunch specials — avoid tourist restaurants |
| Weather | May–July is warm/hot across the South & Midwest; bring light layers for SF and Denver nights |
| Must-try foods | SF burrito → Vegas buffet → Chicago deep dish → Nashville hot chicken → NOLA beignets → Texas BBQ → Miami Cuban food → Philly cheesesteak → NYC pizza |
I want it to be tentative and flexible. Don't make it a very hard schedule and make it like recommendations and strategies we could use along the trip. And also include good travelling options and other options we could select from in the itinerary.
How to use this guide: This is a recommendation map, not a fixed schedule. Each stop has a suggested number of days, but you can shorten or extend based on how you feel. The route flows logically west → east so travel is efficient, but you can swap, skip, or linger. Listen to locals and fellow travelers — some of the best experiences won't be in any guide.
San Francisco ──► Yosemite ──► Las Vegas + Grand Canyon
──► Denver ──► Chicago ──► Nashville
──► New Orleans ──► Texas (Houston / San Antonio / Austin)
──► Miami + Florida ──► Washington D.C.
──► Philadelphia ──► New York City
| Option | Best For | Cost | Book Via |
|---|---|---|---|
| FlixBus / Greyhound | Short-to-mid city hops | $15–50 | flixbus.com / greyhound.com |
| Amtrak | Long scenic rides (Denver→Chicago is stunning) | $40–120 | amtrak.com |
| Budget flights | Skipping long stretches (e.g. Austin→Miami) | $50–120 | Google Flights, Hopper |
| Rideshare (BlaBlaCar-style) | Cheap, social, flexible | $10–30 | Craigslist Rideshare, Facebook Groups |
| Rent a car | National Parks, rural areas | $30–60/day | Turo (peer-to-peer, cheaper than Hertz) |
| Amtrak Rail Pass | If doing 8+ train rides | Saves money | amtrak.com/rail-passes |
Strategy tip: Book flights 2–3 weeks ahead for good deals. For buses, book 2–3 days ahead. Don't over-book — keep flexibility for the second half of the trip where you'll know more about your pace.
| Option | Vibe | Cost/Night | Find It |
|---|---|---|---|
| Hostels | Social, meet travelers | $25–55 | Hostelworld, Booking.com |
| Couchsurfing | Free, ultra-local experience | Free | couchsurfing.com |
| Airbnb shared rooms | Comfortable, local feel | $35–65 | Airbnb |
| Camping | Nature stops, epic experience | $5–25 | Recreation.gov, Hipcamp |
| Work exchanges (HelpX/Workaway) | Free stay for a few hours of help | Free | workaway.info |
| Option | Distance | Best For |
|---|---|---|
| Muir Woods + Sausalito | 30 min drive / ferry | Giant redwoods, charming waterfront town |
| Berkeley + Oakland | 20 min by BART | University energy, Jack London Square, great food |
| Wine Country (Napa/Sonoma) | 1–1.5 hr drive | Vineyards, if that's your scene |
| Santa Cruz | 1.5 hr bus/drive | Beach town, surf culture, boardwalk |
Important: Yosemite requires a timed entry permit (May–Sept). Reserve at recreation.gov as soon as you know your dates — they sell out fast.
| Trip | Drive Time | Why Go |
|---|---|---|
| Red Rock Canyon | 30 min | Dramatic red sandstone, great hiking, almost nobody there on weekday mornings |
| Valley of Fire State Park | 1 hr | Fire-red Aztec sandstone formations, petroglyphs — one of Nevada's hidden gems |
| Hoover Dam + Lake Mead | 45 min | Engineering marvel, swimming and kayaking at the lake |
| Grand Canyon South Rim | 4.5 hrs | Do it as an overnight if possible. The rim walk at sunrise/sunset is life-changing |
| Zion National Park | 2.5 hrs | One of the most beautiful places in the US. The Narrows hike (wading in a slot canyon river) is unforgettable |
| Bryce Canyon | 4 hrs | Otherworldly hoodoo rock formations, especially at sunrise |
Strategy tip: You don't have to do all of these. Pick 2 day trips and do them properly rather than rushing 4. Zion and Red Rock are the top picks if time is limited.
| Option | Destination | Cost | Time |
|---|---|---|---|
| ✈️ Fly | Denver (~1 hr) | $50–90 | Fastest |
| 🚌 Greyhound/FlixBus | Denver (direct) | $40–70 | ~12 hrs overnight — saves a night's accommodation |
| 🚗 Drive/rideshare | Denver via Utah (scenic) | Varies | 2 days if you detour through Moab/Arches |
| Option | Destination | Notes |
|---|---|---|
| 🚌 Greyhound/FlixBus | Nashville (~8 hrs) | Overnight saves accommodation |
| ✈️ Fly | Nashville | ~$60–80 |
| Detour option: | Memphis, TN | Blues birthplace, Graceland (Elvis), incredible BBQ — add 1–2 days if music/food culture is your thing |
| Trip | Distance | Why Go |
|---|---|---|
| Everglades National Park | ~1 hr | Airboat tours, alligators, mangroves, anhinga birds. Get a morning start — it gets very hot |
| Key West (full day or overnight) | ~3.5 hrs via US-1 | Ernest Hemingway Home, Duval Street, sunset at Mallory Square, snorkeling |
| Fort Lauderdale | ~30 min | Canal boat tours, less chaotic than Miami |
| Palm Beach | ~1 hr north | Worth Avenue, the Henry Flagler Museum |
Strategy tip: If you have a car, drive the Overseas Highway (US-1) through the Keys — crossing 40+ bridges over turquoise water is one of the great American road trip experiences.
| Neighbourhood | Borough | What It's About |
|---|---|---|
| Williamsburg | Brooklyn | Hipster culture, brunch, street art, amazing food scene |
| Bushwick | Brooklyn | Outdoor gallery of murals, nightlife, very local feel |
| DUMBO | Brooklyn | Best Manhattan skyline views, cobblestone streets, Brooklyn Bridge Park |
| Harlem | Manhattan | African-American cultural and music history, soul food, Apollo Theater |
| Greenwich Village | Manhattan | Bob Dylan's old stomping ground, jazz clubs, Washington Square Park |
| Chinatown + Little Italy | Manhattan | Incredible cheap dumplings, chaotic and alive |
| Astoria | Queens | Most diverse neighbourhood in the US, incredible food from every culture |
| Flushing | Queens | Best Chinese food outside of China. Seriously. |
| The Bronx | Bronx | Birthplace of hip-hop (Hip Hop Museum), Yankee Stadium, great Dominican food |
| Trip | Travel Time | Why Go |
|---|---|---|
| The Catskills | ~2 hrs by bus | Mountain hiking, swimming holes, artsy small towns (Woodstock, Hudson) |
| The Hamptons | ~2.5 hrs LIRR train | Beach day, see how the other half lives |
| Hudson, NY | ~2 hrs Amtrak | Antique shops, galleries, incredible restaurants |
| Coney Island | 45 min subway | Beach, boardwalk, amusement park, original hot dogs at Nathan's |
| Jersey Shore (Asbury Park) | ~1.5 hr NJ Transit | Bruce Springsteen's hometown, great beach town energy |
| Stop | Min Days | Max Days | Skip If... |
|---|---|---|---|
| San Francisco | 3 | 6 | — (don't skip this one) |
| Yosemite | 2 | 4 | You dislike hiking or crowds stress you out |
| Las Vegas | 2 | 5 | You hate casinos (but use it as desert base) |
| Denver | 2 | 4 | You're pressed for time |
| Chicago | 3 | 6 | — |
| Nashville | 2 | 4 | Music isn't your thing |
| New Orleans | 3 | 6 | — (one of the best stops) |
| Texas | 3 | 8 | Cut to 1 city if rushed |
| Miami + Florida | 3 | 6 | You've seen tropical places before |
| Washington D.C. | 2 | 4 | — (free museums, always worth it) |
| Philadelphia | 1 | 3 | If NYC time is running out |
| New York City | 5 | 10 | — (finish here) |
I liked the flexible pacing guide. Can you expand that table and create a proper word / pdf document with that table. Make it in a way we can show that to immigration departments while arriving. Add our incoming flight detail (Mumbai-> sfo) and at end keep the flight (jfk-> india) and give min max day itenary with flexible counts to show that we have a tentative plan. With first part of the trip is planned
ls -la /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/usa-itinerary
~/usa-itinerary/build.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageNumber, PageBreak, Header, Footer, LevelFormat,
UnderlineType
} = require('docx');
const fs = require('fs');
// ── Colour palette ──────────────────────────────────────────────────────────
const NAVY = "1B3A6B"; // deep navy – headings / header bar
const GOLD = "C8960C"; // gold accent – sub-headings
const LGREY = "F2F4F8"; // light grey – alternate table rows
const WHITE = "FFFFFF";
const DGREY = "3A3A3A"; // body text
const MGREY = "6B7280"; // muted text
const TBLHDR = "1B3A6B"; // table header bg (same as NAVY)
// ── Helper: bordered cell ────────────────────────────────────────────────────
function cell(text, opts = {}) {
const {
bold = false, bg = WHITE, color = DGREY, align = AlignmentType.LEFT,
fontSize = 18, colspan = 1, width = null, italic = false
} = opts;
const borders = {
top: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
bottom: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
left: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
right: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
};
const cellOpts = {
columnSpan: colspan,
borders,
shading: { fill: bg, type: ShadingType.CLEAR },
verticalAlign: VerticalAlign.CENTER,
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [
new Paragraph({
alignment: align,
spacing: { before: 0, after: 0 },
children: [new TextRun({ text, bold, color, size: fontSize, font: "Arial", italic })]
})
]
};
if (width) cellOpts.width = { size: width, type: WidthType.DXA };
return new TableCell(cellOpts);
}
function hdrCell(text, width = null) {
return cell(text, { bold: true, bg: TBLHDR, color: WHITE, fontSize: 18, width });
}
function makeTable(rows, colWidths = null) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows,
borders: {
insideH: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
insideV: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
}
});
}
// ── Section heading ──────────────────────────────────────────────────────────
function sectionHeading(text, level = HeadingLevel.HEADING_1) {
const isH1 = level === HeadingLevel.HEADING_1;
return new Paragraph({
heading: level,
spacing: { before: isH1 ? 320 : 200, after: isH1 ? 160 : 100 },
children: [new TextRun({
text, bold: true, font: "Arial",
size: isH1 ? 28 : 24,
color: isH1 ? NAVY : GOLD
})]
});
}
function para(text, opts = {}) {
const { bold = false, color = DGREY, size = 20, spacing = 120, italic = false, align = AlignmentType.LEFT } = opts;
return new Paragraph({
alignment: align,
spacing: { before: 40, after: spacing },
children: [new TextRun({ text, bold, color, size, font: "Arial", italic })]
});
}
function hr() {
return new Paragraph({
spacing: { before: 120, after: 120 },
border: { bottom: { style: BorderStyle.SINGLE, size: 3, color: NAVY } },
children: []
});
}
// ════════════════════════════════════════════════════════════════════════════
// DOCUMENT CONTENT
// ════════════════════════════════════════════════════════════════════════════
const doc = new Document({
styles: {
default: {
document: { run: { font: "Arial", size: 20, color: DGREY } }
},
paragraphStyles: [
{
id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 28, bold: true, font: "Arial", color: NAVY },
paragraph: { spacing: { before: 320, after: 160 }, outlineLevel: 0 }
},
{
id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 24, bold: true, font: "Arial", color: GOLD },
paragraph: { spacing: { before: 200, after: 100 }, outlineLevel: 1 }
}
]
},
sections: [{
properties: {
page: {
margin: { top: 1080, bottom: 1080, left: 1080, right: 1080 }
}
},
headers: {
default: new Header({
children: [
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
},
rows: [new TableRow({
children: [
new TableCell({
shading: { fill: NAVY, type: ShadingType.CLEAR },
margins: { top: 100, bottom: 100, left: 200, right: 200 },
children: [new Paragraph({
children: [new TextRun({ text: "USA TRAVEL ITINERARY – VISITOR TRIP PLAN", bold: true, color: WHITE, size: 22, font: "Arial" })]
})]
}),
new TableCell({
shading: { fill: NAVY, type: ShadingType.CLEAR },
margins: { top: 100, bottom: 100, left: 200, right: 200 },
children: [new Paragraph({
alignment: AlignmentType.RIGHT,
children: [new TextRun({ text: "May 19 – July 7, 2026", color: WHITE, size: 20, font: "Arial" })]
})]
})
]
})]
})
]
})
},
footers: {
default: new Footer({
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 60 },
border: { top: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" } },
children: [
new TextRun({ text: "Confidential – For Immigration / Border Control Reference Only | Page ", color: MGREY, size: 16, font: "Arial" }),
new TextRun({ children: [new PageNumber()], color: MGREY, size: 16, font: "Arial" })
]
})
]
})
},
children: [
// ──────────────────────────────────────────────────────────────────────
// COVER / TITLE BLOCK
// ──────────────────────────────────────────────────────────────────────
new Paragraph({ spacing: { before: 280, after: 60 }, children: [] }),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 80 },
children: [new TextRun({ text: "UNITED STATES VISITOR TRIP PLAN", bold: true, size: 48, font: "Arial", color: NAVY })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 60 },
children: [new TextRun({ text: "Tentative Backpacking Itinerary | 19 May 2026 – 07 July 2026 (50 Days)", size: 26, font: "Arial", color: MGREY })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 280 },
children: [new TextRun({ text: "Presented to US Customs & Border Protection for reference purposes", size: 20, font: "Arial", color: MGREY, italic: true })]
}),
hr(),
// ── TRAVELLER DETAILS ─────────────────────────────────────────────────
sectionHeading("1. Traveller Details", HeadingLevel.HEADING_1),
makeTable([
new TableRow({ children: [hdrCell("Field", 3200), hdrCell("Traveller 1", 3000), hdrCell("Traveller 2", 3000)] }),
new TableRow({ children: [
cell("Full Name (as on passport)", { bold: true, bg: LGREY }),
cell("Takshit Vijaykumar Shah", { bold: true }),
cell("Divyam Arunkumar Agrawal", { bold: true })
]}),
new TableRow({ children: [
cell("Nationality", { bold: true, bg: LGREY }),
cell("Indian"),
cell("Indian")
]}),
new TableRow({ children: [
cell("Trip Type", { bold: true, bg: LGREY }),
cell("B-2 Tourist / Visitor"),
cell("B-2 Tourist / Visitor")
]}),
new TableRow({ children: [
cell("Trip Duration", { bold: true, bg: LGREY }),
cell("50 Days (19 May – 07 July 2026)", { colspan: 2 })
]})
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── FLIGHT DETAILS ────────────────────────────────────────────────────
sectionHeading("2. Flight Details", HeadingLevel.HEADING_1),
makeTable([
new TableRow({ children: [hdrCell("", 2400), hdrCell("Arrival Flight (Inbound)", 3000), hdrCell("Departure Flight (Outbound)", 3800)] }),
new TableRow({ children: [
cell("Route", { bold: true, bg: LGREY }),
cell("Mumbai (BOM) → San Francisco (SFO)"),
cell("New York – JFK (JFK) → India (BOM/DEL)")
]}),
new TableRow({ children: [
cell("Flight Number", { bold: true, bg: LGREY }),
cell("[INSERT FLIGHT NO. – e.g. AI 191 / UA 84]"),
cell("[INSERT FLIGHT NO. – e.g. AI 102 / UA 83]")
]}),
new TableRow({ children: [
cell("Date", { bold: true, bg: LGREY }),
cell("19 May 2026"),
cell("~07 July 2026 (flexible ±2 days)")
]}),
new TableRow({ children: [
cell("Departure Time", { bold: true, bg: LGREY }),
cell("[INSERT TIME – e.g. 02:35 IST]"),
cell("[INSERT TIME]")
]}),
new TableRow({ children: [
cell("Arrival Time", { bold: true, bg: LGREY }),
cell("[INSERT TIME – e.g. 07:15 PDT]"),
cell("[INSERT TIME]")
]}),
new TableRow({ children: [
cell("Operated by", { bold: true, bg: LGREY }),
cell("[e.g. Air India / United Airlines]"),
cell("[e.g. Air India / United Airlines]")
]}),
new TableRow({ children: [
cell("Booking Reference", { bold: true, bg: LGREY }),
cell("[INSERT PNR / Booking Ref]"),
cell("[INSERT PNR / Booking Ref]")
]})
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── TRIP OVERVIEW ─────────────────────────────────────────────────────
sectionHeading("3. Trip Overview & Purpose of Visit", HeadingLevel.HEADING_1),
para("Both travellers are visiting the United States of America as tourists for a period of approximately 50 days, commencing 19 May 2026. The primary purpose of travel is leisure tourism, cultural exploration, and sightseeing across multiple states.", { size: 20 }),
para("The itinerary is intentionally flexible — minimum and maximum day ranges are provided for each destination to account for travel preferences, weather, and spontaneous exploration. All travel within the USA will be conducted via domestic flights, interstate buses (Greyhound / FlixBus), and Amtrak trains.", { size: 20 }),
para("Both travellers hold confirmed return/onward flights departing from John F. Kennedy International Airport (JFK), New York, on or around 07 July 2026, and will not overstay their authorised period of admission.", { size: 20, bold: false }),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── ROUTE SUMMARY ─────────────────────────────────────────────────────
sectionHeading("4. Route Summary (West → East)", HeadingLevel.HEADING_1),
makeTable([
new TableRow({ children: [
hdrCell("#", 600), hdrCell("Destination", 3000), hdrCell("State", 2000),
hdrCell("Min Days", 1400), hdrCell("Max Days", 1400), hdrCell("Approx. Dates", 2800)
]}),
new TableRow({ children: [
cell("0", { bg: LGREY, bold: true }),
cell("Mumbai, India → San Francisco (ARRIVAL)", { italic: true }),
cell("—", { italic: true }),
cell("—", { align: AlignmentType.CENTER }),
cell("—", { align: AlignmentType.CENTER }),
cell("19 May 2026", { bold: true })
]}),
new TableRow({ children: [
cell("1", { bold: true }),
cell("San Francisco & Bay Area"),
cell("California (CA)"),
cell("4", { align: AlignmentType.CENTER }),
cell("6", { align: AlignmentType.CENTER }),
cell("May 19 – May 24")
]}),
new TableRow({ children: [
cell("2", { bg: LGREY, bold: true }),
cell("Yosemite National Park", { bg: LGREY }),
cell("California (CA)", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER }),
cell("May 24 – May 27", { bg: LGREY })
]}),
new TableRow({ children: [
cell("3", { bold: true }),
cell("Las Vegas + Desert Day Trips (Grand Canyon, Zion, Red Rock)"),
cell("Nevada (NV)"),
cell("3", { align: AlignmentType.CENTER }),
cell("5", { align: AlignmentType.CENTER }),
cell("May 27 – June 1")
]}),
new TableRow({ children: [
cell("4", { bg: LGREY, bold: true }),
cell("Denver & Rocky Mountains", { bg: LGREY }),
cell("Colorado (CO)", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER }),
cell("June 1 – June 5", { bg: LGREY })
]}),
new TableRow({ children: [
cell("5", { bold: true }),
cell("Chicago (+ optional Milwaukee day trip)"),
cell("Illinois (IL)"),
cell("4", { align: AlignmentType.CENTER }),
cell("6", { align: AlignmentType.CENTER }),
cell("June 5 – June 11")
]}),
new TableRow({ children: [
cell("6", { bg: LGREY, bold: true }),
cell("Nashville (+ optional Memphis day trip)", { bg: LGREY }),
cell("Tennessee (TN)", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER }),
cell("June 11 – June 15", { bg: LGREY })
]}),
new TableRow({ children: [
cell("7", { bold: true }),
cell("New Orleans"),
cell("Louisiana (LA)"),
cell("3", { align: AlignmentType.CENTER }),
cell("5", { align: AlignmentType.CENTER }),
cell("June 15 – June 20")
]}),
new TableRow({ children: [
cell("8", { bg: LGREY, bold: true }),
cell("Houston + San Antonio + Austin, Texas", { bg: LGREY }),
cell("Texas (TX)", { bg: LGREY }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER }),
cell("8", { bg: LGREY, align: AlignmentType.CENTER }),
cell("June 20 – June 28", { bg: LGREY })
]}),
new TableRow({ children: [
cell("9", { bold: true }),
cell("Miami + Florida Keys + Everglades"),
cell("Florida (FL)"),
cell("3", { align: AlignmentType.CENTER }),
cell("6", { align: AlignmentType.CENTER }),
cell("June 28 – July 2")
]}),
new TableRow({ children: [
cell("10", { bg: LGREY, bold: true }),
cell("Washington D.C.", { bg: LGREY }),
cell("D.C.", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER }),
cell("July 2 – July 4", { bg: LGREY })
]}),
new TableRow({ children: [
cell("11", { bold: true }),
cell("Philadelphia"),
cell("Pennsylvania (PA)"),
cell("1", { align: AlignmentType.CENTER }),
cell("3", { align: AlignmentType.CENTER }),
cell("July 4 – July 6")
]}),
new TableRow({ children: [
cell("12", { bg: LGREY, bold: true }),
cell("New York City (Manhattan, Brooklyn, Queens)", { bg: LGREY }),
cell("New York (NY)", { bg: LGREY }),
cell("5", { bg: LGREY, align: AlignmentType.CENTER }),
cell("8", { bg: LGREY, align: AlignmentType.CENTER }),
cell("July 6 → END", { bg: LGREY, bold: true })
]}),
new TableRow({ children: [
cell("—", { bold: true, bg: "E8F0FE" }),
cell("DEPART: JFK → India (Return Flight)", { bold: true, bg: "E8F0FE", italic: true }),
cell("New York (NY)", { bg: "E8F0FE" }),
cell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("~07 July 2026", { bold: true, bg: "E8F0FE" })
]})
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── FLEXIBLE DAY COUNT ────────────────────────────────────────────────
sectionHeading("5. Flexible Day Allocation – Detailed Breakdown", HeadingLevel.HEADING_1),
para("The following table provides a detailed day-by-day allocation across all destinations. Days are shown as minimum (confirmed planned activities) and maximum (extended stay if preferred). The total trip is fixed at 50 days (19 May – 07 July 2026). Unused days from shorter stays are redistributed to subsequent destinations at the travellers' discretion.", { size: 20 }),
new Paragraph({ spacing: { before: 140, after: 0 }, children: [] }),
makeTable([
new TableRow({ children: [
hdrCell("Stop", 400),
hdrCell("Destination", 2600),
hdrCell("Min Days", 1200),
hdrCell("Max Days", 1200),
hdrCell("Planned Activities (First Leg – Confirmed)", 3400),
hdrCell("Optional / Flex Activities", 2800)
]}),
// Arrival row
new TableRow({ children: [
cell("✈", { bold: true, bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("Arrive SFO from Mumbai (BOM)", { bold: true, bg: "E8F0FE" }),
cell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("19 May 2026 – International arrival, customs, hotel check-in", { bg: "E8F0FE", italic: true }),
cell("—", { bg: "E8F0FE" })
]}),
// SF
new TableRow({ children: [
cell("1", { bold: true }),
cell("San Francisco & Bay Area"),
cell("4", { align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Golden Gate Bridge, Alcatraz, Fisherman's Wharf, Golden Gate Park, Mission District murals, Haight-Ashbury, Ferry Building Market"),
cell("Muir Woods, Berkeley/Oakland day trip, Wine Country, Santa Cruz beach")
]}),
// Yosemite
new TableRow({ children: [
cell("2", { bg: LGREY, bold: true }),
cell("Yosemite National Park", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Timed entry permit required. Valley Floor Loop, Bridalveil Fall, Mist Trail / Vernal Falls, Glacier Point views, Mariposa Grove Giant Sequoias", { bg: LGREY }),
cell("Half Dome (lottery permit needed), North Dome alternative, Mono Lake, Bodie Ghost Town en-route to Vegas", { bg: LGREY })
]}),
// Vegas
new TableRow({ children: [
cell("3", { bold: true }),
cell("Las Vegas & Desert Southwest"),
cell("3", { align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("5", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("The Strip (Bellagio, Fremont St.), Red Rock Canyon hike, Hoover Dam, Grand Canyon South Rim day trip (4.5 hrs)"),
cell("Zion National Park, Bryce Canyon, Valley of Fire, Death Valley detour, Lake Mead kayaking")
]}),
// Denver
new TableRow({ children: [
cell("4", { bg: LGREY, bold: true }),
cell("Denver & Rocky Mountains", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("RiNo Art District, Union Station, Rocky Mountain National Park (Bear Lake, Trail Ridge Rd), Red Rocks Amphitheatre", { bg: LGREY }),
cell("Boulder (Flatirons hike, Pearl St.), Estes Park, MLB baseball game, Coors Brewery tour", { bg: LGREY })
]}),
// Chicago
new TableRow({ children: [
cell("5", { bold: true }),
cell("Chicago, Illinois"),
cell("4", { align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Millennium Park (The Bean), Architecture River Cruise, Art Institute, Willis Tower, Wicker Park, Hyde Park, live blues at Buddy Guy's, deep dish pizza"),
cell("Milwaukee day trip (Harley museum, breweries), Pilsen murals, Cubs/White Sox game, Green Mill jazz club")
]}),
// Nashville
new TableRow({ children: [
cell("6", { bg: LGREY, bold: true }),
cell("Nashville, Tennessee", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Lower Broadway honky-tonks (free live music), Ryman Auditorium tour, Johnny Cash Museum, Nashville Hot Chicken (Prince's), 12 South neighbourhood", { bg: LGREY }),
cell("Memphis 1-day detour (Graceland, Beale Street, Sun Studio, BBQ), Franklin Civil War battlefield, East Nashville food scene", { bg: LGREY })
]}),
// NOLA
new TableRow({ children: [
cell("7", { bold: true }),
cell("New Orleans, Louisiana"),
cell("3", { align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("5", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("French Quarter, Frenchmen Street jazz, Garden District walk, Café du Monde beignets, Swamp/Bayou airboat tour, Jackson Square"),
cell("Second Line parade (if scheduled), City Park, St. Louis Cemetery No. 1 tour, Treme neighbourhood, cooking class")
]}),
// Texas
new TableRow({ children: [
cell("8", { bg: LGREY, bold: true }),
cell("Texas (Houston + San Antonio + Austin)", { bg: LGREY }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("8", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Houston: NASA Space Center, Museum District. San Antonio: The Alamo, River Walk, Pearl District. Austin: 6th Street live music, Barton Springs Pool, SoCo", { bg: LGREY }),
cell("Enchanted Rock State Park, Hamilton Pool, Texas BBQ trail, Galveston beach, Marfa (far west TX – artsy desert town)", { bg: LGREY })
]}),
// Florida
new TableRow({ children: [
cell("9", { bold: true }),
cell("Miami + Florida"),
cell("3", { align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Wynwood Walls, South Beach Art Deco, Little Havana, Everglades airboat tour"),
cell("Florida Keys & Key West drive (Overseas Hwy), Fort Lauderdale, Palm Beach, Dry Tortugas snorkeling")
]}),
// DC
new TableRow({ children: [
cell("10", { bg: LGREY, bold: true }),
cell("Washington D.C.", { bg: LGREY }),
cell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("National Mall memorials, Smithsonian Museums (all free), Lincoln Memorial, US Capitol, Georgetown walk, National Museum of African American History & Culture", { bg: LGREY }),
cell("Annapolis MD (historic port town), Mt. Vernon (Washington's estate), U Street jazz bars, Eastern Market weekend flea market", { bg: LGREY })
]}),
// Philly
new TableRow({ children: [
cell("11", { bold: true }),
cell("Philadelphia, Pennsylvania"),
cell("1", { align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("3", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Independence Hall, Liberty Bell, Reading Terminal Market (Philly cheesesteak), Philadelphia Museum of Art (Rocky Steps)"),
cell("Eastern State Penitentiary, South Street, Mural Arts tour, Valley Forge National Park")
]}),
// NYC
new TableRow({ children: [
cell("12", { bg: LGREY, bold: true }),
cell("New York City (final destination)", { bg: LGREY, bold: true }),
cell("5", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: "1B6B2B" }),
cell("8", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
cell("Brooklyn Bridge walk, Central Park, High Line, Met Museum, Statue of Liberty + Ellis Island, 9/11 Memorial, 4th of July Fireworks (July 4), Harlem, DUMBO, Williamsburg", { bg: LGREY }),
cell("Catskills day trip, Coney Island, Hudson Valley, Astoria (Queens food scene), Flushing Chinatown, Governors Island", { bg: LGREY })
]}),
// Depart row
new TableRow({ children: [
cell("✈", { bold: true, bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("DEPART: JFK → India (Return Flight)", { bold: true, bg: "E8F0FE" }),
cell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
cell("~07 July 2026 – Flexible ±2 days based on actual pace", { bg: "E8F0FE", italic: true }),
cell("—", { bg: "E8F0FE" })
]}),
// Total row
new TableRow({ children: [
cell("TOTAL", { bold: true, bg: NAVY, color: WHITE }),
cell("12 Destinations | 10 States + D.C.", { bold: true, bg: NAVY, color: WHITE }),
cell("39", { bold: true, bg: NAVY, color: WHITE, align: AlignmentType.CENTER }),
cell("63*", { bold: true, bg: NAVY, color: WHITE, align: AlignmentType.CENTER }),
cell("*Maximum days shown are theoretical upper bounds. Trip is capped at 50 days.", { bg: NAVY, color: WHITE, italic: true, colspan: 2 })
]})
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── TRAVEL NOTES ──────────────────────────────────────────────────────
sectionHeading("6. Internal Travel – Transportation Plan", HeadingLevel.HEADING_1),
makeTable([
new TableRow({ children: [hdrCell("Leg", 2400), hdrCell("Mode", 2000), hdrCell("Approx. Cost", 1600), hdrCell("Est. Duration", 1600), hdrCell("Notes", 3000)] }),
new TableRow({ children: [
cell("SFO → Yosemite", { bg: LGREY }), cell("YARTS Bus + Amtrak", { bg: LGREY }),
cell("~$30–45", { bg: LGREY }), cell("~4 hrs", { bg: LGREY }), cell("No car needed", { bg: LGREY })
]}),
new TableRow({ children: [
cell("Yosemite → Las Vegas"), cell("Rental car / Bus + Flight"),
cell("~$60–90"), cell("~6–8 hrs"), cell("Drive via US-395 is most scenic")
]}),
new TableRow({ children: [
cell("Las Vegas → Denver", { bg: LGREY }), cell("Flight / Overnight Bus", { bg: LGREY }),
cell("~$50–80", { bg: LGREY }), cell("~1–12 hrs", { bg: LGREY }), cell("FlixBus overnight saves accommodation", { bg: LGREY })
]}),
new TableRow({ children: [
cell("Denver → Chicago"), cell("Amtrak California Zephyr (RECOMMENDED)"),
cell("~$60–100"), cell("~18 hrs"), cell("One of the great US train journeys, overnight")
]}),
new TableRow({ children: [
cell("Chicago → Nashville", { bg: LGREY }), cell("Greyhound / FlixBus / Flight", { bg: LGREY }),
cell("~$40–80", { bg: LGREY }), cell("~8–9 hrs", { bg: LGREY }), cell("Overnight bus option available", { bg: LGREY })
]}),
new TableRow({ children: [
cell("Nashville → New Orleans"), cell("Greyhound / Flight"),
cell("~$40–70"), cell("~8 hrs"), cell("Overnight bus saves a hostel night")
]}),
new TableRow({ children: [
cell("New Orleans → Texas", { bg: LGREY }), cell("Amtrak Sunset Limited / Bus", { bg: LGREY }),
cell("~$40–60", { bg: LGREY }), cell("~5–6 hrs", { bg: LGREY }), cell("Train arrives Houston Union Station", { bg: LGREY })
]}),
new TableRow({ children: [
cell("Within Texas (cities)"), cell("Greyhound / Megabus"),
cell("~$15–30 per leg"), cell("2–3 hrs each"), cell("Houston→San Antonio→Austin loop")
]}),
new TableRow({ children: [
cell("Austin → Miami", { bg: LGREY }), cell("Budget Flight (Spirit/Frontier)", { bg: LGREY }),
cell("~$70–120", { bg: LGREY }), cell("~2.5 hrs", { bg: LGREY }), cell("Book 2–3 weeks ahead on Google Flights", { bg: LGREY })
]}),
new TableRow({ children: [
cell("Miami → Washington D.C."), cell("Budget Flight"),
cell("~$60–100"), cell("~3 hrs"), cell("Multiple daily flights, very flexible")
]}),
new TableRow({ children: [
cell("D.C. → Philadelphia", { bg: LGREY }), cell("Amtrak Northeast Regional", { bg: LGREY }),
cell("~$25–40", { bg: LGREY }), cell("~2 hrs", { bg: LGREY }), cell("Runs every hour, very convenient", { bg: LGREY })
]}),
new TableRow({ children: [
cell("Philadelphia → New York City"), cell("Amtrak / FlixBus"),
cell("~$15–35"), cell("~1.5 hrs"), cell("Amtrak to Penn Station, very frequent")
]})
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── ACCOMMODATION STRATEGY ────────────────────────────────────────────
sectionHeading("7. Accommodation Strategy", HeadingLevel.HEADING_1),
para("Accommodation will be booked via Hostelworld, Booking.com, and Airbnb. Both travellers will primarily stay in budget hostels (private or mixed dormitory rooms) at an estimated cost of USD 30–60 per night, per person. Specific hostel confirmations for the first leg (San Francisco through Chicago) will be available on entry.", { size: 20 }),
makeTable([
new TableRow({ children: [hdrCell("City", 3000), hdrCell("Accommodation Type", 3000), hdrCell("Est. Cost / Night", 2000), hdrCell("Platform", 3200)] }),
new TableRow({ children: [cell("San Francisco", { bg: LGREY }), cell("Hostel – Mission/Haight area", { bg: LGREY }), cell("$35–55", { bg: LGREY }), cell("Hostelworld / Booking.com", { bg: LGREY })] }),
new TableRow({ children: [cell("Yosemite"), cell("Hostel / Campground (Valley)"), cell("$25–50"), cell("Recreation.gov / Hostelworld")] }),
new TableRow({ children: [cell("Las Vegas", { bg: LGREY }), cell("Hostel – near Fremont St.", { bg: LGREY }), cell("$20–40", { bg: LGREY }), cell("Hostelworld", { bg: LGREY })] }),
new TableRow({ children: [cell("Denver"), cell("Hostel – Capitol Hill / RiNo"), cell("$30–50"), cell("Hostelworld / Airbnb")] }),
new TableRow({ children: [cell("Chicago", { bg: LGREY }), cell("Hostel – Wicker Park / Loop", { bg: LGREY }), cell("$30–50", { bg: LGREY }), cell("Hostelworld", { bg: LGREY })] }),
new TableRow({ children: [cell("Nashville"), cell("Hostel – Downtown"), cell("$30–50"), cell("Hostelworld / Booking.com")] }),
new TableRow({ children: [cell("New Orleans", { bg: LGREY }), cell("Hostel – French Quarter / Marigny", { bg: LGREY }), cell("$30–50", { bg: LGREY }), cell("Hostelworld", { bg: LGREY })] }),
new TableRow({ children: [cell("Texas (3 cities)"), cell("Hostel / Budget Airbnb"), cell("$30–55"), cell("Hostelworld / Airbnb")] }),
new TableRow({ children: [cell("Miami", { bg: LGREY }), cell("Hostel – South Beach / Wynwood", { bg: LGREY }), cell("$40–60", { bg: LGREY }), cell("Hostelworld", { bg: LGREY })] }),
new TableRow({ children: [cell("Washington D.C."), cell("Hostel – Capitol Hill / Columbia Heights"), cell("$35–55"), cell("Hostelworld")] }),
new TableRow({ children: [cell("Philadelphia", { bg: LGREY }), cell("Hostel – Old City", { bg: LGREY }), cell("$30–50", { bg: LGREY }), cell("Hostelworld / Booking.com", { bg: LGREY })] }),
new TableRow({ children: [cell("New York City"), cell("Hostel – Brooklyn / Manhattan"), cell("$45–70"), cell("Hostelworld / Airbnb")] })
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
// ── DECLARATION ───────────────────────────────────────────────────────
sectionHeading("8. Declaration", HeadingLevel.HEADING_1),
para("We, the undersigned, declare that the information provided in this document is true and accurate to the best of our knowledge. This itinerary is tentative and may be adjusted during travel based on personal preference, weather, or other factors. We confirm that:", { size: 20 }),
new Paragraph({
spacing: { before: 80, after: 80 },
numbering: { reference: "decl-list", level: 0 },
children: [new TextRun({ text: "We hold valid Indian passports and US B-2 visitor visas.", font: "Arial", size: 20, color: DGREY })]
}),
new Paragraph({
spacing: { before: 80, after: 80 },
numbering: { reference: "decl-list", level: 0 },
children: [new TextRun({ text: "We have confirmed return/onward flights departing from JFK, New York on or around 07 July 2026.", font: "Arial", size: 20, color: DGREY })]
}),
new Paragraph({
spacing: { before: 80, after: 80 },
numbering: { reference: "decl-list", level: 0 },
children: [new TextRun({ text: "We will not undertake any paid employment during our stay in the United States.", font: "Arial", size: 20, color: DGREY })]
}),
new Paragraph({
spacing: { before: 80, after: 80 },
numbering: { reference: "decl-list", level: 0 },
children: [new TextRun({ text: "We have sufficient funds to support ourselves throughout the duration of our visit.", font: "Arial", size: 20, color: DGREY })]
}),
new Paragraph({
spacing: { before: 80, after: 80 },
numbering: { reference: "decl-list", level: 0 },
children: [new TextRun({ text: "We will comply with all conditions of admission and US immigration laws.", font: "Arial", size: 20, color: DGREY })]
}),
new Paragraph({ spacing: { before: 280, after: 0 }, children: [] }),
// ── SIGNATURE BLOCK ───────────────────────────────────────────────────
makeTable([
new TableRow({ children: [
new TableCell({
borders: {
top: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
bottom: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
left: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
right: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
},
margins: { top: 200, bottom: 200, left: 200, right: 200 },
children: [
new Paragraph({ children: [new TextRun({ text: "Traveller 1", bold: true, size: 20, font: "Arial", color: NAVY })] }),
new Paragraph({ spacing: { before: 160, after: 0 }, children: [new TextRun({ text: "Name: Takshit Vijaykumar Shah", size: 20, font: "Arial", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Passport No.: ____________________", size: 20, font: "Arial", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Signature: ____________________", size: 20, font: "Arial", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Date: ____________________", size: 20, font: "Arial", color: DGREY })] }),
]
}),
new TableCell({
borders: {
top: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
bottom: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
left: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
right: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
},
margins: { top: 200, bottom: 200, left: 200, right: 200 },
children: [
new Paragraph({ children: [new TextRun({ text: "Traveller 2", bold: true, size: 20, font: "Arial", color: NAVY })] }),
new Paragraph({ spacing: { before: 160, after: 0 }, children: [new TextRun({ text: "Name: Divyam Arunkumar Agrawal", size: 20, font: "Arial", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Passport No.: ____________________", size: 20, font: "Arial", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Signature: ____________________", size: 20, font: "Arial", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Date: ____________________", size: 20, font: "Arial", color: DGREY })] }),
]
})
]])
]),
new Paragraph({ spacing: { before: 200, after: 0 }, children: [] }),
para("Document prepared: 16 May 2026 | This is a voluntary trip plan document provided for immigration reference only.", { size: 16, color: MGREY, italic: true, align: AlignmentType.CENTER }),
] // end children
}], // end sections
numbering: {
config: [
{
reference: "decl-list",
levels: [{
level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } }
}]
}
]
}
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/usa-itinerary/USA_Travel_Itinerary_2026.docx", buffer);
console.log("✅ Document created successfully.");
}).catch(err => {
console.error("❌ Error:", err);
process.exit(1);
});
cd /home/daytona/workspace/usa-itinerary && node build.js 2>&1
~/usa-itinerary/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/usa-itinerary/build.js'
cd /home/daytona/workspace/usa-itinerary && node build.js 2>&1
~/usa-itinerary/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/usa-itinerary/build.js'
~/usa-itinerary/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/usa-itinerary/build.js'
cd /home/daytona/workspace/usa-itinerary && node build.js 2>&1
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/usa-itinerary/USA_Travel_Itinerary_2026.docx 2>&1
ls -lh /home/daytona/workspace/usa-itinerary/ && python3 -c "import zipfile; z = zipfile.ZipFile('/home/daytona/workspace/usa-itinerary/USA_Travel_Itinerary_2026.docx'); print('Valid ZIP/DOCX. Files:', z.namelist()[:8])"
USA Travel Itinerary 2026
Word Document · DOCX
| Section | What it contains |
|---|---|
| Header | Navy banner — "USA TRAVEL ITINERARY – VISITOR TRIP PLAN" with dates on every page |
| Footer | "Confidential – For Immigration / Border Control Reference Only |
| §1 Traveller Details | Both names (Takshit Vijaykumar Shah & Divyam Arunkumar Agrawal), nationality, visa type |
| §2 Flight Details | Inbound BOM→SFO (19 May) and outbound JFK→India (~7 July) with placeholder fields for flight number, time, PNR |
| §3 Purpose of Visit | Formal paragraph explaining the B-2 tourist trip, flexible nature, and confirmed return flight |
| §4 Route Summary | Clean table — 12 stops, states covered, min/max days, approximate date ranges |
| §5 Flexible Day Breakdown | Expanded table with confirmed first-leg activities vs optional/flex activities for every city |
| §6 Transportation Plan | Every inter-city leg with mode, cost, duration, and notes |
| §7 Accommodation Strategy | City-by-city table with hostel type, cost range, booking platform |
| §8 Declaration + Signatures | Formal declaration of compliance with US immigration law, with signature/passport/date fields for both travellers |
The document is not opening properly the tables are squeezed
~/usa-itinerary/build2.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType,
VerticalAlign, Header, Footer, LevelFormat, PageOrientation, SimpleField
} = require('docx');
const fs = require('fs');
// ── Colours ──────────────────────────────────────────────────────────────────
const NAVY = "1B3A6B";
const GOLD = "B8860B";
const LGREY = "F4F6FA";
const WHITE = "FFFFFF";
const DGREY = "2D2D2D";
const MGREY = "777777";
const GREEN = "1A6B35";
// ── Page dimensions (landscape A4 in TWIPs, 1 inch = 1440 TWIPs) ─────────────
// A4 landscape: 16838 wide x 11906 tall
// Margins: 720 each side (0.5 inch) → content width = 16838 - 1440 = 15398
const CONTENT_W = 15398;
// ── Helpers ───────────────────────────────────────────────────────────────────
function tCell(text, opts = {}) {
const {
bold = false, bg = WHITE, color = DGREY, align = AlignmentType.LEFT,
sz = 17, italic = false, vAlign = VerticalAlign.CENTER, w = null, colspan = 1
} = opts;
const tcOpts = {
columnSpan: colspan,
verticalAlign: vAlign,
shading: { fill: bg, type: ShadingType.CLEAR },
margins: { top: 100, bottom: 100, left: 140, right: 140 },
borders: {
top: { style: BorderStyle.SINGLE, size: 2, color: "D0D5DD" },
bottom: { style: BorderStyle.SINGLE, size: 2, color: "D0D5DD" },
left: { style: BorderStyle.SINGLE, size: 2, color: "D0D5DD" },
right: { style: BorderStyle.SINGLE, size: 2, color: "D0D5DD" },
},
children: [new Paragraph({
alignment: align,
spacing: { before: 0, after: 0, line: 276, lineRule: "auto" },
children: [new TextRun({ text: String(text), bold, color, size: sz, font: "Calibri", italic })]
})]
};
if (w) tcOpts.width = { size: w, type: WidthType.DXA };
return new TableCell(tcOpts);
}
function hCell(text, w = null) {
return tCell(text, { bold: true, bg: NAVY, color: WHITE, sz: 18, w });
}
function altCell(text, opts = {}) {
return tCell(text, { bg: LGREY, ...opts });
}
function mkTable(rows) {
return new Table({
width: { size: CONTENT_W, type: WidthType.DXA },
rows,
borders: {
insideH: { style: BorderStyle.SINGLE, size: 2, color: "D0D5DD" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "D0D5DD" },
}
});
}
function h1(text) {
return new Paragraph({
spacing: { before: 340, after: 140 },
children: [new TextRun({ text, bold: true, size: 30, font: "Calibri", color: NAVY })]
});
}
function h2(text) {
return new Paragraph({
spacing: { before: 200, after: 100 },
children: [new TextRun({ text, bold: true, size: 24, font: "Calibri", color: GOLD })]
});
}
function p(text, opts = {}) {
const { sz = 19, color = DGREY, bold = false, italic = false, align = AlignmentType.LEFT, spacingAfter = 100 } = opts;
return new Paragraph({
alignment: align,
spacing: { before: 40, after: spacingAfter },
children: [new TextRun({ text, size: sz, color, bold, italic, font: "Calibri" })]
});
}
function spacer(n = 1) {
return new Paragraph({ spacing: { before: 0, after: n * 160 }, children: [] });
}
function divider() {
return new Paragraph({
spacing: { before: 80, after: 80 },
border: { bottom: { style: BorderStyle.SINGLE, size: 4, color: NAVY } },
children: []
});
}
// ════════════════════════════════════════════════════════════════════════════
// SECTIONS
// ════════════════════════════════════════════════════════════════════════════
const doc = new Document({
styles: {
default: { document: { run: { font: "Calibri", size: 19, color: DGREY } } }
},
numbering: {
config: [{
reference: "decl",
levels: [{
level: 0, format: LevelFormat.DECIMAL, text: "%1.",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } }
}]
}]
},
sections: [{
properties: {
page: {
// Landscape A4: pass portrait dims, set orientation
size: { width: 11906, height: 16838, orientation: PageOrientation.LANDSCAPE },
margin: { top: 720, bottom: 720, left: 720, right: 720 }
}
},
headers: {
default: new Header({
children: [
new Table({
width: { size: CONTENT_W, type: WidthType.DXA },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
},
rows: [new TableRow({ children: [
new TableCell({
width: { size: 10000, type: WidthType.DXA },
shading: { fill: NAVY, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 160, right: 160 },
borders: { top:{style:BorderStyle.NONE},bottom:{style:BorderStyle.NONE},left:{style:BorderStyle.NONE},right:{style:BorderStyle.NONE} },
children: [new Paragraph({ children: [new TextRun({ text: " USA VISITOR TRIP PLAN | Immigration Reference Document", bold: true, color: WHITE, size: 20, font: "Calibri" })] })]
}),
new TableCell({
width: { size: 5398, type: WidthType.DXA },
shading: { fill: NAVY, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 160, right: 160 },
borders: { top:{style:BorderStyle.NONE},bottom:{style:BorderStyle.NONE},left:{style:BorderStyle.NONE},right:{style:BorderStyle.NONE} },
children: [new Paragraph({ alignment: AlignmentType.RIGHT, children: [new TextRun({ text: "19 May 2026 – 07 July 2026 (50 Days) ", color: WHITE, size: 19, font: "Calibri" })] })]
})
]})]
})
]
})
},
footers: {
default: new Footer({
children: [new Paragraph({
alignment: AlignmentType.CENTER,
border: { top: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC" } },
spacing: { before: 60 },
children: [
new TextRun({ text: "Confidential – For Immigration / Border Control Reference Only | Page ", color: MGREY, size: 15, font: "Calibri" }),
new SimpleField("PAGE", { color: MGREY, size: 15 })
]
})]
})
},
children: [
// ─── TITLE BLOCK ──────────────────────────────────────────────────────
spacer(1),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 60 },
children: [new TextRun({ text: "UNITED STATES VISITOR TRIP PLAN", bold: true, size: 52, font: "Calibri", color: NAVY })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 60 },
children: [new TextRun({ text: "Tentative 50-Day Backpacking Itinerary | 19 May – 07 July 2026", size: 26, font: "Calibri", color: MGREY })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 200 },
children: [new TextRun({ text: "Presented to US Customs & Border Protection for reference purposes", size: 20, font: "Calibri", color: MGREY, italic: true })]
}),
divider(),
// ─── §1 TRAVELLER DETAILS ─────────────────────────────────────────────
h1("1. Traveller Details"),
mkTable([
new TableRow({ children: [
hCell("Field", 3800), hCell("Traveller 1", 5700), hCell("Traveller 2", 5700)
]}),
new TableRow({ children: [
tCell("Full Name (as on passport)", { bold: true, bg: LGREY, w: 3800 }),
tCell("TAKSHIT VIJAYKUMAR SHAH", { bold: true, w: 5700 }),
tCell("DIVYAM ARUNKUMAR AGRAWAL", { bold: true, w: 5700 })
]}),
new TableRow({ children: [
tCell("Nationality", { bold: true, bg: LGREY }),
tCell("Indian"),
tCell("Indian")
]}),
new TableRow({ children: [
tCell("Passport No.", { bold: true, bg: LGREY }),
tCell("[INSERT PASSPORT NUMBER]"),
tCell("[INSERT PASSPORT NUMBER]")
]}),
new TableRow({ children: [
tCell("Visa Category", { bold: true, bg: LGREY }),
tCell("B-2 Tourist / Visitor", { colspan: 2 })
]}),
new TableRow({ children: [
tCell("Trip Duration", { bold: true, bg: LGREY }),
tCell("50 Days (19 May 2026 – 07 July 2026)", { colspan: 2 })
]})
]),
spacer(1),
// ─── §2 FLIGHT DETAILS ────────────────────────────────────────────────
h1("2. Flight Details"),
mkTable([
new TableRow({ children: [
hCell("", 3000),
hCell("INBOUND FLIGHT (Arrival into USA)", 6100),
hCell("OUTBOUND FLIGHT (Departure from USA)", 6100)
]}),
new TableRow({ children: [
tCell("Route", { bold: true, bg: LGREY }),
tCell("Mumbai, India (BOM) → San Francisco, USA (SFO)"),
tCell("New York – JFK (JFK) → India (BOM / DEL)")
]}),
new TableRow({ children: [
tCell("Flight Number", { bold: true, bg: LGREY }),
tCell("[INSERT FLIGHT NO. e.g. AI 191 / UA 84]"),
tCell("[INSERT FLIGHT NO. e.g. AI 102 / UA 83]")
]}),
new TableRow({ children: [
tCell("Date", { bold: true, bg: LGREY }),
tCell("19 May 2026"),
tCell("~07 July 2026 (flexible ± 2 days)")
]}),
new TableRow({ children: [
tCell("Departure Time", { bold: true, bg: LGREY }),
tCell("[INSERT TIME – e.g. 02:35 IST]"),
tCell("[INSERT TIME]")
]}),
new TableRow({ children: [
tCell("Arrival Time", { bold: true, bg: LGREY }),
tCell("[INSERT TIME – e.g. 07:15 PDT]"),
tCell("[INSERT TIME]")
]}),
new TableRow({ children: [
tCell("Airline", { bold: true, bg: LGREY }),
tCell("[e.g. Air India / United Airlines]"),
tCell("[e.g. Air India / United Airlines]")
]}),
new TableRow({ children: [
tCell("Booking Reference (PNR)", { bold: true, bg: LGREY }),
tCell("[INSERT PNR]"),
tCell("[INSERT PNR]")
]})
]),
spacer(1),
// ─── §3 PURPOSE ───────────────────────────────────────────────────────
h1("3. Purpose of Visit"),
p("Both travellers are visiting the United States as tourists for approximately 50 days commencing 19 May 2026. The purpose of travel is leisure tourism: cultural exploration, sightseeing, and visiting national parks across multiple states. All travel within the USA will be by domestic flights, interstate buses (Greyhound / FlixBus), and Amtrak trains. Both travellers hold confirmed onward/return flights departing JFK on or around 07 July 2026 and will not overstay their authorised period of admission."),
spacer(1),
// ─── §4 ROUTE SUMMARY ─────────────────────────────────────────────────
h1("4. Route Summary (West → East)"),
mkTable([
new TableRow({ children: [
hCell("#", 800),
hCell("Destination & State", 4400),
hCell("Min Days", 1600),
hCell("Max Days", 1600),
hCell("Approx. Dates", 2800),
hCell("Status", 3600)
]}),
// Arrive
new TableRow({ children: [
tCell("✈", { bold: true, bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("ARRIVE SFO – Mumbai (BOM) → San Francisco (SFO)", { bold: true, bg: "E8F0FE" }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("19 May 2026", { bold: true, bg: "E8F0FE" }),
tCell("CONFIRMED ARRIVAL", { bold: true, bg: "E8F0FE", color: GREEN })
]}),
// 1 SF
new TableRow({ children: [
tCell("1", { bold: true }),
tCell("San Francisco & Bay Area, California (CA)"),
tCell("4", { align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("May 19 – May 24"),
tCell("PLANNED (first leg)", { bold: true, color: GREEN })
]}),
// 2 Yosemite
new TableRow({ children: [
tCell("2", { bold: true, bg: LGREY }),
altCell("Yosemite National Park, California (CA)"),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
altCell("May 24 – May 27"),
tCell("PLANNED (first leg)", { bg: LGREY, bold: true, color: GREEN })
]}),
// 3 Vegas
new TableRow({ children: [
tCell("3", { bold: true }),
tCell("Las Vegas + Desert Day Trips (Grand Canyon, Zion, Red Rock), Nevada (NV)"),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("5", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("May 27 – June 1"),
tCell("PLANNED (first leg)", { bold: true, color: GREEN })
]}),
// 4 Denver
new TableRow({ children: [
tCell("4", { bold: true, bg: LGREY }),
altCell("Denver & Rocky Mountain National Park, Colorado (CO)"),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
altCell("June 1 – June 5"),
tCell("PLANNED (first leg)", { bg: LGREY, bold: true, color: GREEN })
]}),
// 5 Chicago
new TableRow({ children: [
tCell("5", { bold: true }),
tCell("Chicago (+ optional Milwaukee day trip), Illinois (IL)"),
tCell("4", { align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("June 5 – June 11"),
tCell("PLANNED (first leg)", { bold: true, color: GREEN })
]}),
// 6 Nashville
new TableRow({ children: [
tCell("6", { bold: true, bg: LGREY }),
altCell("Nashville (+ optional Memphis detour), Tennessee (TN)"),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
altCell("June 11 – June 15"),
tCell("Tentative / Flexible", { bg: LGREY, italic: true, color: MGREY })
]}),
// 7 NOLA
new TableRow({ children: [
tCell("7", { bold: true }),
tCell("New Orleans, Louisiana (LA)"),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("5", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("June 15 – June 20"),
tCell("Tentative / Flexible", { italic: true, color: MGREY })
]}),
// 8 Texas
new TableRow({ children: [
tCell("8", { bold: true, bg: LGREY }),
altCell("Texas – Houston + San Antonio + Austin (TX)"),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("8", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
altCell("June 20 – June 28"),
tCell("Tentative / Flexible", { bg: LGREY, italic: true, color: MGREY })
]}),
// 9 Florida
new TableRow({ children: [
tCell("9", { bold: true }),
tCell("Miami + Florida Keys + Everglades, Florida (FL)"),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("June 28 – July 2"),
tCell("Tentative / Flexible", { italic: true, color: MGREY })
]}),
// 10 DC
new TableRow({ children: [
tCell("10", { bold: true, bg: LGREY }),
altCell("Washington D.C."),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
altCell("July 2 – July 4"),
tCell("Tentative / Flexible", { bg: LGREY, italic: true, color: MGREY })
]}),
// 11 Philly
new TableRow({ children: [
tCell("11", { bold: true }),
tCell("Philadelphia, Pennsylvania (PA)"),
tCell("1", { align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("July 4 – July 6"),
tCell("Tentative / Flexible", { italic: true, color: MGREY })
]}),
// 12 NYC
new TableRow({ children: [
tCell("12", { bold: true, bg: LGREY }),
altCell("New York City (Manhattan · Brooklyn · Queens), New York (NY)"),
tCell("5", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("8", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
altCell("July 6 – July 7+"),
tCell("Tentative / Flexible", { bg: LGREY, italic: true, color: MGREY })
]}),
// Depart
new TableRow({ children: [
tCell("✈", { bold: true, bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("DEPART JFK → India (Return Flight)", { bold: true, bg: "E8F0FE" }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("~07 July 2026 (± 2 days)", { bold: true, bg: "E8F0FE" }),
tCell("CONFIRMED DEPARTURE", { bold: true, bg: "E8F0FE", color: GREEN })
]}),
// Total
new TableRow({ children: [
tCell("TOTAL", { bold: true, bg: NAVY, color: WHITE }),
tCell("12 Destinations | 10 States + D.C.", { bold: true, bg: NAVY, color: WHITE }),
tCell("35 min", { bold: true, bg: NAVY, color: WHITE, align: AlignmentType.CENTER }),
tCell("59 max", { bold: true, bg: NAVY, color: WHITE, align: AlignmentType.CENTER }),
tCell("Trip cap: 50 days", { bg: NAVY, color: WHITE, italic: true, colspan: 2 })
]})
]),
spacer(1),
// ─── §5 DETAILED FLEXIBLE BREAKDOWN ─────────────────────────────────
h1("5. Detailed Flexible Day Breakdown"),
p("Green min-day counts represent confirmed activities for the first leg of the trip (Stops 1–5). Amber max-day counts indicate flexible upper bounds. The final right column lists optional activities that can be added if the travellers choose an extended stay.", { sz: 17, italic: true, color: MGREY }),
spacer(1),
mkTable([
new TableRow({ children: [
hCell("Stop", 900),
hCell("Destination", 2800),
hCell("Min", 900),
hCell("Max", 900),
hCell("Confirmed / Planned Activities (First Leg – Stops 1–5)", 5000),
hCell("Optional / Flex Add-ons", 4700)
]}),
// ARRIVAL
new TableRow({ children: [
tCell("✈", { bold: true, bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("ARRIVE SFO from Mumbai", { bold: true, bg: "E8F0FE" }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("19 May 2026 – International arrival, customs clearance, accommodation check-in, rest", { bg: "E8F0FE", italic: true }),
tCell("—", { bg: "E8F0FE" })
]}),
// 1 SF
new TableRow({ children: [
tCell("1", { bold: true }),
tCell("San Francisco & Bay Area"),
tCell("4", { align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Golden Gate Bridge walk · Alcatraz Island tour · Fisherman's Wharf · Ferry Building Market · Golden Gate Park (de Young Museum) · Mission District murals · Haight-Ashbury · North Beach / City Lights Bookstore"),
tCell("Muir Woods + Sausalito ferry day trip · Berkeley / Oakland · Napa Valley wine country · Santa Cruz beach boardwalk · Lands End Trail & Sutro Baths")
]}),
// 2 Yosemite
new TableRow({ children: [
tCell("2", { bold: true, bg: LGREY }),
altCell("Yosemite National Park"),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Timed entry permit (recreation.gov) · Valley Floor Loop · Bridalveil Fall · Mist Trail / Vernal & Nevada Falls · Glacier Point panorama · Mariposa Grove giant sequoias", { bg: LGREY }),
tCell("Half Dome lottery permit hike · North Dome (permit-free alternative) · Mono Lake stop · Bodie Ghost Town en route to Vegas", { bg: LGREY })
]}),
// 3 Vegas
new TableRow({ children: [
tCell("3", { bold: true }),
tCell("Las Vegas & Desert Southwest"),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("5", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("The Strip (Bellagio fountains, Caesars) · Fremont Street Experience light show · Red Rock Canyon morning hike · Hoover Dam + Lake Mead · Grand Canyon South Rim day trip"),
tCell("Zion National Park (The Narrows hike) · Bryce Canyon hoodoos at sunrise · Valley of Fire State Park · Death Valley detour · Lake Mead kayaking")
]}),
// 4 Denver
new TableRow({ children: [
tCell("4", { bold: true, bg: LGREY }),
altCell("Denver & Rocky Mountains"),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("RiNo Art District + brewery row · Union Station · Rocky Mountain National Park (Bear Lake, Trail Ridge Rd, elk meadows) · Red Rocks Amphitheatre hike", { bg: LGREY }),
tCell("Boulder: Flatirons hike + Pearl Street · Estes Park mountain town · Colorado State Capitol · Coors Brewery tour · MLB game at Coors Field", { bg: LGREY })
]}),
// 5 Chicago
new TableRow({ children: [
tCell("5", { bold: true }),
tCell("Chicago, Illinois"),
tCell("4", { align: AlignmentType.CENTER, bold: true, color: GREEN }),
tCell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Millennium Park (The Bean) · Architecture River Cruise · Art Institute of Chicago · Willis Tower Skydeck · Wicker Park & Logan Square · Hyde Park / Obama neighbourhood · Buddy Guy's blues club · Deep dish pizza"),
tCell("Milwaukee day trip (Harley-Davidson Museum, breweries) · Pilsen murals · Cubs / White Sox baseball game · Green Mill jazz club · Museum of Science & Industry")
]}),
// 6 Nashville
new TableRow({ children: [
tCell("6", { bold: true, bg: LGREY }),
altCell("Nashville, Tennessee"),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Lower Broadway honky-tonks (free live music all day) · Ryman Auditorium tour · Johnny Cash Museum · Nashville Hot Chicken (Prince's) · 12 South neighbourhood", { bg: LGREY }),
tCell("Memphis 1-day detour: Graceland, Beale Street, Sun Studio, Rendezvous BBQ · Franklin Civil War battlefield · East Nashville food & bar scene", { bg: LGREY })
]}),
// 7 NOLA
new TableRow({ children: [
tCell("7", { bold: true }),
tCell("New Orleans, Louisiana"),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("5", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("French Quarter & Jackson Square · Frenchmen Street live jazz · Garden District walking tour · Café du Monde beignets · Bayou airboat tour (alligators, cypress)"),
tCell("Second Line brass band parade (check local schedule) · City Park + NOMA · St. Louis Cemetery No. 1 guided tour · Treme neighbourhood · Creole cooking class")
]}),
// 8 Texas
new TableRow({ children: [
tCell("8", { bold: true, bg: LGREY }),
altCell("Texas (Houston · San Antonio · Austin)"),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("8", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Houston: NASA Space Center + Museum District. San Antonio: The Alamo + River Walk + Pearl District. Austin: 6th Street live music + Barton Springs Pool + South Congress (SoCo)", { bg: LGREY }),
tCell("Enchanted Rock State Park hike · Hamilton Pool Preserve (book timed entry) · Texas BBQ trail · Galveston beach · Marfa (far-west TX art desert town)", { bg: LGREY })
]}),
// 9 Florida
new TableRow({ children: [
tCell("9", { bold: true }),
tCell("Miami + Florida"),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("6", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Wynwood Walls street art · South Beach Art Deco District · Little Havana (Calle Ocho) · Everglades National Park airboat tour"),
tCell("Florida Keys & Key West (Overseas Hwy drive, Hemingway Home, Mallory Square sunset) · Fort Lauderdale · Palm Beach · Dry Tortugas snorkeling by ferry")
]}),
// 10 DC
new TableRow({ children: [
tCell("10", { bold: true, bg: LGREY }),
altCell("Washington D.C."),
tCell("2", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("4", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("National Mall memorials (Lincoln, Vietnam, WWII) · All Smithsonian Museums (free) · US Capitol · National Museum of African American History & Culture (book ahead)", { bg: LGREY }),
tCell("Georgetown canal walk + boutiques · U Street jazz bars · Eastern Market weekend flea market · Annapolis, MD day trip · Mount Vernon (Washington's estate)", { bg: LGREY })
]}),
// 11 Philly
new TableRow({ children: [
tCell("11", { bold: true }),
tCell("Philadelphia, Pennsylvania"),
tCell("1", { align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("3", { align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Independence Hall + Liberty Bell (free) · Reading Terminal Market + Philly cheesesteak · Philadelphia Museum of Art (Rocky Steps)"),
tCell("Eastern State Penitentiary · South Street eclectic district · Mural Arts Philadelphia tour · Valley Forge National Park")
]}),
// 12 NYC
new TableRow({ children: [
tCell("12", { bold: true, bg: LGREY }),
altCell("New York City (Final Destination)"),
tCell("5", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: MGREY }),
tCell("8", { bg: LGREY, align: AlignmentType.CENTER, bold: true, color: GOLD }),
tCell("Brooklyn Bridge sunrise walk · Central Park · High Line + Chelsea Market · Met Museum · Statue of Liberty + Ellis Island · 9/11 Memorial · 4th July Macy's Fireworks · Harlem · DUMBO · Williamsburg", { bg: LGREY }),
tCell("Catskills day trip (hiking, swimming holes) · Coney Island beach + boardwalk · Hudson Valley · Astoria Queens food scene · Flushing Chinatown · Governors Island · Bronx: Hip Hop Museum", { bg: LGREY })
]}),
// DEPART
new TableRow({ children: [
tCell("✈", { bold: true, bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("DEPART JFK → India", { bold: true, bg: "E8F0FE" }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("—", { bg: "E8F0FE", align: AlignmentType.CENTER }),
tCell("~07 July 2026 (flexible ± 2 days based on pace)", { bg: "E8F0FE", italic: true }),
tCell("—", { bg: "E8F0FE" })
]}),
// TOTAL
new TableRow({ children: [
tCell("TOTAL", { bold: true, bg: NAVY, color: WHITE }),
tCell("12 Stops | 10 States + D.C. | West → East", { bold: true, bg: NAVY, color: WHITE }),
tCell("35", { bold: true, bg: NAVY, color: WHITE, align: AlignmentType.CENTER }),
tCell("59*", { bold: true, bg: NAVY, color: WHITE, align: AlignmentType.CENTER }),
tCell("* Max days are theoretical. Trip is capped at 50 days. Surplus days redistributed at travellers' discretion.", { bg: NAVY, color: WHITE, italic: true, colspan: 2 })
]})
]),
spacer(1),
// ─── §6 TRANSPORT ─────────────────────────────────────────────────────
h1("6. Internal Transportation Plan"),
mkTable([
new TableRow({ children: [
hCell("Leg", 3400),
hCell("Mode", 2600),
hCell("Approx. Cost (USD)", 2000),
hCell("Est. Time", 1600),
hCell("Notes", 5600)
]}),
new TableRow({ children: [tCell("SFO → Yosemite"), tCell("Amtrak + YARTS Bus"), tCell("~$30–45"), tCell("~4 hrs"), tCell("No car needed. Amtrak San Joaquins to Merced, then YARTS bus into valley")] }),
new TableRow({ children: [altCell("Yosemite → Las Vegas"), altCell("Rental Car OR Bus + Flight"), altCell("~$60–100"), altCell("~6–8 hrs"), altCell("Drive via US-395 is most scenic (Mono Lake, Bodie Ghost Town). Split car cost if 2 people.")] }),
new TableRow({ children: [tCell("Las Vegas → Denver"), tCell("Budget Flight OR Overnight Bus"), tCell("~$50–90"), tCell("1–12 hrs"), tCell("FlixBus/Greyhound overnight saves a hostel night. Fly Spirit/Frontier for speed.")] }),
new TableRow({ children: [altCell("Denver → Chicago"), altCell("Amtrak California Zephyr ★ RECOMMENDED"), altCell("~$60–100"), altCell("~18 hrs"), altCell("One of the greatest train journeys in the USA. Crosses the Rockies + Great Plains overnight. Book ahead.")] }),
new TableRow({ children: [tCell("Chicago → Nashville"), tCell("Greyhound / FlixBus OR Flight"), tCell("~$40–80"), tCell("8–9 hrs"), tCell("Overnight bus is comfortable and saves accommodation. Direct flights ~$60.")] }),
new TableRow({ children: [altCell("Nashville → New Orleans"), altCell("Greyhound OR Flight"), altCell("~$40–70"), altCell("8 hrs"), altCell("Overnight Greyhound saves hostel. Fly if time is short (~$60–80).")] }),
new TableRow({ children: [tCell("New Orleans → Houston"), tCell("Amtrak Sunset Limited OR Bus"), tCell("~$40–60"), tCell("~5–6 hrs"), tCell("Amtrak arrives at Houston Union Station – central and convenient.")] }),
new TableRow({ children: [altCell("Within Texas (Houston–San Antonio–Austin)"), altCell("Greyhound / Megabus"), altCell("~$15–30/leg"), altCell("2–3 hrs each"), altCell("Runs frequently. Houston → SA → Austin is a natural loop. ~$40 total.")] }),
new TableRow({ children: [tCell("Austin → Miami"), tCell("Budget Flight ★ BEST OPTION"), tCell("~$70–120"), tCell("~2.5 hrs"), tCell("Book 2–3 weeks ahead on Google Flights. Check Spirit / Frontier / Southwest.")] }),
new TableRow({ children: [altCell("Miami → Washington D.C."), altCell("Budget Flight"), altCell("~$60–100"), altCell("~3 hrs"), altCell("Multiple daily flights. Very flexible.")] }),
new TableRow({ children: [tCell("D.C. → Philadelphia"), tCell("Amtrak Northeast Regional"), tCell("~$25–40"), tCell("~2 hrs"), tCell("Runs every hour. Very convenient. Amtrak is the best option here.")] }),
new TableRow({ children: [altCell("Philadelphia → New York City"), altCell("Amtrak OR FlixBus"), altCell("~$15–35"), altCell("~1.5 hrs"), altCell("Amtrak to Penn Station (Manhattan). FlixBus slightly cheaper. Both very easy.")] })
]),
spacer(1),
// ─── §7 ACCOMMODATION ────────────────────────────────────────────────
h1("7. Accommodation Strategy"),
p("Primary accommodation: budget hostels (private or dormitory rooms) booked via Hostelworld, Booking.com, and Airbnb. Estimated cost: USD 30–65 per night per room."),
spacer(1),
mkTable([
new TableRow({ children: [
hCell("City", 3000), hCell("Neighbourhood / Area", 3800), hCell("Type", 2800), hCell("Est. Cost / Night", 2000), hCell("Platform", 3600)
]}),
new TableRow({ children: [tCell("San Francisco"), tCell("Mission District / Haight-Ashbury"), tCell("Hostel"), tCell("$35–55"), tCell("Hostelworld / Booking.com")] }),
new TableRow({ children: [altCell("Yosemite"), altCell("Yosemite Valley"), altCell("Hostel / Campground"), altCell("$25–50"), altCell("Recreation.gov / Hostelworld")] }),
new TableRow({ children: [tCell("Las Vegas"), tCell("Fremont Street / Downtown"), tCell("Hostel"), tCell("$20–40"), tCell("Hostelworld")] }),
new TableRow({ children: [altCell("Denver"), altCell("Capitol Hill / RiNo"), altCell("Hostel / Airbnb"), altCell("$30–50"), altCell("Hostelworld / Airbnb")] }),
new TableRow({ children: [tCell("Chicago"), tCell("Wicker Park / The Loop"), tCell("Hostel"), tCell("$30–50"), tCell("Hostelworld")] }),
new TableRow({ children: [altCell("Nashville"), altCell("Downtown / East Nashville"), altCell("Hostel"), altCell("$30–50"), altCell("Hostelworld / Booking.com")] }),
new TableRow({ children: [tCell("New Orleans"), tCell("French Quarter / Marigny"), tCell("Hostel"), tCell("$30–50"), tCell("Hostelworld")] }),
new TableRow({ children: [altCell("Texas (3 cities)"), altCell("City centres"), altCell("Hostel / Airbnb"), altCell("$30–55"), altCell("Hostelworld / Airbnb")] }),
new TableRow({ children: [tCell("Miami"), tCell("South Beach / Wynwood"), tCell("Hostel"), tCell("$40–65"), tCell("Hostelworld")] }),
new TableRow({ children: [altCell("Washington D.C."), altCell("Capitol Hill / Columbia Heights"), altCell("Hostel"), altCell("$35–55"), altCell("Hostelworld")] }),
new TableRow({ children: [tCell("Philadelphia"), tCell("Old City"), tCell("Hostel"), tCell("$30–50"), tCell("Hostelworld / Booking.com")] }),
new TableRow({ children: [altCell("New York City"), altCell("Brooklyn (Williamsburg) / Manhattan"), altCell("Hostel / Airbnb"), altCell("$45–70"), altCell("Hostelworld / Airbnb")] })
]),
spacer(1),
// ─── §8 DECLARATION ──────────────────────────────────────────────────
h1("8. Declaration"),
p("We, the undersigned, declare that all information provided in this document is true and accurate. This itinerary is tentative in nature and may be adjusted during the course of travel. We confirm the following:"),
spacer(1),
...[
"We hold valid Indian passports and US B-2 Tourist / Visitor visas.",
"We have confirmed return / onward flights departing JFK, New York, on or around 07 July 2026.",
"We will not undertake any form of paid employment during our stay in the United States.",
"We have sufficient funds to support ourselves throughout the duration of our visit.",
"We will comply with all conditions of our admission and all applicable US immigration laws.",
"We will not overstay our authorised period of admission."
].map(item => new Paragraph({
numbering: { reference: "decl", level: 0 },
spacing: { before: 80, after: 80 },
children: [new TextRun({ text: item, size: 19, font: "Calibri", color: DGREY })]
})),
spacer(2),
// ─── SIGNATURE BLOCK ─────────────────────────────────────────────────
new Table({
width: { size: CONTENT_W, type: WidthType.DXA },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
},
rows: [new TableRow({ children: [
// Traveller 1
new TableCell({
width: { size: 7400, type: WidthType.DXA },
margins: { top: 200, bottom: 200, left: 200, right: 400 },
borders: {
top: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
bottom: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
left: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
right: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
},
children: [
new Paragraph({ spacing: { before: 0, after: 100 }, children: [new TextRun({ text: "Traveller 1", bold: true, size: 22, font: "Calibri", color: NAVY })] }),
new Paragraph({ spacing: { before: 80, after: 60 }, children: [new TextRun({ text: "Full Name: TAKSHIT VIJAYKUMAR SHAH", size: 19, font: "Calibri", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 60 }, children: [new TextRun({ text: "Passport No.: ________________________________", size: 19, font: "Calibri", color: DGREY })] }),
new Paragraph({ spacing: { before: 80, after: 60 }, children: [new TextRun({ text: "Signature: ________________________________", size: 19, font: "Calibri", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Date: ________________________________", size: 19, font: "Calibri", color: DGREY })] }),
]
}),
// Gap column
new TableCell({
width: { size: 598, type: WidthType.DXA },
borders: { top:{style:BorderStyle.NONE}, bottom:{style:BorderStyle.NONE}, left:{style:BorderStyle.NONE}, right:{style:BorderStyle.NONE} },
children: [new Paragraph({ children: [] })]
}),
// Traveller 2
new TableCell({
width: { size: 7400, type: WidthType.DXA },
margins: { top: 200, bottom: 200, left: 200, right: 200 },
borders: {
top: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
bottom: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
left: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
right: { style: BorderStyle.SINGLE, size: 3, color: NAVY },
},
children: [
new Paragraph({ spacing: { before: 0, after: 100 }, children: [new TextRun({ text: "Traveller 2", bold: true, size: 22, font: "Calibri", color: NAVY })] }),
new Paragraph({ spacing: { before: 80, after: 60 }, children: [new TextRun({ text: "Full Name: DIVYAM ARUNKUMAR AGRAWAL", size: 19, font: "Calibri", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 60 }, children: [new TextRun({ text: "Passport No.: ________________________________", size: 19, font: "Calibri", color: DGREY })] }),
new Paragraph({ spacing: { before: 80, after: 60 }, children: [new TextRun({ text: "Signature: ________________________________", size: 19, font: "Calibri", color: DGREY })] }),
new Paragraph({ spacing: { before: 60, after: 0 }, children: [new TextRun({ text: "Date: ________________________________", size: 19, font: "Calibri", color: DGREY })] }),
]
})
]})]
}),
spacer(1),
p("Document prepared: 16 May 2026 | This document is voluntarily provided for immigration reference only. It does not constitute a legal contract or guarantee of itinerary adherence.", { sz: 15, color: MGREY, italic: true, align: AlignmentType.CENTER })
] // end children
}] // end sections
});
Packer.toBuffer(doc).then(buf => {
fs.writeFileSync("/home/daytona/workspace/usa-itinerary/USA_Travel_Itinerary_2026.docx", buf);
console.log("✅ Done.");
}).catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/usa-itinerary && node build2.js 2>&1
python3 -c " import zipfile, sys z = zipfile.ZipFile('/home/daytona/workspace/usa-itinerary/USA_Travel_Itinerary_2026.docx') print('Valid DOCX. Size:', round(open('/home/daytona/workspace/usa-itinerary/USA_Travel_Itinerary_2026.docx','rb').read().__len__()/1024,1), 'KB') print('Files:', z.namelist()[:6]) # Quick check document.xml is non-empty doc_size = len(z.read('word/document.xml')) print('document.xml size:', doc_size, 'bytes') "
USA Travel Itinerary 2026
Word Document · DOCX
| Fix | What was done |
|---|---|
| Landscape A4 | Page rotated to landscape (297mm × 210mm) — nearly 40% more horizontal space for tables |
| Exact DXA column widths | Every column has a precise pixel-level width set in TWIPs, so Word can't auto-squish them |
| 6 → max 5 columns on wide tables | The detailed breakdown table uses 6 well-spaced columns that now fit properly |
| Calibri font | Slightly narrower than Arial at the same size, helps text breathe in cells |
| Reduced margins | Down to 0.5 inch (was 0.75) to maximise usable width |
| Content width anchored | All tables set to exactly 15,398 TWIPs (the usable content width), not a % |
[INSERT ...] fields for passport numbers, flight numbers and PNR codes before printing.Continue