In April 2026 we launched TechPuls — the first open database of the German tech landscape. Current state: 815 tech companies across 80 German cities , interactive map at techlogia.de/en/techpuls . This post explains how the project came together and which methodological decisions we made along the way. Why TechPuls? Researching German tech companies today means landing at Crunchbase/Tracxn (international, US-unicorn focused, paywalled), deutsche-startups.de (current but editorial, no structured data), Statista (aggregated, expensive, not per-company), or the Gründungsmonitor (historical only). An open , structured , current database didn't exist. As an open-source project with CC BY 4.0 data, we close that gap. Data structure Each city has name, slug, federal state, population, lat/lon, a tech_score (0–100 composite index), and a companies count. Each company has name, city, category (startup/scaleup/enterprise), industry, founding year, employee range, tech stack, website, and funding (if known). Tech score leaders: Berlin (92), Munich (88), Hamburg (82). Lower-end cities are heavy-industry towns like Hamm (36) or Gelsenkirchen (38) — not because no value is created there, but because the tech dimension is small. Data sources Base seed was 55 known German tech companies entered manually. The rest came via automated agent runs over public sources: deutsche-startups.de deal monitor, EU-Startups, t3n, GitHub APIs for tech stack inference, company websites, job postings. Each research agent run produces a markdown file under docs/techpuls-data/ , version-controlled in Git. That lets us trace when each entry was added and where the info came from — important for data quality and for CC BY 4.0 attribution. Challenges Duplicates via legal-form variants "Batene GmbH" vs. "Batene" — the agent found both spellings in different sources. Without normalization, we'd have duplicates. Solution: when generating the slug, strip legal-form suffixes (GmbH, AG, SE, eG, KG, Holding). That filtered 32 duplicates in an import of 540 candidates — roughly 6% error rate without this step. Cities not in the DB Originally only 30 cities. Companies in Regensburg, Paderborn, Siegen, Freiburg couldn't be added. Solution: include all 80 German major cities (population >100,000). That covers ~95% of the German tech scene. "Near Munich" or "HQ Zurich, DE office" Many German companies sit in Munich suburbs (Martinsried, Ottobrunn, Garching) or have HQs in Switzerland. Our assignment rule: if the real German office is in a suburban municipality and that municipality isn't a major city, we assign them to the nearest major city (Munich in those cases). For non-German HQs: include only if there's a substantial German office. What you can do with it Data is licensed under CC BY 4.0. API endpoints: GET /api/techpuls/cities?limit=200 — all 80 cities with coordinates GET /api/techpuls/cities/{slug} — city details with company list GET /api/techpuls/stats — aggregate numbers GET /api/techpuls/rankings?limit=20 — top cities Attribution: "Data: TechPuls (techlogia.de), CC BY 4.0" . For bulk dumps (the entire DB at once), the public API is rate-limited — request via email at kontakt@techlogia.de . What's next Planned features for Q2/Q3 2026: tech-stack filter (all companies with "Rust" or "Kubernetes"), funding timeline per city, CSV export, public contributions via pull request against the GitHub repo. If you want to help: issues welcome, PRs with additional companies too.