Why I built pabloalvarezcarbajal.com (and what's in the stack)
The site is a public extension of what I already do with clients and my own products. Here is the stack, the workflow, and why it exists.
Most developer portfolios are an afterthought — built once, never updated, eventually wrong. This one exists because I got tired of losing the shipping history of my own work.
What it is
Three things in one:
- A CV that I can keep in sync with reality instead of editing a PDF every six months.
- A portfolio of real projects — own SaaS, client work, automation engagements — with case studies I can link people to.
- A blog where I write about what I'm actually doing: shipping AI to production, coaching teams, running an independent practice alongside an employer.
No pivots, no "coming soon" sections, no fake metrics. If it's here, it shipped.
The stack
The stack is deliberately boring:
// package.json
{
"dependencies": {
"next": "16.2.1",
"react": "19.2.4",
"tailwindcss": "^4",
"next-mdx-remote": "^6.0.0",
"gray-matter": "^4.0.3",
"rehype-pretty-code": "^0.14.3",
"shiki": "^4.0.2",
"next-themes": "^0.4.6"
}
}Everything is static and compiled at build time. No database, no CMS, no runtime fetches for my own content. Blog posts and work case studies are MDX files under src/content/ — adding a new one is editing a file, not hitting an admin panel.
The MDX pipeline is next-mdx-remote/rsc with gray-matter for frontmatter, remark-gfm for tables and task lists, and rehype-pretty-code for build-time syntax highlighting. Zero runtime cost.
The workflow
The repo is AI-first from the first commit:
CLAUDE.mdandAGENTS.mddocument conventions- A
skills/directory holds reusable execution patterns pnpm validate(lint && build) has to pass with zero warnings before every commit- Hooks gate commits; lint-staged cleans up before they hit history
When I want to add a new case study or blog post, I don't handwrite files — I invoke a skill (add-work-item or add-blog-post) that scaffolds the MDX with frontmatter, creates covers, and registers the entry in the index. Future me thanks present me every single time.
Why now
The same week I sent my updated CV to an AI-Assisted Development Lead role, I realised I had no public surface for the work that actually qualifies me for it — two AI-first SaaS, 10+ production automations, and a running engagement coaching 40 engineers at Odilo. The CV PDF says all that in one page. This site says it in depth, keeps saying it as the work grows, and lets me point to a URL when the PDF isn't enough.
What's next
- Real blog posts on the two topics I keep getting asked about: rolling out AI-assisted development at scale, and the skill system that made it work.
- A dynamic OG image generator (
next/og) so every post and project link preview has proper branding. - A custom domain.
If you're reading this and there's something specific you'd like me to write about — AI enablement, multi-LLM production stacks, running a consultancy alongside a full-time role — drop me a line.