Flight Search Strategy logo

Flight Search Strategy

Community
borski
flight-search-strategy

Canonical multi-source flight search strategy. Source priority (Duffel, Ignav, Google Flights, Skiplagged, Kiwi, Seats.aero, Southwest), parallel workflow, market selection for international price arbitrage.

Overview

Publisherborski
Repositorytravel-hacking-toolkit
Skill nameflight-search-strategy
Stars
690
Forks
75
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by borski on GitHub. Read the source before you install it.

Installation

Install the Flight Search Strategy AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/flight-search-strategy
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git /tmp/travel-hacking-toolkit
mkdir -p .claude/skills
cp -r /tmp/travel-hacking-toolkit/plugins/travel-hacking-toolkit/skills/flight-search-strategy .claude/skills/flight-search-strategy
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Flight Search Strategy in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Flight Search Strategy on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Flight Search Strategy is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Flight Search Strategy

Search ALL Sources for EVERY Flight Search

This is not a pick-one list. Each source returns different results, different prices, and different airlines. Missing a source means missing options. The priority order determines which price to trust when sources disagree, not which sources to skip.

PrioritySourceStrengthsBlind Spots
1Duffel (skill)Most accurate cash prices. Real GDS per-fare-class data. Bookable.No Southwest. No award pricing. Offers expire in 15-30 min.
2Ignav (skill)Fast REST API. Market selection for price arbitrage. Free.No Southwest. No award pricing.
3Google Flights (skill, agent-browser)Covers ALL airlines including Southwest cash prices. Free. Economy/business comparison.Prices can be inflated vs GDS. No points pricing.
4Skiplagged (MCP)Hidden city fares. Zero config.No Southwest. Can be noisy on small markets.
5Kiwi.com (MCP)Virtual interlining (creative cross-airline routings). Zero config.Returns garbage on small markets. No Southwest.
6Seats.aero (skill)Award flight availability across 25+ programs. The crown jewel for points.Cached data, not live. No cash prices. No Southwest.
7SerpAPI (skill, optional)Google Hotels search. Destination discovery (Google Travel Explore).NOT for flights (inflated prices). Hotels and "where should I go?" only.
8Southwest (skill, Patchright)Fare classes, points pricing, Companion Pass. All 4 fare classes, cash + points.Pre-built Docker image: ghcr.io/borski/sw-fares. Or local Patchright (headed mode). ~20s per search.

The Standard Flight Search Workflow

Run ALL of these in parallel: Duffel + Ignav + Google Flights + Skiplagged + Kiwi.

Skiplagged and Kiwi are keyless MCP servers — they are available in every properly launched session. Attempt the tool call before ever claiming MCP is unavailable, and never substitute improvised browser scraping for these sources (see fallback-and-resilience).

Always add Seats.aero for award comparison. Always run the Southwest skill if SW flies the route.

Don't skip sources. Don't assume one source has everything. Present the combined results with the best options highlighted regardless of which source found them.

For a single unified comparison, use the compare-flights skill which orchestrates all of the above in parallel and applies transfer partner optimization.

Round Trip vs One-Way Construction

When the trip has a return date, price BOTH constructions — proactively, without being asked:

  1. The round-trip fare on every source (Duffel, Ignav, Kiwi, Skiplagged, and Google Flights all quote returns).
  2. Two one-ways, searched independently — which also surfaces the mixed construction (outbound on carrier A, return on carrier B) that round-trip searches can't see.

Run all of it in the same parallel batch; it's two extra searches, not a second pass.

Which wins is route-dependent, so never assume:

  • Round trips often win internationally on legacy carriers, where return fares are discounted relative to two one-ways.
  • One-way pairs often win domestically, on ULCCs, and anywhere Southwest flies (SW prices every leg as a one-way). They also buy flexibility: each leg can be changed or canceled independently.
  • Mixed-carrier pairs frequently beat both when outbound and return are priced by different airlines' sale calendars.

Present the verdict explicitly with the delta: "Round trip $842 vs best one-way pair $918 — book the round trip, saves $76" (or the reverse). If the gap is under ~$50, mention the flexibility advantage of separate tickets before recommending the round trip.

For Southwest Specifically

Use the southwest skill:

bash
docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15 --points

Or:

bash
python3 skills/southwest/scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --points

Returns all 4 fare classes (Wanna Get Away, WGA+, Anytime, Business Select), cash and points pricing.

The google-flights skill is a faster fallback for SW cash prices only (no fare class breakdown, no points pricing).

Monitoring Existing Southwest Reservations

bash
docker run --rm -e SW_USERNAME -e SW_PASSWORD \
  ghcr.io/borski/sw-fares change --conf ABC123 --first Jane --last Doe --json

Logs in, selects both legs, and shows fare diffs for every available flight. Negative diffs = savings opportunity. Use --list to discover all upcoming confirmation numbers. Read-only. Never modifies reservations.

Market Selection Strategy

Different country markets return different prices for the same route. Searching from Thailand (&gl=TH) vs the US (&gl=US) can save hundreds of dollars.

Always try multiple markets for international flights:

  1. Departure country market first (e.g., &gl=US for flights from the US)
  2. Destination country market (e.g., &gl=JP for flights to Japan)
  3. Ask the user before trying more (e.g., third countries, VPN markets)

This applies to:

  • google-flights via the &gl=XX URL parameter
  • ignav via the market field in the search payload

Duffel and SerpAPI don't support market selection.

Source Accuracy Hierarchy

When sources disagree on cash prices:

Duffel > Airline website > SerpAPI > Skiplagged/Kiwi

  1. Duffel returns real GDS prices per fare class. These are bookable. Tested: Duffel showed $271 basic / $325 main. SerpAPI showed $541 for the same flight. The gap was consistent across multiple itineraries.
  2. SerpAPI (Google Flights) inflates prices. Often shows "main cabin" or bundled fares, not the cheapest bookable fare class. Useful for Google Hotels and destination discovery, but do not trust it as the sole source for flight cash prices.
  3. Kiwi returns garbage on small markets. Filter hard or skip Kiwi for domestic routes to small airports.

Common Failure Modes

  • Running only one source and missing better options on others.
  • Trusting SerpAPI prices as bookable (they're often inflated).
  • Skipping Southwest because "no GDS has it" — exactly why you need the SW skill.
  • Skipping Seats.aero because the user "doesn't have those points" — they may have them via transfer, see the partner-awards skill.
  • Single-market search on international routes (always try at least 2 markets).

Frequently asked questions

What does the Flight Search Strategy AI skill do?

Canonical multi-source flight search strategy. Source priority (Duffel, Ignav, Google Flights, Skiplagged, Kiwi, Seats.aero, Southwest), parallel workflow, market selection for international price arbitrage.

Why use Flight Search Strategy on TypingMind?

Because you install it once and use it with any model. Flight Search Strategy is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Flight Search Strategy in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/flight-search-strategy. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Flight Search Strategy?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Flight Search Strategy?

As many as you like. As long as a model supports skills, you can use Flight Search Strategy with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Flight Search Strategy AI skill free?

Yes. It is published on GitHub by borski under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇