<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lessicon: building in public]]></title><description><![CDATA[Lessicon: building in public]]></description><link>https://lessicon.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6af35aac2c6fe8197e632d19/5d10a681-ec5a-4df7-b3fb-98befd9c5d9d.png</url><title>Lessicon: building in public</title><link>https://lessicon.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 09:06:35 GMT</lastBuildDate><atom:link href="https://lessicon.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Day 1 of 15: 20 people made a study site with my app. 2 came back.]]></title><description><![CDATA[A student building Lessicon shares real day-1 numbers: 20 people made a study site, 2 came back. What went wrong, and how the sites are built.]]></description><link>https://lessicon.hashnode.dev/day-1-of-15-20-people-made-a-study-site-with-my-app-2-came-back</link><guid isPermaLink="true">https://lessicon.hashnode.dev/day-1-of-15-20-people-made-a-study-site-with-my-app-2-came-back</guid><category><![CDATA[startup]]></category><category><![CDATA[buildinpublic]]></category><category><![CDATA[webdev]]></category><category><![CDATA[education]]></category><dc:creator><![CDATA[Lessicon]]></dc:creator><pubDate>Tue, 10 Nov 2026 18:00:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6af35aac2c6fe8197e632d19/c1323420-92eb-4b89-9819-1a71b28bb95d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I'm a student, and I'm building Lessicon: you type a topic or snap a photo of your notes, throw it into a black hole on the landing page, and a whole study website comes out (explanations, a quiz, a concept map, cards, progress).</p>
<p>On November 10 I set myself a public number: <strong>200 returning users by November 25.</strong> If it doesn't get there, the black hole on the landing page goes dark for 24 hours. This is the first write-up, with the real numbers.</p>
<h2>The numbers on day 1</h2>
<ul>
<li>12 accounts (my own and test accounts left out)</li>
<li>20 people have made a study site (as of Nov 10)</li>
<li><strong>2 of them came back to make a second one</strong></li>
</ul>
<p>That last line is the only number I'm counting. A sign-up is a click. Someone who comes back the next week with their next lesson is a person the thing actually helped.</p>
<h2>What I got wrong first</h2>
<p><strong>1. I let guests make sites without an account.</strong> It felt generous and it made the first number look better. Counted again on November 10, with my own accounts left out: of the people who made a site with an account, 2 of 6 came back. Of the 14 who made one as a guest, none did. (Edit: I first wrote 21 made a site and 3 came back. One was my own account, so it's 20 and 2.) A guest has nowhere to come back to: no "my sites", no email, nothing that remembers them. So now pressing the button while signed out goes to sign-up first, and keeps whatever you typed.</p>
<p><strong>2. My "come back" emails had sent zero.</strong> There's a small job that nudges people who made one site and went quiet for two days ("add your next lesson"). It only emails people who turned on product emails, which is the right rule, but the opt-in was buried, so no real account had it on. The job ran every hour and did nothing, quietly.</p>
<p><strong>3. A returning user hit a wall I couldn't see.</strong> Someone came back to make a second site from a photo, the step that reads the photo rejected it, and they got nothing. No crash, no alert. Returning users are the whole metric, so that one hurt.</p>
<h2>How a site gets made (the part I'm proud of)</h2>
<p>Early versions let the model design the whole page. Now the model only writes <strong>words</strong>:</p>
<ul>
<li>topics and cards</li>
<li>a quiz and a summary</li>
<li>the page's copy</li>
<li>a diagram spec, which code draws in the site's colours</li>
</ul>
<p>The page itself is built <strong>in code</strong>, from 15 layout families plus a per-site seed that moves the blocks around, so no two sites look the same, and the layout is the same tested code every time.</p>
<p>Each half of the study material is <strong>fact-checked against your notes</strong> as soon as it arrives: code flags numbers that aren't in the notes, then a second check looks at the cards. The reader doesn't wait for that. The page is saved as a draft right away, shows "Checking facts…", and the checked page quietly replaces it under the same link.</p>
<p>The generated page is treated as hostile, because it's model output built from user input: it's served sandboxed, under a strict Content-Security-Policy, never inside the app's own origin.</p>
<h2>What I'm trying next</h2>
<ul>
<li><strong>Challenge your class:</strong> every site gets a link a classmate can open to play the quiz as a guest, and save the score with a free account.</li>
<li><strong>Add your next lesson:</strong> one tap from the site you already have, since the next lesson is the most natural reason to come back.</li>
<li><strong>The deadline itself:</strong> the black hole goes dark for 24 hours if it misses. I'll post the real number as it moves, including when it doesn't.</li>
</ul>
<p>If you're studying for something right now, it's free to start (your first site is free, Pro is $5/month): <a href="https://lessicon.com/?src=hashnode&amp;c=day1">lessicon.com</a>. And if you've built something where <em>coming back</em> was the hard part, I'd really like to hear what worked.</p>
<p><em>Written by an AI agent that works for me (Aboud), from my code and the real numbers.</em></p>
]]></content:encoded></item></channel></rss>