Skip to content

Commit d1c5b48

Browse files
committed
refine homepage editorial voice
1 parent b9b9384 commit d1c5b48

6 files changed

Lines changed: 169 additions & 137 deletions

File tree

app/layout.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { Footer, Layout, Navbar } from 'nextra-theme-blog'
44
import 'nextra-theme-blog/style.css'
55
import '../styles/main.css'
66
import { profile, siteUrl } from '../data/profile'
7-
import { SocialLinks } from '../components/portfolio'
87

98
export const metadata = {
109
metadataBase: new URL(siteUrl),
@@ -45,8 +44,7 @@ export default async function RootLayout({ children }) {
4544
<Navbar pageMap={await getPageMap()} />
4645
{children}
4746
<Footer>
48-
<time>{new Date().getFullYear()}</time> © {profile.name}.{' '}
49-
<SocialLinks />
47+
<time>{new Date().getFullYear()}</time> © {profile.name}.
5048
</Footer>
5149
</Layout>
5250
</body>

app/page.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { PortfolioHome } from '../components/portfolio'
33
import { pageMetadata } from '../data/profile'
44

55
export const metadata = pageMetadata({
6-
title: 'Mohsin Hayat | Senior Software Engineer, Applied AI',
6+
title: 'Mohsin Hayat | Senior Software Engineer in Applied AI',
77
description:
8-
'Mohsin Hayat is a Senior Software Engineer specializing in applied AI and backend systems. He builds reliable AI and backend systems for international teams from Lahore, Pakistan.',
8+
'Mohsin Hayat is a senior software engineer in Lahore building applied AI, Python services, and reliable backend systems for international teams.',
99
path: '/'
1010
})
1111

components/portfolio.jsx

Lines changed: 114 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,31 @@ export function PortfolioHome() {
5757
<h1 id="portfolio-title">Mohsin Hayat</h1>
5858
<p className="hero-title">{profile.title}</p>
5959
<p className="hero-summary">
60-
{profile.summary} I’m currently at OnService.AI, building Python
61-
services and conversational AI experiences for airline workflows.
60+
I’m a software engineer based in Lahore, Pakistan. For more than six
61+
years, I’ve worked remotely with international teams building
62+
software for airlines, ecommerce companies, and healthcare
63+
platforms.
64+
</p>
65+
<p className="hero-summary">
66+
I’m currently at OnService.AI, where I work on Python services and
67+
conversational AI for airline workflows, including integrations with
68+
KIU PSS. Before that, I built AI tools at Trafilea and backend and
69+
event-driven systems at Awell Health.
6270
</p>
6371
<div className="hero-actions">
6472
<a href="#selected-work" className="button button-primary">
65-
View selected work <Icon name="arrow" size={16} />
73+
Explore selected work <Icon name="arrow" size={16} />
6674
</a>
6775
<Link href="/resume" className="button button-secondary">
68-
View résumé
76+
Read my résumé
6977
</Link>
7078
</div>
7179
<SocialLinks />
7280
</div>
7381
<div className="hero-portrait">
7482
<Image
7583
src={profile.portrait}
76-
alt="Portrait of Mohsin Hayat"
84+
alt="Mohsin Hayat, Senior Software Engineer"
7785
width={1000}
7886
height={1000}
7987
sizes="(max-width: 760px) 180px, 280px"
@@ -82,28 +90,25 @@ export function PortfolioHome() {
8290
</div>
8391
</section>
8492

85-
<section className="proof-grid" aria-label="Selected engineering context">
86-
{profile.metrics.map((metric) => (
87-
<article className="proof-item" key={metric.value}>
88-
<strong>{metric.value}</strong>
89-
<span>{metric.label}</span>
90-
</article>
91-
))}
92-
</section>
93-
9493
<section
9594
className="section recommendations"
9695
aria-labelledby="recommendations-title"
9796
>
9897
<div className="section-heading">
99-
<p className="eyebrow">Professional references</p>
100-
<h2 id="recommendations-title">Trusted by engineering leaders</h2>
98+
<div>
99+
<p className="eyebrow">Professional references</p>
100+
<h2 id="recommendations-title">What colleagues say</h2>
101+
</div>
101102
<Link href="/recommendations">
102-
Read all recommendations <Icon name="arrow" size={16} />
103+
Read all verified recommendations <Icon name="arrow" size={16} />
103104
</Link>
104105
</div>
106+
<p className="section-intro">
107+
The best description of how I work comes from the people who have
108+
worked alongside me.
109+
</p>
105110
<div className="recommendation-grid">
106-
{profile.recommendations.map((item) => (
111+
{profile.recommendations.slice(0, 2).map((item) => (
107112
<article className="recommendation-card" key={item.name}>
108113
<p>{item.excerpt}</p>
109114
<footer>
@@ -124,27 +129,22 @@ export function PortfolioHome() {
124129
aria-labelledby="work-title"
125130
>
126131
<div className="section-heading">
127-
<p className="eyebrow">Selected work</p>
128-
<h2 id="work-title">Systems built for real operating contexts</h2>
132+
<div>
133+
<p className="eyebrow">Selected work</p>
134+
<h2 id="work-title">Selected work</h2>
135+
</div>
129136
</div>
130-
<div className="project-grid">
131-
{profile.projects.map((project) => (
132-
<article className="project-card" key={project.name}>
137+
<p className="section-intro">
138+
These products best represent the kind of engineering I enjoy:
139+
practical AI, dependable backend services, and tools that solve real
140+
problems.
141+
</p>
142+
<div className="featured-work">
143+
{profile.projects.slice(0, 2).map((project) => (
144+
<article className="work-feature" key={project.name}>
133145
<h3>{project.name}</h3>
134-
<dl>
135-
<div>
136-
<dt>Problem</dt>
137-
<dd>{project.problem}</dd>
138-
</div>
139-
<div>
140-
<dt>Built</dt>
141-
<dd>{project.built}</dd>
142-
</div>
143-
<div>
144-
<dt>Context</dt>
145-
<dd>{project.outcome}</dd>
146-
</div>
147-
</dl>
146+
<p>{project.homepageSummary}</p>
147+
<p>{project.homepageDetail}</p>
148148
<ul
149149
className="technology-list"
150150
aria-label={`${project.name} technologies`}
@@ -163,17 +163,72 @@ export function PortfolioHome() {
163163
</div>
164164
</section>
165165

166+
<section
167+
className="section experience-section"
168+
aria-labelledby="experience-title"
169+
>
170+
<p className="eyebrow">Professional experience</p>
171+
<h2 id="experience-title">
172+
Experience across applied AI and backend engineering
173+
</h2>
174+
<p className="section-intro">
175+
Much of my professional work lives inside private company systems, so
176+
I cannot publish the code. I can, however, explain the problems I
177+
worked on and the engineering behind them.
178+
</p>
179+
<div className="experience-grid">
180+
<article>
181+
<h3>Airline conversational systems</h3>
182+
<p>
183+
At OnService.AI, I build Python services and conversational
184+
experiences for airline workflows. My work includes integrating AI
185+
agents with KIU PSS and supporting journeys around booking
186+
information, payments, check-in, flight changes, ancillary
187+
services, and passenger support.
188+
</p>
189+
</article>
190+
<article>
191+
<h3>AI for ecommerce analytics</h3>
192+
<p>
193+
At Trafilea, I worked on production AI tools for marketing and
194+
analytics teams. This included a conversational NL-to-SQL system,
195+
LangGraph workflows for budget planning, and data pipelines
196+
supporting long-running analytical agents.
197+
</p>
198+
</article>
199+
<article>
200+
<h3>Event-driven healthcare platforms</h3>
201+
<p>
202+
At Awell Health, I worked on the backend systems behind clinical
203+
workflow automation. I contributed across orchestration, task
204+
management, workflow design, event-driven architecture, testing,
205+
deployment, and open-source tools.
206+
</p>
207+
</article>
208+
</div>
209+
<Link href="/resume" className="text-link experience-link">
210+
See my complete work history <Icon name="arrow" size={16} />
211+
</Link>
212+
</section>
213+
166214
<section
167215
className="section capability-section"
168216
aria-labelledby="capabilities-title"
169217
>
170-
<p className="eyebrow">Capabilities</p>
171-
<h2 id="capabilities-title">Focused engineering capabilities</h2>
172-
<ul>
173-
{profile.capabilities.map((capability) => (
174-
<li key={capability}>{capability}</li>
175-
))}
176-
</ul>
218+
<p className="eyebrow">Engineering focus</p>
219+
<h2 id="capabilities-title">Applied AI, backed by solid systems</h2>
220+
<p>
221+
I work primarily on applied AI systems and the backend infrastructure
222+
needed to make them dependable. My recent work includes LLM agents,
223+
multi-agent orchestration, NL-to-SQL, RAG, Python services, analytical
224+
data pipelines, event-driven systems, and developer tooling.
225+
</p>
226+
<p>
227+
I regularly work with Python, TypeScript, LangGraph, LangChain,
228+
FastAPI, Node.js, AWS, ClickHouse, PostgreSQL, Docker, and Kubernetes.
229+
I care more about choosing the right tool for the system than
230+
collecting technologies for a list.
231+
</p>
177232
</section>
178233

179234
<section
@@ -186,27 +241,32 @@ export function PortfolioHome() {
186241
Engineering notes and career retrospectives
187242
</h2>
188243
<p>
189-
The published posts are personal writing from 2022 on remote work
190-
and engineering. They are retained as dated perspectives, not
191-
presented as current AI case studies.
244+
I occasionally write about engineering, remote work, and lessons
245+
from building an international software career from Pakistan. The
246+
existing notes were written in 2022 and reflect what I was learning
247+
at that point in my career.
192248
</p>
193249
</div>
194250
<Link href="/posts" className="button button-secondary">
195-
Browse writing
251+
Browse my engineering notes
196252
</Link>
197253
</section>
198254

199255
<section className="contact-section" aria-labelledby="contact-title">
200-
<p className="eyebrow">Let’s connect</p>
201-
<h2 id="contact-title">Build reliable systems together</h2>
256+
<p className="eyebrow">Get in touch</p>
257+
<h2 id="contact-title">Let’s connect</h2>
202258
<p>
203-
Based in Lahore, Pakistan, with 6+ years of international remote
204-
collaboration experience.
259+
I’m based in Lahore and have worked remotely with teams across the
260+
United States, Europe, and Latin America.
205261
</p>
206262
<div className="contact-links">
207263
<a href={profile.links.email}>Email Mohsin</a>
208-
<ExternalLink href={profile.links.linkedin}>LinkedIn</ExternalLink>
209-
<ExternalLink href={profile.links.github}>GitHub</ExternalLink>
264+
<ExternalLink href={profile.links.linkedin}>
265+
Connect on LinkedIn
266+
</ExternalLink>
267+
<ExternalLink href={profile.links.github}>
268+
Follow my work on GitHub
269+
</ExternalLink>
210270
</div>
211271
</section>
212272
</main>

data/profile.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ export const profile = {
108108
projects: [
109109
{
110110
name: 'SnippetGraph',
111+
homepageSummary:
112+
'I built SnippetGraph to give AI teams a more dependable way to manage the context their agents use.',
113+
homepageDetail:
114+
'Instead of leaving knowledge scattered across documents and tools, SnippetGraph lets teams compose reusable snippets into pages and publish versioned, hash-verified releases through GitHub. This makes changes reviewable, traceable, and easier to use in production AI workflows.',
111115
problem:
112116
'AI teams need governed, dependable context instead of unversioned knowledge scattered across tools.',
113117
built:
@@ -123,6 +127,10 @@ export const profile = {
123127
},
124128
{
125129
name: 'FirstCustomer',
130+
homepageSummary:
131+
'FirstCustomer is a CI-native browser agent built around a problem I have seen repeatedly in software teams: a pull request can pass its automated tests and still break an important customer journey.',
132+
homepageDetail:
133+
'It connects code changes with the product flows they may affect, exercises those flows using browser agents and realistic personas, and produces a release-risk assessment before the change reaches customers.',
126134
problem:
127135
'Product teams need a practical way to connect pull-request changes with the user flows they could affect.',
128136
built:

e2e/portfolio.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ test('navigation, feed discovery, and internal routes work', async ({
5353
page
5454
}) => {
5555
await page.goto('/')
56-
await page.getByRole('link', { name: /View résumé/i }).click()
56+
await page.getByRole('link', { name: /Read my résumé/i }).click()
5757
await expect(page).toHaveURL(/\/resume$/)
5858
await page.goto('/posts')
5959
await expect(

0 commit comments

Comments
 (0)