<?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: Milan Charvat</title>
    <description>The latest articles on DEV Community by Milan Charvat (@milan_charvat_117977f5137).</description>
    <link>https://dev.to/milan_charvat_117977f5137</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%2F3818194%2F2bdec1a6-00d8-4f67-80ff-d396f5213e14.png</url>
      <title>DEV Community: Milan Charvat</title>
      <link>https://dev.to/milan_charvat_117977f5137</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milan_charvat_117977f5137"/>
    <language>en</language>
    <item>
      <title>We built a single score that tells you if a company is worth investing in</title>
      <dc:creator>Milan Charvat</dc:creator>
      <pubDate>Sun, 12 Apr 2026 08:50:00 +0000</pubDate>
      <link>https://dev.to/milan_charvat_117977f5137/we-built-a-single-score-that-tells-you-if-a-company-is-worth-investing-in-2pgd</link>
      <guid>https://dev.to/milan_charvat_117977f5137/we-built-a-single-score-that-tells-you-if-a-company-is-worth-investing-in-2pgd</guid>
      <description>&lt;p&gt;Most stock analysis platforms show you 50 metrics and expect you to figure it out yourself. P/E ratio here, debt-to-equity there, profitability in another tab. By the time you've processed everything, you've forgotten what the first number meant.&lt;/p&gt;

&lt;p&gt;We asked ourselves: what if we could answer "is this company any good?" with one number?&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with stock analysis today
&lt;/h2&gt;

&lt;p&gt;Look at any major stock analysis platform. You'll find dozens of financial ratios, charts, and scores scattered across multiple pages. Each metric tells a piece of the story, but nobody synthesizes it into a clear conclusion. The investor is left to do the hard part themselves.&lt;/p&gt;

&lt;p&gt;We build &lt;a href="https://fairpriceindex.com" rel="noopener noreferrer"&gt;Fair Price Index&lt;/a&gt;, a stock valuation platform covering 37,000+ stocks globally. We already had fair price calculations (using a blend of DCF analysis, relative valuation, and analyst consensus). But we kept hearing the same question from users: &lt;em&gt;"OK, the stock is overvalued, but is the company itself actually good?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fair price tells you if the stock is cheap or expensive. It doesn't tell you if the business behind it is strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  One number: the FPI Rating
&lt;/h2&gt;

&lt;p&gt;So we built the FPI Rating — a single score from 0 to 10 that measures company quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Six factors, each scored 0-100:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Profitability&lt;/strong&gt; — gross margin, operating margin, net margin, FCF margin&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt; — ROIC, ROE, ROA, asset turnover&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth&lt;/strong&gt; — revenue growth, EPS growth, FCF growth, book value growth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debt&lt;/strong&gt; — debt-to-equity, net debt/EBITDA, interest coverage, current ratio&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stability&lt;/strong&gt; — beta, revenue volatility, EPS volatility, consecutive profitable years&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Valuation&lt;/strong&gt; — EV/EBITDA, P/E, P/FCF, PEG, P/S, P/B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus two academic validators: &lt;strong&gt;Piotroski F-Score&lt;/strong&gt; (0-9, financial strength) and &lt;strong&gt;Altman Z-Score&lt;/strong&gt; (bankruptcy risk).&lt;/p&gt;

&lt;p&gt;The base rating is the average of six factor scores normalized to 0-10, adjusted by Piotroski (bonus/penalty up to ±0.5) and Altman (safety check, penalty for distress).&lt;/p&gt;

&lt;h2&gt;
  
  
  The verdict engine
&lt;/h2&gt;

&lt;p&gt;A number alone isn't enough. We also generate a plain-English verdict from the underlying data. The system identifies which factors scored A (strong) and C (weak), and constructs a sentence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;5.8/10&lt;/strong&gt; — "Low debt levels and consistent growth trajectory, but weak profitability margins and expensive valuation relative to fundamentals."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No generic templates. Each verdict reflects the actual strengths and weaknesses of that specific company.&lt;/p&gt;

&lt;h2&gt;
  
  
  Also shipped: Margin of Safety visualization
&lt;/h2&gt;

&lt;p&gt;We also added a Margin of Safety section to every stock page. Three price points on a visual axis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conservative entry&lt;/strong&gt; (fair price minus 20%)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fair price&lt;/strong&gt; (our blended model calculation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Market price&lt;/strong&gt; (current trading price)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Investors instantly see how far the current price is from a risk-adjusted entry point. Benjamin Graham's concept, visualized.&lt;/p&gt;

&lt;p&gt;One fun challenge: when two price points are very close together (like when a stock trades near its entry level), the labels overlap. We solved it by sorting all three points by position and enforcing a minimum visual gap between adjacent points — they spread symmetrically from their midpoint without changing order.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Next.js on Vercel (ISR with 24h revalidation for 37,000+ stock pages)&lt;/li&gt;
&lt;li&gt;TypeScript API client (hey-api generated from OpenAPI spec)&lt;/li&gt;
&lt;li&gt;Tailwind CSS with terminal-grade dark aesthetic&lt;/li&gt;
&lt;li&gt;JSON-LD schema markup (FAQPage, BreadcrumbList, FinancialProduct, Organization, WebSite)&lt;/li&gt;
&lt;li&gt;All data from a proprietary backend API&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Every stock page now shows the FPI Rating and Margin of Safety:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://fairpriceindex.com" rel="noopener noreferrer"&gt;fairpriceindex.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Full methodology is public:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://fairpriceindex.com/methodology" rel="noopener noreferrer"&gt;fairpriceindex.com/methodology&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're building this in public — every update is documented in our &lt;strong&gt;&lt;a href="https://fairpriceindex.com/changelog" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Would love feedback from the dev community. What would you add?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>How we launched a fintech landing page in one afternoon with v0 and Vercel</title>
      <dc:creator>Milan Charvat</dc:creator>
      <pubDate>Wed, 11 Mar 2026 09:32:36 +0000</pubDate>
      <link>https://dev.to/milan_charvat_117977f5137/how-we-launched-a-fintech-landing-page-in-one-afternoon-with-v0-and-vercel-4h6j</link>
      <guid>https://dev.to/milan_charvat_117977f5137/how-we-launched-a-fintech-landing-page-in-one-afternoon-with-v0-and-vercel-4h6j</guid>
      <description>&lt;p&gt;We're building Fair Price Index — a stock valuation tool that covers 37,000+ stocks. Yesterday we went from zero to a live production website on a custom domain in a single afternoon. Here's how.&lt;/p&gt;

&lt;p&gt;The stack:&lt;br&gt;
We designed a complete interactive prototype as a React component in Claude. Then we took that design to v0 by Vercel, pasted a detailed prompt describing every section, and v0 generated a production-ready Next.js page. One click to deploy, DNS pointing from GoDaddy to Vercel, and fairpriceindex.com was live.&lt;br&gt;
What we learned:&lt;/p&gt;

&lt;p&gt;v0 is excellent for translating a well-defined design into Next.js code&lt;br&gt;
Having a complete prototype before touching v0 saved us from burning credits on iteration&lt;/p&gt;

&lt;p&gt;The Vercel + GoDaddy DNS setup took about 15 minutes including propagation&lt;br&gt;
Don't forget sitemap.xml and robots.txt — v0 doesn't generate them automatically&lt;/p&gt;

&lt;p&gt;What's next:&lt;br&gt;
We're building programmatic SEO pages for all 37,000 stocks (fairpriceindex.com/stock/AAPL etc.) using Next.js ISR, and a React Native mobile app with Expo. The entire backend is a single API that feeds both the web and the app.&lt;/p&gt;

&lt;p&gt;If you're building in fintech or doing programmatic SEO at scale, I'd love to connect and compare notes.&lt;/p&gt;

&lt;p&gt;Check it out: &lt;a href="https://www.fairpriceindex.com/" rel="noopener noreferrer"&gt;fairpriceindex.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nextjs</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
