Skymiles Estimator Project
Projects | | Links: Skymiles Estimator | GitHub
Project page describing the Skymiles Estimator web calculator, which estimates status and awards accrual for flights on Delta Airlines and SkyTeam partners
Skymiles Estimator is a calculator for estimating the potential earning of Delta SkyMiles from SkyTeam flights. The Skymiles Estimator calculates both redeemable miles and medallion qualification requirements, including potential earn from SkyTeam partner airlines, as well as bonuses from Credit Card spend for the range of available SkyMiles credit cards. Skymiles Estimator breaks down earnings by segment for a segment-by-segment view of earning potential across entire itineraries.
Usage
Disclaimer
This project is a for-fun project based entirely upon publicly-available information. Skymiles Estimator and its authors are not associated with Delta or the Delta SkyMiles program. There are no guarantees on accuracy and correctness. Use at your own risk.
Blank Itinerary
Skymiles Estimator with Blank Itinerary
Give it a try! Start estimating your own itinerary.
Sample Itineraries
Sample | Fare Class | Total Cost | MQMs | MQSs | MQDs | Miles | MQM/$ | MQD/$ | Miles/$ |
---|---|---|---|---|---|---|---|---|---|
1 | Main Cabin | $1565.47 | 10254 | 6 | 1951 | 19120 | 6.55 | 1.25 | 12.21 |
2 | Premium Select | $1992.87 | 18890 | 6 | 3717 | 32873 | 9.48 | 1.87 | 16.50 |
3 | Business | $8989.87 | 33186 | 4 | 8848 | 70938 | 3.69 | 0.98 | 7.89 |
Sample Itinerary 1: Round-trip OMA to SGN
Skymiles Estimator with Sample Itinerary 1
This itinerary shows a round-trip flight from OMA to SGN, predominantly on flights marketed by Korean Air. For a total price of $1565.47 on an economy ticket, this itinerary would earn 10254 MQMs, 6 MQSs, 1951 MQDs, and 19120 redeemable miles. Compared to a similar hypothetical itinerary sold and marketed by Delta directly, this itinerary gives a lower MQM earning rate (6.55/$ vs 12.57/$) in order to gain a slightly higher MQDs and Miles earning rate (1.25/$ and 12.21/$ vs 0.98/$ and 11.32/$). In other words, the target earning (MQM, MQD, or Miles) may influence the best option when purchasing tickets.
Sample Itinerary 2: Round-trip MCI to BKK
Skymiles Estimator with Sample Itinerary 2
This one displays a round-trip flight from MCI to BKK on a premium economy ticket. The earnings for this sample would be 18890 MQMs, 6 MQSs, 3717 MQDs, and 32873 redeemable miles for a total cost of $1992.87. Among the sample itineraries, this one earns the highest per US dollar spent.
Sample Itinerary 3: Round-trip SEA to HND
Skymiles Estimator with Sample Itinerary 3
The third sample itinerary demonstrates an Air France flight from Seattle to Tokyo, stopping in Paris, on a business-class ticket. Even though the earnings on this ticket are at business-class rates, the pricing makes the itinerary an unattractive option for both earning status and redeemable miles.
Usage Notes
Most fields are optional; however, the more data that is entered about an itinerary and its flight segments, the more accurate the estimations can become. Several earning rules, such as specific flight number exclusions, require the relevant data.
There seems to be no distinguishing feature to determine an exception fare against regular Delta fares. To facilitate more accurate calculation, exception fares should be entered into the Skymiles Estimator with flight numbers beginning (*)DL
instead of DL
.
The URL fragment is automatically updated as changes are made. This allows sharing itinerary estimates and bookmarking for later review.
Implementation
Skymiles Estimator is implemented entirely within browser-based technologies, with all required data included into the core .js
bundle. Information such as airlines, fare classes, distances, and earning rules are included to allow the web application near-instantaneous calculation on both desktop and mobile web browsers without requiring network requests.
Calculation in the Skymiles Estimator attempts to match specific earning rules as described on the Delta SkyMiles program website, including flight number disqualification and disallowed airline combinations. For example, flights marketed by China Southern earn miles only when flown by China Southern or Delta.
Skymiles Estimator is implemented using the following technologies:
Kotlin
The core calculation logic is written entirely with Kotlin for Javascript. Compilation of the project is orchestrated using Maven with a multi-module project structure. The output from the core calculation submodule is used as a dependency in the frontend submodule.
Aurelia 2
The Skymiles Estimator frontend is implemented as a Single-Page Application with Aurelia v2.0, using ECMAScript instead of TypeScript. Minimal scripting code acts as a bridge between the Aurelia framework and the core calculation logic, with Aurelia capable of binding the data structures directly.
Tutorials and documentation for Aurelia v2 are both available at the new Aurelia documentation site.
TailwindCSS
The page design uses Tailwind CSS together with the official Tailwind Forms plugin. The combination of Aurelia components with Tailwind’s utility CSS classes provide flexible, consistent, and reusable styling. The media selectors available on every utility class make responsive design incredibly simple, allowing the Skymiles Estimator to work on screens of any size.
Contributing
Code contributions are welcome as pull requests on the GitHub project page. Particular areas of interest include:
- Additional airports and segment distances
- More complete list of SkyTeam partner airlines; while all Core Global Airline Partners are included, many of the Global Airline Partners have not yet been entered
- Understanding the earning rules when remaining on same flight through multiple cities (See to-do notes here)
- Implement side-by-side comparison of identical itineraries with different marketing airlines and/or fare classes.
Resources
Earning Rules
Earning rules were compiled from information available on the following pages:
Credit Card Bonuses
Credit card bonus levels were compiled from information on these pages: