<?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: Mana Grove</title>
    <description>The latest articles on DEV Community by Mana Grove (@managrove).</description>
    <link>https://dev.to/managrove</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4197228%2F904e217f-db2b-4af3-a972-708012ec81af.png</url>
      <title>DEV Community: Mana Grove</title>
      <link>https://dev.to/managrove</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/managrove"/>
    <language>en</language>
    <item>
      <title>We built an MTG deck builder that helps you decide what goes in your deck</title>
      <dc:creator>Mana Grove</dc:creator>
      <pubDate>Sun, 25 Oct 2026 05:23:31 +0000</pubDate>
      <link>https://dev.to/managrove/we-built-an-mtg-deck-builder-that-helps-you-decide-what-goes-in-your-deck-187p</link>
      <guid>https://dev.to/managrove/we-built-an-mtg-deck-builder-that-helps-you-decide-what-goes-in-your-deck-187p</guid>
      <description>&lt;p&gt;A quick disclosure first: I'm one of the founders of Mana Grove, the deck builder this post is about.&lt;/p&gt;

&lt;p&gt;For the last two years I've poured my heart into a deck builder that helps you decide what goes in your deck, not just store the list. It's for the player who opens a deck list and thinks "this is close, but something is wrong with it" and doesn't want to spend an evening finding out what. You can try it right now, without an account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Commander
&lt;/h2&gt;

&lt;p&gt;Commander is a Magic: The Gathering format where a deck is exactly 100 cards, one copy of each card except basic lands, and every card has to fit inside the commander's colour identity. Mana Grove is a Commander deck builder made by Commander players, for the kitchen table and the local game store. The construction rules are easy to check. The choices are the hard part: which ramp, how much removal, what to cut, and whether the cards you already own could do the job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;Mana Grove is a web deck builder with three helpers inside it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grover&lt;/strong&gt; builds and tunes decks from plain language, including cuts, upgrades and budget swaps. Describe the deck you want and it drafts one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scry&lt;/strong&gt; finds cards by what they do instead of their exact wording. The demo starts you off with searches like "creatures that draw cards when they attack" and "treasure token makers".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tutor&lt;/strong&gt; suggests cards tuned to the deck and the collection you already have, with a synergy score on each.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Around the helpers, the builder does the checking. Format legality, card count and colour identity are checked by code as you build, whoever adds the card, and every deck gets bracket guidance. You can import your collection and build from what you own. It's a web app, and it works in a phone browser as well as on desktop.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's free
&lt;/h2&gt;

&lt;p&gt;The deck builder itself is free, and format legality checks and mana statistics are never behind a paywall. The demo needs no account, and if you like what you brewed there, a free account keeps it. The free plan holds a 1,000-card collection and includes 20 Grover messages a month.&lt;/p&gt;

&lt;p&gt;We also made a free &lt;a href="https://themanagrove.com/tools/bracket-checker?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=202610-dev-launch&amp;amp;utm_content=showdev-bracket" rel="noopener noreferrer"&gt;Commander bracket checker&lt;/a&gt;: paste a decklist and it shows which bracket the list reads as and exactly which cards put it there, no account needed. It only reads Brackets 2 to 4 from the cards, Brackets 1 and 5 are yours to declare.&lt;/p&gt;

&lt;p&gt;Paid plans start at 3.99 a month in Canadian or US dollars, plus tax, and buy more Grover, Scry and Tutor, more saved decks and a bigger collection.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;p&gt;Since this is DEV, here is the plumbing, minus the parts we keep to ourselves.&lt;/p&gt;

&lt;p&gt;The front end is React 18 built with Vite, with Motion for animation and MUI in parts of the UI. Sign-in is Firebase Auth. The whole app ships in English and French.&lt;/p&gt;

&lt;p&gt;The API is Python 3.12 on Flask 3.1, with SQLAlchemy 2.0 over PostgreSQL. Card data comes from MTGJSON, under the MIT licence, into our own card database, which we refresh as new sets release.&lt;/p&gt;

&lt;p&gt;Format legality, card count and colour identity are checked by a small, dependency-free Python rules package: deterministic, and run on every deck whoever added the card. A deck Grover drafts goes through exactly the same validator as one you typed in by hand, so an illegal card is caught by code, not by asking a model to be careful.&lt;/p&gt;

&lt;p&gt;Scry is a hybrid search. Card text is embedded with sentence-transformer models and stored in Qdrant, and those semantic results are combined with keyword search. That is why "creatures that draw cards when they attack" finds cards whose wording never says those words, while an exact name still works. The cost is a second store to keep current whenever the card data changes.&lt;/p&gt;

&lt;p&gt;Tutor scores suggestions against the deck you are building and against your own collection, so "what should go in" and "what do I already own that should go in" are the same question. I'll skip how the scoring works.&lt;/p&gt;

&lt;p&gt;Grover is a model we train and run ourselves. No third-party AI service sits in the request path.&lt;/p&gt;

&lt;p&gt;Public pages (cards, commanders, decks, articles) are rendered on the server, so a crawler gets a real document, and the React app takes over in the browser. In production the web app is served from Cloudflare Pages with an edge Worker in front of it: it proxies the API paths so the browser talks to one origin, and it is what lets an unknown path answer a real 404 instead of a 200 with the app shell. The API runs on Google Cloud Run as a Docker image, with Cloud SQL Postgres behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;p&gt;Grover can make mistakes, and the app says so under the chat. It's a deck-building assistant, not a judge, so rules answers come with a note to check the Comprehensive Rules. That's also why legality lives in code rather than in the assistant. And the no-account demo has a daily cap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What launching taught us
&lt;/h2&gt;

&lt;p&gt;We're a small team in Canada, so every launch decision was also a decision about where our hours go. Three things I'd tell another small team:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Let people try it before they sign up.&lt;/strong&gt; Asking for an email before someone has seen a single deck is a big ask, so the demo lets you build first, and the deck can come with you when you make an account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put the must-be-right parts in code, and say plainly what the assistant can't do.&lt;/strong&gt; A weak suggestion is easy to skip. A confident wrong answer is much harder to forgive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write down early what you'll never do.&lt;/strong&gt; For us: no paywall on the deck builder, legality checks or mana statistics, and no ads, affiliate links or data sales. It turns a lot of later debates into short ones.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Two questions for you
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How do you handle plain-language input in a domain with strict rules?&lt;/strong&gt; When a request is vague ("a fun deck for my playgroup") or asks for something the format doesn't allow, do you ask a clarifying question, pick a sensible default, or show options?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How do you measure "helpful" for an assistant?&lt;/strong&gt; "Did it answer" is easy to count. "Did the player keep the deck" is closer to what matters, but slower and noisier. What has worked for you?&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;&lt;a href="https://themanagrove.com/try/deckbuilder?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=202610-dev-launch&amp;amp;utm_content=showdev" rel="noopener noreferrer"&gt;Try the Mana Grove deck builder, no account needed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear about the commanders it builds badly, the cards it suggests that you'd never play, and anything that feels missing. Come and break it, then tell me what broke.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Mana Grove is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Magic: The Gathering and its logos are trademarks of Wizards of the Coast LLC; Mana Grove is not affiliated with, endorsed or sponsored by Wizards of the Coast&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>ai</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
