Learn how to reason about a company, one layer at a time.
NVIDIA Corporation
NASDAQ: NVDA · Report in review
Four questions. One disciplined execution model.
We score five parts of the business: its economic moat, business quality, management, competitive position, and industry and macro backdrop. Judgment calls are scored across bear, base and bull cases so the conditions behind the view stay visible.
- Reads
- Returns on capital, moat evidence
- Produces
- A moat rating
We screen up to ten valuation lenses, keep the ones that suit the business and weight them by how tight their ranges are.
- Reads
- Cash flows, debt and share count
- Produces
- A value range, never a point estimate
We first check if the price sits near support and momentum has turned. We then check whether the company is outperforming both the market and its sector, and whether the price offers a margin of safety.
- Reads
- Price trend and relative strength
- Produces
- A timing label
The thesis is tested against the latest filings in eight areas from demand and moat to management response. Each test returns Pass, Watch or Fail, and together they give the verdict on the thesis.
- Reads
- Latest filings and annual report
- Produces
- A verdict on the thesis
Analysis integrated with education.
Clarity over Clutter
Read the high-level investment thesis first, then unfold the deep dive to inspect the underlying quantitative models.
Context over Jargon
Hover over any unfamiliar financial metric to view an instant, plain-English definition without losing your place in the analysis.
Consensus over Exactness
View corporate valuations through multiple distinct analytical lenses rather than a single price target, mapping out clear structural ranges of uncertainty.
Scale your coverage, not your education.
Read a company the way a professional does: why, what, when and how.
{{ authTitle }}
{{ authSub }}
{{ authErrText }}
{{ authErrText }}
{{ authErrText }}
{{ authErrText }}
{{ authErrText }}
{{ termsErrText }}
Aperto never uses your email for marketing, nor shares it with third parties.
Your positions and locked theses live here.
Signing you in…
One moment while we check this browser.
Check your email
We sent a six-digit code to {{ otpEmailMasked }}. It expires in 10 minutes.
We sent a six-digit code to the email address on your account. It expires in 10 minutes.
{{ otpErrorText }}
Producing a fresh report for {{ activeName }}.
This ticker is cold, so the engine is reading the filings and running all four layers. It's added to the shared library once complete, usually a few minutes. You'll see each layer land below as it finishes.
{{ genLessonT }}
{{ genLessonB }}
This company is not covered yet.
{{ activeName }} is not in the shared library. Requests show us which companies readers want. New reports are added by hand during the beta.
{{ gateVoteCount }}
Requests show us which companies readers want. They don’t start a report, and nothing is charged.
{{ activeName }}
{{ lockedName }}
{{ lockedClosedNote }}
{{ hdrName }}
{{ structBannerText }} {{ structFilingLabel }}
Hidden from readers. Only admins can see this report until it is approved.
It has been removed from the active library and will not be refreshed. It was last produced {{ withdrawnSince }}.
It has been removed from the active library and will not be refreshed.
What do you think, before the engine tells you?
Commit to your thesis before the data does. Aperto locks and timestamps your logic, then runs the critique.
The engine read these testable conditions in your thesis. Confirm or adjust the thresholds. Each one is re-checked each weekday against the newest quarterly statements, and a breach lands on your Falsification Feed.
“{{ committedText }}”
Falsified if: {{ committedPre }}
{{ thesisValLine }}
{{ execHeadline }}
{{ whyRefusalReason }}
{{ whyCoverageStr }}
This is a limit of the analysis, not a judgment about the company.
{{ np.t }}
Measured within this report only. Each figure is how far the WHY score would move if that one measure changed by one notch.
{{ whyExplainLong }}
The composite ({{ whyCompositeStr }}) is a probability-weighted blend, deliberately downside-heavy (40% Bear). A wide Bull−Bear spread means the number leans on which scenario plays out, so read it as a range, not a point.
{{ b.line }}
{{ s.srcNote }}
{{ s.srcDiverge }}
{{ s.moatLead }}
{{ s.moatNoSourceNote }}
{{ bp.t }}
{{ s.verdict }}
{{ frStatement }}
The market is already paying this enterprise value for a business with no commercial revenue. That number is what today's price assumes the milestone map below will deliver. It is not a target, and Aperto does not counter it with one.
{{ frScenarioNote }}
{{ whatOverview }}
{{ whatRefusalReason }}
Solved backwards from today's price, the market is implying about {{ revMarketStr }} annual free-cash-flow growth. The forward growth reference sits near {{ revBaseStr }}. The gap is the judgement you're handed: is the market too cautious, or the forward view too generous?
Earnings
No upcoming earnings date on file.
{{ ecsCredit }}
{{ whenVerdictRead }}
This is a flag, not a ranking. It marks a cohort. It does not order the names outside it.
{{ whenChecksLine }} The verdict above does not come from this count.
{{ howNarr }}
{{ h.note }}
How the findings fit together
{{ np.t }}
Chart data by TradingView. Quotes may be delayed.
{{ historyStampV }}
{{ discFromThesisText }}
{{ discComposerError }}
These posts are reader opinion, not Aperto's analysis. Each one is timestamped against the share price at the time it was posted.
Loading posts…
{{ discEmptyText }}
{{ post.tombstoneText }}
{{ post.editError }}
{{ post.bodyText }}
{{ post.replyError }}
{{ r.tombstoneText }}
{{ r.editError }}
{{ r.bodyText }}
Active Coverage
(Range) When How Synthesis
{{ watchFooterStr }}
{{ whyExplainShort }}
A factual diff between each company’s latest report and its report from at least five days earlier: evidence to interpret, not alerts to act on.
Pro compares each company you follow with its report from at least five days earlier and lists what moved in quality, valuation, timing and the thesis checks, as evidence to interpret rather than alerts to act on.
When paid plans open, Pro will compare each company you follow with its report from at least five days earlier and list what moved in quality, valuation, timing and the thesis checks, as evidence to interpret rather than alerts to act on.
{{ upgradeClosedNote }}
Earnings calendar
{{ ecalIcsMsg }}
Loading earnings dates.
{{ ecalErrorMsg }}
{{ ecalNoCompaniesMsg }}
{{ ecalFundsMsg }}
{{ ecalAgendaTitle }}
{{ ev.ddMsg }}
{{ ecalUpEmptyMsg }}
{{ ecalDateEmptyMsg }}
{{ ecalEmptyMsg }}
{{ ecalNextHint }}
{{ ecalRepTitle }}
{{ ev.ddMsg }}
{{ ecalRepEmptyMsg }}
{{ ecalNoDataMsg }}
{{ ecalCredit }}
{{ heatZoomHint }}
{{ heatUpdatedPrefix }}{{ heatCountdownBody }}{{ heatUpdatedSuffix }}
{{ heatCoverageStr }}
Data by TradingView.
{{ regimeSummary }}
{{ w.body }}
{{ regimeSourceNote }}
{{ regimeFootnote }}
We only surface major moves:
a) Broad market: flagged when the day move of the SPY is ≥ 1.5%. SPY's typical day is ~0.8%, and 1.5% is roughly two standard deviations from this mean. Only ~5% of days exhibit such a move.
b) A watchlist stock: flagged when the move exceeds 2× its own 20-day average daily range, with a floor of 4%. A relative approach is adopted to account for the differing volatilities of each stock.
Judge the decision, not the result.
Every thesis you lock before reading a report lands here. The point isn't whether the trade worked. It's whether your process was sound. Strong process with a poor outcome is just variance. Thin process with a good outcome is luck you can't repeat.
Your decisions sit on the horizontal axis the moment you lock them. That's process, fully in your control. They rise or fall vertically only as outcomes resolve over time.
“{{ e.text }}”
Falsified if: {{ e.pre }}
Over time this plots how confident you were against how the decision actually resolved. Well-calibrated investors sit near the diagonal: high conviction earning strong outcomes, low conviction on the ones that didn't work. Your decisions appear on the conviction axis the moment you lock them and rise or fall as outcomes resolve.
Hover any dagger-marked term in a report to add it here. This is a quiet map of the vocabulary you've built. No streaks, no points, just coverage.
No decisions logged yet.
Open any company, switch to Deep Dive, and lock your thesis before the analysis reveals. Each locked thesis becomes a journal entry here, scored on process, tracked on outcome.
The evidence against you, on purpose.
Once a thesis is locked, confirmation bias does the rest. This feed inverts it: every locked parameter that can be measured is re-checked each weekday against the newest quarterly statements, and library watchdog headlines that press on a thesis land here too. Nothing on this page validates you.
{{ feedSummary }}
Nothing challenging your theses yet.
Lock a thesis with falsification parameters and each weekday the sweep checks the measurable ones against the newest quarterly statements. A quiet feed means no threshold has been crossed.
What you actually hold.
Positions weight the loop by real exposure. Each tile is sized by market value and coloured by thesis health: your locked conviction, blended with the engine's margin of safety and timing read. A drift badge means the Falsification Feed has evidence against a position you still hold.
{{ portSummary }}
A repeat entry for the same ticker replaces the holding. Averaging across lots is your arithmetic, not ours. Leave shares and cost blank to record a thesis-only holding. The heatmap will still colour it by conviction, just without a dollar value.
Paste an exported positions CSV (Fidelity, Schwab, Robinhood, IBKR, or any export with a symbol, quantity and cost column). Columns are matched by header keyword, not exact name. The header row is required.
{{ portImportSummary }}
{{ portImportSkippedStr }}
Grey tiles have no locked thesis or library report to read health from. Positions without a live quote are sized at cost basis. Thesis-only positions (no shares recorded) get a flat placeholder area. They carry no market value to size a tile by.
Prices via the live quote proxy. May be delayed. Educational reference only, never advice. Positions are your own assertions and never leave your account.
No positions recorded yet.
Add what you hold and the Thesis Heatmap will weight every locked thesis, margin of safety and drift alert by your real exposure.
Screen the market in plain language.
Describe what you are looking for. Aperto reads the request into explicit filters and shows them back to you, then runs them over the covered library where the engine has real scores, and over the wider market where it does not. No score is ever invented for a company without a report.
Discovery is a Pro tool.
Natural-language screening over the covered library and the wider market, with the parsed filters and data provenance shown on every result.
{{ upgradeClosedNote }}
{{ discExplain }}
{{ whyExplainShort }}
Margin of safety is re-derived from the live price against each report's intrinsic value. Sorted by margin of safety.
{{ tg.note }}
{{ discCandNote }}
Educational reference only, never advice. Screening data by FMP. Quotes may be delayed.
Start from an idea, not a ticker.
Describe a trend or a structural thesis in plain language. Aperto breaks it into an upstream, midstream and downstream value chain, then grounds every company against a live profile and the scores the engine has already earned. Any name it cannot verify is dropped, never invented.
{{ exRestated }}
{{ exCovStr }}
Flagged by arithmetic alone: a link that grounds to two or fewer verifiable public companies, or where one name carries at least 65% of the link's market value.
{{ exSystemicNote }}
{{ exDeferredNote }}
Educational reference only, never advice. The value chain is generated, then every constituent is validated against a live profile before it is shown.
{{ themeName }}
{{ themeNarrative }}
{{ themeRankNote }}
{{ whyExplainShort }}
{{ themeUncovNote }}
Educational reference only, never advice. Theme membership is curated and validated against live company profiles, not generated on the fly.
Or start from a curated theme.
Each theme is a curated narrative about where durable value might sit, with its constituents ranked by the scores the engine has already earned. Companies without a report show live market figures only. A score is never invented to make a theme look complete.
ETF Research is a Pro tool.
Fund portfolios from primary SEC filings, with the engine's scores aggregated across every holding Aperto has covered and an honest account of what it has not.
{{ upgradeClosedNote }}
{{ etfCoverageNote }}
Fund analysis is coming soon. Holdings, weights and prices are shown below.
Weighted by each holding's share of fund net assets, renormalised over the covered slice only.
Educational reference only, never advice. Holdings per the fund's SEC N-PORT filing. Fund metadata by FMP. Figures may be delayed.
{{ etfrName }}
Hidden from readers. Only admins can see this report until it is approved.
Fund analysis is coming soon. Holdings, weights and prices are shown below.
{{ etfrOverview }}
What do you think, before the engine tells you?
Commit to your view on this fund before the data does. Aperto locks and timestamps your logic, then runs the critique.
“{{ committedText }}”
Falsified if: {{ committedPre }}
{{ etfrExecHeadline }}
The five-pillar business-quality read, weighted across every holding Aperto has scored. Each pillar states the share of fund assets its score is drawn from, so a thin slice never masquerades as the whole fund.
{{ etfrWhyNote }}
{{ pl.analysis }}
{{ etfrSynthesis }}
A fund has no single intrinsic value, but it has a weighted margin of safety. {{ etfrMethodology }}
{{ etfrStressNote }}
Switch to Deep Dive for the per-lens valuation aggregation across the covered holdings.
Each lens aggregates only over the covered holdings where that model ran. Lens coverage differs because the engine selects a different model set per company.
Rate and risk shifts hit every holding at once. Aperto pushes each shock through each covered company's own WACC decomposition and engine sensitivity grid, then re-weights the result into a live fund safety score.
{{ etfrDial.waccStr }}
{{ etfrDial.covStr }}
{{ etfrWhenRationale }}
{{ etfrWhenRsRead }}
A fund has no single thesis verdict. It holds a distribution. This is the covered slice's HOW verdict by weight, then each holding's open falsification tests, heaviest position first.
Switch to Deep Dive for each covered holding's open falsification tests.
Chart data by TradingView. Quotes may be delayed.
{{ historyStampV }} The implied fund IV is the price scaled by the covered-slice safety score. Educational reference, not advice.
Your Profile
3 to 20 characters: letters, numbers and underscores, at least one letter. It can't start, end, or double up on an underscore. Changeable once every 30 days.
Aperto never uses your email for marketing, nor shares it with third parties.
Open reports
Scale your coverage, not your education.
Basic gets full-depth reports on 3 companies and the education tools. Student Pro and Pro open every report in the library and add a wider watchlist and the agentic tools.
{{ pricingFootnote }}
The Terms of Service must be accepted at checkout.
Student Pro needs a verified school email. We send a code to your university address and never use it for anything else. If your institution isn’t recognised, tell us via Feedback and we’ll add it.
Built for analytical transparency
Aperto's framework is built from each company's reported financial statements and its latest annual report (10-K) filed with the SEC. Inputs are shown at each step, so you can follow the reasoning from the statements to the conclusion.
Glass-box architecture
A glass box, not a black box. Valuation figures trace back to disclosed inputs, the key valuation assumptions are visible, and Student Pro and Pro readers can change them. The quality scores are judgments written by an AI model against a published rubric, so a re-run can score slightly differently. (Aperto is Italian for open. Transparency is the posture of the tool.) You reason. The engine shows its reasoning back.
Aperto's reports are written with AI (Anthropic's Claude) from public filings and market data and are checked before publication, and they may still contain errors.
Why is this a business worth owning?
Five weighted sections: economic moat (35%), business quality (25%), management (20%), competitive landscape (15%), industry & macro (5%). Each is scored 0–3 across sub-categories and rolled into a 0–100 composite. Judgment-based sub-categories use Bear / Base / Bull scenarios (40/40/20) to surface conditionality. The composite plus a strength-and-durability gate set the moat rating.
What do we think this business is worth?
Up to ten valuation lenses are screened, and the structurally appropriate ones are kept and weighted by how tight their Monte Carlo distributions are. When the lenses disagree, the engine leans more on one primary lens. The shift starts at a 25% spread and is complete at 45%. Above 60% no single value is published and the range and the reason are shown.
When is the timing in our favour?
Two admissibility gates, support location and a fresh momentum turn, decide whether there is a setup to time at all. One measured read, whether a name is outperforming both the broad market and its sector, decides whether that setup is aligned. Eight further checks are displayed for context and set nothing. It is a timing discipline only and is deliberately silent on exits. It never fires when the margin-of-safety criterion isn't met.
How would we know our thesis is wrong?
Eight tests read the latest filings when the report is built and look for signs that the thesis has failed: demand, moat, reinvestment runway, capital structure, regulatory licence, management response, key-person, and precedent. A job that runs each weekday also checks news headlines against those tests. Verdicts are noise, watch condition, or structural invalidation. It explicitly rejects valuation overshoots, earnings misses, technical breakdowns and macro mood as sell signals.
Five-Pillar Business Quality Assessment
Before price ever enters the conversation, the WHY layer asks whether the company can compound. It scores five distinct pillars across their sub-categories on a tight 0–3 scale. These judgments roll into a 0–100 composite, passing the final rating through a strict strength and durability gate.
The Five Structural Pillars
The 35 / 25 / 20 / 15 / 5 weighting is not arbitrary. It ranks the five drivers by how durably each one governs long-run returns, so the things that decide a decade outweigh the things that decide a quarter.
Asymmetric Scenario Weighting
Judgment-based sub-categories are scored under three scenarios rather than one point estimate, and the weighting is deliberately downside-aware: the bear and base cases together carry 80%. The asymmetry encodes a simple investing truth: protecting against the downside matters more than reaching for the upside. It also surfaces conditionality, showing exactly which assumptions the thesis depends on.
The Moat Gate
The final moat rating is not the composite alone. A company must clear a strength-and-durability gate as well. A high score built on an advantage that is wide but fragile, or durable but thin, is held back. Width without durability fades, and durability without width never earned excess returns to begin with.
The Objectivity Tier System
Sub-categories are not scored arbitrarily. Each is assigned to one of three operational layers, which determines how much human judgment is even permitted to touch it:
Sector-Specific Adjustments
Aperto dynamically morphs its scoring criteria depending on the business model rather than treating all sectors as a generic block. It isolates the specific core metrics that actually govern each industry, whether that is ARR / NRR for Technology-SaaS, process-node cycles for Semiconductors, regulatory constraints for Banks, or statutory gearing and distribution caps for REITs, so a company is always measured against the yardstick its own sector rewards.
Composite Verdict Bands & Foundations
The 0–100 composite maps to five descriptive bands:
Multi-Model Parallel Architecture
WHAT runs a bank of independent valuation engines in parallel, keeps only the ones structurally appropriate for the business, and synthesises what survives into a single defensible intrinsic-value range, never a false-precise point estimate.
The Quality Gate: Upstream Prerequisites
The WHAT layer is programmatically locked unless the upstream WHY layer registers a YES or WARN analytical readiness classification. Aperto enforces a strict structural sequence: a business must possess a viable, trackable data foundation before mathematical valuation models are permitted to run.
The valuation lenses
Each engine is purpose-built for a different corporate architecture. The framework screens them all, then discards the ones that don't fit the company in front of it.
The Valuation Operational Matrix
Each engine is routed to the architecture it fits, guarded by an institutional safeguard, and defends against a specific retail mistake.
Dynamic Algorithmic Synthesis
Aperto rejects naive model averaging. The engine evaluates active valuation branches through a cross-validation framework, applying data-richness penalties and a model independence check to mathematically discount redundant or data-starved models, producing a single, defensible intrinsic value range.
Margin of Safety
Aperto shows prices 15% and 25% below its value estimate. The 15% level is the conventional margin of safety used by value investors. It is a fixed figure and is not fitted to this engine.
The Rigorous Equity Bridge
The backend builds an Equity Bridge by stripping out net debt, preferred stock and minority interests. Per-share values use the diluted share count reported by Financial Modeling Prep.
Expectations Investing via Implied Reversals
Rather than relying purely on speculative future projections, Aperto runs an automated Reverse DCF loop. It reverse-engineers the current market price to isolate the exact growth rates, operating margins, and capital efficiency metrics the market is currently pricing into the stock, so you can judge for yourself whether those performance hurdles are realistic.
Optionality, Surfaced Not Hidden
When the market price sits above the entire surviving lens cluster, Aperto does not quietly stretch a model to reach it. It labels the gap for what it is: the premium the market is ascribing to optionality the cash-flow models cannot yet see, such as an unproven new business line or a call on a future market. You get to decide whether that optionality is worth paying for, rather than having it smuggled into a single point estimate.
The Fundamental-First Sequence
WHEN is the final mathematical filter in the pipeline. It never predicts. It reads price action only for companies that have already cleared the WHY and WHAT gates.
The Non-Predictive Timing Filter
The WHEN layer represents the final mathematical filter in the WHY → WHAT → WHEN pipeline. Aperto enforces a strict fundamental-led hierarchy: long-term investment conviction rests entirely on structural business quality and intrinsic value, while technical analysis serves purely as a secondary operational filter. It runs exclusively on assets that have already cleared the fundamental quality gate (WHY) and the intrinsic value gate (WHAT) to report whether price action currently shows a qualified support level and a fresh momentum turn.
Multi-Axis Indicators
The engine scans ten checks across seven blocks on a rigorous Monthly, Weekly then Daily structural cascade. Two of those blocks are the admissibility gates and two are the relative-strength legs that set the verdict. The checks are not added up, and nothing is ranked on a total.
The Multi-Timeframe Structural Cascade
To eliminate short-term market noise traps, Aperto enforces structural alignment down the time horizon: Monthly charts isolate structural macro floors, Weekly charts confirm intermediate trend-reversal signatures, and Daily charts are used for short-term timing.
Statistical Calibration Matrix
The four timing labels, what decides each one, and what each one does not claim. None of them comes from a total, and no two of them are separated by a measured return difference except aligned against the rest.
Empirical Calibration Constraints
Only one boundary has held up on data the model did not see: the relative-strength read behind ALIGNED. The other labels describe what the indicators show and make no claim about returns. Broader environmental conditions like the Average Directional Index (ADX) and the Volatility Index (VIX) are treated as non-scored regime overlays to isolate macro market friction.
Programmatic Risk Controls
The execution engine actively monitors data integrity. For recent corporate listings or asset spin-offs lacking deep cyclical price metrics, the backend raises a strict HISTORY-LIMITED guardrail that suppresses arbitrary technical scores until a statistically viable tracking window is established.
How is a structural thesis invalidated?
HOW is a fundamentals-only check. Eight tests read the latest filings when the report is built and look for signs that the thesis has failed. A job that runs each weekday also checks news headlines against those tests. It exists to answer a single question. Has the original thesis actually broken? Everything about it is built to hold that line and to tune out the noise that so often gets mistaken for a real answer.
The Fundamentals-Only Invalidation Gate
The HOW layer executes a pure, fundamentals-only thesis-invalidation framework built for long-horizon compounding assets. Aperto completely rejects price-based selling mechanisms like technical stop-losses or short-term valuation overshoots, as these fluctuations routinely mean-revert without changing corporate cash-generation capacity. The platform deliberately drops traditional retail trading terminology, shifting the focus away from reactionary selling and toward disciplined thesis-invalidation checks.
The Eight Core Diagnostic Stress Tests
Each test targets one load-bearing pillar of a typical long thesis. If a pillar cracks, the thesis is in question. If the headlines are loud but every pillar holds, it isn't.
The Analytical Diagnostic Ledger
Each of the eight tests ends in one of four states. The table shows what each state means and what it does not claim.
What a FAIL means
In tests 1 to 5, the original WHY thesis is open to re-examination from scratch. A FAIL in tests 6 to 8 sets the overall result to WATCH CONDITION.
Why I built Aperto.
Understanding a company properly takes a long time. That is the whole problem, and it is not a problem of access.
The information is not hidden. Filings, transcripts, peer data, price history: it is public, and most of it is free. What is missing is synthesis. It arrives in fragments, from different places, in different formats, and assembling those fragments into something you can actually reason from is the slow part. That is the work almost nobody has time for, and it is the work that decides whether you understand a business or merely recognise its name.
You can ask an AI to tell you about a company and get a fluent answer in seconds. What you will not get is scrutiny. It will summarise. It will not press on whether a moat is structural or just a good quarter, whether a margin trend is a trend or an accounting artefact, whether management has earned the benefit of the doubt. Those are the questions that separate a good business from a well-described one, and they only get answered if something is built to ask them every single time.
Aperto's reports are written with AI (Anthropic's Claude) from public filings and market data and are checked before publication, and they may still contain errors.
So I started building what I wanted to read. Four questions, asked in the same order about every company, scored against the same published standards, with the reasoning shown rather than asserted. You are meant to be able to check the work, and to disagree with it.
What Aperto will not do
Aperto does not know your circumstances and gives no personal advice. It does not know your horizon or what you can afford to lose, and it never asks.
What it does is make reasoning visible. Here is what was measured. Here is the standard it was measured against. Here is where it landed, and why. The judgment stays with you, which is the only place it can honestly sit.
A report has done its job if it leaves you better able to argue with it.
For research and educational purposes only. Nothing on Aperto is financial advice, and Aperto is not a licensed financial adviser.
Privacy Policy
Effective 13 Oct 2026
This policy says what personal data Aperto collects, why, who else handles it, how long we keep it and what you can do about it. It describes what Aperto does today. When Aperto changes in a way that affects your data, we change this policy.
1. Who runs Aperto
Aperto is a stock research and education service at aperto.dev. It is run by Ryan Wee, an individual in Singapore. Aperto is not yet a registered business. In this policy, "we", "us" and "Aperto" mean Ryan Wee.
We handle personal data under Singapore's Personal Data Protection Act 2012 (the PDPA). Personal data means information that identifies you, or could identify you when combined with other information we hold. You can reach us at hello@aperto.dev. Section 9 names our Data Protection Officer.
2. What we collect
2.1 What you give us
- Account: Your email address and name. You sign in with a password or with Google. Your password goes from your browser straight to Supabase, our sign-in provider. Aperto's servers never receive it, and Supabase keeps only a hash of it. Aperto uses a fingerprint of that hash to notice when you change your password. If you use Google, Google gives Supabase your name and email address and never your Google password. Each sign-in also needs a six-digit code that we email to you, unless you chose to trust that browser.
- Sign-up record: When you sign up we ask you to confirm that you are 18 or older and agree to the Terms of Service and this policy. We record that tick with its date, the version of each document and how it was given (email sign-up, Google sign-up, or a one-time prompt for existing accounts). We keep no IP address or browser details with it.
- Profile: Your username, which other signed-in members see next to your posts, your time zone and an optional profile picture. Profile pictures are stored in a public location, so anyone with a picture's web address can open it.
- Student plan: If you verify a school email for the student plan, we keep that address and the date you verified it.
- Companies and lists: The companies you follow, your notes on them, your lists and the companies you ask us to cover.
- Your own writing and numbers: Decision journal entries (your thesis, stance, conviction and pre-mortem, the price when you locked it, the tests we derive from them, alerts raised against those tests and the outcomes you record), the portfolio positions you type in (shares and cost basis), your valuation assumptions for a company and the coach's opening review of your thesis.
- Forum posts: Posts and replies you write on company pages, with the stance and conviction you choose and the share price at the time you posted. Other signed-in members can read them next to your username. People who are not signed in cannot read them. If you report a post, we keep your report with the reason and note you give.
- Coach and debate messages: We do not save your coach chat messages or your debate messages. They are sent to Anthropic to produce a reply, as section 13 explains.
- Quiz results: Your score, and your score by layer, for each quiz you finish. We do not store which answer you chose to each question.
- Feedback: What you type into the feedback form, the page you were on and an email address if you leave one. The form works without an account. It reaches us as an email.
- Preferences: Your usage analytics switch, with a dated record of each change (on or off, with the version of this policy in force at the time), and your email notification setting.
- Referrals: If you sign up through a referral link, we record which account referred you. If you refer someone, we record the credit, its value and the payment it relates to, so it can be reversed if that payment is refunded. Neither of you is shown the other's identity.
2.2 What is collected as you use Aperto
- Usage analytics: A record of certain actions: opening a report, being stopped by a plan limit, seeing an upgrade screen or a locked feature, following a company, asking for a company to be covered, finishing a quiz, opening a tool from the navigation and, once paid plans open, starting a paid plan. Each record holds an internal account number, the action, your plan, the time and a few fixed details such as the ticker. It never holds anything you wrote. It is on by default and you can switch it off on your Account page, in the same Cookies and analytics choice that sets your cookies (sections 8 and 12). Switching it off stops new records and does not delete old ones, which go as section 6 says. These records stay on our own servers. We do not send them to any analytics provider.
- Reading history: The 50 reports you opened most recently, with how many times you opened each and when, so we can show you where you left off. This is a feature of your account, so the analytics switch does not turn it off.
- Plan limits: Monthly counts of the coach messages you sent and the debate turns you used, and which reports you opened under your plan's allowance and in which month. Counts and tickers only, never content. The analytics switch does not turn these off either.
- Notifications: Messages inside the app, such as a report you asked for being published, a reply to your post, a moderator's action on your post or an earnings date for a company you follow. A reply notification carries the first 140 characters of the reply. If the reply is later deleted or removed, the notification shows "This reply was removed." instead. We also record which news alerts you have read.
- Emails: We send sign-in codes, school verification codes, a notice when a report you asked for is published, an earnings reminder for companies you follow and, once paid plans open, a notice before a free trial ends. The last three have an unsubscribe link and share one switch, which does not affect sign-in and verification codes. Supabase sends the password reset email and any sign-up confirmation email.
- Sign-in codes: A sign-in code is stored as a hash with its expiry, the number of wrong guesses and, for sign-in codes only, the IP address of the request. Codes expire after 10 minutes and the record is deleted 7 days after that. School-email codes are treated the same way. Both are also deleted when your account is removed.
- Trusted browsers: If you tick "Trust this browser for 30 days" when you enter a sign-in code, Aperto stores a random identifier for that browser (as a hash), a label such as "Chrome on Windows", and the dates it was added and last used. That browser then skips the emailed code for 30 days. You can see and remove these browsers on your Account page. A removed browser needs a new code on its next request. Changing or resetting your password removes all of them. A trusted-browser record is deleted 30 days after its trust ends, so up to 60 days after you last entered a code. It is also deleted when your account is removed.
- Visitor counts: When someone who accepted page-visit measurement in the cookie banner visits our public pages, we count the visit by page and by the website that sent them (the host name only). To avoid counting a visitor twice in a day, we make a one-way hash from the IP address and browser details with a random salt that changes every day. The salt and the hashes are deleted two days later, when the first visit of that day is counted. No cookie is used and no account is linked to the count.
- Technical data and logs: Our hosting providers keep standard server logs, which can include your IP address, browser details, the address requested and the time. We hold IP addresses in memory for a short time to limit abuse. The only place we store an IP address is the sign-in code record above.
2.3 Payments
Paid plans are not open yet and nothing is charged. This section applies only if they open, and we will update this policy before they do. Stripe would then process payments, and card details would go straight to Stripe and never pass through Aperto's servers. We would send Stripe your email address and account number so a payment can be matched to your account, and we would keep a Stripe customer reference and your plan status with your account.
3. How we use your data
We use your personal data to create and secure your account, provide the features you use, send the emails in section 2.2, apply your plan's limits, understand in aggregate which parts of Aperto are used so we know what to improve or remove, keep the service secure and meet our legal duties.
We do not use your journal entries, theses, portfolio positions, valuation assumptions or coach and debate messages for analytics or to improve the product. They exist to be shown back to you. Usage analytics record that something happened, never what you wrote. We do not send marketing email, sell your personal data or share it for anyone else's marketing.
We rely on your consent, including the consent you give by using a feature that needs the data. You can withdraw it (section 8).
4. Who handles your data
We do not sell or rent your personal data. Only the providers below handle it, and only to run Aperto.
4.1 Providers that handle data for us
- Supabase (Singapore): Sign-in, our database, file storage (profile pictures and report files) and database backups made on weekday nights. It holds your account and everything you save in it, as section 2 lists.
- Render (Singapore): Runs our servers (the API, the background worker and the jobs that run on weekday nights). Everything you send to Aperto passes through it, including what you type into AI features on its way to Anthropic. It keeps standard server logs.
- Cloudflare (global network): Serves the website and its domain name, forwards email sent to hello@aperto.dev, runs the bot check on the sign-in form and, for readers who accept it in the cookie banner, counts page visits in aggregate. It sees your IP address, browser details and the pages you request. We do not pass your account details to it.
- Google: "Continue with Google" sign-in if you choose it, and the Gmail mailbox that receives mail sent to hello@aperto.dev.
- Resend (Tokyo): Sends our emails. It handles the recipient's email address and the subject and text of each message.
- Anthropic: The AI model behind the coach, the debate, journal tests, news matching on weekday nights, Discover, the Theme Explorer and the writing of reports. It receives the text described in section 13. We do not send your name, email address or account number.
- Stripe: Not in use. If paid plans open, it will process payments (section 2.3).
4.2 Content your browser loads from other companies
Some content on our pages loads straight from other companies' servers into your browser. They see your IP address and browser details, as any website you visit would, and they may use cookies or similar technologies under their own policies. We do not pass your name, email address or account details to them.
- TradingView: Price charts and other market widgets on company pages. It also sees which symbol is shown.
- Financial Modeling Prep: Company logo images. It also sees the ticker in the image address.
- Google Fonts: The typefaces used across the site. Our emails also ask Google for a font when your mail app allows it.
- unpkg: The open-source code libraries (React and Babel) that run the app in your browser.
- Cloudflare: The bot check on the sign-in form, and the page-visit measurement, which loads only if you accept it in the cookie banner.
4.3 Where our servers get market data
Our servers fetch company, market and filing data from Financial Modeling Prep and SEC EDGAR, and index membership lists (tickers only) from Slickcharts. For the market regime panel they fetch US economic series from the Bureau of Labor Statistics, the US Treasury, the Federal Reserve Bank of Chicago and FRED, as well as Robert Shiller's published data. These requests carry company tickers, series names and the words you type into the company search box. They never carry your name, email address, account number, holdings or notes.
4.4 Other disclosure
Outside the providers above, we disclose personal data only where the law requires it, to investigate or prevent fraud, security incidents or abuse of the service, or to protect the rights, property or safety of Aperto, its users or the public.
5. Sending data outside Singapore
Some providers in section 4 handle personal data outside Singapore. They are Resend (Japan), Anthropic (United States), Cloudflare and Google (global networks) and the companies in section 4.2, which your browser contacts directly. We send personal data to them only to run Aperto.
6. How long we keep data
- Your account and what you saved: As long as your account is active.
- Removing your account: You can ask for removal on your Account page. Your data stays intact for 30 days, and you can cancel in that time by signing in and choosing "Keep my account". After 30 days we remove the account and its data permanently, including files in storage, your sign-up record and the record of your analytics switch.
- What stays after removal: A record that the removal happened, which holds the account's internal number, the dates you asked and it was removed, and the count of files deleted. It holds no name, email address or content. Records of report-building jobs keep a company ticker and times with no link to you. Forum posts and replies stay, as the next item says.
- Forum text: A post you delete yourself is hidden, but its text stays in our database until your account is removed. If a moderator removes a post, its text is kept in the same way. To ask us to erase the text sooner, email hello@aperto.dev and we will assess your request. When your account is removed, the text of every post and reply you wrote, including ones you deleted, is replaced with "This post was removed when its author deleted their account." Your username is no longer attached to them. Replies other people wrote stay. The stance, conviction score and share price recorded with a post stay with the anonymous post.
- Backups: We copy our database on weekday nights and keep the last 14 copies. A copy holds everything in section 2, including your email address and the hash of your password, and it sits in a private storage area that only our server key can open. Data you removed can stay in a backup for about three weeks.
- Usage analytics records: 12 months with your account number. After that they are rolled up into daily counts with no account number and the original records are deleted. The counts are no longer personal data and are kept.
- Reading history: The 50 reports you opened most recently.
- Notifications: Read ones are deleted after 90 days, unread ones after 180 days, and only your newest 500 are kept.
- Sign-in codes and trusted browsers: Deleted as section 2.2 says.
- Visitor counts: The hashes and salt are deleted two days later. The page and referrer counts carry no identifier and are kept.
- Saved AI answers: See section 13.
- Feedback and support email: Kept in our mailbox for as long as we need them to reply and to improve the product.
- Server logs: Kept by our hosting providers under their own settings, which we do not control.
7. Security
- Every account is protected by a password or Google sign-in plus a one-time code emailed to you, unless you have trusted the browser you are using.
- We store only a salted one-way hash of each emailed code and a one-way hash of the identifier of a trusted browser.
- Our servers check who you are before they return any account data. Direct access to our database from a web browser is switched off, and row-level security is enabled on our tables as a second barrier.
No system is perfectly secure. If you think your account has been compromised, email hello@aperto.dev straight away.
8. Your rights and how to use them
Under the PDPA you can ask for a copy of the personal data we hold about you, ask us to correct data that is wrong, and withdraw your consent to any use of your data that relies on consent. Withdrawing consent stops that use going forward. It may mean parts of Aperto no longer work for you, and it does not close your account.
You can also use these controls yourself:
- Account: You can change your name, email address and password yourself on your Account page.
- Delete your account: Ask for removal on your Account page (section 6).
- Analytics: Switch usage analytics off with Decline in Cookies and analytics on your Account page. That one choice also sets your cookie choice, so it controls both.
- Cookies: If you are signed in, change your cookie choice on your Account page. If you are signed out, clear this site's data in your browser and the banner will ask you again. If you press Decline on the banner while signed out, usage analytics for your account is also switched off the next time you sign in on this browser. If you make no choice, only this browser is affected.
- Emails: Stop the update emails with the unsubscribe link in each one.
- Trusted browsers: See and remove trusted browsers on your Account page.
- Your data: Ask for your data in a common electronic format.
How to ask: Email the Data Protection Officer at hello@aperto.dev from the email address on your account. We may ask you to confirm your identity first. We aim to answer within 30 days. If we need longer, we will tell you in writing, within 30 days, when to expect an answer. If you are not satisfied with our answer, you can complain to the Personal Data Protection Commission (PDPC) in Singapore.
9. Data Protection Officer
Our Data Protection Officer is Ryan Wee. Contact: hello@aperto.dev. We check this mailbox during Singapore business hours.
10. Data breaches
If we find a data breach, we assess it promptly. If it is likely to cause significant harm, or it affects 500 or more people, we tell the PDPC no later than 3 calendar days after we decide it is notifiable. Where the breach is likely to cause you significant harm, we also tell you.
11. Children
Aperto is for people aged 18 and over, and our Terms of Service require it. When you sign up we ask you to confirm it. We do not knowingly collect personal data from anyone under 18. If you believe a child has given us personal data, email hello@aperto.dev and we will remove the account.
12. Browser storage and cookies
Aperto's own code does not set cookies. It keeps you signed in with your browser's local storage, which stays on your device. Most of it is never sent to us. The exceptions are your sign-in and verification tokens, the identifier of a trusted browser and a referral code, which the app sends so those features work. Local storage holds:
- your sign-in session and refresh tokens, a step-up verification token and the random identifier used to recognise a trusted browser
- the email address you last signed in with, so the sign-in form can fill it in next time, a referral code if you arrived through a referral link, and a note that Google sign-in is in progress, while it is
- your colour theme, your plan name, your cookie choice, cached logo shading, and a short note holding your email address while you have not yet accepted the current terms
- whether the Market Regime gauges on your dashboard are shown or hidden, under the name aperto-regime-open, which stays in this browser and is never sent to us
- your Motion choice, On or Off, under the name aperto-motion, which stays in this browser and is never sent to us
- work in progress and saved copies that make pages load faster, such as a quiz you started, the coach questions you have already asked about a company, the ETFs you follow, your watchlist, and report data and valuation slider settings for companies you viewed
Clearing your browser's site data removes all of it. We add no advertising cookies, advertising networks or tracking pixels of our own. The other companies in section 4.2 may use cookies or similar technologies under their own policies, and we have not listed which.
The first time you visit, a banner appears after about a second and asks you to accept or decline. It uses the word cookies for all of the browser storage in this section, because Aperto's own code does not set cookies. It shows once. If you leave without choosing, that counts as Decline. Essential storage is always used because signing in needs it. Unless you accept, your browser does not load Cloudflare's page-visit measurement. The page also holds back Aperto's own visit count and the few usage events it reports itself unless you accept, and the usage analytics setting on your account still governs what our servers record. Your choice, or a note that the banner was shown, is kept in local storage. If you are signed in, you can change it on your Account page, where one choice, Cookies and analytics, sets both this browser and your account. If you press Decline on the banner while signed out, usage analytics for your account is switched off the next time you sign in on this browser. Pressing Accept while signed out never changes your account. If you make no choice, only this browser is affected and your account is left as it is. If you are signed out, clear this site's data in your browser and the banner will ask you again. If you switch from Accept to Decline, the page reloads as soon as your choice is saved, which stops Cloudflare's measurement. If your account cannot be updated at that moment, the page tells you and does not reload.
13. AI features
Aperto uses AI from Anthropic, called Claude, in these places.
- Reports: Reports and the notes on report pages are written with Claude from public company filings, market data and news headlines. They use no information about you. Reports are checked before they are published.
- The Socratic coach: It reads the thesis, pre-mortem, stance and conviction you submit, the valuation numbers you saved with that thesis and the messages you type, together with the findings of that company's report. Its replies are not checked before you see them.
- The Agentic Debate: It reads the point you type and the earlier messages in the debate, together with the findings of the report. The bull, the bear and the judge are AI, and what they write is not checked before you see it.
- Journal tests: The text of your thesis and pre-mortem is sent to Claude to propose tests you can confirm. We save the tests only if you lock the entry.
- News matching on weekday nights: The conditions you locked in your journal are sent to Claude, grouped by company with other members' conditions and with no names or account numbers, to match them against news from that day and the two days before.
- Discover and the Theme Explorer: The sentence you type into the Discover search box or the Theme Explorer is sent to Claude to turn it into filters or a value chain.
- Saved AI answers: To avoid paying for the same answer twice, we keep a copy of some AI answers (the coach's opening review, journal test proposals, news matches, Discover filters and Theme Explorer results). A copy holds the AI's answer, which can repeat parts of what you typed, and it is not linked to your account. Copies in our database are deleted 30 days after they were last used, and copies on our servers' disks are lost when a server restarts.
In each case we do not send your name, email address or account number, and we never send your portfolio positions. Please do not type anything into a free-text box that you would not want processed this way. Claude can be wrong, and its output is for research and education only, not financial advice. Aperto does not use your text to train any model. Anthropic handles what we send it under its own terms.
14. Changes to this policy
We may change this policy as Aperto changes. When a change affects how your data is handled, we update the effective date above and ask you to accept again. We record which version of this policy and of the Terms was in force each time you accept them, and which version of this policy was in force each time you change your analytics switch.
15. Contact and governing law
Questions, requests or concerns about this policy: hello@aperto.dev. This policy is governed by the laws of Singapore, including the PDPA.
Terms of Service
Effective 13 Oct 2026
By creating an account or otherwise using Aperto, you agree to these terms. Please read the disclaimer in section 1 in particular: it is the single most important thing on this page.
1. Not investment advice
Aperto is a research and education tool for research purposes only. It is not investment advice, and Aperto is not a registered investment adviser, broker-dealer, or financial planner in any jurisdiction. Nothing produced by Aperto (a verdict, a valuation range, a moat rating, a timing signal, a coach or debate transcript) is a recommendation to buy, hold, or sell any security.
Reports are built from third-party data and automated analysis, both of which can be wrong, delayed, or incomplete. Investing involves risk, including loss of principal. You are solely responsible for your own investment decisions, and should consult a licensed financial adviser before acting on anything the product shows you.
Aperto does not know your financial circumstances, your objectives, or your risk tolerance, and it does not ask. Nothing it outputs is assessed against your situation, so nothing it outputs can be suitable or personalised advice for you specifically. This is the difference between what Aperto does (education and research) and what a regulated adviser does (advice fitted to a client).
2. AI-generated content
Aperto uses Claude to write our reports, market mover summaries and news alerts, and the replies of the Socratic Coach, the Agentic Debate, journal test proposals, news matching, Discover and the Theme Explorer. We check reports before we publish them, but they may still contain errors, so verify important information against the company's own filings. Text that is sent to Anthropic is outlined in Section 13 of the Privacy Policy.
3. Eligibility & your account
You must be at least 18 years old to create an account. You're responsible for keeping your password and any trusted-device sign-in confidential, and for everything that happens under your account. One account is for one person. Accounts are not to be shared, resold, or transferred.
Contact us immediately if you believe your account has been compromised.
4. Subscriptions & billing
Aperto has a free Basic tier. Paid tiers will open after the beta, and these terms will be updated before anyone is charged.
We may change subscription pricing or tier features going forward. If that affects you, we'll give reasonable notice before it applies to your next billing cycle.
5. Acceptable use
You agree not to:
- Scrape, bulk-extract, or systematically download reports or data outside the normal use of the product.
- Resell, redistribute, or publish Aperto's reports or underlying analysis as your own.
- Reverse-engineer, decompile, or attempt to extract the source of the app or its methodology beyond what is publicly documented.
- Circumvent tier limits, rate limits, or account restrictions.
- Use the service for any unlawful purpose, or to impersonate another person.
- Post content that is unlawful, harassing, hateful, or deliberately misleading.
- Post about a security to move its price, or promote one you were paid to promote without saying so.
- Post spam, advertising, or the same content repeatedly.
- Post someone else's personal information.
We may suspend or terminate accounts that violate this section.
Forum posts are visible to everyone signed in to Aperto, next to your username. Do not put anything in a post that you would not want attached to that name. Posts are written by readers, not by Aperto. They are not our analysis, they are not reviewed before they appear, and nothing in them is investment advice. Anyone can report a post, and we may remove a post or suspend an account under this section.
6. Intellectual property
Aperto's methodology, report structure, scoring frameworks, software, and branding are the property of Aperto and its licensors. Using the product doesn't transfer any ownership of them to you. Logos are trademarks of their owners.
What you personally create (journal entries, thesis notes, portfolio positions, and messages to the coach or debate tools) remains yours. You grant Aperto the licence needed to store it, process it, and display it back to you as part of the service. Anything you post in the forum, such as a post on a company page, still belongs to you. You grant Aperto the licence to show it to other people who are signed in to Aperto, next to your username, for as long as the post is shown.
7. Third-party data & accuracy
Reports draw on data from SEC EDGAR filings, Financial Modeling Prep, and TradingView. This data is provided by those third parties "as is," may be delayed, incomplete, or contain errors, and Aperto does not guarantee its accuracy, completeness, or timeliness. Automated analysis built on top of it inherits the same limits. See section 1.
8. Disclaimers & limitation of liability
The service is provided "as is" and "as available," without warranties of any kind, express or implied, including fitness for a particular purpose or uninterrupted, error-free operation.
To the maximum extent permitted by law, Aperto is not liable for indirect, incidental, or consequential damages, including investment losses arising from your use of the service, and our total liability for any claim relating to the service is limited to the amount you paid Aperto in the 12 months before the claim arose.
9. Termination
You may stop using Aperto and close your account at any time. We may suspend or terminate access for violation of these terms, or discontinue the service, with notice where reasonably possible.
10. Changes to these terms
We may update these terms as the product changes. If a change is material, we'll update the effective date above and make reasonable efforts to let existing users know. Continuing to use Aperto after a change takes effect means you accept the updated terms.
11. Governing law
These terms are governed by the laws of Singapore, without regard to its conflict-of-law principles.
12. Contact
Questions about these terms: hello@aperto.dev.