npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lunchbot/lunchbot-cli

v1.1.0

Published

CLI tool to fetch today's Helsinki lunch menus — wraps the LunchBot AI skill

Readme

🍽 LunchBot — Helsinki lunch menus for AI agents.

Helsinki Salmisaari/Ruoholahti area lunch menus, straight to your terminal or AI agent — in English or Finnish.

An open-source CLI and AI agent skill that fetches today's or this week's lunch menus from all major restaurants in the Salmisaari/Ruoholahti area of Helsinki. One command gives the full daily spread across 8 restaurants.

GitHub · Add Skill to Agent · Install CLI


$ lunchbot today

🍽  LUNCH — WEDNESDAY  2026-04-08  [🇬🇧  English]
──────────────────────────────────────────────────────

  📍 Factory Ruoholahti
     • Vegan miso soup with tofu (VE+G+VS)
     • Sesame seed breaded chicken breast in chili sauce (M+G+VS)
     • Oven-baked sausages with Dijon mustard and cheese topping (L+G)
     • House spinach pancakes (L) lingonberry mash (VE+G)
     • Banoffee mousse (VL+gluten-free biscuit)

  📍 Roihu
     • Lentil soup with coconut (VE+G)
     • Grilled salmon with lemon butter sauce (L+G)
     • Chicken tikka masala with basmati rice (L+G)
     ...

Quick Start

Choose your setup and copy the commands into your terminal.

Agent (Claude Code, Cursor, Codex, OpenCode…)

# 1) Install the CLI
npm install -g @lunchbot/lunchbot-cli

# 2) Add the LunchBot skill to your agent
npx skills add lunchbotfi/lunchbot

Then just ask your agent naturally:

  • "What's for lunch today?"
  • "Show me this week's menus in Finnish"
  • "Any vegetarian options at Factory today?"

CLI only

# Install
npm install -g @lunchbot/lunchbot-cli

# Run
lunchbot

What can I do with LunchBot?

Every command works standalone or via your AI agent. Add --json to any command for structured output.

Today's menus

"What's for lunch today?"

lunchbot today

Full week view

"What's on the menu this week?"

lunchbot week

Filter by restaurant

"What's for lunch at Roihu today?"

lunchbot --restaurant "Roihu"
lunchbot week --restaurant "Factory"

Query by date

"What's for lunch tomorrow?" "What was lunch yesterday?" "What's on Friday?"

lunchbot --date tomorrow
lunchbot --date yesterday
lunchbot --date friday          # this coming Friday
lunchbot --date 2026-04-10      # exact date (ISO format)

Note: Menus are only published for the current week. Queries for next week or last week will return "No menu found" as the restaurants don't publish in advance or keep historical menus.

Finnish menus

"Näytä tämän viikon lounaslistat suomeksi"

lunchbot --finnish
lunchbot week --restaurant "Factory" --finnish

Raw JSON output

For scripting or piping into other tools:

lunchbot --json
lunchbot week --restaurant "Roihu" --json

Restaurants covered

All restaurants are in the Salmisaari / Ruoholahti area, Helsinki.

| Restaurant | Network | English | Finnish | |-----------------------|-----------|---------|---------| | Roihu | Compass | ✅ Native | ✅ Native | | Food & Co Ruoholahti | Compass | ✅ Native | ✅ Native | | Factory Ruoholahti | Factory | ✅ Native | ✅ Native | | Factory Salmisaari | Factory | ✅ Native | ✅ Native | | Dylan Milk | Luncher | ✅ Native | ✅ Native | | Dylan Raspberry | Luncher | ✅ Native | ✅ Native | | Hima & Sali | Luncher | ✅ Native | ✅ Native | | Oikeus | Nordrest | 🔄 Auto-translated | ✅ Native |


How It Works

1. Fetches menus in parallel All 8 restaurants are scraped simultaneously — the whole thing runs in a few seconds.

2. Native bilingual support Most restaurants have native EN/FI APIs or bilingual pages. No translation needed except Oikeus (Finnish-only site), which is auto-translated via MyMemory.

3. One failure never blocks the rest Each restaurant fetches independently. If one is down, the others still show up.


FAQ

Does it work outside of Helsinki?

No — LunchBot is purpose-built for the Salmisaari/Ruoholahti office area. The restaurant list is hardcoded.

Do I need an account or API key?

No. LunchBot scrapes public menu pages and free APIs. No login, no key.

How fresh is the data?

Fetched live every time you run it — always today's actual menu.

What does the allergen notation mean?

| Code | Meaning (FI) | Meaning (EN) | |------|-------------|--------------| | L | Laktoositon | Lactose-free | | VL | Vähälaktoosinen | Low-lactose | | G | Gluteeniton | Gluten-free | | VE | Vegaaninen | Vegan | | M | Maidoton | Dairy-free | | VS | Sis. valkosipulia | Contains garlic |

What if a restaurant shows "No menu found"?

The restaurant may be closed (public holidays, summer break) or their website structure may have changed. Open an issue on GitHub if it persists.

Can I add more restaurants?

Yes! Pull requests are welcome. See the scraper structure in scripts/scrape.py — each network (Compass, Luncher, Factory, Nordrest) has its own fetch method.


Development

# Clone
git clone https://github.com/lunchbotfi/lunchbot.git
cd lunchbot

# Set up Python env
python3 -m venv .venv
source .venv/bin/activate
pip install requests beautifulsoup4 lxml

# Run directly
python3 scripts/scrape.py today
python3 scripts/scrape.py week --finnish
python3 scripts/scrape.py --restaurant "Roihu" --json

# Test CLI locally (no publish needed)
npm link
lunchbot today

GitHub · Issues

MIT Licensed · Not affiliated with any of the listed restaurants.