Tired of the Apply-and-Repeat Cycle? Meet Lelouvre.

What I Built Find an internship. Read the requirements. Open your résumé. Rewrite the same project. Fill out another form. Repeat. Somewhere between the fifth tab and the third “create an account,” applying for internships starts feeling like an unpaid internship itself. Meet Lelouvre: the local internship assistant I built because I have coursework, projects, and a life outside application forms. Lelouvre brings opportunity discovery, application preparation, and tracking into one workspace. It helps find relevant roles, explains their fit, and uses Gemma running locally through Ollama to draft résumé bullets from experience I have actually recorded. The starting point is an evidence bank: projects, tools, responsibilities, and results. Suggested bullets link back to those entries, so I can check the source before putting a claim on my résumé. When an application reaches something that needs my judgment, Lelouvre stops and tells me what needs attention. For “Slow and

Tired of the Apply-and-Repeat Cycle? Meet Lelouvre.

What I Built

Find an internship. Read the requirements. Open your résumé. Rewrite the same project. Fill out another form. Repeat.

Somewhere between the fifth tab and the third “create an account,” applying for internships starts feeling like an unpaid internship itself.

Meet Lelouvre: the local internship assistant I built because I have coursework, projects, and a life outside application forms.

Lelouvre brings opportunity discovery, application preparation, and tracking into one workspace. It helps find relevant roles, explains their fit, and uses Gemma running locally through Ollama to draft résumé bullets from experience I have actually recorded.

The starting point is an evidence bank: projects, tools, responsibilities, and results. Suggested bullets link back to those entries, so I can check the source before putting a claim on my résumé.

When an application reaches something that needs my judgment, Lelouvre stops and tells me what needs attention.

For “Slow and Steady,” I wanted something that would let me close a few tabs and breathe.

Demo

https://imgur.com/a/ngt778c

This walkthrough uses fictional profile and project data. The GIF shows the interface; the repository contains the local AI implementation.

Gemma inference runs locally. The separate hosted preview has inference and application changes disabled. No real employer application was submitted for this demonstration.

Code

Meet Lelouvre on GitHub

Built in the open and released under the Apache 2.0 license.

How I Built It

Lelouvre uses Python, SQLite, and a browser interface, with Gemma through Ollama for local language tasks. Playwright supports interactions with compatible application forms.

The workflow starts with a role and recorded evidence. Gemma receives both and returns structured résumé bullets with evidence IDs. Code then checks the output for missing references and certain unsupported numbers or tool names.

That means a polished sentence still has to survive a check against its source. These checks catch specific problems; I still need to review the result.

Gemma also helps analyze listings, explain fit, and summarize activity. Available timing and token counts appear in model traces, and fallback output is labeled separately.

One memorable debugging moment: Gemma repeated evidence IDs inside the bullet text. The checker spotted the digits and rejected them as unsupported numbers. Technically cautious. Socially awkward.

I added handling for that exact citation format while keeping checks on the actual claims.

In a local test using fictional evidence, gemma4:e2b completed a tailoring request in approximately 49 seconds. That is measured generation time, not a measured productivity saving.

Application execution has its own boundaries. Supported submissions require reviewed answers, an approved packet, and passing checks. Authorization questions and unsupported steps come back to the user. Suggested bullets also do not automatically rewrite the attached résumé file.

Why Does Open Innovation Matter?

My résumé is personal. So are my project history and application answers.

Running an open-weight model locally lets the evidence and generation prompts stay on my machine during inference. Discovery still uses the internet, and submitting an application sends approved information to the employer.

Using Gemma through Ollama also gives me control over the setup. I can inspect prompts, change the installed model, test different behavior, and adjust the workflow without requiring a paid inference endpoint.

That control became practical during development: a missing model tag broke the workflow, and I could inspect the local runtime, correct the configuration, and test the model actually installed.

Local inference has hardware and electricity costs. But I can keep experimenting without making every generation depend on a hosted API.

And because Lelouvre’s code is open, other people can inspect the same prompts, checks, and approval rules—and help make them better.

Prize Categories

  • Best Use of Gemma: Local résumé tailoring, listing analysis, fit explanations, and activity summaries.

I still have to earn the experience, decide where to apply, and review what goes out under my name.

I would just like to spend less of my evening copying it into another box.

Lelouvre prepares and checks the work; supported submissions require reviewed answers, and unresolved steps come back to me.

Share