Forecast. Experiment. Understand.
DClaw Forecast studies historical data to estimate what may happen next — then lets you change assumptions and see exactly how the prediction responds.
For economic indicators, markets, weather, sales, demand and other time-series data. Every forecast comes with its uncertainty, its assumptions and a test against the past.
- Past dataA history to learn from
- ForecastThe baseline
- Try a changeAn assumption or a setting
- CompareBaseline vs experiment
- UnderstandWhat moved, and why
Most forecasting tools hand you a line. Then you're on your own.
- You can't see what moved it. Change a setting and the line shifts, but nothing tells you how much, when, or why.
- Uncertainty is hidden. A single confident number invites decisions the data can't support.
- Accuracy is assumed, not shown. Few tools show how the method did on history it never saw.
- Assumptions blur into predictions. "What if rates rise?" and "what will happen" end up looking the same.
- The jargon locks people out. RMSE, horizons and smoothing weights are explained nowhere near where they appear.
The goal isn't to make the future certain. It's to make the forecast understandable: what produced it, what was assumed, how uncertain it is, and what happens if something changes.
One product, three places to work.
A public landing page with a working demo, a Workspace for your own series, and a Forecast Lab for experiments. Everything is calculated live from the data; nothing on screen is typed in by hand.
Workspace
Your datasets and saved forecasts, for day-to-day forecasting.
- Three sample series, plus your own CSV upload
- Model, horizon and confidence controls
- Scenarios and an AI Copilot that answers about this forecast
- Save, reload, export CSV, copy a summary
Forecast Lab
Change one thing at a time and see exactly what moved.
- Baseline vs experiment, overlay and difference
- Expected effects kept apart from observed ones
- Beginner and Advanced modes, Help mode everywhere
- Twelve views, listed below
Domains
The same loop, adapted to each kind of data.
- Weather: P10/P50/P90 ranges with a sky and season per month
- GDP: official US data; set future paths for rates, inflation, a business survey and unemployment
- Stocks: S&P 500, Nasdaq or Dow; price fan, returns and volatility scored on unseen days
The maths runs in your browser. The server only stores and signs in.
Every forecast, backtest, sweep and scenario is computed client-side by a TypeScript engine, so results are instant and every number traces back to code. The server handles accounts, saved work and the Copilot.
Your numbers stay put. Forecasting happens on your device; the server stores only the series you choose to save, scoped to your account.
Grounded answers. The Copilot receives the computed forecast as structured context and is instructed never to invent numbers.
Honest by construction. One parameter registry drives every tooltip, and expected effects never share a panel with observed ones.
What's actually built — and what isn't yet.
Each requirement, and where it stands today. "Partial" means it works with a stated limit; "Roadmap" means it isn't available yet, and the product says so where it appears.
| Requirement | Status | Notes |
|---|---|---|
| Access and data | ||
| Public landing page with a working demo | Built | Plain-English first; demo figures labelled. |
| Sign up and sign in (email code, Google) | Partial | Works today on a Clerk development instance (dev badge, 100-user cap). A production instance is needed for a wider launch. |
| Saved datasets and forecasts per user | Built | Neon Postgres; each user sees only their own. |
| Download or delete your data yourself | Built | Account → Your data & account: one JSON file with everything stored, or delete the account and all its data straight away. |
| Upload your own series (CSV) | Built | Monthly, weekly or daily (weekday-only trading data too), combined into calendar months as a total or an average. A preview says how the file was read before anything loads: day or month first, which column, any repeated dates. Excel exports and semicolon files with decimal commas work. |
| Export CSV and copy a summary | Built | |
| Works on phone, tablet and desktop | Built | Tested at 390, 768, 1024 and 1440 px. |
| Security, privacy, terms and contact pages | Built | Terms cover public-data licences and AI answers; privacy covers cookies and browser storage. |
| Keyboard and screen-reader use | Built | Toggles announce their state, help is reachable by keyboard, tabs and menus move with the arrow keys, errors are announced. |
| Account removal outside the app clears its data | Partial | Built (a signed Clerk notification); switched on once its signing secret is set in Clerk. Deleting from the app itself already removes everything. |
| Forecasting engine | ||
| Linear, ETS (Holt-Winters), Theta, Seasonal naive, ARIMA, Ensemble, Auto | Built | ARIMA picks its own order. Auto picks the lowest error on the most recent 3–6 held-out months. Seasonal naive is the benchmark to beat. On short histories a method that can't be fitted says it used Linear. |
| Automatic tests for the forecasting maths | Built | 76 unit tests (short, constant, zero and negative series for every method; the importer's rules) run before every release, beside 28 browser suites. |
| Uncertainty range (80 / 90 / 95%) | Built | Widens with the horizon. |
| Validation metrics and rolling backtests | Built | MAE, RMSE, MAPE, SMAPE, coverage, direction. Months whose actual is 0 are left out of MAPE rather than counted as perfect; too little history reads "not enough history to validate". |
| Outside inputs (exogenous variables) | Built | In the GDP domain: rates, inflation, a business survey (PMI on the sample), unemployment. |
| Prophet, Random Forest, XGBoost | Roadmap | Shown as "Planned" in the model comparison. |
| Choose how much history the model learns from | Built | All history, the last 30 or the last 24 months. |
| Forecast Lab | ||
| Baseline vs experiment (overlay, difference) | Built | |
| Expected effects kept apart from observed impact | Built | |
| Parameter help: what, why, if you raise or lower it | Built | One registry drives the Lab and the landing page. |
| Beginner / Advanced modes and Help mode | Built | |
| Guided experiments | Built | Five exercises; results computed from your own runs. |
| Sensitivity sweeps | Built | Every setting, including how much history the model learns from. |
| Two-parameter heatmap | Built | |
| Parameter-relationship map | Built | Measured interactions, four real runs per pair. |
| Scenario assumptions in plain language | Built | Up to three scenarios compared. |
| Scenario timing and duration | Built | Start, length, step / gradual / temporary / custom, return or keep. |
| Model comparison | Built | |
| Beat the model (forecasting game) | Built | Six real months hidden; draw a guess and a range; the server scores you against the model and builds your calibration. Each set of hidden months counts once. |
| Time machine (replay past forecasts) | Built | Re-fit on only what was known at any past month; the range's real track record against what it claims. |
| Say it in words | Built | Plain-English what-ifs become visible, editable settings; rules first, Claude only when needed. |
| 1,000 possible futures | Built | Simulated paths matching the range, with the live chance of reaching a target. |
| Silent guided tour in the live demo | Built | Two minutes, typed guide box and transcript; readable on phones. |
| Measured parameter importance | Built | |
| Experiment history and comparison | Built | Synced to your account, so it follows you across devices. |
| Domains | ||
| Weather: probabilistic P10 / P50 / P90 | Built | Temperature, rainfall, cloud cover, peak wind, humidity and sunshine on real observed data for five Indian cities (Open-Meteo), or the generated sample. |
| GDP: quarterly, macro assumptions | Built | Official US statistics from FRED since 2012, or the generated sample; estimates shown with their uncertainty. |
| Stocks: returns, volatility, technical features | Built | S&P 500, Nasdaq Composite or Dow daily closes from FRED, or generated prices; scored on 120 unseen days. |
| Real data feeds for the domains | Built | Weather from Open-Meteo, GDP and stock indices from FRED, refreshed daily. Each domain keeps a labelled sample too. |
| Wind and more weather variables | Built | Peak wind, humidity and sunshine, each with its own P10–P90 range; a chart picker shows any of the six measures. |
| Explanation and trust | ||
| AI Copilot grounded on the current forecast | Built | Claude Haiku through the Vercel AI Gateway (OpenRouter as fallback) for signed-in users, up to 30 AI answers a day each; after that, and whenever no model answers, a rule-based explainer answers from the same numbers without using up an answer. |
| AI Copilot inside the Forecast Lab | Built | Knows the experiment: the baseline, the timed change and what moved. |
| Real data in the Workspace | Built | New Delhi temperature and the S&P 500 monthly average, beside the samples and your uploads. |
| "Why did my forecast change?" breakdown | Built | |
| Uncertainty shown instead of a single number | Built | |
| Validation shown beside every model choice | Built | |
| Sample and demo data always labelled | Built | |
| Reproducible experiments (save and replay) | Built | Saved forecasts reload with their exact settings. |
| Documentation | Built | Learn pages in the app, plus this site. |
| Product walkthrough video | Built | 66 seconds, narrated and captioned, recorded on the live site. |
Where it goes next.
Before a wider launchProduction-ready access
- Clerk production instance with our own Google sign-in
- Custom domain for sign-in emails
- Uptime alerts on
/api/health(an external monitor) - Clerk webhook signing secret, so accounts removed in Clerk take their data with them
NextYour data, your way
- More places, countries and markets
- Forecasting at a daily or weekly step
LaterMore methods, more evidence
- Prophet, then tree-based models
- More weather places and measures (for example UV, air quality)
Running in the cloud today. Portable when you need it.
One Next.js codebase. The same build runs on Vercel or on your own server; only environment variables change.
Cloud (Vercel)
Deployed at forecast.smritiraj.online, with Clerk for accounts, Neon Postgres for saved work and OpenRouter for the Copilot. Nothing to install: open it in a browser. A public health check at /api/health reports whether the app can reach its database, for an uptime monitor to watch. It runs on Next.js 15 and React 19 on Node.js 24. The code is version-controlled in git; 76 unit tests for the forecasting maths and 28 end-to-end suites (npm run e2e) check every screen against the engine before each release (one command runs the checks, deploys and re-tests the live site), and the production dependencies carry no known security advisories. Every response carries security headers, including a Content-Security-Policy that lets the browser run scripts and send data only to this site and the sign-in service, and refuses framing and content sniffing, and each account has storage limits (50 saved series, 100 saved forecasts). When the database or a data source doesn't answer, screens say so in plain words and offer a retry instead of breaking, and Copilot questions are size-limited so AI spend stays bounded. Every request that sends data is checked for size and type before it is read, bad values are refused rather than stored, and saved data is never cached.
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY,CLERK_SECRET_KEY: accountsDATABASE_URL: Neon Postgres (tablesdatasets,forecasts,lab_experiments,challenge_rounds,copilot_usage)CLERK_WEBHOOK_SIGNING_SECRET(optional): account removal from Clerk clears stored data- Vercel AI Gateway (the deployment's own token), or
OPENROUTER_API_KEYwith optionalOPENROUTER_MODEL: Copilot
Your own server
Run npm run build and npm start on your own hardware with your own Postgres and Clerk keys. Leave the model key unset and the Copilot answers from its rule-based fallback, so no forecast data leaves your network.
- Forecasting already runs in the browser: no model server to host
- Any Postgres works through
DATABASE_URL
See the real thing.
Build a baseline, change one assumption, and watch exactly what moves, with the uncertainty and the evidence beside it.