iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Luis Pham says he open-sourced GetBirthChart’s Python calculation engine so people can inspect how chart data is calculated—and so the software clearly separates calculation from AI interpretation. The code can show what chart the program produces from given inputs and rules; it does not establish that astrology is scientifically validated.
Why Pham says he made the engine public
In an Aug. 20 essay on DEV Community, Pham describes a birth-chart app as looking like “one big black box”: a user enters a date, time and place, then receives a chart and an interpretation. He argues that these results involve two distinct tasks. Software calculates chart data; a separate layer explains what that data might mean.
His design principle is that a language model should not decide where a planet was at someone’s birth. Deterministic Python code calculates placements and returns structured results; an application can then pass those results to AI for explanation. In Pham’s example, an interpretation such as “Scorpio Moon” should rest on a calculated placement rather than a model reconstructing the placement itself. Read Pham’s essay on DEV Community.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsMake the calculation inspectable
Pham’s first stated reason is transparency. Instead of asking users to trust a website’s answer to a question such as “Why did this calculator give me this Ascendant?”, a public implementation lets interested readers inspect and test the calculation path.
#1 Best Overall
Make the software boundary explicit
He also says publishing the engine pushed the team to clarify calculation profiles, errors, warnings and output structures. Pham reports that the resulting cleanup improved the production system as well. That is his account of an engineering benefit, not a measured impact claim.
What the open-source engine calculates
The project describes gbc-astro as the installable Python package for GetBirthChart’s astrology calculation engine. Its natal-chart outputs include planetary positions, tropical zodiac signs, houses, the Ascendant, Midheaven, aspects, lunar nodes and Chiron. It uses Swiss Ephemeris through pyswisseph. The project also says its broader AstrologyEngine exposes relationship charts, transits and returns beyond the narrower public calculate_chart interface. See the engine repository and documentation.
The repository and PyPI list version 1.13.0 for the package and engine, with natal schema 1.9.0. PyPI records the 1.13.0 upload as Aug. 31, 2026. These are version details shown by the cited sources, not a guarantee that a later release has not appeared. Check the gbc-astro package page on PyPI.
Recommended Free Tools
How the engine handles uncertain or difficult inputs
Unknown birth time
The engine does not silently substitute noon or midnight when a birth time is unknown. It omits time-dependent angles and houses, calculates planetary bodies using local midnight as a labeled anchor, and documents uncertainty across the local civil day. That makes the limitation visible instead of presenting time-sensitive chart elements as certain.
Rank #3
Time zones and daylight-saving transitions
Inputs use IANA time-zone identifiers. According to the repository, a nonexistent local time during a spring-forward transition produces an explicit error. A local time that occurs twice during a fall-back overlap is treated as ambiguous unless the caller supplies a fold to identify which occurrence is intended.
House systems and high latitudes
Placidus is the documented default house system. The repository says Placidus and Koch have no solution beyond the polar circles, where the engine raises an error rather than silently changing systems. Whole Sign or Equal can be selected explicitly when appropriate.
Rank #4
What developers need before installing it
The documented installation command is pip install gbc-astro, and the current documentation requires Python 3.12 or newer. Swiss Ephemeris .se1 data files are not bundled with the package; developers must provision them separately and account for the files’ upstream redistribution terms. The API extra is optional.
The repository identifies the package license as AGPL-3.0-only, not MIT. It says Swiss Ephemeris is dual-licensed and that the project uses the AGPL path. Anyone planning to distribute software that incorporates the package or ephemeris data should read the current project and upstream license terms rather than assuming that the code and data have identical licensing conditions.
Best Value
- Used Book in Good Condition
What open source does—and does not—establish
Public source makes an implementation available for inspection and testing. It does not, by itself, show that every output matches every other astrology service, nor does it validate astrology as a predictive science. The project reports automated tests for golden Swiss natal values, hostile inputs, daylight-saving boundaries and unknown-time behavior. It also reports geometry-parity tolerances around 1e-5 degrees against an in-repository reference implementation. Those are project testing claims, not independent validation against all commercial services or evidence for astrology’s scientific validity.
Pham makes the same distinction in his essay: the engine answers what chart the software produces from specified inputs and rules; interpretation is separate. GetBirthChart presents astrology as a reflective framework, not a scientifically validated prediction system. Pham’s essay and the project documentation describe that boundary.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

