<?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: David Webb</title>
    <description>The latest articles on DEV Community by David Webb (@davidwebb915).</description>
    <link>https://dev.to/davidwebb915</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%2F4126319%2Fad459aaa-4694-41c7-9b5b-484ba27b922c.png</url>
      <title>DEV Community: David Webb</title>
      <link>https://dev.to/davidwebb915</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/davidwebb915"/>
    <language>en</language>
    <item>
      <title>Building an AI Tarot Decision Engine: Turning Seven Dimensions into Structured Reports</title>
      <dc:creator>David Webb</dc:creator>
      <pubDate>Tue, 15 Sep 2026 12:39:58 +0000</pubDate>
      <link>https://dev.to/davidwebb915/building-an-ai-tarot-decision-engine-turning-seven-dimensions-into-structured-reports-2p1c</link>
      <guid>https://dev.to/davidwebb915/building-an-ai-tarot-decision-engine-turning-seven-dimensions-into-structured-reports-2p1c</guid>
      <description>&lt;p&gt;Some weeks I ship everything on my list. Other weeks I stare at a half-written email for two hours and call it a day. I used to blame focus, sleep, or motivation — until I started treating my decisions like data instead of feelings.&lt;/p&gt;

&lt;p&gt;That habit turned into a product: an AI-assisted &lt;strong&gt;decision report engine&lt;/strong&gt; that frames a structured analysis as a tarot-style reading. This post is about the model underneath — no mysticism required — and what building it taught me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The observation
&lt;/h2&gt;

&lt;p&gt;For years, whenever I faced a decision I was avoiding, I'd pull tarot cards. Not for prediction — but because a spread &lt;em&gt;forces&lt;/em&gt; you to look at the situation from angles you'd rather skip. Positions like "what you fear" or "what you refuse to see" are basically canned journal prompts.&lt;/p&gt;

&lt;p&gt;I noticed I kept asking the same seven questions. So I wrote them down, scored them, and mapped them onto continuous dimensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The seven dimensions
&lt;/h2&gt;

&lt;p&gt;Every decision report reduces the situation to seven indices on a 0–100 scale (in practice calibrated to an observed 12–88 band, because humans rarely live at the extremes):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dim&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;What it measures&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;Risk appetite&lt;/td&gt;
&lt;td&gt;tolerance for irreversible downside&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;Intuitive synthesis&lt;/td&gt;
&lt;td&gt;how much you trust pattern-recognition vs. explicit reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P&lt;/td&gt;
&lt;td&gt;Temporal patience&lt;/td&gt;
&lt;td&gt;willingness to wait for compounding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;Social dynamic&lt;/td&gt;
&lt;td&gt;how much alignment/consensus you need&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Action bias&lt;/td&gt;
&lt;td&gt;commit-fast vs. deliberate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rf&lt;/td&gt;
&lt;td&gt;Reflection depth&lt;/td&gt;
&lt;td&gt;tendency to re-analyze&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;St&lt;/td&gt;
&lt;td&gt;Stability&lt;/td&gt;
&lt;td&gt;preference for known structures over flux&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A quiz (about 3 minutes) scores the &lt;em&gt;question&lt;/em&gt;, not the person. The output is a seven-dimension radar plus the two or three tensions hiding inside it — e.g. high reflection + low action under load reads as "decision fatigue wearing a costume."&lt;/p&gt;

&lt;h2&gt;
  
  
  Archetypes as geometry
&lt;/h2&gt;

&lt;p&gt;Ten recurring vectors fell out of the calibration data — each is just a shape across the seven axes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Archetype&lt;/th&gt;
&lt;th&gt;R&lt;/th&gt;
&lt;th&gt;I&lt;/th&gt;
&lt;th&gt;P&lt;/th&gt;
&lt;th&gt;S&lt;/th&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;Rf&lt;/th&gt;
&lt;th&gt;St&lt;/th&gt;
&lt;th&gt;Failure mode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Alchemist&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;solitary conviction without alignment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sage&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;74&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;over-analysis; missed asymmetric upside&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Challenger&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;hyperactive interference; burn rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Builder&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;74&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;rigidity past optimal pivot points&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creator&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;draft overload; consolidation lag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opportunist&lt;/td&gt;
&lt;td&gt;74&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;shallow commitment; option chasing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architect&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;74&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;inelasticity in fast-changing terrain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leader&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;82&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;high consensus load; diluted velocity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maverick&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;key-person isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Competitor&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;scoreboard fixation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These aren't personality verdicts — they're &lt;em&gt;operating modes&lt;/em&gt;. The same person flips vectors depending on the domain (work vs. relationships vs. money).&lt;/p&gt;

&lt;h2&gt;
  
  
  Engineering notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quiz-gated queue.&lt;/strong&gt; Free beta is 3 readings/day, gated by the quiz so the queue stays human-scale and bots can't burn the LLM budget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The LLM does framing, not fortune-telling.&lt;/strong&gt; It renders tensions and next steps from the scored dimensions; the tarot layer is a presentation skin over a structured report.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest statistics.&lt;/strong&gt; The birth-timestamp mapping that seeds the archetype guess is a weak statistical correlation. The product says so, in the UI and in the copy. Users trust it more, not less, for that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Naming is the intervention.&lt;/strong&gt; The most common feedback: "I froze less once the pattern had a name." A labeled failure mode is fixable; unnamed anxiety isn't.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd do differently
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Ship the radar before the tarot skin. The mystical frame is great for reach, but the retention comes from the structured report.&lt;/li&gt;
&lt;li&gt;Score the &lt;em&gt;question&lt;/em&gt; first, person second. Question-scoring generalizes; profiling feels invasive.&lt;/li&gt;
&lt;li&gt;Ship with the disclosure. Every A/B test said honesty converts better than mystique.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're stuck in a decision loop, try tracking one dimension — risk or action — for a week. Naming the pattern is half the fix.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building this in public — the engine is in free beta (&lt;a href="https://www.tangoera.com" rel="noopener noreferrer"&gt;tangoera.com&lt;/a&gt;) and the longer build log lives on &lt;a href="https://www.indiehackers.com/davidwebb915" rel="noopener noreferrer"&gt;Indie Hackers&lt;/a&gt;. Happy to answer questions about the calibration data or the quiz design.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>productivity</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Building an AI Tarot Decision Engine: Why I Used Tarot as a Framing Layer (and What the 7-Dimension Radar Actually Models)</title>
      <dc:creator>David Webb</dc:creator>
      <pubDate>Tue, 15 Sep 2026 12:39:10 +0000</pubDate>
      <link>https://dev.to/davidwebb915/building-an-ai-tarot-decision-engine-why-i-used-tarot-as-a-framing-layer-and-what-the-7-dimension-2174</link>
      <guid>https://dev.to/davidwebb915/building-an-ai-tarot-decision-engine-why-i-used-tarot-as-a-framing-layer-and-what-the-7-dimension-2174</guid>
      <description>&lt;p&gt;A few months ago I caught myself doing the thing every solo founder does: re-reading the same pros-and-cons list for the fourth time, hoping the answer would change. I wasn't lacking information. I was stuck in a loop — re-analyzing instead of committing.&lt;/p&gt;

&lt;p&gt;That loop is what I ended up building a product around. TangoEra is an AI-powered decision report tool, currently in a free beta. This post is the engineering story: why tarot, what the engine actually computes, and the mistakes I made along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why tarot is a framing layer, not a prediction layer
&lt;/h2&gt;

&lt;p&gt;The obvious objection: "AI tarot? So it predicts the future?" No — and this distinction is the whole design.&lt;/p&gt;

&lt;p&gt;Tarot survived for centuries not because it predicts outcomes, but because a card spread is a &lt;strong&gt;forced perspective machine&lt;/strong&gt;. The Fool, the Tower, the Two of Swords — each card is a lens that drags your thinking onto an axis you were avoiding. When you draw "restraint" on a day you're fired up to quit your job, the value isn't mystical. It's a structured interruption of your default narrative.&lt;/p&gt;

&lt;p&gt;So the product framing is: the AI generates an archetype profile and a decision report, and the tarot visual layer is the interface that makes people &lt;em&gt;slow down and actually read the analysis&lt;/em&gt; instead of skimming bullet points. The cards are UI, not oracle. Every report carries the honest disclaimer: this is a self-reflection and decision-support tool based on statistical weak correlation, not prediction, not advice.&lt;/p&gt;

&lt;p&gt;I think of it as putting a decision matrix inside a story people will finish.&lt;/p&gt;

&lt;h2&gt;
  
  
  The engine: archetype vectors, not a black box LLM
&lt;/h2&gt;

&lt;p&gt;Under the hood there are two layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1 — the calibration engine.&lt;/strong&gt; We model each user's decision style as a vector over seven continuous dimensions: risk appetite, intuitive synthesis, temporal patience, social dynamic, action bias, reflection depth, and stability. Scores live on a 0–100 index, but real profiles only occupy an observed 12–88 band, which matters for normalization.&lt;/p&gt;

&lt;p&gt;We maintain 10 prototype archetype vectors — the Alchemist, the Sage, the Challenger, the Builder, the Architect, the Maverick, and so on. Each archetype is a distinct geometric shape across the seven dimensions, with an operational strength and a primary failure mode. The Sage scores high on reflection and patience, low on action bias — brilliant at verification, prone to missing asymmetric upside through over-analysis. The Challenger is the mirror image. When a user's quiz answers come in, we project them onto this prototype space (nearest-shape matching with soft membership, not hard classification) rather than asking an LLM to freestyle a personality type. That keeps output stable, testable, and cheap to regression-test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2 — the report radar.&lt;/strong&gt; The seven dimensions the user &lt;em&gt;sees&lt;/em&gt; in their report are translated into decision-facing axes: clarity, risk appetite, timing, relationships, resources, blind spots, and next move. This is where the tarot cards bind to computed values — a card is selected because a dimension score (plus its distance from the archetype's own baseline) triggers it, not at random.&lt;/p&gt;

&lt;p&gt;The tension rendering is the part I'm proudest of. A report that says "you're high risk, high reflection" is useless. A report that says &lt;strong&gt;"your reflection score is 38 points above your action score — that gap is your frozen-week pattern, and here is the specific next step sized to close it"&lt;/strong&gt; is a tool. Reports render two sections: &lt;em&gt;tensions&lt;/em&gt; (pairs of dimensions that are far apart and therefore in internal conflict) and &lt;em&gt;next steps&lt;/em&gt; (one concrete, low-commitment action per tension). One next step, not five. Choice overload is the disease; a report with five action items is just more of it.&lt;/p&gt;

&lt;p&gt;This borrows directly from the decision-matrix tradition (Stuart Pugh's concept-selection matrices): score dimensions, weight by importance, let arithmetic surface structure instead of opinions. Our quiz is essentially a weighted scoring instrument wearing a tarot costume.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3-minute quiz as a queue gate
&lt;/h2&gt;

&lt;p&gt;The quiz exists for two reasons. First, calibration: we need ~20 weighted answers to place you in the seven-dimensional space with enough confidence that the radar isn't noise. Second — and this is a product decision, not a technical one — it gates the daily report queue.&lt;/p&gt;

&lt;p&gt;We generate a limited number of full AI-written reports per day, with a daily 3 seats for the free beta. The quiz is the gate: it filters out drive-by traffic and makes sure every generated report gets a human who actually engaged with their inputs. As a solo dev, this isn't artificial scarcity — it's capacity management. Each report is reviewed for template drift, and human-scale volume is the only way I can catch the LLM quietly going off-script. If you've ever run a generative feature unattended, you know the failure mode: output slowly drifts and nobody notices for weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The birth-timestamp-to-dimension mapping is a &lt;strong&gt;weak statistical correlation&lt;/strong&gt;, not science. It's a vocabulary generator, not a verdict. I'm upfront about this in-product.&lt;/li&gt;
&lt;li&gt;Quiz self-reporting has all the usual biases. People answer who they want to be on Monday morning.&lt;/li&gt;
&lt;li&gt;The report is a mirror. If a user wants certainty, no tool sells that honestly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solo-dev lessons
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Constrain the LLM with geometry.&lt;/strong&gt; Let the model &lt;em&gt;write prose inside a computed skeleton&lt;/em&gt; (archetype vectors, tension pairs, threshold rules), never invent the skeleton. Testability went from "vibes" to unit tests on vectors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-scale queues are a feature.&lt;/strong&gt; A daily cap forces review loops, which catch drift, which builds trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Own the weird framing.&lt;/strong&gt; Tarot gets attention that "decision support SaaS" never would, and the card constraint genuinely improves the writing — forced metaphors beat blank pages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're building something similar, steal the pattern: compute hard, narrate softly, and always label the correlation honestly.&lt;/p&gt;

&lt;p&gt;Try the free beta: &lt;a href="https://tangoera.com/?utm_source=devto" rel="noopener noreferrer"&gt;https://tangoera.com/?utm_source=devto&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
