Hacker News new | comments | ask | show | jobs | submit login
Ryanair, Hamiltonian Cycles, and using graph theory to find cheap flights (jonlu.ca)
466 points by jonluca 51 days ago | hide | past | web | favorite | 130 comments

Hacking PNR https://media.ccc.de/v/33c3-7964-where_in_the_world_is_carme... at time of the talk (2 years ago) used/discussed these sites:

https://matrix.itasoftware.com/ to get detailed fare rules & restrictions

https://www.expertflyer.com & https://itunes.apple.com/us/app/seat-alerts/id533533342

https://www.checkmytrip.com/ allows entering name & booking-reference and gives all detail


https://tripcase.com will use name + booking-reference to get detailed PNR information including the first name

https://www.fly.kiev.ua can make a flight reservation without a payment, still gives an 6char booking-reference

If you're interested, these slides are a cool introduction to the complexity of air travel:


Edit: I missed that someone had already linked to them - https://news.ycombinator.com/item?id=18531203

What is the purpose of making a flight reservation without payment?

Slightly tangential, but in fact all flight reservations through a travel agency are initially made without payment. The entire process is quite complex, due to compatibility with processes and systems that were built in the 70s... The flow is to create the booking (and hence receive a record locator or PNR), and then to attach a form of payment. If the payment matches the cost, it is then possible to request ticketing, at which point a ticket number will be generated, which is the "real" confirmation

I am a Turkish citizen, and we need a visa to visit EU member countries. You are not 100% sure if you will get the visa, so may want to make a flight and hotel reservation first, and then buy them if you get the visa. So reserving the tickets is preferred.

I hope this imperative requirement will be revoked anytime soon.

Maybe, but other countries still have it. Vietnamese have one of the worst passports on the planet. Their govt. won't let them leave without proof that they will come back, usually in the form of a job, cash in the bank, spouse and tour or reservation based trips.

Many airlines require you to have an onward flight out of a country before they will let you fly into it. This allows you to fulfill the technical requirement without having to pay for a plane ticket you aren't planning to use.

Why do airlines allow unpaid reservations? That seems ripe for Denial of Service attack on their booking plans.

A reservation that is not paid is not ticketed. A reservation that is not ticketed is not 100% guaranteed

But I agree that this is till a problem for airline inventory management, and an online travel agency should definitely not be opening this feature to the general public!

There are several usecases that require unpaid reservations, the most common one nowadays is corporate travel, when you need to integrate approval flows - the approval step will be between the reservation and the ticketing.

Like just about every industry, there is a world of complexity hidden underneath the surface :)

Looks cool! The problem of enumerating the best routes between two given airports is indeed an interesting problem. My favorite discussion of the problem is from Carl de Marcken: http://www.ai.mit.edu/courses/6.034f/psets/ps1/airtravel.pdf

I've been involved in solving a similar problem, on the award flight search side. There are about 12,000 direct commercial routes offering award redemption, and the airline websites have different limitations: some only let you search one-way or only round-trip, or only one cabin at a time, or only give hints about available quantities. So you have to formulate the minimal set of queries that will give you complete information. And then given an origin and destination, figure out the valid routings, like you've discovered.

The other really interesting challenge with many of the airline websites are the extreme measures they go to, to block you from crawling their data. My favorite is British Airways, which runs 800 different tests to fingerprint your browser, from generating audio files to drawing to an off-screen canvas, all inside a custom VM with encrypted byte code. (Similar to how I've seen Google obfuscate the ReCaptcha code base.) Surprising to hear that Ryanair makes it so easy to access prices in comparison!

Many moons ago, I worked in the travel industry. Most airlines aren't running their own technology stack -- they are paying someone else $/search to drive their webpage. In a market of razor thin margins, paying per search for you to crawl their flight catalog is a big problem -- thus the arms race. The only way to win at this is to own the catalog, this is why Google bought ITA.

Ryanair is the kind of airline that I would suspect might run their own stack, and therefore not have the same cost structure.

The only airlines I know of running their own PSS are Emirates and Turkish. Ryanair are using Navitaire (Amadeus' low-cost subsidiary). To be honest, the cost structure is the same whether you're running it yourself or outsourcing - you don't want an absurdly high look to book ratio, or else you're just wasting server costs

I tried once Turkish Airlines. It was amazing.

I've flown with them a couple of times for leisure and once for work. Honestly find their economy food is better than most airlines' business food. The business seats weren't very good though, they're a few years behind the others

What is PSS here? I'm not familiar with this acronym.

Passenger service system, basically it's the core IT system of any travel company (airlines mainly, but also trains and hotels)

>"In a market of razor thin margins, paying per search for you to crawl their flight catalog is a big problem ..."

Can you say how access to an airline's flight catalog works and what that business model looks like? Is it pay per search for these third party search engines?

There are two different ways to connect to an airline inventory system (what you call the catalog). Either direct, by signing a contract with the airline, and building the necessary "pipe" (IATA are pushing for a standardisation of this, called NDC). Or through a global distribution system (GDS) - which is a fancy name for what used to be called computer reservation systems. There are three major systems, by decreasing importance: Amadeus, Sabre and Travleport. They will cache and distribute the inventory and fares for all client airlines, and also allow you to perform bookings. Every travel agency in the world (including online travel agencies like expedia) is connected to one or more of these GDS.

Now the pricing can be complex, a good first order approximation is that you pay a fee for access to the GDS, that varies depending on how many queries you are doing. For a traditional travel agency this fee will be very low, obviously for a major OLTA it will be big. However, for every booking that you perform, the GDS will give back a sizable amount of the distribution fee that it took (we are talking several euros per flight here). So as long as your "look to book" ratio is reasonable, the access costs will be small compared to the incentives you make.

Edit: Why are airlines pushing for the "direct" channels? Because it means they can cut out the middleman of course, the GDS. The problem is that this makes it hard for a travel agency to connect to every airline - the fixed costs of setting up pipes to every airline would be astronomical. And there will be an incentive for agencies to negotiate preferential deals with certain airlines. Both of these factors are obviously negative for the end user, travelers. It's a similar question to the whole net neutrality thing

Thank you for the wonderfully detailed response I really appreciate it. I have one follow up question to your reply which is who maintains Amadeus, Sabre and Travleport? Are these consortiums similar to MasterCard and Visa then? I'm guessing these are all big mainframe operations?

You're welcome. Amadeus, Sabre and Travelport are now independent companies. But indeed all of them were initially parts of airlines, that were then spun off.

Sabre for example was originally American Airlines' system, and Amadeus was initially created by a consortium of european airlines in reaction to the threat of american hegemony on this market. They are now far more profitable than their parents :)

They were all originally heavy mainframe operations (IBM TPF - which was quite an impressive system... in the 80s), but there is a transition to modern architectures. Amadeus have completed the transition to Linux boxes, Sabre are still ongoing. They both have some of the biggest civilian data centres in the world

A market of razor thin margins? I think not. US airlines are swimming in cash


* American Airlines profit: 7.6 Billion USD

* United profit: 7.1 Billion USD

* Delta Airlines profit: 4.7 Billion USD

* Southwest: 2.2 Billion USD

Looking at AA 2017 earnings

Total operating revenues: 42.2B

Net income: 1.90B

For a profit of 4.5%. Where are you getting your numbers from?


In my defense, I left the industry in 2011, back when American lost $2B, and half of the major airlines were in bankruptcy proceedings. It looks like they found some margin in the past few years.

Fun fact: Carl actually implemented the Turing machine construction on slide 28 as a proof of concept and used it to do simple arithmetic (very very slowly) -- you can read the details towards the end of the talk, with screenshots.

Off-topic but related: https://scottscheapflights.com is _amazing_. The Premium sub is worth every penny...my wife and I will be doing a ton more overseas travel in 2019 purely because of the deals this site finds.

I got into churning airline miles then manufactured spending (generating spend on credit card to earn miles) and now have over 10 million miles. I also heard one of the biggest groups of manufactured spend are developers within Google.

I belong to a private slack with over 80 folks doing this as a hobby so we can do first class/business class international travel and hotel stays for free.

If anyone is into it as as well and would like to join a private Slack and contribute, hit me up. A big majority of the group are engineers.

NOTE: this group is for advanced folks only who have been doing this for a while. Think "r/churning level 2"


i'd be interested as well. could you add me to the slack? thank you


I'd be interested as well, I've written a few private scrapers for *A/OW award search, currently have small scale MS going on, would love to connect with more fellow MS-ers. my email is nopctoday at gmail.

Been a user of r/churning -particularly the weekly MS threads - for a while now. I’d love to chat and contribute to a group with more advanced folks. My email is seanchurns612@gmail.com

@micahgoulart - I am in the US and very interested in getting started. I didnt see how to contact you privately on your profile. My email is diego898 AT gmail DOT com

@micahgoulart I'm interested in the slack group - davidmhowe at protonmail

I've started churning (love /r/churning), but have been looking to get into manufactured spending. Would love to join your slack. Email in profile :)

Hello, I am interested in this group as well. I was unable to find any contact information in your profile. I can be reached at nick@launchpotato.com . thank you.

I'd be very interested in this to pass on to my wife - she's been playing this game for a long time now. My e-mail's in my profile.

Love the intersection between engineering and churning. Long time churner at r/churning and flyertalk. james93472@gmail.com

I'm interested, please invite. MS is one of my hobbies. alex.897007 at gmail

Hi, this sounds interesting. Would love to be a part of it. Email is kurtosisshah@gmail.com

Can you say what is churning? How does it differ from manufactured spending?

Very interested. Have been churning for awhile - benmanns at gmail.

Please add me ashishb AT ashishb.net

This Slack group sound awesome - my email is in my profile. :)

Churner, curious for more. Email's in my profile. Thanks!

Interested to know, please send me details at siva@yopmail.com

Would definitely be interested. Email should be in my profile.

I'm interested as well -> one23johnson at gmail

I would be interested but I am in the UK, not the US

Consider me interested as well - email in profile.

very interested, email in profile.

I miss the good old days when manufactured spend was as easy as ordering 10k in sacajawea coins from the treasury.

Very interested : public [at] proxmark.com Thanks

Super interested. Email in profile. Thanks!

I'm interested in joining your slack group!

I would be interested! the.angrybaby -at- gmail

Would love to join, Mantas at Vidutis dot com

Also very interested. Email in profile. Thanks!

Very interested! sierpinski9321 [at) gmail.com

Interested! Shoot me an email qbaler@gmail.com

Would be very interested -- Will@Cascade.bio

Me too please. Email is in my profile :)

I’d be interested in this!

jashua DOT sf AT gmail

would definitely be interested... milan <dot> ramaiya <at> gmail

Super interested in joining this Slack - steve at stevedomin dot com. Thanks!

I'm interested.

interested! alexhu1719 at gmail

sign me up too, please. kawfey@gmail.com

I'd like to give this a try.

Also off-topic, I would pay a premium for the deals to be pre-searched for my specific cities/dates. I already pay for scotts premium. But would pay even more if I was able to actually have it look at my calendar and see when I could go on these trips. I miss out on too many due to not being quick enough.

I've had the same issue and have been building a tool to further filter and curate flight deals. Right now you can select departure airports and airlines. Date filtering will be coming next in the next 5-7 days if not sooner. https://producthunt.com/posts/altitude

I hope you don't mind the feedback: There's no way I'm signing up for a service that I don't get to try first. See what Scott's is doing: You get a 1/3 of the deals--this whets the appetite.

For a typical overseas trip, how does your (ordinary, non-discounted) airfare generally compare to your food and boarding expenses?

You don't book with Scott's Cheap Flights, it's just an e-mail that says what is on sale and the best way to book. I haven't had any issues not getting a meal or being charged for bags on an international flight using their tips

My assumption is the OP was talking about "food and boarding expenses" in the context of your hotel and food when you reach your destination - e.g. how much is saving on your airfare worth it vs optimising your hotel price.

Yes, I meant food and boarding for the trip, not for the flight. My instinct is that taking "a lot more international travel" due to cheaper airfare will result in spending a lot more money; I don't quite see why the cheaper airfare makes it make sense.

Similarly I use https://www.secretflying.com which has a bit more non-paywalled.

If nothing else, at least I learned from the comments here that most of HN seem to be working on their own competing flight search engines ;)

If you want something done right, you have to do it yourself. I spent several hours last night trying to find cheap routes starting from Rio in January and ending up in the Carribean in February. I don't mind stopping a few places in between and spending some time there, I just want the cheapest flights available. Turns out that information is really hard to find without computing it yourself.

As a CS student, I agree it is really refreshing to see basic graph algorithms to be used in a practical, non academic/industry context. I never really see these basic algorithms used in small side projects, so thank you for this!

We (me and friend) are working on the same problem, however we are stuck at the next step. Namely the user interface: how do you let the user search through all the possibilities.

We created some data structures that allow almost instant searching of such routes and we have scrapers running regularly on Ryanair, easyJet, wizzair, and Transavia. You can query the algorithm here: https://algo.tripchemy.com/routes/TSF?year=2019&month=02&day...

Where you want to have a trip of 20 days (4 lovatons, 5 flights) from 10 Feb. Starting and returning to TSF. We also added some scoring for niceness of airports.

What I've been missing is not so much finding the best routes between two airports, but finding the best (ie. least expensive) route from a bunch of departure airports to a number of destination airports.

If I'm in Antwerp, I really don't care much if I have to depart from/return to Brussels Zaventem, Charleroi or Eindhoven, it just doesn't matter. And if the fare is sufficiently cheaper, then Amsterdam, Düsseldorf, Beauvais or Paris is fine too. And I don't have to return to the airport I left from. Typically it's the same for my destination in the case of holidays.

But I still haven't found websites which allowed to do that easily, apart from Google Flights maybe.

It's not perfect but skyscanner.net does the first part of your description. I just did some test searches from Eindhoven + nearby airports, and it found routes starting in EIN, BRU, CRL, and ANR. By default it shows different take-off/landing airports.

Edit: kayak performs the same.

You can try flightics.com

azair.eu does it.

This looks perfect!

Nice. Maybe check out Azuon (they provide a .net app (eugh; sorta runs under wine, though)) - an annual paid service I gladly pay for. It has two interface modes:

- the basic mode allows you to provide sets of origin and destination locations / countries / airports, and a range of dates; gives you results with direct and transfer flights (including all those ryanair+wizzair/easyjet/another-ryanair combos, etc.) and so on - check out how the interface looks like;

- advanced mode allows you to specify multiple hops, with time intervals / date ranges for how long you want to stay at those hops.

If someone were to provide a (paid, etc.) service and some decent platform-agnostic interface (for me personally, an API would do, too:), that'd be super amazing.

To provide some more details:

- Instead of graph algorithms, we use more algorithms that originate from databases

- Currently the bottleneck is improving server parallelism and filtering/limiting the amount of results (cause the algorithm can send up millions and millions of rows back). Which in a sense is also a frontend problem: which locations do you want to visit?

How do you determine the score? Is it just niceness of airports? How do you get that information?

ELO rating with A/B per airport where some friends got some information per location.

back when I was a student, I would sometimes spend hours on Ryanair's website to find that type of deals.

My base was Paris and I wanted to go to Stockholm for example. The direct Ryanair flight from Paris to Stockholm was expensive (Let's say 150 euros). I would manage to find two cheap flights that go for example from Paris to Rome and another one from Rome to Stockholm, both of those for 10 Euros each. The key is to use the big Ryanair hubs as gateway (Milan and Brussels would work really well back in the days)

I would basically lose my whole day traveling to save 80 euros. Sometimes it backfires though, and when it backfires you are on your own. Once my first flight got super delayed, and I got stuck in Milan for the night. I managed to have Ryanair rebook my second flight for the day.

I think Ryanair wants to be able to propose high prices for direct flights and prevent people from finding those cheaper indirect flights. That's why they don't make it easy to find them.

Most comparison sites will show you these routes, for example Kiwi lets me search indirect flights from where I am in a remote part of Spain to where I live the other side of Europe. There's no direct routes, but it gives me the option of connecting in Barcelona, Stansted or Hahn, or cheaper options if I want more that one stop. It also lets me search a whole month to find the cheapest flights in a given time period, and will provide options with different low-cost airlines if that's cheaper.

However if you book direct through these sites you are going to get the lowest ticketing class. With Ryanair that means you can't take anything more than a small bag onboard (since November you need to pay for a 10kg cabin bag, you can't drop it at the gate for free), and if you are in a group you will not be sitting next to each other, so it may be best to book directly through the airline's site.

The simple reason why Ryanair don't let you book multi-leg flights directly is because they don't want to be responsible for you missing a connection. It's ironic though, as compared to national European airlines I find their punctuality a lot better.

There are several other reasons for not wanting to handle connections, including complexity of IT systems, negotiations with airports (bag transfer is more complicated), and general airline processes. I imagine they will end up doing it, Easyjet have started to act as feeders for global airlines - it's a clever idea

I use https://airwander.com/ when flying overseas, I don't know how well it works for low cost airlines though.

It's a flight search engine that let you filter what connections there are between the cities you want to travel and help you book a single flight that is going to stay there as a stopover. Sometimes it finds some weird flights that doesn't make any sense if you're just trying to reach your destination but if you're just traveling it's quite nice.

Last time I used it I found a overseas flight that stopped in Lisbon but on the way back made a connection in Bologna that was +200 cheaper then the normal flight.

Airwanderer would be something I have been looking for a long time but it does not seem to work so well. Also, is it just my browser or why is it so difficult to see the layovers? I have to click on "fight details" to see this. Why?

http://www.cleverlayover.com also never worked for me. Good idea, bad executed.

Regarding travel websites, you may want to check out:

https://www.kiwi.com Sometimes finds insane travel routes.

http://www.vayama.com Lets me sometimes stay in Ethiopia for free a day when I fly from Asia to Europe. Does not show up on any other website I consult.

I have also had luck at times with


http://www.expedia.com (yes, sometimes an old dog still does the trick)

Is this better than itasoftware Matrix? I used it twice this year to build more complicated itineraries, including layovers/stopovers or having just one leg (Germany-nyc) be business class on an a380 for only $500 more. Try playing with it. The advanced controls are very powerful, for example to find layovers, so less than 24 hours (so you don’t incur a likely stopover fare add-on), you can do something like “maxconnect: 1440; minconnect: 1000”. I’m in fact typing this from a 20 hour layover in Vancouver!

As an alternative, https://momondo.com works quite nicely for me most of the times.

Great work, this is really cool!

For multi city flights, I've found Google flights does things really well from a UX standpoint, and I believe they support Ryanair.

Google Flights is generally fine. But sometimes it figures out quite fringe stuff like Stockholm-Dublin roundtrip with a 17 hour layover in Dubai. It was not cheap either. Sounded like something like a global minima.

>"Google Flights is generally fine. But sometimes it figures out quite fringe stuff like Stockholm-Dublin roundtrip with a 17 hour layover in Dubai."

Honestly I regularly see these type of ridiculous options on all of the major travel sights as well as stuff like 3 and 4 layovers. Do you have any insight on why this happens or what such absurd results are even presented? I regularly see things like 54 hour travel time for for international flights.

They do support Ryanair, I’ve found great deals through it. Lots of other discount Euro airlines are unsupported though

I'm surprised Ryanair is supported, given that they've been engaged in a long and nasty lawsuit with Expedia, over scraping their fares. I was under the impression Ryanair only wanted to sell fares through their own website.

Are they? I don't think that Ryanair minds anyone showing the flights. There are enough sites doing it (Kiwi, swoodoo etc.). They just don't allow you to sell tickets or collect fees which is the reason why most sites don't list them.

If I am not mistakne, one cannot book via Google Flights, they will send you to Ryanair for the booking. Would make it a different case than the Expedia one.

Wonder why Ryanair would insist on having the user go through their website. Seeing as they monetize absolutely fucking everything, I suspect there's a bunch of crap they're doing with user data…

It's not related to data, it's related to direct vs indirect distribution. If you buy a ticket through a travel agency, such as expedia, they take a small cut, and the global distribution system takes another cut. If you book direct, they can keep that money :)

Because they really want to push their other stuff. Transfers, rental cars and hotels is where the money is made.

Why is there no interface that allows searching for flights without specifying exact dates? All I want to do is fly from A to B to A. Maybe stay a week, maybe two. I'm flexible - it doesnt have to be exactly N days starting on the M'th.

Even services that "allegedly" advertise they have that, still require manually clicking every day combination.

I'd fly more often if it was easy. The few times I tried, it would be just faster to drive than go through all possible 900+ day combinations.

Skyscanner has this. You don't even need to specify a city:

These are the results for 'cheapest month' and 'everywhere' from DC


+1 for Fuzzy searching with Sky Scanner.

Have you seen a site that does that really well, UX-wise?

I'd assume it's two reasons: first that it's hard to get the UX right. There are going to wind up being so many combinations of possibilities that I'm not sure how you'd even sort them in a meaningful way. (E.g. it's unlikely price from lowest to highest will be the most meaningful, the lowest price alone might wind up having 100 different date combinations, so figuring out how to present the options in a meaningful way might just be something we haven't figured out yet.)

But second, it might just be too computationally expensive. You see how slow sites already are just for searching a single date, because there are so many possible combinations of connections to consider, and so many fare rules to calculate prices out of. Now a 2-week range for both start and end results in taking almost 200 times longer. It just might not be feasible, or worth the programming effort. I remember a blog post a long time ago from Kayak (I think?) talking about the insane effort that was required to cache flight fares just so show simple fare comparisons across a few days... and it only worked for the flights that were more commonly searched for.

adioso.com (no longer maintained as far as I can tell, but still online) does a really great job of this, UX-wise. It lets you create searches like "departing anywhere between February 10 and March 20 for about 2 weeks", and allows you to filter destinations by continent/region, which gives you a ton of flexibility. They then allow you to choose a destination (showing what I assume is the lowest price found per destination), and then let you sort the actual flights by cheapest, fastest, and "best" (a combination of price, duration, and number of stops).

I think the computational cost is a far bigger problem for these kinds of services than the UX.

I've seen a few airlines have grids where the outbound and return flights are shown on each access, which I think is great. I'm thinking of Air New Zealand as the last airline I saw it so maybe it benefits from a smaller network as you say.

Kiwi.com does this really well.

Google Flights will render a whole calendar of prices.

Hopper does this with our "Flex dates" feature. You can specify a date (up to a year out I think) and stay (anywhere from 4 days to 2 weeks) window for when you want to fly as well as regions you're interested in traveling to, instead of just 1 destination (although we also allow you to select just 1 destination).

It was sort of hidden for a while because we were testing other features, but it's back on the main search screen now.

Disclaimer: I work for Hopper

Edit: Forgot to mention this feature is only available on iOS at the moment...

I think it´s because most of the UX is designed a long time ago. The pricing wasn't too dynamic and search engines/airlines were more focused on business travelers (from which they have more money) and they usually don´t care too much, how much it cost and when they must / want to fly.

We are building our search engine (focus on EU low-cost mainly) which allow what you looking for (even if you want to search this) for example: A -> B [stay 2-6] -> C [stay 10-12] -> A

Maybe https://adioso.com is close to what you want. I found it recently but I have not tried it yet

If you're flying domestically, check out Southwest's low fare calendar.

Southwest provides this through their “low fare calendar” feature.

kiwi.com allows searching for time of stay, e. g. between 2-10 days, but not providing any exact dates.

This article misses the most obvious way to visualize this graph: put it on a map!

I actually wanted to do that but thought the cost/benefit wasn't high enough - I'd pretty much need to manually place all the airports information on the map if I wanted to use the library I was using (Cytoscape).

Visualizing the DFS at the last step was good enough :) Maybe in the future!

you don't need to do that - just download https://openflights.org/data.html, and plot airport x/y to airport lat/lon directly. Since you're doing only Europe, you don't need to do the sin/cos math do get an accurate projection

Finding a cycle of a given length can actually be done in time `O(e^k n^2.3)` where `k` is the length of the cycle, using the cool technique of color coding.

Basically, to find a cycle of length 6, you repeatedly color every node in one of 6 colors at random. Then you look for a cycle with all different colored nodes, which can be done efficiently using dynamic programming.

You succeed in finding a particular 6 cycle exactly if each node in it has gotten a different color, but the chance of this is not bad. In the case of the OP it's even better, since there are probably many such cycles to find.

Somewhat off-topic and shameless plug, I'm working on a meta flight-search engine that finds the cheapest flights from multiple origins to the same destination (i.e. me and some friends who live in another city want to fly to Hong Kong with no particular date in mind, just want the cheapest flights and with overlapping departure/return dates). Does anyone else have a similar need or know of anything that can do this?

A nice handy tool. It would be great if the airline added this themselves for finding route. Great work


If you are looking to take this further, you can find some more info on Ryanair API endpoints here:


That’s awesome

ryan air weekend flight search ... pretty handy


Now i just gotta figure out all the airport abbreviations D:

it's cheap maybe it's not a fake the fact they spray the sky

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact