Skip to content

Commit 8e7c5e1

Browse files
committed
feat(mavrodev): update resume
1 parent 8c7d408 commit 8e7c5e1

File tree

5 files changed

+61
-89
lines changed

5 files changed

+61
-89
lines changed

apps/mavrodev/public/resume.pdf

-2.53 KB
Binary file not shown.

apps/mavrodev/scripts/generate-resume.tsx

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -409,34 +409,39 @@ const calculateMetrics = () => {
409409
const currentYear = new Date().getFullYear();
410410
const years = currentYear - startYear;
411411

412-
const totalUsers = resumeData.projects.reduce((sum, project) => {
413-
if (
414-
project.metrics?.users &&
415-
typeof project.metrics.users === 'string'
416-
) {
417-
const userMatch = project.metrics.users.match(/(\d+\.?\d*)K?\+?/);
418-
if (userMatch && userMatch[1]) {
419-
const num = parseFloat(userMatch[1]);
420-
return (
421-
sum +
422-
(project.metrics.users.includes('K') ? num * 1000 : num)
423-
);
424-
}
412+
const parseUsers = (users: string): number => {
413+
const match = users.match(/(\d+\.?\d*)K?\+?/);
414+
if (!match || !match[1]) return 0; // <- guard both cases
415+
const num = parseFloat(match[1]);
416+
return users.includes('K') ? num * 1000 : num;
417+
};
418+
419+
// Projects
420+
const totalProjectUsers = resumeData.projects.reduce((sum, project) => {
421+
if (project.metrics?.users) {
422+
return sum + parseUsers(project.metrics.users);
423+
}
424+
return sum;
425+
}, 0);
426+
427+
// Experiences
428+
const totalExperienceUsers = resumeData.experience.reduce((sum, exp) => {
429+
if (exp.metrics?.users) {
430+
return sum + parseUsers(exp.metrics.users);
425431
}
426432
return sum;
427433
}, 0);
428434

429-
const projectCount = resumeData.projects.length;
430-
const openSourcePRs = 10;
435+
const totalUsers = totalProjectUsers + totalExperienceUsers;
431436

432437
return {
433438
years,
434439
usersImpacted:
435440
totalUsers >= 1000
436441
? `${(totalUsers / 1000).toFixed(1)}K+`
437442
: `${totalUsers}+`,
438-
projectsDelivered: projectCount,
439-
openSourcePRs,
443+
projectsDelivered: resumeData.projects.length,
444+
openSourcePRs: 10,
440445
};
441446
};
442447

packages/data/src/experience.ts

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,55 @@ import type { Experience } from './types';
22

33
export const experience: Experience[] = [
44
{
5-
company: 'MicroPump',
5+
company: 'EzPump (Acquired by MicroPump)',
66
location: '',
77
workModel: 'Remote',
8-
role: 'Technical Consultant',
8+
role: 'Founder & Software Engineer',
99
period: {
10-
start: new Date('2025-06-01'),
10+
start: new Date('2024-11-01'),
1111
},
1212
current: true,
1313
website: 'https://www.micropump.fun',
1414
logo: '/micropump-logo.webp',
1515
description:
16-
'Providing ongoing technical consultation and development services after the acquisition of my EzPump bot ecosystem. Working on scaling infrastructure and implementing new features.',
16+
'Founded and developed EzPump — an open-source ecosystem of trading bots for Solana, reaching 1.2K+ active users before being acquired by MicroPump. Continued post-acquisition to assist with system integration and feature expansion.',
17+
metrics: {
18+
users: '1.2K+',
19+
},
1720
projects: [
1821
{
19-
name: 'Post-Acquisition Integration',
22+
name: 'EzPump Trading Bot Ecosystem',
2023
description:
21-
'Technical lead for migrating and scaling the acquired bot ecosystem',
24+
'Comprehensive ecosystem of trading bots for Solana including volume generation, growth automation, and token bundling.',
2225
highlights: [
23-
'Extended the architecture of EzPump into a more scalable and modular system',
24-
'Developed advanced Token Bundler for pump.fun Solana program - creates tokens and executes first buy in same atomic transaction, ensuring creator gets first entry advantage',
25-
'Engineered multi-wallet coordination system that generates multiple wallets and orchestrates simultaneous token purchases within single transaction block',
26-
'Built one-click sell functionality enabling rapid token liquidation through atomic transaction execution',
27-
'Implemented anti-MEV protection and transaction priority optimization for reliable execution in high-traffic conditions',
28-
'Created automated wallet management system with secure key generation and transaction signing',
29-
'Ongoing enhancements focused on user growth, monetization features, and UX improvements',
30-
'Currently serving 3.6K+ active users',
26+
'Developed ezpump.fun — Telegram trading bot for Solana meme coins',
27+
'Generated simulated volume to boost token visibility on pump.fun',
28+
'Built Comment Bot for automated engagement on new token listings',
29+
'Created Token Bundler that executes token creation and first buy within the same transaction',
30+
'Implemented anti-detection system with rotating proxies and randomized behavior',
31+
'Built active Twitter/X presence (https://x.com/EzPumpFun) for updates and community engagement',
32+
'Reached 1.2K+ active users through automation and community marketing',
33+
'Successfully acquired by MicroPump in June 2025; assisted with transition and continued feature development',
3134
],
3235
},
3336
],
3437
technologies: {
3538
backend: [
36-
'Node.js',
37-
'Express',
3839
'TypeScript',
40+
'NestJS',
41+
'Express',
42+
'Node.js',
3943
'Solana Web3.js',
40-
'Node.js Telegram Bot API',
4144
],
4245
databases: ['MongoDB', 'Mongoose'],
4346
other: [
47+
'Telegraf',
48+
'Solana SPL Token',
4449
'Anchor Framework',
45-
'Jupiter API',
46-
'Metaplex',
4750
'Jito MEV',
48-
'Axios',
51+
'Helius RPC',
4952
'Cheerio',
50-
'2captcha',
53+
'Puppeteer',
5154
],
5255
},
5356
},

packages/data/src/projects.ts

Lines changed: 5 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -72,54 +72,6 @@ export const projects: Project[] = [
7272
live: getOriginFor('mavrodev'),
7373
github: 'https://github.com/steliosmavro/mavro',
7474
},
75-
{
76-
name: 'EzPump',
77-
descriptor: 'Trading Bot Ecosystem',
78-
slug: 'crypto-trading-bots',
79-
period: {
80-
start: new Date('2024-11-01'),
81-
end: new Date('2025-06-30'),
82-
},
83-
type: 'acquired',
84-
categories: ['web3', 'automation', 'open-source'],
85-
description:
86-
'Open-Source Suite of Solana trading tools that gained 1.2K+ users',
87-
icon: 'Bot',
88-
longDescription:
89-
'Comprehensive ecosystem of trading bots for Solana including volume generation, growth automation, and token bundling. Successfully acquired by MicroPump after reaching 1.2K+ active users.',
90-
highlights: [
91-
'ezpump.fun - Telegram trading bot for Solana meme coins',
92-
'Generated simulated volume to boost token visibility on pump.fun',
93-
'Comment Bot - Automated engagement tool that posts contextual comments on new token listings',
94-
'Token Bundler - Creates tokens and executes first buy in same transaction',
95-
'Built anti-detection system with rotating proxies and randomized behavior',
96-
'Built active Twitter/X presence https://x.com/EzPumpFun for updates and community engagement',
97-
'Reached 1.2K+ users through custom automation and community marketing',
98-
],
99-
primaryTech: ['TypeScript', 'Solana Web3.js', 'MongoDB', 'NestJS'],
100-
secondaryTech: [
101-
'Telegraf',
102-
'Solana SPL Token',
103-
'Mongoose',
104-
'Anchor Framework',
105-
'Jito MEV',
106-
'Helius RPC',
107-
'Cheerio',
108-
'Puppeteer',
109-
],
110-
featured: true,
111-
acquired: {
112-
by: 'MicroPump',
113-
details:
114-
'Successfully acquired in June 2025. Entire ecosystem transitioned to new ownership.',
115-
},
116-
metrics: {
117-
users: '1.2K+',
118-
},
119-
impact: '1.2K+ active users',
120-
live: 'https://www.micropump.fun',
121-
github: 'https://github.com/steliosmavro/pump-fun-telegram-bot',
122-
},
12375
{
12476
name: 'Next.js Auth Template',
12577
slug: 'nextjs13-template',
@@ -152,9 +104,11 @@ export function getFeaturedProjects(): Project[] {
152104
return projects.filter((project) => project.featured);
153105
}
154106

155-
export function getFeaturedProjectsWithContributions(): Array<Project | (Contribution & { isContribution: true })> {
107+
export function getFeaturedProjectsWithContributions(): Array<
108+
Project | (Contribution & { isContribution: true })
109+
> {
156110
const featuredProjects = projects.filter((project) => project.featured);
157-
111+
158112
// Import contributions and add those that are featured
159113
const { contributions } = require('./contributions');
160114
const featuredContributions = contributions
@@ -166,7 +120,7 @@ export function getFeaturedProjectsWithContributions(): Array<Project | (Contrib
166120
type: 'open-source' as const,
167121
categories: ['contributions', 'open-source'] as ProjectCategory[],
168122
}));
169-
123+
170124
return [...featuredProjects, ...featuredContributions];
171125
}
172126

packages/data/src/types.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,15 @@ export interface Contribution {
103103
metrics?: ProjectMetrics;
104104
}
105105

106+
export interface ExperienceMetrics {
107+
users?: string;
108+
revenue?: string;
109+
performance?: string;
110+
scale?: string;
111+
reliability?: string;
112+
other?: string[];
113+
}
114+
106115
export interface ExperienceProject {
107116
name: string;
108117
role?: string;
@@ -132,6 +141,7 @@ export interface Experience {
132141
devops?: string[];
133142
other?: string[];
134143
};
144+
metrics?: ExperienceMetrics;
135145
}
136146

137147
export interface EnhancedSkill {

0 commit comments

Comments
 (0)