Compare commits

...
4 Commits
Author SHA1 Message Date
Patryk-Kuchta 8914a92bcc Merge pull request 'Senior consultant role update' (#2) from senior-consultant-role-update into main
Security Audit / Security Vulnerability Scan (push) Successful in 20s
Code Quality Check / Lint & Type Check (push) Successful in 23s
Reviewed-on: #2
2026-10-19 18:34:05 +00:00
Patryk-KuchtaandClaude Opus 5 d2d0705e5b chore: update CV to August 2026 version
Code Quality Check / Lint & Type Check (pull_request) Successful in 22s
Security Audit / Security Vulnerability Scan (pull_request) Successful in 22s
Reflects the Senior Technical Consultant role in the AI & Data Practice.
Filename kept so the existing /PatrykKuchta_CV.pdf link is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-10-19 19:33:35 +01:00
Patryk-KuchtaandClaude Opus 5 8c3e97ab73 chore: patch vulnerable dependencies
Security Audit / Security Vulnerability Scan (pull_request) Successful in 32s
Code Quality Check / Lint & Type Check (pull_request) Successful in 32s
Upgrade next to 15.5.28 (clears 2 critical RCE advisories plus the SSRF,
middleware-bypass and cache-poisoning set), sharp to 0.35.5, sass,
@typescript-eslint/*, eslint-config-next and react-icons within their
current majors. Add pnpm overrides to force patched transitives
(js-yaml, flatted, brace-expansion, minimatch, postcss).

Audit goes from 63 advisories (2 critical, 38 high) to 1 high with no
upstream fix available.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-10-19 19:24:08 +01:00
Patryk-KuchtaandClaude Opus 5 1446679f4a feat: promote to Senior Technical Consultant and use British spelling
Update the current role to Senior Technical Consultant (AI & Data) from
October 2026, close out the previous Technical Consultant entry, and
convert site copy to British spelling.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-10-19 19:21:12 +01:00
8 changed files with 997 additions and 645 deletions

No files matched your search

+14 -10
View File
@@ -17,27 +17,27 @@
"animejs": "^3.2.2", "animejs": "^3.2.2",
"aos": "^2.3.4", "aos": "^2.3.4",
"eslint": "8.57.1", "eslint": "8.57.1",
"eslint-config-next": "15.5.12", "eslint-config-next": "15.5.28",
"next": "^15.5.12", "next": "^15.5.28",
"react": "^18.3.1", "react": "^18.3.1",
"react-dom": "^18.3.1", "react-dom": "^18.3.1",
"react-icons": "^5.5.0", "react-icons": "^5.7.0",
"react-transition-group": "^4.4.5", "react-transition-group": "^4.4.5",
"sharp": "^0.34.5", "sharp": "^0.35.5",
"typescript": "5.9.3" "typescript": "5.9.3"
}, },
"devDependencies": { "devDependencies": {
"@next/eslint-plugin-next": "^15.5.12", "@next/eslint-plugin-next": "^15.5.28",
"@types/aos": "^3.0.7", "@types/aos": "^3.0.8",
"@types/node": "^20.19.33", "@types/node": "^20.19.33",
"@types/react": "^18.3.28", "@types/react": "^18.3.28",
"@types/react-dom": "^18.3.7", "@types/react-dom": "^18.3.7",
"@types/react-transition-group": "^4.4.12", "@types/react-transition-group": "^4.4.12",
"@typescript-eslint/eslint-plugin": "^8.56.0", "@typescript-eslint/eslint-plugin": "^8.72.0",
"@typescript-eslint/parser": "^8.56.0", "@typescript-eslint/parser": "^8.72.0",
"eslint-plugin-react": "^7.37.5", "eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"sass": "^1.97.3" "sass": "^1.105.2"
}, },
"engines": { "engines": {
"node": ">=18.0.0", "node": ">=18.0.0",
@@ -45,7 +45,11 @@
}, },
"pnpm": { "pnpm": {
"overrides": { "overrides": {
"minimatch": ">=10.2.1" "js-yaml": ">=4.3.2",
"flatted": ">=3.4.2",
"brace-expansion": ">=5.0.12",
"minimatch": ">=10.2.3",
"postcss": ">=8.5.23"
} }
} }
} }
+959 -622
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.
+4 -4
View File
@@ -2,23 +2,23 @@ export interface ICurrentWorkData {
role: string; role: string;
company: string; company: string;
companyUrl: string; companyUrl: string;
specialization: string; specialisation: string;
location: string; location: string;
imagePath: string; imagePath: string;
paragraphs: string[]; paragraphs: string[];
} }
const currentWorkData: ICurrentWorkData = { const currentWorkData: ICurrentWorkData = {
role: "Technical Consultant", role: "Senior Technical Consultant",
company: "Softwire", company: "Softwire",
companyUrl: "https://www.softwire.com/", companyUrl: "https://www.softwire.com/",
specialization: "AI Engineering", specialisation: "AI & Data",
location: "Manchester, United Kingdom", location: "Manchester, United Kingdom",
imagePath: "/portfolio/work_profile.png", imagePath: "/portfolio/work_profile.png",
paragraphs: [ paragraphs: [
"I spend much of my time <strong>designing and evaluating AI systems</strong>, or systems where AI plays a central role. My work involves the full lifecycle of AI implementation, from initial concept through to production deployment.", "I spend much of my time <strong>designing and evaluating AI systems</strong>, or systems where AI plays a central role. My work involves the full lifecycle of AI implementation, from initial concept through to production deployment.",
"I have <strong>delivered training and adoption materials</strong> that have significantly improved AI usage within Softwire, helping teams understand both the capabilities and limitations of AI technologies. I've also created <strong>autonomous AI pipelines</strong> that have reduced developer burden by automating tasks that were previously time-consuming manual processes.", "I have <strong>delivered training and adoption materials</strong> that have significantly improved AI usage within Softwire, helping teams understand both the capabilities and limitations of AI technologies. I've also created <strong>autonomous AI pipelines</strong> that have reduced developer burden by automating tasks that were previously time-consuming manual processes.",
"Working with <strong>diverse clients</strong> (from the highly skeptical to the enthusiastically optimistic), I've developed expertise in <strong>communicating AI benefits</strong> while respecting organizational constraints. This involves not just technical implementation, but also the human and ethical dimensions of AI adoption.", "Working with <strong>diverse clients</strong> (from the highly sceptical to the enthusiastically optimistic), I've developed expertise in <strong>communicating AI benefits</strong> while respecting organisational constraints. This involves not just technical implementation, but also the human and ethical dimensions of AI adoption.",
"A particular area of passion for me is <strong>Ethical AI and Sustainable AI</strong>. I've spent considerable time advocating for sustainability considerations in AI systems, conducting <strong>environmental assessments for embedded AI</strong>, and building adoption systems that leverage <strong>local open-source AI</strong> instead of relying on large providers whose ethical standards can be questionable." "A particular area of passion for me is <strong>Ethical AI and Sustainable AI</strong>. I've spent considerable time advocating for sustainability considerations in AI systems, conducting <strong>environmental assessments for embedded AI</strong>, and building adoption systems that leverage <strong>local open-source AI</strong> instead of relying on large providers whose ethical standards can be questionable."
] ]
}; };
+5 -5
View File
@@ -14,11 +14,11 @@ const projectData : IProjectArguments[] = [
github: "https://github.com/KuchtaVR6/Multi-LLM-Agent", github: "https://github.com/KuchtaVR6/Multi-LLM-Agent",
document: "/multiAgent.pdf", document: "/multiAgent.pdf",
title: "Efficient Agents with Hot-Swappable Adapters", title: "Efficient Agents with Hot-Swappable Adapters",
text: "Developed a modular multi-agent system using parameter-efficient fine-tuning to enhance tool use in small language models. Implemented hard routing with expert adapters, achieving performance surpassing larger closed-source models. Demonstrated skills in distributed training, model optimization, and API integration." text: "Developed a modular multi-agent system using parameter-efficient fine-tuning to enhance tool use in small language models. Implemented hard routing with expert adapters, achieving performance surpassing larger closed-source models. Demonstrated skills in distributed training, model optimisation, and API integration."
}, },
{ {
imagePath: "latviaEstimation.png", imagePath: "latviaEstimation.png",
title: "AI Property Valuation with Novel Normalization", title: "AI Property Valuation with Novel Normalisation",
tech: [ tech: [
SkillEnum.machineLearning, SkillEnum.machineLearning,
SkillEnum.research, SkillEnum.research,
@@ -28,7 +28,7 @@ const projectData : IProjectArguments[] = [
SkillEnum.computerVision SkillEnum.computerVision
], ],
document: "/DNNpropertyEstimation.pdf", document: "/DNNpropertyEstimation.pdf",
text: "Built a deep learning model combining CNNs and structured data for property valuation, achieving R² of 0.7287. Introduced novel geo-temporal normalization for market dynamics. Applied transfer learning, advanced regularization, and multi-modal data fusion including transport and POI maps. Led data collection and preprocessing." text: "Built a deep learning model combining CNNs and structured data for property valuation, achieving R² of 0.7287. Introduced novel geo-temporal normalisation for market dynamics. Applied transfer learning, advanced regularisation, and multi-modal data fusion including transport and POI maps. Led data collection and preprocessing."
}, },
{ {
imagePath: "ipp.png", imagePath: "ipp.png",
@@ -57,7 +57,7 @@ const projectData : IProjectArguments[] = [
SkillEnum.python, SkillEnum.python,
SkillEnum.numpy SkillEnum.numpy
], ],
text: "Implemented and analyzed three bio-inspired optimization algorithms: Particle Swarm Optimization, Genetic Algorithms, and Genetic Programming. Conducted comparative performance analysis across different problem domains. Demonstrated algorithm implementation, experimental design, and data analysis skills.", text: "Implemented and analysed three bio-inspired optimisation algorithms: Particle Swarm Optimisation, Genetic Algorithms, and Genetic Programming. Conducted comparative performance analysis across different problem domains. Demonstrated algorithm implementation, experimental design, and data analysis skills.",
github: "https://github.com/KuchtaVR6/nat_coursework", github: "https://github.com/KuchtaVR6/nat_coursework",
document: "/PatrykKuchta_nat.pdf" document: "/PatrykKuchta_nat.pdf"
}, },
@@ -77,7 +77,7 @@ const projectData : IProjectArguments[] = [
{ {
imagePath: "cifar10.png", imagePath: "cifar10.png",
title: "Deep Learning Image Classification (CIFAR-10)", title: "Deep Learning Image Classification (CIFAR-10)",
text: "Built CNN-based image classifier achieving 95.5% accuracy on CIFAR-10 dataset. Applied deep learning techniques including data augmentation, regularization, and hyperparameter tuning. Demonstrated model training, evaluation, and optimization skills. Scored 100% on coursework assignment.", text: "Built CNN-based image classifier achieving 95.5% accuracy on CIFAR-10 dataset. Applied deep learning techniques including data augmentation, regularisation, and hyperparameter tuning. Demonstrated model training, evaluation, and optimisation skills. Scored 100% on coursework assignment.",
tech: [ tech: [
SkillEnum.python, SkillEnum.python,
SkillEnum.computerVision, SkillEnum.computerVision,
+12 -1
View File
@@ -1,6 +1,15 @@
import { WorkExperienceArgs } from "@/src/portfolio/helpers/WorkExperience"; import { WorkExperienceArgs } from "@/src/portfolio/helpers/WorkExperience";
const workExperienceData : WorkExperienceArgs[] = [ const workExperienceData : WorkExperienceArgs[] = [
{
industry: "Software & AI",
title: "Senior Technical Consultant",
company: "Softwire",
city: "Manchester",
country: "United Kingdom",
startDate: "October 2026",
isImportant: true
},
{ {
industry: "Software & AI", industry: "Software & AI",
title: "Technical Consultant", title: "Technical Consultant",
@@ -8,6 +17,7 @@ const workExperienceData : WorkExperienceArgs[] = [
city: "Manchester", city: "Manchester",
country: "United Kingdom", country: "United Kingdom",
startDate: "November 2025", startDate: "November 2025",
endDate: "October 2026",
isImportant: true isImportant: true
}, },
{ {
@@ -130,7 +140,8 @@ export const workExperienceParagraph =
"I gained experience as a Software Developer Intern at Softwire. During my master's degree, I contributed to " + "I gained experience as a Software Developer Intern at Softwire. During my master's degree, I contributed to " +
"the Artificial Intelligence industry as a Programming Data Annotator at DataAnnotation Tech. Upon graduation, " + "the Artificial Intelligence industry as a Programming Data Annotator at DataAnnotation Tech. Upon graduation, " +
"I accepted a full-time offer to join Softwire as a Software Developer in their North West office in Manchester. " + "I accepted a full-time offer to join Softwire as a Software Developer in their North West office in Manchester. " +
"In November 2025, I transitioned to Technical Consultant, AI Specialist. At Softwire, I have gained valuable experience " + "In November 2025, I transitioned to Technical Consultant, AI Specialist, and in October 2026 I was promoted to " +
"Senior Technical Consultant within the AI & Data Practice. At Softwire, I have gained valuable experience " +
"working on several AI projects, applying my theoretical machine learning knowledge to real-world problems. " + "working on several AI projects, applying my theoretical machine learning knowledge to real-world problems. " +
"Across these diverse roles, I have developed a strong work ethic and a broad set of transferable skills."; "Across these diverse roles, I have developed a strong work ethic and a broad set of transferable skills.";
+2 -2
View File
@@ -9,8 +9,8 @@ const RoleInfo = (): JSX.Element => {
return ( return (
<div className={styles.roleInfo}> <div className={styles.roleInfo}>
<h3>{currentWorkData.role}</h3> <h3>{currentWorkData.role}</h3>
<p className={styles.specialization}> <p className={styles.specialisation}>
Specializing in <strong>{currentWorkData.specialization}</strong> Specialising in <strong>{currentWorkData.specialisation}</strong>
</p> </p>
<p className={styles.company}> <p className={styles.company}>
at{" "} at{" "}
@@ -172,7 +172,7 @@
margin-bottom: 0.3rem; margin-bottom: 0.3rem;
} }
.specialization { .specialisation {
font-style: italic; font-style: italic;
color: #666; color: #666;
margin-bottom: 0.3rem; margin-bottom: 0.3rem;