SkillLink
Inspiration
I'll never forget the day I met James.
He was fixing my neighbor's motorcycle on a dusty street corner in Nairobi. His hands moved with precision, the kind that only comes from years of experience. As I watched him work, I asked how long he'd been doing this.
"Twelve years," he said, wiping grease from his hands. "Started when I was sixteen."
Twelve years. That's longer than most engineers spend in school and early career combined. Yet when I asked if he'd ever applied for a job at a proper garage, he just shook his head.
"They want certificates. Papers. I don't have those. I just have... this." He gestured at the motorcycle, now purring smoothly.
That moment haunted me.
Here was a man with over a decade of expertise, who could diagnose engine problems by sound alone, who had built a loyal customer base through pure skill, and yet, to the formal economy, he was invisible. No LinkedIn profile. No resume. No way to prove what he knew.
I started seeing James everywhere. The tailor who'd been sewing for fifteen years but couldn't apply to fashion houses. The carpenter who built beautiful furniture but had no portfolio. The cook whose food people traveled across town for, but who couldn't get hired at restaurants because she had "no experience."
They all had the same problem: their skills weren't recognized by formal systems.
That's when SkillLink was born, not from a business idea, but from a simple belief: Everyone has a skill. They just need a way to prove it.
I decided to build a bridge between informal talent and formal recognition, powered by AI, designed with empathy, and built for the millions of skilled workers whose expertise deserves to be seen.
What it does
SkillLink is an AI-powered web platform that converts real-world experience into verified digital resumes and portfolios.
Users simply describe what they do by typing or speaking and our system uses advanced AI models to generate a professional CV with categorized skills, work summaries, and structured experience sections.
Core features include:
- ๐ง AI-powered resume generation - Natural language processing transforms informal descriptions into professional resumes
- ๐ฃ๏ธ Voice input support - Users can record voice notes describing their work, making it accessible to those who prefer speaking over typing
- โ Community verification - Planned feature for peer endorsements and skill validation
- ๐งพ Professional resume display - Clean, structured format with contact info, professional summary, skills, and work experience
- ๐ฑ Mobile-responsive design - Full-viewport hero sections and mobile-first interface that works on any device
- ๐จ Modern dark theme - Empowering green and black color scheme with excellent contrast
- ๐ Copy-to-clipboard - Easy sharing of resume data
- ๐ Demo mode fallback - Intelligent keyword extraction ensures the app works even when AI APIs are unavailable
How I built it
I built SkillLink solo over two intense weeks, fueled by coffee and the faces of people like James who deserved better.
My focus was on simplicity, accessibility, and empowerment, building something that would actually work for real people, not just look good in a demo.
Frontend Architecture:
- React 19 with TypeScript for type-safe, component-based development
- Vite 6.2 as our blazing-fast build tool
- React Router DOM 7.9 for seamless client-side navigation
- Tailwind CSS for utility-first styling with custom green theme
- React Icons (Feather set) for clean, modern iconography
AI Integration:
- OpenRouter API with multiple model support (Llama 3.2, Gemini 2.0)
- Structured JSON responses with schema validation
- Intelligent prompt engineering to preserve cultural context while professionalizing language
- Demo mode with keyword extraction as a fallback when APIs are unavailable
Voice Processing:
- Web Speech API (MediaRecorder) for browser-based voice recording
- Fallback to text input for broader compatibility
- Clear user feedback for microphone permissions
Design Philosophy:
- Mobile-first approach ensuring usability on low-end devices
- Full-viewport hero sections for impactful landing experience
- Custom green scrollbar matching brand identity
- High contrast dark theme for readability and modern aesthetic
- Responsive typography scaling from mobile to desktop
Development Workflow:
- Component-driven development with reusable UI elements
- Error boundaries and graceful fallbacks
- Console logging for debugging and user feedback
- Environment variable management for API keys
Challenges I ran into
1. API Rate Limits and Payment Requirements
This was my biggest technical headache. I started with Google Gemini's free tier, hit quota limits immediately (0 requests per minute). Switched to OpenRouter with Mixtral, needed payment. Tried free models, got 429 rate limit errors.
At 2 AM, staring at error messages, I had a realization: if I couldn't afford consistent API access, neither could the people I was building this for.
Solution: I built an intelligent fallback system that automatically switches to demo mode when APIs fail. The demo mode uses keyword extraction to identify skills, parse years of experience, and generate professional summaries. Now the app always works, regardless of API availability. Sometimes constraints breed the best solutions.
2. Translating Informal Language to Professional Format
How do you take "I fix bikes" and turn it into a professional resume without erasing the person behind those words? This kept me up at night.
I didn't want to build something that just made everyone sound the same. James's twelve years of experience fixing motorcycles is different from someone who learned last year. That nuance matters.
Solution: I spent hours crafting AI prompts that preserve authentic voice while professionalizing language. The demo mode intelligently extracts keywords like "repair," "manage," "build" to identify real skills. It's not perfect, but it honors the person's story.
3. Voice Processing Across Browsers
I wanted voice input because I knew many of the people who'd use this would rather speak than type. But browser compatibility, microphone permissions, noisy street corners, it was harder than I expected. Solution: I implemented clear permission requests, fallback to text input, and user-friendly error messages. The voice feature works, but I made sure the app never requires it. Accessibility means having options.
4. Mobile Optimization
If this only worked on expensive laptops, I'd have failed. Most people I was building for would access this on a phone, maybe with spotty internet, maybe on a cracked screen.
Solution: Mobile-first wasn't just a design philosophy, it was a requirement. I tested on different viewport sizes, optimized load times, and made sure the green-on-black theme had enough contrast to read in bright sunlight. Every decision was made thinking about James on that street corner.
5. Staying Motivated Solo
Building alone meant no one to bounce ideas off, no one to celebrate small wins with, no one to tell me it would work when I doubted it.
Solution: I kept a photo of that street corner on my desk. Every time I wanted to quit, I'd look at it and remember why I started. This wasn't about building a cool app, it was about giving people like James a chance.
Each challenge pushed me to simplify and build something that feels human first, AI second.
Accomplishments that I'm proud of
๐ I built a fully functional MVP in 2 weeks - Solo. From concept to working demo with AI integration, voice input, and responsive design. Every line of code, every design decision, every late night, it was worth it.
โจ The app actually works - Even when APIs fail, even without payment, even on slow connections. I didn't just build a demo, I built something real people can use today.
๐จ It feels empowering - The green-on-black theme isn't just pretty, it represents growth and opportunity. Every button, every word, every interaction says "your skills matter."
๐ฃ๏ธ Voice input works - Because I knew typing isn't everyone's strength, but everyone has a story to tell.
๐ฑ It works on any device - Tested on my phone, my laptop, my friend's cracked-screen Android. If James can access it on a street corner, I succeeded.
๐ง I learned prompt engineering the hard way - Hours of tweaking prompts to preserve authentic voices while professionalizing language. It's an art, not a science.
๐ง I shipped with modern tech - React 19, TypeScript, Vite, Tailwind CSS. I didn't just learn these tools, I mastered them under pressure.
๐ I stayed focused on impact - Every feature decision was made thinking about the 80% of African workers in the informal sector. Not what's cool, what's useful.
๐ I created something beautiful - Custom green theme, hand-crafted favicon, cohesive design. This isn't just functional, it's something people will want to use.
๐ I didn't give up - When APIs failed, I built fallbacks. When I got stuck, I kept coding. When I doubted, I remembered James. That's the accomplishment I'm most proud of.
What I learned
Technical Learnings:
1. Constraints breed creativity When APIs failed and budgets ran out, I didn't have the luxury of throwing money at the problem. That's when I built the demo mode, and realized it might be better than relying on external APIs anyway. Sometimes limitations force you to build something more resilient.
2. Prompt engineering is harder than coding I spent more time crafting the perfect AI prompt than writing the entire frontend. Getting AI to understand "I fix bikes" and turn it into "Automotive Repair Specialist with 12 years of hands-on experience" while keeping the human voice intact? That's an art form.
3. TypeScript is your friend at 3 AM When you're exhausted and making changes, type safety catches the bugs your tired brain misses. TypeScript saved me countless hours of debugging.
4. Mobile-first means people-first Designing for a cracked phone screen with spotty internet forced me to cut everything that wasn't essential. The result? A better app for everyone.
5. Build for the worst case I designed assuming APIs would fail, internet would be slow, and users would be on old devices. That mindset made the app bulletproof.
Human Learnings:
1. Empathy is a design tool Every time I made a decision, I asked: "Would James understand this? Could he use this on that street corner?" That question shaped everything.
2. Recognition is dignity Through building this, I learned that for millions of people, the lack of formal credentials isn't just inconvenient, it's a denial of their identity. A resume isn't just paper. It's proof that you exist, that you matter.
3. You don't need permission to build what matters I didn't wait for funding, a team, or perfect conditions. I saw a problem and started coding. Sometimes that's enough.
4. Shipping is better than perfect I could've spent months adding features. Instead, I shipped something that works today. Real people can use it now. That matters more than perfection.
5. Solo doesn't mean alone I built this alone, but I built it for James, for the tailor, for the carpenter, for the cook. Their stories kept me going. In a way, they were with me the whole time.
What's next for SkillLink
Phase 1: Enhanced Core Features (Next 3 Months)
- PDF Export - Generate downloadable, beautifully formatted PDF resumes
- QR Code Skill IDs - Unique QR codes for each profile, enabling offline verification
- Community Verification System - Allow past clients and peers to endorse skills with ratings and testimonials
- Multi-language Support - Swahili, French, Hausa, and other African languages
- Improved AI Models - Fine-tune prompts and explore better free AI options
- User Accounts - Save and manage multiple resume versions
Phase 2: Employer Platform (6-12 Months)
- Employer Dashboard - Allow businesses to search and discover verified talent
- Job Matching Algorithm - AI-powered matching between skills and job requirements
- Verification Badges - Visual indicators of community-verified skills
- Messaging System - Direct communication between employers and workers
- Analytics Dashboard - Track profile views, endorsements, and opportunities
Phase 3: Ecosystem Expansion (12-24 Months)
- Mobile Apps - Native iOS and Android applications
- Blockchain Credentials - Immutable, verifiable skill records
- Skills Training Recommendations - AI-suggested courses and certifications
- Integration with Job Boards - Partner with Indeed, LinkedIn, local job platforms
- NGO Partnerships - Collaborate with organizations supporting informal workers
- Government ID Integration - Link with national identity systems for enhanced verification
Phase 4: Financial Inclusion (Long-term Vision)
- Micro-credentialing System - Stackable digital credentials for specific skills
- Financial Services Integration - Connect verified workers with loans, insurance, and banking
- Skills Marketplace - Platform for gig work and project-based opportunities
- API for Third Parties - Allow other platforms to verify SkillLink credentials
- AI Career Coaching - Personalized guidance for skill development and career growth
What I'm doing next:
This week:
- Deploy to production so James and others can actually use it
- Create a demo video showing the real user journey
- Go back to that street corner and show James his first digital resume
Next month:
- Gather feedback from real users, mechanics, tailors, cooks, carpenters
- Add PDF export so people can print and share their resumes
- Build the QR code feature for offline verification
Next quarter:
- Launch community verification so peers can endorse each other
- Add Swahili support (then French, then Hausa)
- Partner with at least one NGO or government agency
Long-term vision:
- Mobile apps for iOS and Android
- Employer dashboard for job matching
- Blockchain credentials for permanent verification
- Financial inclusion partnerships
But honestly? Right now, I just want to see James use this. If one person gets a job because of SkillLink, everything was worth it.
SkillLink isn't just about technology. It's about recognition, dignity, and opportunity.
I'm building a future where everyone's skills are seen, valued, and verified, regardless of where they learned them.
Because James deserves better than being invisible.
Because talent is universal, but opportunity is not.
Because everyone has a skill, they just need a way to prove it.
"Everyone has a skill, I just help you prove it."
Built with โค๏ธ by Eugene Mutembei
For James, and the millions like him
Log in or sign up for Devpost to join the conversation.