<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dom</title>
    <description>The latest articles on DEV Community by Dom (@codebydom).</description>
    <link>https://dev.to/codebydom</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3862499%2F0faac8f6-0fde-4e16-96f9-bd2a215103ba.png</url>
      <title>DEV Community: Dom</title>
      <link>https://dev.to/codebydom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codebydom"/>
    <language>en</language>
    <item>
      <title>Geneva Forecasting API: An Expert System for Time-Series Forecasts</title>
      <dc:creator>Dom</dc:creator>
      <pubDate>Mon, 06 Apr 2026 21:06:32 +0000</pubDate>
      <link>https://dev.to/codebydom/geneva-forecasting-api-an-expert-system-for-time-series-forecasts-393n</link>
      <guid>https://dev.to/codebydom/geneva-forecasting-api-an-expert-system-for-time-series-forecasts-393n</guid>
      <description>&lt;p&gt;Time series forecasting has been around a while, and the Geneva Forecasting Engine has been quietly powering forecasts for over 25 years&lt;/p&gt;

&lt;p&gt;While very few developers have heard of it by name, it has been used as the core forecasting engine inside many Oracle products for years. In Oracle OLAP, the DML provides built-in statements (&lt;code&gt;FCOPEN&lt;/code&gt;, &lt;code&gt;FCSET&lt;/code&gt;, &lt;code&gt;FCEXEC&lt;/code&gt;, etc.) that rely on the Geneva engine for demand planning and statistical forecasting.&lt;/p&gt;

&lt;p&gt;For a long time, the only way to access the Geneva Forecasting system was through Oracle products or direct licensing from RoadMap Technologies. That changed recently: RoadMap Technologies has now made the same proven engine available to &lt;strong&gt;all developers&lt;/strong&gt; through a simple, modern API.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://portal.roadmap-tech.com/" rel="noopener noreferrer"&gt;https://portal.roadmap-tech.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free tier&lt;/strong&gt;: 1,000 forecasts per month - no credit card required.&lt;/p&gt;

&lt;p&gt;The Geneva Forecasting API is intentionally lightweight. Here’s a complete working example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;geneva_forecast&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;GenevaClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GenevaClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.roadmap-tech.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gva_xxxxxx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forecast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;118&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;153&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;137&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;186&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;129&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;164&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="mi"&gt;152&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;207&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;156&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;178&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;225&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="mi"&gt;167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;205&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;176&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;248&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;185&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;213&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="mi"&gt;199&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;272&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;196&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;244&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;218&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;298&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;horizon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;wave_periods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;confidence_level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;forecast&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvaso2wj3hfqvnim0dbr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvaso2wj3hfqvnim0dbr.png" alt="Geneva Forecasting API" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Geneva is a lightweight, rule-driven engine that automatically evaluates 10 statistical forecasting methods (each with best-fit parameter tuning and seasonality detection). It selects the strongest performer for your specific series and returns the forecast, all in usually under 200 ms.&lt;/p&gt;

&lt;p&gt;One of its biggest strengths is the built-in Expert System. An expert system is a classic AI architecture that encodes the knowledge and decision-making process of human specialists into software. Instead of training a giant neural network on millions of examples, it uses explicit rules, heuristics, and evaluation logic to mimic how a domain expert would approach a problem. When you don’t specify a forecasting method, Geneva’s Expert System automatically finds the optimal model by testing all 10 methods against your historical data and performance metrics.&lt;/p&gt;

&lt;p&gt;It then returns not only the forecast, but full visibility into its decision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The exact &lt;code&gt;method_name&lt;/code&gt; chosen
&lt;/li&gt;
&lt;li&gt;MAPE, MAD, and RMSE metrics
&lt;/li&gt;
&lt;li&gt;Whether smoothing or seasonality handling was applied
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're building dashboards, planning inventory, or adding forecasting to an internal tool, Geneva is a great fit when you want reliable results quickly and don't need (or want) to manage a full custom modeling pipeline.&lt;/p&gt;

&lt;p&gt;There are so many ways to add Geneva to different use cases and we are excited to see how developers start building with it.&lt;/p&gt;

&lt;p&gt;If you have any questions about the Geneva Forecasting API, we will be happy to answer them here, and a lot of information about it available @ &lt;a href="https://portal.roadmap-tech.com/" rel="noopener noreferrer"&gt;https://portal.roadmap-tech.com/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I will be posting more about the various other capabilities of the Geneva Forecasting API - from probabilistic forecasting to agentic ai forecasting, follow along for more!&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>api</category>
      <category>python</category>
      <category>forecasting</category>
    </item>
  </channel>
</rss>
