Give professional resume format which can be edited
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not foun…
~/resume/build_resume.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, LevelFormat, BorderStyle, WidthType, VerticalAlign,
HeadingLevel, ShadingType, UnderlineType
} = require('docx');
const fs = require('fs');
// ── Colour palette ──────────────────────────────────────────────
const ACCENT = "1F3864"; // deep navy – header background
const ACCENT_LT = "2E74B5"; // medium blue – section bars
const WHITE = "FFFFFF";
const TEXT_DARK = "1A1A1A";
const TEXT_MID = "444444";
const LIGHT_GRAY = "F2F4F7";
const MID_GRAY = "BDC3C7";
// ── Bullet numbering config ──────────────────────────────────────
const numberingConfig = {
config: [
{
reference: "bullets",
levels: [{
level: 0,
format: LevelFormat.BULLET,
text: "\u2022",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 360, hanging: 200 } } }
}]
}
]
};
// ── Helpers ──────────────────────────────────────────────────────
function bullet(text) {
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [new TextRun({ text, font: "Calibri", size: 20, color: TEXT_DARK })]
});
}
function sectionDivider(title) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
margins: { top: 0, bottom: 0, left: 0, right: 0 },
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: 100, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, color: ACCENT_LT, fill: ACCENT_LT },
margins: { top: 80, bottom: 80, left: 160, right: 160 },
children: [
new Paragraph({
alignment: AlignmentType.LEFT,
spacing: { before: 0, after: 0 },
children: [new TextRun({
text: title.toUpperCase(),
font: "Calibri", size: 22, bold: true, color: WHITE,
characterSpacing: 40
})]
})
]
})
]
})
]
});
}
function gap(pts = 60) {
return new Paragraph({ spacing: { before: 0, after: pts }, children: [] });
}
function jobEntry({ title, company, location, dates, bullets }) {
const rows = [];
// Title + Dates row
rows.push(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({
width: { size: 75, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE }
},
children: [
new Paragraph({
spacing: { before: 100, after: 0 },
children: [new TextRun({ text: title, font: "Calibri", size: 22, bold: true, color: TEXT_DARK })]
}),
new Paragraph({
spacing: { before: 0, after: 40 },
children: [
new TextRun({ text: company, font: "Calibri", size: 20, bold: true, color: ACCENT_LT }),
new TextRun({ text: " | " + location, font: "Calibri", size: 20, color: TEXT_MID, italics: true })
]
})
]
}),
new TableCell({
width: { size: 25, type: WidthType.PERCENTAGE },
verticalAlign: VerticalAlign.CENTER,
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE }
},
children: [
new Paragraph({
alignment: AlignmentType.RIGHT,
spacing: { before: 100, after: 40 },
children: [new TextRun({ text: dates, font: "Calibri", size: 20, color: TEXT_MID, italics: true })]
})
]
})
]
})
]
}));
for (const b of bullets) rows.push(bullet(b));
rows.push(gap(80));
return rows;
}
function eduEntry({ degree, institution, location, dates, detail }) {
const items = [];
items.push(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({
width: { size: 75, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE }
},
children: [
new Paragraph({
spacing: { before: 100, after: 0 },
children: [new TextRun({ text: degree, font: "Calibri", size: 22, bold: true, color: TEXT_DARK })]
}),
new Paragraph({
spacing: { before: 0, after: 40 },
children: [
new TextRun({ text: institution, font: "Calibri", size: 20, bold: true, color: ACCENT_LT }),
new TextRun({ text: " | " + location, font: "Calibri", size: 20, color: TEXT_MID, italics: true })
]
}),
...(detail ? [new Paragraph({
spacing: { before: 0, after: 40 },
children: [new TextRun({ text: detail, font: "Calibri", size: 20, color: TEXT_MID })]
})] : [])
]
}),
new TableCell({
width: { size: 25, type: WidthType.PERCENTAGE },
verticalAlign: VerticalAlign.CENTER,
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE }
},
children: [
new Paragraph({
alignment: AlignmentType.RIGHT,
spacing: { before: 100, after: 40 },
children: [new TextRun({ text: dates, font: "Calibri", size: 20, color: TEXT_MID, italics: true })]
})
]
})
]
})
]
}));
items.push(gap(80));
return items;
}
function skillRow(category, skills) {
return 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({
width: { size: 28, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE }
},
shading: { type: ShadingType.SOLID, color: LIGHT_GRAY, fill: LIGHT_GRAY },
margins: { top: 80, bottom: 80, left: 160, right: 160 },
children: [
new Paragraph({
children: [new TextRun({ text: category, font: "Calibri", size: 20, bold: true, color: TEXT_DARK })]
})
]
}),
new TableCell({
width: { size: 72, type: WidthType.PERCENTAGE },
borders: {
top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE }
},
margins: { top: 80, bottom: 80, left: 200, right: 160 },
children: [
new Paragraph({
children: [new TextRun({ text: skills, font: "Calibri", size: 20, color: TEXT_DARK })]
})
]
})
]
})
]
});
}
// ── Header banner ────────────────────────────────────────────────
const headerBanner = 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({
width: { size: 100, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, color: ACCENT, fill: ACCENT },
margins: { top: 300, bottom: 300, left: 400, right: 400 },
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 80 },
children: [new TextRun({
text: "JOHN A. SMITH",
font: "Calibri", size: 52, bold: true, color: WHITE,
characterSpacing: 60
})]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 80 },
children: [new TextRun({
text: "Senior Software Engineer · Full-Stack Development · Cloud Architecture",
font: "Calibri", size: 22, color: "A8C4E0", italics: false
})]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 60, after: 0 },
children: [
new TextRun({ text: "📍 San Francisco, CA", font: "Calibri", size: 19, color: "C9D9EE" }),
new TextRun({ text: " | ", font: "Calibri", size: 19, color: "7A99BB" }),
new TextRun({ text: "📞 +1 (415) 555-0192", font: "Calibri", size: 19, color: "C9D9EE" }),
new TextRun({ text: " | ", font: "Calibri", size: 19, color: "7A99BB" }),
new TextRun({ text: "✉ john.smith@email.com", font: "Calibri", size: 19, color: "C9D9EE" }),
new TextRun({ text: " | ", font: "Calibri", size: 19, color: "7A99BB" }),
new TextRun({ text: "🔗 linkedin.com/in/johnsmith", font: "Calibri", size: 19, color: "C9D9EE" })
]
})
]
})
]
})
]
});
// ── Professional Summary ─────────────────────────────────────────
const summarySection = [
gap(120),
sectionDivider("Professional Summary"),
gap(60),
new Paragraph({
spacing: { before: 0, after: 0 },
alignment: AlignmentType.JUSTIFIED,
children: [new TextRun({
text: "Results-driven Senior Software Engineer with 8+ years of experience designing and delivering scalable web applications and cloud-native solutions. Adept at leading cross-functional teams, architecting microservices, and driving agile development cycles from concept to production. Proven track record of reducing system latency by 40% and improving deployment frequency by 3×. Passionate about clean code, mentorship, and building products that make an impact.",
font: "Calibri", size: 20, color: TEXT_DARK
})]
}),
gap(100)
];
// ── Work Experience ──────────────────────────────────────────────
const experienceSection = [
sectionDivider("Work Experience"),
gap(60),
...jobEntry({
title: "Senior Software Engineer",
company: "TechCorp Inc.",
location: "San Francisco, CA",
dates: "Jan 2021 – Present",
bullets: [
"Architected and delivered a microservices platform serving 2M+ daily active users, reducing P95 latency by 42%.",
"Led a team of 6 engineers through 3 major product releases on schedule and within budget.",
"Designed CI/CD pipelines (GitHub Actions + Kubernetes) that cut deployment time from 45 min to 8 min.",
"Mentored 4 junior engineers; 2 subsequently promoted to mid-level roles."
]
}),
...jobEntry({
title: "Software Engineer II",
company: "DataStream Solutions",
location: "Austin, TX",
dates: "Jun 2018 – Dec 2020",
bullets: [
"Built real-time data ingestion pipeline processing 500K events/sec using Apache Kafka and Go.",
"Refactored legacy monolith into 12 independently deployable services, improving release cadence 3×.",
"Collaborated with product and design to ship 5 major features, driving a 28% increase in user retention.",
"Authored internal engineering standards adopted across 3 development teams."
]
}),
...jobEntry({
title: "Junior Software Engineer",
company: "StartApp Labs",
location: "New York, NY",
dates: "Jul 2016 – May 2018",
bullets: [
"Developed React front-end and Node.js REST APIs for a SaaS product with 50K+ subscribers.",
"Integrated Stripe payment gateway, enabling $1.2M in annual recurring revenue.",
"Reduced page load time by 35% through code splitting, lazy loading, and CDN optimisation."
]
})
];
// ── Education ────────────────────────────────────────────────────
const educationSection = [
sectionDivider("Education"),
gap(60),
...eduEntry({
degree: "B.S. Computer Science",
institution: "University of California, Berkeley",
location: "Berkeley, CA",
dates: "2012 – 2016",
detail: "GPA: 3.8 / 4.0 · Dean's List · Relevant coursework: Algorithms, Distributed Systems, ML"
})
];
// ── Skills ───────────────────────────────────────────────────────
const skillsSection = [
sectionDivider("Skills"),
gap(60),
skillRow("Languages", "JavaScript / TypeScript, Python, Go, Java, SQL"),
gap(30),
skillRow("Front-End", "React, Next.js, Vue.js, Tailwind CSS, GraphQL"),
gap(30),
skillRow("Back-End", "Node.js, Express, Django, FastAPI, gRPC"),
gap(30),
skillRow("Cloud & DevOps", "AWS (EC2, S3, Lambda, RDS), GCP, Docker, Kubernetes, Terraform"),
gap(30),
skillRow("Databases", "PostgreSQL, MongoDB, Redis, Elasticsearch, Snowflake"),
gap(30),
skillRow("Tools", "Git, JIRA, Figma, DataDog, Sentry, CircleCI"),
gap(100)
];
// ── Certifications ───────────────────────────────────────────────
const certSection = [
sectionDivider("Certifications & Awards"),
gap(60),
bullet("AWS Certified Solutions Architect – Professional (2023)"),
bullet("Google Cloud Professional Data Engineer (2022)"),
bullet("Certified Kubernetes Administrator (CKA) (2021)"),
bullet("TechCorp Engineering Excellence Award (2022, 2023)"),
gap(100)
];
// ── Projects ─────────────────────────────────────────────────────
const projectsSection = [
sectionDivider("Key Projects"),
gap(60),
new Paragraph({
spacing: { before: 80, after: 0 },
children: [new TextRun({ text: "OpenMetrics Dashboard", font: "Calibri", size: 21, bold: true, color: ACCENT_LT })]
}),
new Paragraph({
spacing: { before: 0, after: 40 },
children: [new TextRun({ text: "Open-source observability dashboard (2.3K GitHub stars). Built with React, Go, and InfluxDB; supports 15+ data-source integrations.", font: "Calibri", size: 20, color: TEXT_DARK })]
}),
new Paragraph({
spacing: { before: 80, after: 0 },
children: [new TextRun({ text: "AI Code Review Bot", font: "Calibri", size: 21, bold: true, color: ACCENT_LT })]
}),
new Paragraph({
spacing: { before: 0, after: 40 },
children: [new TextRun({ text: "GitHub Action that uses OpenAI GPT-4 to flag security issues and style violations in PRs. Deployed at 30+ organisations.", font: "Calibri", size: 20, color: TEXT_DARK })]
}),
gap(100)
];
// ── Assemble document ────────────────────────────────────────────
const doc = new Document({
numbering: numberingConfig,
styles: {
default: {
document: { run: { font: "Calibri", size: 20, color: TEXT_DARK } }
}
},
sections: [{
properties: {
page: {
margin: { top: 720, bottom: 720, left: 900, right: 900 }
}
},
children: [
headerBanner,
...summarySection,
...experienceSection,
...educationSection,
...skillsSection,
...certSection,
...projectsSection
]
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/resume/Professional_Resume_Template.docx", buffer);
console.log("✅ Resume created successfully!");
}).catch(err => {
console.error("Error:", err);
process.exit(1);
});
~/resume
~/resume/build_resume.js
Error: String not found in file: 'const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, LevelFormat, BorderStyle, WidthType, VerticalAlign,
HeadingLevel, ShadingType, UnderlineType
} = require('docx');'cd /home/daytona/workspace/resume && node build_resume.js 2>&1 | tail -5
cat > /home/daytona/workspace/resume/build_resume_v2.js << 'ENDSCRIPT' const { …
cd /home/daytona/workspace/resume && node build_resume_v2.js 2>&1
ls -lh /home/daytona/workspace/resume/Professional_Resume_Template.docx
python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/worksp…
cd /tmp && rm -rf resume_check && mkdir resume_check && unzip -q /home/daytona/w…
Professional Resume Template
Word Document · DOCX
| Section | Details |
|---|---|
| Header Banner | Deep-navy background with name (large), tagline, and contact info in one clean block |
| Professional Summary | Justified paragraph — replace with your own pitch |
| Work Experience | 3 sample roles with 2-column layout (company/bullets left, dates right) |
| Education | Degree, institution, GPA/awards row |
| Technical Skills | Alternating shaded rows: category label |
| Certifications & Awards | Bulleted list |
| Notable Projects | Project name + one-line description |
#2E74B5) and navy (#1F3864) can be changed via Word's "Design → Colors"