WG-Lotse
A browser extension that scans WG listings in place, filters out hard blockers automatically, and surfaces the information that actually decides whether you should apply: built for expats who aren't fluent in German yet.

The Burden
If you've hunted for a WG in Germany, you know. If you haven't:
- Listings appear and disappear within hours. Early birds get replies, late applicants get ignored.
- Each listing is a wall of German text where the useful bits are buried.
- The same hard blockers keep reappearing in different wording: keine Zwischenmiete, nur Frauen, nur mit Schufa, nur Deutsche Muttersprachler, nur ab 30, maximal 3 Monate…
- You send 50+ applications. You get ignored 45 times, rejected 4, and maybe invited once.
- Repeat for weeks, often while also starting a new job in a new country.
Expats get filtered twice. Once by the language barrier: you miss a hard blocker written idiomatically and waste an application. And once by the listings themselves: “only native German speakers” is depressingly common.
The Approach
Build a browser extension that quietly reads each listing on the page and does what a fluent native speaker would do: flag the deal-breakers, pull out the important bits, and put them at the top.
Principles:
- Augment, don't replace. The extension works inside WG-Gesucht and other platforms people already use.
- Fast to read, hard to miss. Hard blockers are surfaced as a banner at the top of each listing, in your language.
- Translate the soft stuff, don't decide for the user. Smoker-friendly is a preference, not a blocker, flag it, let the user decide.
- Stay out of the way. No nags, no pop-ups, no analytics.
The Extension
How it fits in
Open a listing on a supported platform and WG-Lotse injects a compact summary card at the top of the page. The original listing is untouched. Scroll past the card and everything is where it was.

Inline summary card: no tab switching, no new feed to check.
What the card shows
- Verdict banner: green if no hard blockers match your profile, red with specifics if any do.
- Hard-blocker callouts: pulled phrases with short English translations. You see exactly why it's flagged.
- Pulled facts: Warmmiete, Kaltmiete, deposit, start date, minimum/maximum stay, who's already living there.
- Soft flags: smoker, pets, gender preference, temporary, furnished.


Hard blockers (left) vs soft flags (right). One stops you, the other informs you.
Setup, once
A short onboarding collects the data needed to flag blockers against you: age, gender, native language, desired length of stay, Schufa availability. Fully local-first: no account, no server, no data leaves your browser. Your profile is stored entirely in the extension's local storage.
District picker
Hamburg has over 100 districts. When you first arrive, you are presented with a list of names that mean nothing to you. I built a visual district picker so users can see where each district actually is on the map and make an informed choice instead of guessing from a dropdown.

The district picker: pick where you want to live by looking at a map, not a list of 100 German names.
Why this beats a scraper / feed
- Coverage is automatic: it works on whatever listings the platform shows, even ones that come and go within an hour.
- No ToS grey area from mass-scraping listings onto a third-party feed.
- Users keep their existing workflow and muscle memory.


Scoring overview (left) and detailed breakdown (right). Every score is explained.
Key Decisions
- Ship as a browser extension, not a web app or scraper-backed feed.
- Classify into hard blockers vs soft flags vs pulled facts: each with its own visual weight.
- Summary card renders in the user's language even when the listing is in German.
- Classification is transparent: every flag includes the original phrase that triggered it.
- No accounts, no tracking, no server round-trips for listing content. Classification runs in the content script.
Outcome
Applying to WG listings stops being a reading comprehension test. Hard blockers you'd miss as an expat get caught before you waste an application. Facts buried three paragraphs in are surfaced at the top. The workflow stays the same. Only faster, and much less defeating.
This project demonstrates:
- Identifying a painful, time-boxed workflow and shipping something narrow that makes it bearable
- Choosing the right form factor: a browser extension when a web app would have been the obvious wrong answer
- Real classification rules over messy, multilingual, inconsistent human text
- Designing for an audience, expats, that most German tools treat as an afterthought