SKILLS

Languages

python two snakes logoPython
C++ LogoC++

Go

JS LogoJavaScript
TS LogoTypeScript

Web Frameworks

react light blue atoms logoReact
Svelte LogoSvelte
Next.js
Flask LogoFlask icon by Icons8

Libraries

PyTorch, Pandas, NumPy, OpenCV, Selenium

SOCIAL

github whitelinkedin in logo

Linkdgen

By Michael West

March 26, 2025


Try it out!

Code


Background

Have you ever seen the posts on tech-LinkedIn that are often filled with emojis, buzzwords, and no actual insights? I certainly have. I got tired of seeing these, and honestly find them quite funny in a sort of ironic way, so I decided to write an easy to use site to generate these posts.


Generating Posts

My first idea was to gather a huge dataset of posts and then train my own LLM on it. I quickly realized however, that not only was that ethically ambiguous (users wouldn't have control over consent), I might also be violating copyright and intellectual property laws. So I decided to just query an already existing LLM, Google's Gemini, and using prompt engineering and it's one million token context window, I'm able achieve results that I think are pretty similar to if I had trained my own model.


Tech Stack

I was mainly going for development speed so I used the same stack as my personal site: Next.js with TailwindCss and TypeScript, deployed on Vercel. The API that queries Gemini is super simple so it's just stored on the Next app router API route and deployed on Vercel with the rest of the project.


Features

The app has two main features: generating a post from scratch, and "linkedin-i-fying" an existing post that you copy and paste in. Once you've generated something, you are also able to go back and view and edit your original prompt. Some future features I might potentially build out if I feel like it are: dark mode toggle, "character" prompts to add some flavor and uniqueness to the posts, and maybe even one-button exporting to LinkedIn itself.


Conclusion

Overall I had a great time builing this project! I definitely learned a LOT about error handling and serving them (more to come on that in a future blog post), deploying an app with rate limits and request limits, and developing UI. If you have any questions feel free to reach out, and if you use this to make a post, tag me in the comments so I can see!