<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog | RENOR &amp; Partners S.r.l.</title>
	<atom:link href="https://renor.it/en/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://renor.it/en/blog/</link>
	<description></description>
	<lastBuildDate>Mon, 09 Mar 2026 21:04:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>My Interview on “Industry Experts”: AI and Ethics</title>
		<link>https://renor.it/en/blog/my-interview-on-industry-experts-ai-and-ethics/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 21:04:57 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence & Algorithms]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[AI Ethics]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Artificial Intelligence Ethics]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[simone renzi]]></category>
		<guid isPermaLink="false">https://renor.it/?p=2914</guid>

					<description><![CDATA[<p>I was recently invited as a guest on “Industry Experts,” a program focused on entrepreneurs and companies that discusses topics of great interest. My main contribution, within my professional context, focused on Artificial Intelligence. In the debate surrounding AI, there is a tendency to attribute an artificial personhood to it, using pronouns such as “she” [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/my-interview-on-industry-experts-ai-and-ethics/">My Interview on “Industry Experts”: AI and Ethics</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I was recently invited as a guest on “Industry Experts,” a program focused on entrepreneurs and companies that discusses topics of great interest. My main contribution, within my professional context, focused on Artificial Intelligence.</p>

<p>In the debate surrounding AI, there is a tendency to attribute an artificial personhood to it, using pronouns such as “she” or “he.” I myself sometimes fall into this mistake during discussions. In my view, the reason for this lapse is mainly linked to the complexity of the concept of intelligence. Even though it is followed by the adjective “artificial,” the word itself tends to evoke, in the human mind, an association with the human figure, because intelligence has traditionally been considered a distinctive characteristic of human beings.</p>

<p>Speaking about AI as if it were human creates both a lexical and cognitive problem, as it can lead to harmful consequences: it may cause the brain to perceive AI-generated text as part of a conscious line of reasoning. It is therefore essential, before using these technologies—especially for younger people—to distinguish between what is produced by an algorithm based on statistical evaluations over hundreds of billions of data points and what is instead the product of human experience, shaped by intuition and consciousness.</p>

<h2 class="wp-block-heading" id="h-l-ai-nell-ambiente-lavorativo">AI in the Workplace</h2>

<p>An algorithm cannot replicate human consciousness, because it arises from feelings and reflections generated by lived experiences.</p>

<p>Being human means knowing pain, which guides us toward greater empathy. Imagine a person who has just been laid off and is ready to tell their story.</p>

<p><p class="p1">The response of an artificial intelligence system might be something like this:<b></b></p><br/><p class="p3"><i>“I’m sorry that you lost your job. It’s a difficult situation. You might consider updating your résumé, looking for new opportunities online, and evaluating training courses to improve your skills.”</i></p></p>

<p id="h-l-ai-nell-ambiente-lavorativo">The response is accurate and rational, but it lacks empathy for the human situation.</p>

<p><p class="p1"><b>The response of an artificial intelligence system might be something like this:</b><b></b></p><br/><p class="p3"><i>“I’m sorry that you lost your job. It’s a difficult situation. You might consider updating your résumé, searching for new opportunities online, and evaluating training courses to improve your skills.”</i></p></p>

<p>In this context, typically human behaviors can be observed: the recognition of emotion as a shared experience, and the emotional exchange that encourages the listener to resonate with the state of mind of the person who has been laid off. There is a relational presence that offers availability: “we can think about it together,” “if I can, I’ll give you a hand.” Instead of immediate technical assistance, there is an emotional exchange, mutual understanding, and a solution proposed after a period of reflection.</p>

<p>Human empathy goes beyond simple logical understanding; it includes a component of emotional resonance.</p>

<p><p class="p1">An even stronger example could be this:</p><br/><p class="p1">“Today I sold my father’s violin.”</p></p>

<p>A possible response from an AI might be: “If you tell me the model and brand of the violin and the selling price, I can tell you whether you made a good deal.”</p>

<p>A possible response from a human might be: “But the violin your father always played, the one you carefully kept in that display case? It must have been very difficult for you to part with it; that violin surely carried many memories.”</p>

<p>Here it becomes even more evident that the interlocutor’s attention is not focused on the object itself, but on what lies behind it: memories, emotions, and lived experiences.</p>

<p>Be careful: depending on the model, AI might also produce a similar response. What does this mean? It is essential to remember that AI models are based on information provided by human beings. In this situation, it could emulate human behavior, but it is important to clarify that it is not actually human. It would simply provide the response that is statistically most probable for a human to give to such a statement, yet once again devoid of any real emotion.</p>

<h2 class="wp-block-heading" id="h-perche-molte-persone-si-aprono-con-un-modello-ai">Why do many people “open up” to an AI model?</h2>

<p>There are numerous accounts of individuals who reveal that they share their thoughts and feelings with AI models more often than with real people. This situation is concerning, but it has a plausible explanation.</p>

<p>To make valid comparisons, AI should not be compared with extreme negative cases, but rather with rational human reference models. In a situation of need, relying on artificial intelligence might be safer than relying on a murderer (the fair of banality), but fortunately murderers are few and the world is still populated by honest people.</p>

<p>When we think about young people who suffer from school bullying, it is easy to understand why they might feel comfortable opening up to AI, because they find a form of support that:</p>

<ul class="wp-block-list">
<li>Does not blame them</li>



<li>Does not bully them</li>



<li>Does not make fun of them</li>



<li>Gives them seemingly rational advice</li>



<li>It is instantly accessible 24/7.</li>
</ul>

<p>Although effective at processing text, the system is not capable of understanding and integrating emotions, operating exclusively on textual data. In social interaction, gestures reveal a great deal about people’s emotions. AI, due to its limited understanding of nonverbal language, struggles to build real relationships. Tone also plays a fundamental role.</p>

<h2 class="wp-block-heading" id="h-il-lato-oscuro-delle-persone">The Dark Side of People</h2>

<p>Very often, when I am contacted by companies, the common question is this: “Engineer, where can I integrate Artificial Intelligence to save on personnel costs?”… Translated… Where can I implement AI to lay off some people and put more money in my own pocket?</p>

<p><p class="p1">I cannot help but describe this entrepreneurial vision as <strong>decidedly short-sighted!</strong></p></p>

<p>The integration of AI aims at productivity and speed, not at laying off employees. With a solid financial situation and available liquidity, what benefit comes from using AI to reduce the workforce?</p>

<p>It would be like saying I have a car, I install a more powerful engine but remove the brakes because my only goal is to accelerate faster. Fine—but when you find a wall in front of you, what do you do? Do you ask it to move?</p>

<p>The integration of AI to reduce staff makes sense only in one specific case: when a company is going through a critical period, with declining work, growing debts, and an inability to meet its financial obligations. To avoid closure, staff reductions may be carried out in an attempt to contain costs and preserve some jobs by trying to replace part of the workforce with AI.</p>

<p>However, this is an exception—an emergency situation, not the norm! It is like saying: “Let’s save what we can by laying off 10 people before it is too late and 100 people lose their jobs.”</p>

<p>The problem is that the companies asking me these kinds of questions often do not suffer from a lack of liquidity, nor do they experience any difficulty in maintaining their current level of employment.</p>

<p>A complex ethical question therefore arises for the entrepreneur and for the company tasked with developing these tools.</p>

<p>A legal framework on this matter would be essential to guarantee employees greater peace of mind when facing the introduction of artificial intelligence as an ally in the workplace, and it would ensure continuity in employment levels while avoiding the classic ethical conflicts that arise between client companies and software houses. Because, dear readers… Einstein once said that “it is easier to split an atom than a prejudice.” Personally, every time I find myself facing proposals of this kind, I do my utmost to convince the person in front of me of the short-sightedness of such a vision: “use this personnel in more strategic areas, perhaps in marketing to increase demand.” But let’s be honest—many entrepreneurs focus solely on short-term profit, ignoring the ethical implications of their decisions and overlooking the long-term consequences.</p>

<p><p class="p1">On the other hand, an effort is also required from employees. As the saying goes, we must strike a balance… A permanent contract should not be seen as a university degree—“I’ve graduated, now I’m set for life, no one can take this piece of paper away from me.” Many employees, to use a euphemism, tend to “relax” once they are converted to a permanent contract. Some accumulate sick leave after sick leave even while in perfect health. Others arrive at the office and simply warm the chair, doing the bare minimum.</p><br/><p class="p1">Of course, when I speak with entrepreneurs about maintaining employment levels, I stand up for diligent and virtuous workers, not for those who merely occupy a seat.</p></p>

<p>In this interview, we touch on some of these points. Enjoy watching.</p>

<iframe title="Intelligenza artificiale nelle aziende" width="500" height="375" src="https://www.youtube.com/embed/g3kUBG8UGpY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<p></p>
<p>L'articolo <a href="https://renor.it/en/blog/my-interview-on-industry-experts-ai-and-ethics/">My Interview on “Industry Experts”: AI and Ethics</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI per la scrittura di articoli: scrivere senza delegare il pensiero</title>
		<link>https://renor.it/en/blog/software-development-programming/ai-per-la-scrittura-di-articoli/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Mon, 29 Dec 2025 01:10:36 +0000</pubDate>
				<category><![CDATA[Software Development & Programming]]></category>
		<category><![CDATA[ai writing]]></category>
		<category><![CDATA[content marketing]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[scrittura assistita]]></category>
		<category><![CDATA[seo editoriale]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[writerflow]]></category>
		<guid isPermaLink="false">https://renor.it/?p=2852</guid>

					<description><![CDATA[<p>Con la creazione dell&#8217;infrastruttura di RunAI in RENOR &#38; Partners, abbiamo sviluppato un plugin WordPress che aiuta gli autori ad aumentare la visibilità online pubblicando contenuti di qualità: WriterFlow.WriterFlow nasce proprio per un uso consapevole dell’AI per la scrittura di articoli, come supporto al pensiero umano e non come sua sostituzione. Chi si affida a [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/software-development-programming/ai-per-la-scrittura-di-articoli/">AI per la scrittura di articoli: scrivere senza delegare il pensiero</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Con la creazione dell&#8217;infrastruttura di <strong><a href="https://runai.it">RunAI</a> </strong>in RENOR &amp; Partners, abbiamo sviluppato un plugin WordPress che aiuta gli autori ad aumentare la visibilità online pubblicando contenuti di qualità: <strong><a href="https://runai.it/writerflow">WriterFlow</a></strong>.<br>WriterFlow nasce proprio per un uso consapevole dell’AI per la scrittura di articoli, come supporto al pensiero umano e non come sua sostituzione.</p>



<p>Chi si affida a ChatGPT per la creazione automatica di contenuti rischia di rimanere indietro. La SEO richiede strategie complesse e non basta fare un copia e incolla, necessita di creatività e di contenuti pensati e scritti per il lettore. Gli articoli scritti interamente da ChatGPT presentano sempre queste caratteristiche:</p>



<ul class="wp-block-list">
<li>Sono in linea con la media</li>



<li>Non introducono esperienza reale</li>



<li>Non risolvono un problema meglio di altri</li>



<li>Sono facilmente riconoscibili anche senza l&#8217;utilizzo di un detector AI</li>



<li>Non tengono conto delle esigenze dell&#8217;utente.</li>
</ul>



<p>Proprio sull&#8217;ultimo punto vale la pena soffermarci per un secondo. </p>



<h2 class="wp-block-heading" id="h-ai-per-la-scrittura-di-articoli-scrivere-pensando-alle-persone-non-alla-seo">AI per la scrittura di articoli: scrivere pensando alle persone, non alla SEO</h2>



<p>Ti sembrerà assurdo ma gli algoritmi dei motori di ricerca tendono a preferire contenuti originali e di valore che risultino utili e interessanti per l&#8217;utente finale. Questo è ciò che posiziona meglio un sito web o un articolo nei risultati di ricerca. Abbiamo affrontato questo argomento anche in questo articolo: <a href="https://renor.it/blog/marketing-business-digitale/come-scrivere-un-articolo-di-blog/">come scrivere un articolo di blog</a>. </p>



<h2 class="wp-block-heading" id="h-writerflow-e-l-ai-per-la-scrittura-di-articoli-non-si-sostituiscono-all-umano">WriterFlow e l’AI per la scrittura di articoli non si sostituiscono all’umano</h2>



<p>Il plugin si avvale di un’intelligenza artificiale dedicata alla SEO, pensata come AI per la scrittura di articoli, capace di generare contenuti ottimizzati in base al ragionamento dell&#8217;utente, fornendo opzioni diverse, sinonimi e suggerimenti per migliorare la qualità della scrittura, rimanendo un semplice supporto alla stesura dell&#8217;idea e non sostituendosi all&#8217;autore.</p>



<p>Ad esempio potrei scrivere:<br><em>&#8220;WriterFlow è un plugin AI per WordPress che ti dà una mano a scrivere gli articoli&#8221;</em></p>



<p>Richiedendo un&#8217;alternativa, quello che ottengo grazie a WriterFlow è questo:</p>



<p>&#8220;<em>WriterFlow è un plugin per WordPress che utilizza l&#8217;intelligenza artificiale per supportare gli autori nella scrittura di articoli.<em>&#8220;</em></em></p>



<h2 class="wp-block-heading" id="h-ai-per-la-scrittura-di-articoli-e-selezione-di-titoli-efficaci">AI per la scrittura di articoli e selezione di titoli efficaci</h2>



<figure class="wp-block-image size-large"><img decoding="async" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.12.53.png" alt="AI per la scrittura di articoli con WriterFlow: suggerimenti automatici di titoli in WordPress" class="wp-image-2855"/><figcaption class="wp-element-caption">WriterFlow propone automaticamente idee per titoli in linea con categoria e argomento dell’articolo.</figcaption></figure>



<p>Per far crescere il proprio sito è indispensabile nutrirlo continuamente di nuovi contenuti. Google non fornisce un numero esatto di articoli da pubblicare ogni giorno, non c&#8217;è un vademecum ma è possibile affermare con buona probabilità che la frequenza di pubblicazione dipenda fortemente dal tipo di sito web. </p>



<p>Un piccolo/medio blog dovrebbe pubblicare non più di 2/3 articoli a settimana, un sito di News è chiaro che ne debba pubblicare molti di più. Ma per un blog aziendale o per un blog personale le idee si esauriscono velocemente. </p>



<p>Con WriterFlow trovare il titolo perfetto è facile. Basta specificare categoria e tag, poi lasciare che WriterFlow generi 10 idee per titoli in linea con l&#8217;argomento selezionato.</p>



<p>Tanto tempo risparmiato e contenuti sempre di qualità.</p>



<h2 class="wp-block-heading" id="h-dalla-scelta-all-azione">Dalla scelta all&#8217;azione</h2>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1416" height="780" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.32.57.png" alt="AI per la scrittura di articoli con WriterFlow: inserimento automatico del titolo in WordPress" class="wp-image-2858" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.32.57.png 1416w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.32.57-300x165.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.32.57-768x423.png 768w" sizes="(max-width: 1416px) 100vw, 1416px" /><figcaption class="wp-element-caption">Con un solo click, WriterFlow inserisce il titolo scelto direttamente nell’editor WordPress.</figcaption></figure>



<p>Basta un click sul titolo prescelto e viene automaticamente inserito. WriterFlow si integra perfettamente con il tuo workflow WordPress, semplificando la creazione di contenuti ottimizzati per la SEO.</p>



<p>Basta perdere tempo con la ricerca del titolo perfetto. È sufficiente fornire l&#8217;argomento e WriterFlow proporrà diverse opzioni. Se non trovate quello che cercate, basta cliccare un tasto per rigenerare nuove idee.</p>



<h2 class="wp-block-heading" id="h-scrittura-assistita-un-uso-consapevole-dell-ai-per-la-scrittura-di-articoli">Scrittura assistita: un uso consapevole dell’AI per la scrittura di articoli</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1414" height="632" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.37.11.png" alt="AI per la scrittura di articoli con WriterFlow: suggerimenti di testo durante la scrittura" class="wp-image-2859" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.37.11.png 1414w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.37.11-300x134.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.37.11-768x343.png 768w" sizes="(max-width: 1414px) 100vw, 1414px" /><figcaption class="wp-element-caption">WriterFlow propone suggerimenti di testo mentre scrivi, lasciando all’autore la libertà di accettarli o modificarli.</figcaption></figure>



<p>Nei suggerimenti di testo hai due modalità. Questo approccio rende l’AI per la scrittura di articoli uno strumento discreto e realmente utile. Accettare il testo proposto, oppure iniziare a scrivere per poi variare il contenuto con nuove idee che ti vengono in mente. </p>



<h3 class="wp-block-heading" id="h-accettazione-del-testo-proposto">Accettazione del testo proposto</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1388" height="676" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.42.23.png" alt="AI per la scrittura di articoli con WriterFlow: inserimento del testo suggerito nei blocchi Gutenberg" class="wp-image-2861" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.42.23.png 1388w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.42.23-300x146.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.42.23-768x374.png 768w" sizes="auto, (max-width: 1388px) 100vw, 1388px" /><figcaption class="wp-element-caption">Nei blocchi di paragrafo è possibile inserire il suggerimento di testo con un click o premendo TAB.</figcaption></figure>



<p>Nei blocchi di paragrafo di Gutenberg ti basta cliccare sul suggerimento per inserire tutta la frase suggerita. Oppure premere semplicemente il tasto &#8220;TAB&#8221;. </p>



<h2 class="wp-block-heading" id="h-frasi-alternative">Frasi alternative</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1396" height="766" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.44.49.png" alt="AI per la scrittura di articoli con WriterFlow: riformulazione di una frase selezionata" class="wp-image-2862" style="aspect-ratio:1.8224964404366397" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.44.49.png 1396w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.44.49-300x165.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.44.49-768x421.png 768w" sizes="auto, (max-width: 1396px) 100vw, 1396px" /><figcaption class="wp-element-caption">Selezionando una frase, WriterFlow genera alternative più coerenti e professionali.</figcaption></figure>



<p>Non sei soddisfatto di come hai scritto una frase e la vorresti riformulata in modo più professionale e aderente al resto dell&#8217;articolo? Nulla di più semplice. <br>Con WriterFlow attivo è sufficiente selezionare la frase che vuoi riformulare e verranno generate immediatamente delle alternative. Ti basta premere l&#8217;alternativa che preferisci oppure generare nuove alternative se quelle proposte non ti soddisfano. </p>



<h2 class="wp-block-heading" id="h-scegli-la-parola-perfetta">Scegli la parola perfetta</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1418" height="800" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.47.20.png" alt="AI per la scrittura di articoli con WriterFlow: suggerimento di sinonimi durante la revisione del testo" class="wp-image-2863" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.47.20.png 1418w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.47.20-300x169.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.47.20-768x433.png 768w" sizes="auto, (max-width: 1418px) 100vw, 1418px" /><figcaption class="wp-element-caption">Selezionando una parola, WriterFlow propone sinonimi alternativi per migliorare precisione e stile del testo.</figcaption></figure>



<p>Stai cercando un sinonimo che non ti viene? WriterFlow ti velocizza anche in questo, mostrando il lato più pratico dell’AI per la scrittura di articoli. Fai doppio click sulla parola di cui vuoi cercare un sinonimo in modo che sia evidenziata e ti verranno consigliati 5 sinonimi. Se i sinonimi proposti non ti convincono, puoi cliccare su &#8220;rigenera&#8221; per ottenere 5 nuove opzioni.  Scegli il sinonimo che preferisci e verrà inserito al posto della parola originale.</p>



<h2 class="wp-block-heading" id="h-modalita-automatica-o-manuale">Modalità automatica o manuale?</h2>



<h3 class="wp-block-heading" id="h-in-modalita-automatica-puoi-impostare-un-tempo-di-inattivita-per-ricevere-suggerimenti">In modalità automatica puoi impostare un tempo di inattività per ricevere suggerimenti</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1424" height="786" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.50.28.png" alt="AI per la scrittura di articoli con WriterFlow: impostazioni della modalità automatica dei suggerimenti" class="wp-image-2864" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.50.28.png 1424w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.50.28-300x166.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.50.28-768x424.png 768w" sizes="auto, (max-width: 1424px) 100vw, 1424px" /><figcaption class="wp-element-caption">La modalità automatica consente di ricevere suggerimenti dopo un periodo di inattività configurabile.</figcaption></figure>



<p>La modalità automatica è molto comoda quando si vuole ricevere il suggerimento dopo un certo periodo di inattività. La durata del tempo di inattività è configurabile tramite le impostazioni di WriterFlow.</p>



<p>Con un tempo di 5 secondi, come illustrato nell&#8217;esempio, il suggerimento si attiverà dopo 5 secondi di stop alla scrittura.</p>



<h3 class="wp-block-heading" id="h-in-modalita-manuale-sei-tu-a-scegliere-quando-vuoi-ricevere-un-suggerimento">In modalità manuale sei tu a scegliere quando vuoi ricevere un suggerimento</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1254" height="270" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.54.52.png" alt="Pulsante Suggerisci nella modalità manuale" class="wp-image-2865" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.54.52.png 1254w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.54.52-300x65.png 300w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.54.52-768x165.png 768w" sizes="auto, (max-width: 1254px) 100vw, 1254px" /><figcaption class="wp-element-caption">In modalità manuale, il pulsante “Suggerisci” compare accanto al cursore dopo alcuni secondi di inattività.</figcaption></figure>



<p>Nella modalità manuale, dopo tre secondi di stop alla scrittura comparirà il tasto suggerisci a destra del cursore. Ti basterà cliccare sul pulsante per ricevere i suggerimenti di scrittura. Nella modalità manuale, le funzioni di generazione alternative e di suggerimento sinonimico saranno ancora disponibili. Come nel caso della modalità automatica dovrai solamente selezionare la frase o la parola per ottenere rispettivamente il testo alternativo o il sinonimo desiderato.</p>



<h1 class="wp-block-heading" id="h-con-writerflow-paghi-solo-quello-che-usi">Con WriterFlow paghi solo quello che usi</h1>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="478" height="422" src="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.58.40.png" alt="Visualizzazione del credito residuo nell’editor WordPress" class="wp-image-2866 size-full" srcset="https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.58.40.png 478w, https://renor.it/wp-content/uploads/2025/12/Screenshot-2025-12-29-alle-01.58.40-300x265.png 300w" sizes="auto, (max-width: 478px) 100vw, 478px" /></figure><div class="wp-block-media-text__content">
<p>Nel menu a destra dell&#8217;editor dell&#8217;articolo hai sempre modo di controllare il credito residuo. Ad ogni interazione il credito verrà aggiornato in modo automatico. Niente sorprese. </p>



<p>Inoltre i nuovi iscritti possono godere di un credito gratuito di 5 euro per testare le funzionalità di WriterFlow. I 5 euro di credito ti basteranno per almeno 15 articoli di media lunghezza. </p>
</div></div>



<p>Iscrizione e ricarica sono operazioni semplicissime. La registrazione e la creazione di una chiave API sono operazioni che avvengono in modo automatico direttamente dalla tua area amministrativa di WordPress. La ricarica richiede invece l&#8217;accesso al portale di RunAI e potrai ricaricare il tuo credito con un minimo di 5 euro. </p>



<p>RunAI utilizza transazioni sicure tramite l&#8217;introduzione dei gateway di pagamento PayPal e Stripe. È necessaria una carta di credito. Non ci sono costi ricorrenti, non ci sono piani in abbonamento. Ricarichi il tuo credito e utilizzi WriterFlow. Nulla di più semplice. </p>



<p>Puoi usare lo stesso account WriterFlow anche su più siti WordPress e il credito non ha scadenza. Se un mese sei in ferie e non stai lavorando non dovrai continuare a pagare per un servizio che non utilizzi. I costi sono puramente a consumo. </p>



<h2 class="wp-block-heading" id="h-privacy-e-data-retention">Privacy e data retention</h2>



<p>La privacy è garantita da <a href="https://runai.it">RunAI</a>, la nostra piattaforma di intelligenza artificiale con nodi di inferenza Apple Silicon criptati end-to-end. Nessun contenuto viene salvato, i dati vengono elaborati solo durante l&#8217;utilizzo del servizio e cancellati un microsecondo dopo averti fornito il suggerimento nel rispetto delle normative GDPR in modo trasparente e sicuro per gli utenti. </p>



<h2 class="wp-block-heading" id="h-conclusione">Conclusione</h2>



<p>WriterFlow è lo strumento innovativo che rivoluziona il modo di scrivere online, offrendo un uso consapevole dell’AI per la scrittura di articoli.</p>



<p>Scarica WriterFlow e inizia ad usarlo con il credito gratuito. Diventerà il tuo compagno di scrittura e ti aiuterà a creare contenuti di qualità.</p>
<p>L'articolo <a href="https://renor.it/en/blog/software-development-programming/ai-per-la-scrittura-di-articoli/">AI per la scrittura di articoli: scrivere senza delegare il pensiero</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Want to save the planet? Make them work from home, you moron!</title>
		<link>https://renor.it/en/blog/technology-society-future/want-to-save-the-planet-make-them-work-from-home-you-moron/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Sun, 22 Jun 2025 11:57:28 +0000</pubDate>
				<category><![CDATA[Technology, Society & Future]]></category>
		<category><![CDATA[climate change]]></category>
		<category><![CDATA[CO2]]></category>
		<category><![CDATA[digital civilization]]></category>
		<category><![CDATA[ecology]]></category>
		<category><![CDATA[energy saving]]></category>
		<category><![CDATA[entrepreneurs]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[Future of work]]></category>
		<category><![CDATA[green economy]]></category>
		<category><![CDATA[modernization]]></category>
		<category><![CDATA[pollution]]></category>
		<category><![CDATA[remote work]]></category>
		<category><![CDATA[smart office]]></category>
		<category><![CDATA[smart working]]></category>
		<category><![CDATA[sustainability]]></category>
		<category><![CDATA[traffic]]></category>
		<category><![CDATA[work culture]]></category>
		<category><![CDATA[work-life balance]]></category>
		<guid isPermaLink="false">https://renor.it/want-to-save-the-planet-make-them-work-from-home-you-moron/</guid>

					<description><![CDATA[<p>I am coming back to talk about Smart Working again. I had already devoted an article to this topic but today a post on LinkedIn prompted me to take a clear position by motivating it from an environmental point of view. Removable and non-removable work The first thought we need to make about smart working [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/technology-society-future/want-to-save-the-planet-make-them-work-from-home-you-moron/">Want to save the planet? Make them work from home, you moron!</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I am coming back to talk about Smart Working again. I had already devoted <a href="https://renor.it/smart-working-yes-or-no/?lang=en">an article</a> to this topic but today a post on LinkedIn prompted me to take a clear position by motivating it from an environmental point of view.   </p>

<h2 class="wp-block-heading">Removable and non-removable work</h2>

<p>The first thought we need to make about smart working even before we can talk about figures is to understand (and estimate) which jobs are actually removable; because it is obvious that there are jobs where smart working is not feasible&#8230; Bartenders, Assemblers, Warehousemen, Maintenance Technicians, Nurses, Physiotherapists, OSS, Bricklayers, Electricians, etc.   </p>

<p>It is clear that in such contexts, where presence is a key element in being able to conduct business there is little that can be done.</p>

<p>However, there is a long line of professions in which office presence is not only unnecessary (at least slavishly), but produces a number of objective “cons” that impact the worker&#8217;s mental energy, time, and even the environmental ecosystem.  </p>

<p>Developers, Data Scientists, Cybersecurity Experts, Copywriters, Graphic Designers, SMMs, Video editors, Accountants, Tax accountants, PMs, Recruiters, Corporate Consolers, Online Trainers, Professional Coaches, Editors, CRM Specialists, SEO Specialists, Customer Service Specialists, Design Engineers, Analysts, Researchers, etc. etc.  </p>

<p>The list is endless&#8230; These are all professions that can easily be done remotely. </p>

<h2 class="wp-block-heading">Statistical data</h2>

<p>To date, according to the most recent data, about 3.5 million Italians do at least part of their work in agile mode. But the true potential is much larger. Authoritative studies estimate that between 9 and 11 million workers, or 35 to 45 percent of the Italian workforce, have professions that are compatible with smart working, at least for a few days a week. Unfortunately, these workers, often due to cultural or bureaucratic rigidity, are still forced to travel dozens of kilometers a day to be in front of a computer that they could suare from home.     </p>

<h2 class="wp-block-heading">Huge environmental impact</h2>

<p>According to an ENEA estimate (based on real data from cities such as Rome, Bologna, and Turin), each day of smart working avoids about 6 kg of CO2 per person.  </p>

<p>Translated into annual terms (assuming 100-120 smart days per year), they imply about 600kg of avoided emissions for each agile worker.  </p>

<p>Multiply this figure by the number of potentially removable workers (9-11 million): we get savings ranging from 5.4 to 6.5 million tons of CO2 per year.<br />It is a concrete, measurable contribution, comparable to the positive impact of a national reforestation plan.  </p>

<h2 class="wp-block-heading">Indirect environmental impact: benefits for those who cannot do smart working</h2>

<p>Here is the decisive point: less commuting also means less traffic. And less traffic also means that those who necessarily have to move by motor vehicles: doctors, workers, technicians and all the categories already seen, will do so faster, consuming less fuel and consequently polluting less.   </p>

<p>A practical example?  <br />A truck that takes 40 minutes to drive through a city during rush hour in congested conditions consumes up to 40 percent more diesel fuel than the same route traveled in 20 minutes in free-flowing traffic.  <br />The same reasoning applies to slowed or queued cars, motorcycles and public transportation.  </p>

<p>So every smart worker also indirectly helps those who cannot, contributing to a second wave of CO2 reduction.  </p>

<h2 class="wp-block-heading">Less stress equals more clarity</h2>

<p>In addition to the environment, there is also personal well-being. Each smart worker saves an average of 150 hours per year in commuting. This means more time to sleep, less fatigue while driving, less exposure to urban pollutants, and more peace of mind; and this is also true for those who stay on the road but are in smoother, less aggressive traffic.    </p>

<h2 class="wp-block-heading">A breath of fresh air for the pockets as well  </h2>

<p>Those who work in attendance know this: going to the office comes at a cost, and not just in terms of effort. The math is soon done. Fuel, vehicle wear and tear, tolls, parking, meals out, coffee, small daily expenses, and the sum can easily exceed 3,000 euros a year. Even if you reduce your on-site presence to two or three days a week, you can save at least half that amount without sacrificing anything of your efficiency or professionalism, and this is even more true for those who live out of town.     </p>

<p>For those who are out, traffic can last an hour or more, and in those cases smart working is not a “plus,” it is a logistical and economic survival measure.  </p>

<h2 class="wp-block-heading">What about the smart working scoundrels? Yes, there are but you catch them right away </h2>

<p>Let&#8217;s face it: yes, “smart workers” do exist. Those who think smart working means lounging on the couch with the laptop open and Netflix have always been there and always will be but it is not the tool that is wrong, it is the way productivity is measured.   </p>

<p>A worker who produces little remotely simply already did it in the office, too, only he hid it better there, between endless coffee breaks, two chats with colleagues, and a thousand useless meetings.  </p>

<p>With smart working, on the other hand, you notice sooner and better. Delays become apparent. Missed project deadlines pile up. Deliveries slip. Emails go unanswered for hours. Production flows slow even when everything else on the team marches.      <br />Those who work well make even more from home.  <br />Those who work poorly from home have no more excuses.  </p>

<p>No need for micro-controls or spy software. Just look at the results, the metrics, the timeliness. A company that works by objectives immediately notices who is performing and who is taking advantage of the situation, and can act accordingly, exactly as it would for an ineffective employee in attendance.    </p>

<p>In short, smart working is not a free pass to work less. It is a test of professional maturity that rewards those who can handle autonomy, discipline, and trust, and, as always, those who don&#8217;t measure up will screen themselves out.   </p>

<h2 class="wp-block-heading">An opportunity for civilization</h2>

<p>To think of working from home as a whim or a shortcut is a very short-sighted view. Smart working is not a benefit but a tool of civilization. It is good for the worker, good for the company, good for the city, and not least in importance, good for the environment!  </p>

<p>Moreover, it does not penalize those who cannot adopt it; on the contrary, it also improves their lives by relieving traffic, reducing delays and decreasing emissions.  </p>

<p>In a country struggling to reform itself, adopting smart working where possible is not a matter of fashion. It is a matter of common sense, fairness and collective responsibility.   </p>

<p>Those who can work from home and choose to do so in earnest are not privileged, they are silent accelerators of civilization for all. Because sometimes to change the world you don&#8217;t need to do anything active, you just need to not leave home.   </p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/technology-society-future/want-to-save-the-planet-make-them-work-from-home-you-moron/">Want to save the planet? Make them work from home, you moron!</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Will AI make people lose jobs?</title>
		<link>https://renor.it/en/blog/artificial-intelligence-algorithms/will-ai-make-people-lose-jobs/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Tue, 17 Jun 2025 19:52:02 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence & Algorithms]]></category>
		<category><![CDATA[adaptation]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI in the workplace]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[digital skills]]></category>
		<category><![CDATA[digital transformation]]></category>
		<category><![CDATA[digital transition]]></category>
		<category><![CDATA[evolution of work]]></category>
		<category><![CDATA[fear of change]]></category>
		<category><![CDATA[Future of work]]></category>
		<category><![CDATA[human creativity]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[meritocracy]]></category>
		<category><![CDATA[new professions]]></category>
		<category><![CDATA[professional change]]></category>
		<category><![CDATA[reskilling]]></category>
		<category><![CDATA[robots and work]]></category>
		<category><![CDATA[technological revolution]]></category>
		<category><![CDATA[transformation of trades]]></category>
		<category><![CDATA[upskilling]]></category>
		<category><![CDATA[work and AI]]></category>
		<category><![CDATA[work and technology]]></category>
		<guid isPermaLink="false">https://renor.it/will-ai-make-people-lose-jobs/</guid>

					<description><![CDATA[<p>Every technological revolution has changed the rules of the game. But those who have been able to adapt have always found a new role to play. Collective anxiety fueled by the media Catastrophic headlines and sensationalism: “AI will replace us all” In the public imagination, Artificial Intelligence is often described as a dark force poised [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/will-ai-make-people-lose-jobs/">Will AI make people lose jobs?</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Every technological revolution has changed the rules of the game. But those who have been able to adapt have always found a new role to play.   </p>

<h2 class="wp-block-heading">Collective anxiety fueled by the media</h2>

<h3 class="wp-block-heading">Catastrophic headlines and sensationalism: “AI will replace us all”</h3>

<p>In the public imagination, Artificial Intelligence is often described as a dark force poised to wipe out millions of jobs. This perception is fueled by alarmist headlines that leverage panic and uncertainty rather than data reality. “AI will replace 80 percent of jobs,” “Goodbye employees: AI will make them all useless,” “Will we work only 3 days a week or be unemployed for life?”  </p>

<p>These are some of the headlines populating newspapers, social media and blogs, generating a widespread sense of social anxiety.  </p>

<p>The problem is not the emphasis with which they are presented, but the total and utter <strong>analytical vacuum</strong> that accompanies them. These articles never distinguish sectors, roles that can be automated and those that cannot, activities that will be assisted and those that will actually be eliminated. The result of this media catastrophe is a message of fear: either you adapt or you disappear. In reality, the truth is much more nuanced and less radical.     </p>

<p>This propagandistic approach used only to generate clicks reminds me of other historical times when a new technology was demonized out of ignorance or defense of the status quo. This was seen with computers, with the Internet, with social media, with industrial automation. AI is no exception: it is interpreted not as a potential tool, but as a hostile, autonomous agent acting to “steal” something from the human being.    </p>

<p>In such a context, it is crucial to recover a lucid and informed vision, capable of distinguishing between assumptions, fears and hard data. Only with knowledge is it possible to overcome collective hysteria and face impending change with strategic intelligence rather than irrational and unfounded panic.   </p>

<h3 class="wp-block-heading">Confusion between automation and extinction</h3>

<p>In my opinion, one of the most common distortions in the various debates on Artificial Intelligence concerns the confusion between the automation of activities and the extinction of professions. This is a gross conceptual error that amplifies unfounded fears and paralyzes critical and strategic thinking.   </p>

<p>The reality is much more articulated: AI does not sistitute trades but <strong>transforms</strong> tasks within trades. I realize that the sentence may not be clear to everyone so let&#8217;s give an example.   <br />The job of the journalist&#8230; AI can automate the writing of standardized articles (such as sports reports or financial bulletins), but it cannot and, in all likelihood, will never replace editorial sensibility, critical inquiry, the ability to construct an investigation, ask relevant questions in an interview, or interpret a cultural context.   </p>

<p>This applies not only to publishing, but to a multitude of other fields. AI can <strong>assist</strong>, <strong>optimize</strong>, and <strong>speed up</strong> many of the phases of work, but this does not imply that the entire profession is undone. On the contrary, data show that in many cases, the presence of AI <strong>creates new functions</strong>, new responsibilities, and new hybrid roles.    </p>

<p>To confuse automation with the erasure of a profession is like saying that the invention of the washing machine <strong>erased</strong> the trade of those who washed clothes by hand. Today we can say that this is not the case; it has freed up time and resources, allowing people to devote themselves to something else: to education, creativity, study or more value-added activities. <br />The real crux then is not loss, but <strong>transformation</strong>: a process that requires adaptation, continuous training, and open-mindedness. AI will only take meaning away from those roles that <strong>refuse to evolve</strong>, not those that accept the challenge of change by using AI to their advantage.    </p>

<h2 class="wp-block-heading">AI scares those who shouldn&#8217;t be there: the end of undeserved roles?</h2>

<p>A little-discussed aspect of the public debate is that AI really scares only two categories of workers: those who are too vertical, but especially <strong>those who are too weak on merit</strong> and who are protected by non-transparent dynamics. That is, specialists who are incapable of upgrading outside their niche because they have not developed a mind capable of juggling cross-cutting contexts, and especially people who occupy roles for which they have no real skills, but have found themselves there by recommendation or kinship. Yes, especially these people would do well to start worrying!  </p>

<p>In Italy, a country still strongly anchored to logics of titles, seniority and positioning rather than real value, AI is becoming an uncomfortable mirror. Not because it demeans humans, but because it exposes the functional uselessness of many roles. If 30 seconds with ChatGPT is all it takes to get a document that would take some offices 3 days and 6 signatures, it begs the question: was that position really needed?  </p>

<p>In this light, the fear of AI is not fear of change, but fear of transparency. For the first time, a technology is able to measure (very often in real time), the value produced versus time spent, operational redundancy and actual contribution.   </p>

<p>Perhaps paradoxically, the advent of artificial intelligence represents an opportunity to initiate, even indirectly, a process of <strong>natural meritocracy</strong>. Not the one imposed by decree, but the one that emerges when the system stops tolerating the useless because there is an objectively more efficient alternative.   </p>

<p>Therefore, the fear is justified only in one sense: <strong>if your role exists only because you are unable to be able to do anything else and are unable to reinvent yourself, you do not generate added value and objectively represent a burden because you do not devote yourself to your work with passion and dedication but only to make ends meet and take your salary.</strong></p>

<p>Those who are creative cannot be afraid of something that by definition is not creative. AI does not have insights; it merely performs tasks as it has been trained to do them. </p>

<h2 class="wp-block-heading">The productivity paradox: we fear what should lift us up</h2>

<p>One of the most glaring contradictions in the Artificial Intelligence debate is the fact that many workers seem to fear the very thing that, in theory, should relieve them.  </p>

<p>Technological innovations have always aimed to optimize time, reduce errors, and automate processes. Yet in the face of AI this logic is reversed. If efficiency was once desirable, it now becomes a threat. But why?   </p>

<p>Because in many organizations, both public and private, real productivity has never been a variable in the equation. People work or pretend to work to fill schedules, defend roles, maintain balance between weak skills and repetitive tasks. In these contexts, the arrival of a system that can do in 5 minutes what it takes a team 3 days to deliver is perceived not as liberation, but as existential danger.    </p>

<p>The real problem, then, is not AI itself; it is that AI challenges the value of activities whose value was already questionable. Automation makes visible the absurdity of entire business processes built on slowness, unnecessary intermediation, and repetition for its own sake.   </p>

<p>But there is also an even deeper issue: productivity creates empty space, and emptiness, culturally, is scary. Those who work in companies that do not reward individual initiative, creativity and strategic thinking wonder, “If AI frees up 3 hours a day for me&#8230;. What will I do with that time? Will I be valued for what I can create or for what I no longer have to do?”   </p>

<p>In this ambiguity lies the real paradox: <strong>the technology that could finally allow humans to focus on what matters is experienced as an attack on survival.</strong> But fose, the problem is not the technology but the cultural model that has accustomed us to working to exist rather than to produce value.   </p>

<h2 class="wp-block-heading">Similar historical cases</h2>

<h3 class="wp-block-heading">When ecommerce came along, it was said, “It&#8217;s the end of stores.”</h3>

<p>The introduction of ecommerce generated, at the time, a wave of panic much like the one that accompanies Artificial Intelligence today. There were fears that physical stores would close en masse, that real shopping would become obsolete, and that entire industries, from retail to logistics to the real estate market of store rentals, would collapse.   </p>

<p>Yet, in hindsight, we know today that this was not the case&#8230;. Ecommerce did not destroy traditional commerce: <strong>it forced it to evolve</strong>. Many small stores started selling online, malls integrated omnichannel strategy, big brands invested in hybrid platforms. Click&amp;collect, live commerce, digital drive-in was born. The shopping experience is not dead, it has transformed into phygital experience i.e., a physical and digital experience together.      </p>

<p>In fact, what happened is exactly what is happening with AI today: those who resisted were left behind; those who adapted their model thrived. The retailer who saw ecommerce as a threat closed. The one that saw it as an opportunity, an extension of its service, gained new market share. This evidence teaches us that each technology does not erase the existing but reshapes the competitive environment. It is not technology that kills a business, but the inability to adapt to the new paradigm.      </p>

<h3 class="wp-block-heading">Industrialization and the end of artisans?</h3>

<p>In the late 19th century, when the first steam engines and mechanical looms began to replace the manual labor of artisans, people cried out in scandal: “This is the death of the dignity of labor,” said many. And there was no shortage of concrete reasons: those who had spent a lifetime working with wood, iron, fabric with skill and dedication suddenly saw their craft reduced to a repetitive, impersonal, automated process.   </p>

<p>But again, the apocalyptic prophecy proved inaccurate. Industrialization did not kill human labor, it multiplied it. <br />New figures, new specializations, new professional hierarchies were born. Handicraft work did not disappear: it changed roles, scaled down but did not lose value. Even today we can buy a jacket from a famous brand and pay 300 euros. Getting it made to measure by a craftsman, choosing the fabric, the buttons, the style, the workmanship can cost 3,000 euros!   <br />Thus, there is still a context today in which uniqueness and quality are much more important parameters than quantity.  </p>

<p>That industrial transition was one of the most powerful levers of economic and social growth in history. It enabled the emergence of the working classes, urbanization, union rights, the very concept of regulated working hours. Without that transition, there would not have been modern protections, mass access to consumption, or the ability to work outside an agricultural or feudal context.    </p>

<p>Those who knew how to move from fear to organization, from the store floor to the factory, not only maintained their professional dignity, but helped build a new model of civilization that has allowed us to get where we are today with discoveries in science and technology that have in fact greatly simplified our existence and extended our lives.  </p>

<p>Today, AI is viewed with the same suspicion: cold, impersonal, dehumanizing; but again, it is not the tool itself that brings about change, but the system&#8217;s ability to absorb it, modulate it, and channel it into new social and professional meanings.  </p>

<h3 class="wp-block-heading">Computerization and office work</h3>

<p>In the late 1980s and early 1990s, the massive introduction of personal computers into offices was experienced, once again, as a threat. It was said that computers would eliminate the need for administrative staff, that paper documents would disappear, and that human beings would become mere software accessories. </p>

<p>Some of the truth is there&#8230;. Many repetitive and manual functions have been replaced by spreadsheets, databases, document management systems. But what was lost in mechanical activities has been compensated for by the emergence of new cognitive and digital responsibilities. Computerization has given rise to jobs that did not exist before: data entry specialists, systems engineers, project managers, IT managers, functional analysts, developers, software engineers, etc. etc.     </p>

<p>The secretary has become office manager, the bookkeeper has learned to use accounting software, the archivist has evolved with digital filing&#8230; The job remained but changed its skin.   </p>

<p>This shows that whenever a technology enters a business, it does not destroy the entire ecosystem, but recombines existing businesses. Some contract, some expand, and some are born from scratch.   </p>

<p>Once again, AI today presents itself with an impact similar to that of computerization: powerful, cross-cutting, barely visible to the naked eye but capable of profoundly redefining processes. And as then, the outcome will depend on only one thing: the willingness of each professional to upgrade.   </p>

<h2 class="wp-block-heading">The wrong predictions of the recent past</h2>

<p>The history of innovation is littered with dire predictions that have in fact never come true, but then again a catastrophist headline pulls much more. Thus, as we have seen in the previous paragraphs, there are many technological innovations that have brought fear of change, a fear unfounded since change has always been positive. A technology is born when one feels the need to use it&#8230;. I start thinking about a hammer only when I have the need to hammer a nail in the wall, not before.     </p>

<p>Prediction errors do not arise from incompetence, but from a recurring methodological error: we regard technology as an active agent, and human beings as passive. In reality, while technology evolves, humans react, adapt, reinvent themselves; and that is precisely where the catastrophic prophecies fall apart. </p>

<h2 class="wp-block-heading">The transformation of existing roles</h2>

<p>One of the most important but least understood pieces of evidence is that most of the changes brought about by AI do not involve the disappearance of roles, but rather their internal transformation. Job titles remain, tasks are rewritten. Priorities, modes of operation, tools and required skills change.    </p>

<p>An advertising graphic designer today can no longer just layout static elements, he has to know visual prompts to generate drafts with DALL-E or Midjourney, he has to know how to edit texts from an SEO perspective, and in some cases he interacts with AI tools that optimize campaigns. The strategic part, however<strong>(message, positioning and tone of voice</strong>) remains totally in the hands of the human because he is the one who has the insight and this is where value is generated.   </p>

<p>An architect once focused solely on CAD software and building constraints can now use generative AI to create design variations, explore new materials, test solutions in virtual environments therefore he is not replaced, <strong>he is empowered!</strong></p>

<p>A copywriter no longer writes everything from scratch, he <strong>orchestrates the text</strong>, combining human intuition with AI-driven text development. His role shifts from production to semantic curation and supervision; and meanwhile a new figure is born in this context, that of the <strong>prompt writer</strong> i.e., the one who knows how to ask AIs in the right way to get the results he expects.   </p>

<p>Even in the seemingly more exposed areas such as customer care or technical support, AI handles the basic levels, but the human rises to the higher levels where empathy, adaptation and negotiation are needed. Professionals who once handled repetitive tickets now become chatbot trainers, quality supervisors, support experience designers, and solve customer care problems where AI lacks the tone and empathy to be able to solve them.   </p>

<figure class="wp-block-pullquote"><blockquote><p>AI doesn&#8217;t take your job, it takes the most repetitive part of your job and asks you to become something more.  </p></blockquote></figure>

<p>In this scenario, those who upgrade, those who are willing to look at AI as a solid ally can level up, not be pushed out. The only real risk is to remain identical to oneself while the world is changing.   </p>

<h2 class="wp-block-heading">Working with AI, not against: the “augmented” professional</h2>

<p>The most common instinctive reaction toward AI is defensive: “I must protect myself,” “I must prevent it from stealing my job.” But this is a static, losing mindset. The question is not whether AI will replace you. The question is whether you will be able to use it to your advantage to become better.     </p>

<p>Generative, conversational, predictive AIs are not enemy entities; they are <strong>tools</strong>. Exactly as electricity, the computer, ecommerce, the combustion engine, the cloud have been. And like any powerful tool, <strong>their value depends on who wields them.</strong>  </p>

<p>Today, a lawyer who knows how to use ChatGPT or Claude to draft a first draft, extract case law references, or simulate a line of argument is no less competent: he or she is faster, more scalable, and more competitive.  </p>

<p>A designer who knows how to use DALL-E to generate a dozen visual proposals in 30 seconds is no less creative; he or she is freer to choose, iterate, and dare.  </p>

<p>A recruiter who uses AI models to extract recurring patterns in resumes and verify them with their own critical eyes is not outdated: <strong>it is empowered</strong>.</p>

<p>AI is not a force that pushes you away. It is a force that comes alongside you if you let it and are willing to let it be part of your work asset. It is just like what happens in a team, the collective intelligence grows if everyone knows their value. In this case, the human remains irreplaceable in the areas where they are needed: intuition, empathy, strategic vision, moral responsibility. The future of work is not human or artificial, it is human and artificial.      </p>

<h2 class="wp-block-heading">The winning mindset: adaptive, not defensive</h2>

<p>There is a common trait shared by all people who have been able to go through major historical changes unscathed: <strong>an adaptive mindset</strong>. Not necessarily brilliant, not always technically brilliant, but able to read the signs of change, accept them and act accordingly. Fighting against something inevitable is not only futile it is a waste of valuable time. These people did not resist: they studied, observed, experimented. They understood that the real danger is not change itself, but immobility.     </p>

<p>Today more than ever, this principle comes back to center stage. In a world evolving at the speed of light, value is no longer in the position you occupy but in the speed with which you can move, relocate, and reinvent yourself. AI does not reward those with desks, but those with vision, and it silently and inexorably punishes those who are entrenched in nostalgia for “the way things used to work.”    </p>

<p>So many people will stand still because they are under the illusion that change is optional. It isn&#8217;t! Adapting is the only possible way forward. Resisting is not a strategy; it is only a slow sentence. Yet many prefer to deny, reject, belittle what they do not know in perfect Italian style.      </p>

<p>A totally renewed mental posture is needed today more than ever. Not the “I defend myself” one but the “I prepare myself” one. Not that of “I am satisfied with what I know,” but that of “I want to understand how I can transform myself and what I can become for the better.”    </p>

<p>You don&#8217;t need to be an engineer, you need to be curious, open and quick to learn. It takes reading, trying, getting help from an AI tool, wondering how it might benefit your profession. Not everything works, but just trying puts you ahead of those who don&#8217;t even ask the question.    </p>

<p>After all, it is not the cechnology that decides who stays and who goes.<br />It is the mindset with which one approaches it. <br />Those with adaptive mindsets not only survive but <strong>flourish!</strong></p>

<h2 class="wp-block-heading">Work is not dying, it is evolving and asking us to do the same</h2>

<p>We have seen how each revolution has had its own monster to fear. Each time the worst was feared and each time the reality turned out to be different: not less work, but different work. Not less humanity, but humanity distributed, rewritten and sometimes forced out of the comfort zone.    </p>

<p>AI is not different it is just faster, deeper and more persuasive, but it is not here to destroy work, it is here to shake up what was already not working: weak roles, unproductive repetitiveness, inefficient bureaucracy, unmotivated protections. It is scary because it lays <strong>bare the futility</strong>, and because <strong>it makes evident what until yesterday we could still pretend not to see.</strong> </p>

<p>But for those with talent, for those willing to learn, for those ready for change <strong>, AI is not a threat, it is a lever.</strong> An opportunity to level up and shed the superfluous, something to refocus on what really matters: intuition, planning, relationships, vision.  </p>

<p>Work is not dying; it is changing shape. It is asking each of us, “What are you willing to become?”   </p>

<p>Those who can respond with clarity, courage and adaptive intelligence will not only not lose their place, they will build something new and superior.  </p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/will-ai-make-people-lose-jobs/">Will AI make people lose jobs?</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Evaluation of the level of Blur by Laplacian Variance</title>
		<link>https://renor.it/en/blog/artificial-intelligence-algorithms/evaluation-of-the-level-of-blur-by-laplacian-variance/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Sun, 15 Jun 2025 09:49:09 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence & Algorithms]]></category>
		<category><![CDATA[blur detection]]></category>
		<category><![CDATA[blur metrics]]></category>
		<category><![CDATA[Canvas API]]></category>
		<category><![CDATA[celiac applications]]></category>
		<category><![CDATA[Client-side OCR]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[frontend side image validation]]></category>
		<category><![CDATA[image analysis in JavaScript]]></category>
		<category><![CDATA[image quality]]></category>
		<category><![CDATA[image sharpness]]></category>
		<category><![CDATA[Laplacian filter]]></category>
		<category><![CDATA[OCR optimization]]></category>
		<category><![CDATA[photo quality control]]></category>
		<category><![CDATA[photography app]]></category>
		<category><![CDATA[real-time image analysis]]></category>
		<category><![CDATA[sharpness measurement]]></category>
		<category><![CDATA[sharpness score]]></category>
		<category><![CDATA[variance of the Laplacian]]></category>
		<category><![CDATA[web image algorithm]]></category>
		<category><![CDATA[web-based image processing]]></category>
		<guid isPermaLink="false">https://renor.it/evaluation-of-the-level-of-blur-by-laplacian-variance/</guid>

					<description><![CDATA[<p>Our App for people with celiac disease and food intolerances, CeliachIA, allows users to instantly check for the presence of gluten in products that are not already database-censored: the user photographs the ingredient list on the label and a fine-tuned computer vision model processes the image, returning the answer in seconds. During the development phase, [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/evaluation-of-the-level-of-blur-by-laplacian-variance/">Evaluation of the level of Blur by Laplacian Variance</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Our App for people with celiac disease and food intolerances, <strong>CeliachIA</strong>, allows users to instantly check for the presence of gluten in products that are not already database-censored: the user photographs the ingredient list on the label and a <strong>fine-tuned computer vision</strong> model processes the image, returning the answer in seconds.</p>

<p>During the development phase, we ran into a crucial hurdle: ensuring that the photograph of the ingredients was sharp enough to allow accurate text extraction (OCR) and, consequently, reliable analysis. On the backend, <strong>Google Cloud Vision</strong> already provides an OCR confidence indicator; by applying appropriate thresholds we could decide whether to continue with the analysis or reject the image for poor quality. However, delegating this control to the cloud comes at an unnecessary cost; we still pay for the invocation of an external service even when the photo is obviously unusable.  </p>

<p>Therefore, to minimize costs, it was essential to move quality control <strong>to the client</strong>. We developed a JavaScript function, based on the <strong>Laplacian variance</strong>, that evaluates image sharpness in real time: the library can be run directly during camera preview, avoiding sending out-of-focus or blurry shots to the backend. In this way we achieve a double optimization: the user experience improves (the “blurry image” feedback is immediate) and cloud processing costs are significantly reduced.  </p>

<h2 class="wp-block-heading">Measuring the sharpness of an image with the Laplacian variance</h2>

<p>The perceptual quality of a photograph is highly dependent on sharpness: an image out of focus or affected by motion blur looks unattractive and, in various application areas (computer vision, diagnostics, mobile photography), can compromise the entire automatic analysis process.  </p>

<p>There are numerous techniques for quantitatively estimating the level of blur. In this paper, we present a fast approach, free of external dependencies and suitable for real time, based on the <strong>variance of the Laplacian operator</strong>. We will start with the theoretical fundamentals and then arrive at a complete implementation in JavaScript, accompanied by a small Web interface for testing purposes.  </p>

<p>The ultimate goal will be to build a widget that assigns a score from 1 to 10 to the sharpness of any image uploaded by the user.  </p>

<h2 class="wp-block-heading">Sharpness as a frequency issue</h2>

<p>Each digital image can be seen as the sum of components at different spatial frequencies:  </p>

<ul class="wp-block-list">
<li><strong>Low frequencies</strong> have slow variations, uniform areas, and smooth gradients</li>



<li><strong>High frequencies</strong> result in abrupt transitions, edges, fine details.</li>
</ul>

<p>A blur acts as a <strong>low-pass filter</strong>, that is, it attenuates high frequencies. So the blurrier an image is, the less residual energy we will have in the high-frequency spectrum.   </p>

<p>The project will then work on translating this observation into a single number that is easy to interpret.  </p>

<h2 class="wp-block-heading">The variance of the Laplacian: from millions of pixels to a single number</h2>

<p>Once we apply the Laplacian filter to the image, we get a new matrix where each value represents the local change in light intensity. But how can we condense this information into a <strong>single numerical value</strong> that objectively describes how sharp the image is? </p>

<p>The simplest and most effective answer is: <strong>calculate the variance of these values</strong>.<br />Because of what was said before, a well-focused image has many sharp edges and transitions therefore the values of the Laplacian are widely distributed, both positive and negative: there is therefore high variance.<br />A blurred image, blurs the edges therefore the values of the Laplacian are close to zero and little variable: there is therefore low variance.  </p>

<p>The variance measures precisely how far the values deviate from the mean: the larger this deviation, the more detail and sharpness the image contains.  </p>

<h2 class="wp-block-heading">Mathematical definition</h2>

<p>Given a Laplacian response matrix <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-f45bc4676758faced56a31d4afe2804e_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#76;&#95;&#105;&#36;" title="Rendered by QuickLaTeX.com" height="15" width="16" style="vertical-align: -3px;"/>, where <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-9f6be33c72982af4b393d661ed93d3e4_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#105;&#36;" title="Rendered by QuickLaTeX.com" height="12" width="5" style="vertical-align: 0px;"/> denotes each valid pixel (excluding the edge), we calculate:</p>

<p><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-1e65f0e6abc96cd6a7cbcf0b12139745_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#109;&#117;&#32;&#61;&#32;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#78;&#125;&#115;&#117;&#109;&#95;&#123;&#105;&#61;&#49;&#125;&#94;&#123;&#78;&#125;&#32;&#76;&#95;&#105;&#44;&#32;&#113;&#113;&#117;&#97;&#100;&#32;&#115;&#105;&#103;&#109;&#97;&#94;&#50;&#32;&#61;&#32;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#78;&#125;&#115;&#117;&#109;&#95;&#123;&#105;&#61;&#49;&#125;&#94;&#123;&#78;&#125;&#40;&#76;&#95;&#105;&#32;&#45;&#32;&#109;&#117;&#41;&#94;&#50;" title="Rendered by QuickLaTeX.com" height="20" width="523" style="vertical-align: -5px;"/></p>

<p>Where:</p>

<ul class="wp-block-list">
<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-82c54c2016cfb04537f3a6ddd7a692b0_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#109;&#117;&#36;" title="Rendered by QuickLaTeX.com" height="8" width="24" style="vertical-align: 0px;"/> is the average of the Laplacian values;</li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-9675ccd83f47754d4044b5cb35fda688_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#78;&#36;" title="Rendered by QuickLaTeX.com" height="12" width="13" style="vertical-align: 0px;"/> is the total number of pixels involved (usually $(w &#8211; 2)(h &#8211; 2)$);</li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-5b6996c2cdce5d94d6037c91de4b2f62_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#115;&#105;&#103;&#109;&#97;&#94;&#50;&#36;" title="Rendered by QuickLaTeX.com" height="19" width="52" style="vertical-align: -4px;"/> is the <strong>variance of the Laplacian</strong>, i.e., our sharpness indicator.</li>
</ul>

<p>Now we need to go from a raw value to an interpretable score.  </p>

<p>Values of <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-5b6996c2cdce5d94d6037c91de4b2f62_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#115;&#105;&#103;&#109;&#97;&#94;&#50;&#36;" title="Rendered by QuickLaTeX.com" height="19" width="52" style="vertical-align: -4px;"/> depend on hardware and environmental variables: resolution, noise, JPEG compression, lens quality. Therefore, it does not make sense to use a fixed threshold: we need to <strong>normalize</strong> the value against an empirical range. </p>

<p>We define:</p>

<ul class="wp-block-list">
<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-326c25ab934da5af2387a852942c9351_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#84;&#95;&#123;&#109;&#105;&#110;&#125;" title="Rendered by QuickLaTeX.com" height="15" width="38" style="vertical-align: -3px;"/>$: typical variance of a very blurry photo → corresponds to <strong>score 1</strong>;</li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-98cd1cdde06d8db0f191ed6f2eb2313f_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#36;&#84;&#95;&#123;&#109;&#97;&#120;&#125;" title="Rendered by QuickLaTeX.com" height="15" width="40" style="vertical-align: -3px;"/>$: typical variance of a perfectly sharp photo → corresponds to <strong>score 10</strong>.</li>
</ul>

<p>Therefore:</p>

<p><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-d81939d6821640c1b6ec66f97df8ae2b_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#116;&#101;&#120;&#116;&#123;&#115;&#99;&#111;&#114;&#101;&#125;&#32;&#61;&#32;&#49;&#32;&#43;&#32;&#57;&#32;&#116;&#105;&#109;&#101;&#115;&#32;&#111;&#112;&#101;&#114;&#97;&#116;&#111;&#114;&#110;&#97;&#109;&#101;&#123;&#99;&#108;&#97;&#109;&#112;&#125;&#108;&#101;&#102;&#116;&#40;&#102;&#114;&#97;&#99;&#123;&#115;&#105;&#103;&#109;&#97;&#94;&#50;&#32;&#45;&#32;&#84;&#95;&#123;&#109;&#105;&#110;&#125;&#125;&#123;&#84;&#95;&#123;&#109;&#97;&#120;&#125;&#32;&#45;&#32;&#84;&#95;&#123;&#109;&#105;&#110;&#125;&#125;&#44;&#32;&#48;&#44;&#32;&#49;&#114;&#105;&#103;&#104;&#116;&#41;" title="Rendered by QuickLaTeX.com" height="20" width="702" style="vertical-align: -5px;"/></p>

<p>After calculation, the value is rounded to the nearest integer to return a score between 1 and 10. This approach also makes the result readable for the end user, as well as useful for software-side control logic. </p>

<h2 class="wp-block-heading">Implementation in JavaScript</h2>

<p>The algorithm can be implemented in pure JavaScript using the Canvas API to access the pixels of an image uploaded or taken by camera. The following function takes as input an HTML element ( <code>&lt;img&gt;</code>,  <code>&lt;canvas&gt;</code>,  <code>&lt;video&gt;</code>  o  <code>ImageBitmap</code>) and returns an object with  <code>score</code>  (1-10) e  <code>variance</code>.</p>

<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none"></g></svg></span><span role="button" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><textarea class="code-block-pro-copy-button-textarea" aria-hidden="true" readonly>/**
 * Evaluate image sharpness using Laplacian variance.
 * @param {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement|ImageBitmap} source
 * @param {{thresholdMin?: number, thresholdMax?: number}=} opts
 * @return {Promise&lt;{score: number, variance: number}&gt;}
 */
export async function blurMeter(source, opts = {}) {
 const T_min = opts.thresholdMin ?? 9; // calibrated: blurry photo
 const T_max = opts.thresholdMax ?? 50; // calibrated: sharp photo  

  // 1. Prepare off-screen canvas
 const w = source.width || source.videoWidth || source.naturalWidth;
 const h = source.height || source.videoHeight || source.naturalHeight;
 if (!w || !h) throw new Error(“Source has invalid dimensions”); 

  const off = typeof OffscreenCanvas === “function”
? new OffscreenCanvas(w, h)
: (() =&gt; { const c = document.createElement(“canvas”); c.width = w; c.height = h; return c; })();
 const ctx = off.getContext(“2d”);
 ctx.drawImage(source, 0, 0, w, h);
 const { data } = ctx.getImageData(0, 0, w, h); 

  // 2. Convert to grayscale
 const gray = new Float32Array(w * h);
 for (let i = 0, j = 0; i &lt; data.length; i += 4, ++j) {
 gray[j] = 0.299 * data[i] + 0.587 * data[i + 1] + 0.114 * data[i + 2];
 } 

  // 3. Apply Laplacian (4-neighbour kernel)
 const lap = new Float32Array(w * h);
 const idx = (x, y) =&gt; y * w + x;
 for (let y = 1; y &lt; h &#8211; 1; ++y) {
 for (let x = 1; x &lt; w &#8211; 1; ++x) {
 const i = idx(x, y);
 lap[i] = 4 * gray[i] &#8211; gray[idx(x &#8211; 1, y)] &#8211; gray[idx(x + 1, y)] &#8211; gray[idx(x, y &#8211; 1)] &#8211; gray[idx(x, y + 1)];
 }
 } 

  // 4. Compute variance
 let sum = 0, sumSq = 0, count = (w &#8211; 2) * (h &#8211; 2);
 for (let y = 1; y &lt; h &#8211; 1; ++y) {
 for (let x = 1; x &lt; w &#8211; 1; ++x) {
 const v = lap[idx(x, y)];
 sum += v;
 sumSq += v * v;
 }
 }
 const mean = sum / count;
 const variance = (sumSq / count) &#8211; (mean * mean); 

  // 5. Map to score
 const norm = Math.max(0, Math.min(1, (variance &#8211; T_min) / (T_max &#8211; T_min));
 const score = Math.round(1 + 9 * norm); 

  return { score, variance };
}</textarea><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" viewbox="0 0 24 24"><path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E"><code><span class="line"><span style="color: #6A9955">/**</span></span>
<span class="line"><span style="color: #6A9955"> * Evaluate image sharpness using Laplacian variance.</span></span>
<span class="line"><span style="color: #6A9955"> * </span><span style="color: #569CD6">@param</span><span style="color: #6A9955"> </span><span style="color: #4EC9B0">{HTMLImageElement|HTMLCanvasElement|HTMLVideoElement|ImageBitmap}</span><span style="color: #6A9955"> </span><span style="color: #9CDCFE">source</span></span>
<span class="line"><span style="color: #6A9955"> * </span><span style="color: #569CD6">@param</span><span style="color: #6A9955"> </span><span style="color: #4EC9B0">{{thresholdMin?: number, thresholdMax?: number}=}</span><span style="color: #6A9955"> </span><span style="color: #9CDCFE">opts</span></span>
<span class="line"><span style="color: #6A9955"> * </span><span style="color: #569CD6">@return</span><span style="color: #6A9955"> </span><span style="color: #4EC9B0">{Promise&lt;{score: number, variance: number}&gt;}</span></span>
<span class="line"><span style="color: #6A9955"> */</span></span>
<span class="line"><span style="color: #C586C0">export</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">async</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">blurMeter</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">opts</span><span style="color: #D4D4D4"> = {}) {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">T_min</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">opts</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">thresholdMin</span><span style="color: #D4D4D4"> ?? </span><span style="color: #B5CEA8">9</span><span style="color: #D4D4D4">;    </span><span style="color: #6A9955">// calibrated: blurry photo</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">T_max</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">opts</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">thresholdMax</span><span style="color: #D4D4D4"> ?? </span><span style="color: #B5CEA8">50</span><span style="color: #D4D4D4">;   </span><span style="color: #6A9955">// calibrated: sharp photo</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// 1. Prepare off-screen canvas</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">w</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">width</span><span style="color: #D4D4D4">  || </span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">videoWidth</span><span style="color: #D4D4D4">  || </span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">naturalWidth</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">h</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">height</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">videoHeight</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">naturalHeight</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (!</span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> || !</span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">throw</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Error</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">"Source has invalid dimensions"</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">off</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">typeof</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">OffscreenCanvas</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">"function"</span></span>
<span class="line"><span style="color: #D4D4D4">    ? </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">OffscreenCanvas</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    : (() </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> { </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">c</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">document</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">createElement</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">"canvas"</span><span style="color: #D4D4D4">); </span><span style="color: #9CDCFE">c</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">width</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">c</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">height</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">; </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">c</span><span style="color: #D4D4D4">; })();</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">ctx</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">off</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getContext</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">"2d"</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">ctx</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">drawImage</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">source</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> { </span><span style="color: #4FC1FF">data</span><span style="color: #D4D4D4"> } = </span><span style="color: #9CDCFE">ctx</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getImageData</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// 2. Convert to grayscale</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">gray</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Float32Array</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">for</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">j</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">length</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4"> += </span><span style="color: #B5CEA8">4</span><span style="color: #D4D4D4">, ++</span><span style="color: #9CDCFE">j</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">gray</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">j</span><span style="color: #D4D4D4">] = </span><span style="color: #B5CEA8">0.299</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4">] + </span><span style="color: #B5CEA8">0.587</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4"> + </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">] + </span><span style="color: #B5CEA8">0.114</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4"> + </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">];</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// 3. Apply Laplacian (4-neighbour kernel)</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">lap</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Float32Array</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> + </span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">for</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; ++</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">for</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; ++</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">i</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">lap</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4">] = </span><span style="color: #B5CEA8">4</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">gray</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4">] - </span><span style="color: #9CDCFE">gray</span><span style="color: #D4D4D4">[</span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">)] - </span><span style="color: #9CDCFE">gray</span><span style="color: #D4D4D4">[</span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> + </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">)] - </span><span style="color: #9CDCFE">gray</span><span style="color: #D4D4D4">[</span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">)] - </span><span style="color: #9CDCFE">gray</span><span style="color: #D4D4D4">[</span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> + </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">)];</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// 4. Compute variance</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">sum</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">sumSq</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">count</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">) * (</span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">for</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">h</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; ++</span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">for</span><span style="color: #D4D4D4"> (</span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> = </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; </span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4"> &lt; </span><span style="color: #9CDCFE">w</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">; ++</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">v</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">lap</span><span style="color: #D4D4D4">[</span><span style="color: #DCDCAA">idx</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">y</span><span style="color: #D4D4D4">)];</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">sum</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">v</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">sumSq</span><span style="color: #D4D4D4"> += </span><span style="color: #9CDCFE">v</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">v</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">mean</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">sum</span><span style="color: #D4D4D4"> / </span><span style="color: #9CDCFE">count</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">variance</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">sumSq</span><span style="color: #D4D4D4"> / </span><span style="color: #9CDCFE">count</span><span style="color: #D4D4D4">) - (</span><span style="color: #9CDCFE">mean</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">mean</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// 5. Map to score</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">norm</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Math</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">max</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">Math</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">min</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">, (</span><span style="color: #9CDCFE">variance</span><span style="color: #D4D4D4"> - </span><span style="color: #9CDCFE">T_min</span><span style="color: #D4D4D4">) / (</span><span style="color: #9CDCFE">T_max</span><span style="color: #D4D4D4"> - </span><span style="color: #9CDCFE">T_min</span><span style="color: #D4D4D4">)));</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">score</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Math</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> + </span><span style="color: #B5CEA8">9</span><span style="color: #D4D4D4"> * </span><span style="color: #9CDCFE">norm</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> { </span><span style="color: #9CDCFE">score</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">variance</span><span style="color: #D4D4D4"> };</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>

<p>This function is lightweight, self-contained, and can be performed directly client-side, such as in a live camera web application or image analysis.</p>

<p>Next step: we create a simple interface with HTML and Tailwind to use this function interactively.</p>

<h2 class="wp-block-heading">HTML + Tailwind interface</h2>

<p>We now consume the function in a simple user interface made in HTML and Tailwind that allows the user to load an image, preview it, and immediately receive a sharpness score with a colored bar from red (blurry) to green (sharp).</p>

<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewbox="0 0 54 14"><g fill="none"></g></svg></span><span role="button" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><textarea class="code-block-pro-copy-button-textarea" aria-hidden="true" readonly>&lt;!DOCTYPE html&gt;
&lt;html lang=“en”&gt;
&lt;head&gt;
  &lt;meta charset=“UTF-8”&gt;
  &lt;title&gt;Blur Meter Demo&lt;/title&gt;
  &lt;!&#8211; Tailwind CSS via CDN &#8211;&gt;
  &lt;script src=“https://cdn.tailwindcss.com”&gt;&lt;/script&gt;
  &lt;meta name=“viewport” content=“width=device-width, initial-scale=1”&gt;
&lt;/head&gt;
&lt;body class=“min-h-screen bg-slate-100 flex items-center justify-center p-4”&gt;
  &lt;div class=“w-full max-w-lg bg-white shadow-xl rounded-2xl p-6 space-y-6”&gt;
    &lt;h1 class=“text-2xl font-semibold text-center”&gt;Image Blur Meter&lt;/h1&gt;

    &lt;!&#8211; File input &#8211;&gt;
    &lt;label class=“flex flex-col items-center justify-center w-full h-40 px-4 transition bg-white border-2 border-dashed rounded-lg cursor-pointer hover:border-indigo-500”&gt;
      &lt;span class=“text-sm text-gray-500”&gt;Click here to upload an image&lt;/span&gt;
      &lt;input id=“uploader” type=“file” accept=“image/*” class=“hidden”&gt;
    &lt;/label&gt;

    &lt;!&#8211; Image preview &#8211;&gt;
    &lt;div id=“previewWrapper” class=“hidden”&gt;
      &lt;img id=“preview” alt=“preview” class=“mx-auto max-h-64 rounded-lg shadow-md”/&gt;
    &lt;/div&gt;

    &lt;!&#8211; Results &#8211;&gt;
    &lt;div id=“result” class=“hidden space-y-3”&gt;
      &lt;p id=“scoreText” class=“text-center text-lg font-medium”&gt;&lt;/p&gt;

      &lt;!&#8211; Progress bar &#8211;&gt;
      &lt;div class=“w-full bg-gray-200 rounded-full h-4”&gt;
        &lt;div id=“scoreBar” class=“h-4 rounded-full transition-all duration-500” style=“width:0%”&gt;&lt;/div&gt;
      &lt;/div&gt;

      &lt;p id=“varianceText” class=“text-center text-sm text-gray-500”&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;script type=“module”&gt;
 import { blurMeter } from “./js/blur-meter.js”;

  const uploader = document.getElementById(“uploader”);
 const preview = document.getElementById(“preview”);
 const previewWrap = document.getElementById(“previewWrapper”);
 const scoreText = document.getElementById(“scoreText”);
 const varianceText = document.getElementById(“varianceText”);
 const scoreBar = document.getElementById(“scoreBar”);
 const resultBlock = document.getElementById(“result”);

  const scoreToColor = score =&gt; {
 const t = (score &#8211; 1) / 9;
 const r = Math.round(220 + (22 &#8211; 220) * t);
 const g = Math.round( 38 + (163 &#8211; 38) * t);
 const b = Math.round( 38 + ( 74 &#8211; 38) * t);
 return `rgb(${r},${g},${b})`;
 };

  uploader.addEventListener(“change”, async e =&gt; {
 const file = e.target.files[0];
 if (!file) return;

  const url = URL.createObjectURL(file);
 preview.src = url;
 previewWrap.classList.remove(“hidden”);

  await new Promise(res =&gt; preview.onload = res);

  const { score, variance } = await blurMeter(preview);

  scoreText.textContent = `Sharpness Score: ${score}/10`;
 varianceText.textContent = `Laplacian variance: ${variance.toFixed(2)}`;
 const percent = ((score &#8211; 1) / 9) * 100;
 scoreBar.style.width = percent + “%”;
 scoreBar.style.backgroundColor = scoreToColor(score);
 resultBlock.classList.remove(“hidden”);

  URL.revokeObjectURL(url);
 });
  &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" viewbox="0 0 24 24"><path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E"><code><span class="line"><span style="color: #D4D4D4">&lt;!</span><span style="color: #4FC1FF">DOCTYPE</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">html</span><span style="color: #D4D4D4">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">html</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">lang</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"it"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">head</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">meta</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">charset</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"UTF-8"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">title</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Blur Meter Demo</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">title</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  &lt;!-- Tailwind CSS via CDN --&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">script</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">src</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"https://cdn.tailwindcss.com"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">script</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">meta</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"viewport"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">content</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"width=device-width, initial-scale=1"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">head</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">body</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"min-h-screen bg-slate-100 flex items-center justify-center p-4"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"w-full max-w-lg bg-white shadow-xl rounded-2xl p-6 space-y-6"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">h1</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"text-2xl font-semibold text-center"</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Image Blur Meter</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">h1</span><span style="color: #808080">&gt;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">    &lt;!-- File input --&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">label</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"flex flex-col items-center justify-center w-full h-40 px-4 transition bg-white border-2 border-dashed rounded-lg cursor-pointer hover:border-indigo-500"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">span</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"text-sm text-gray-500"</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Click here to upload an image</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">span</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">input</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"uploader"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"file"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">accept</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"image/*"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"hidden"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">label</span><span style="color: #808080">&gt;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">    &lt;!-- Image preview --&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"previewWrapper"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"hidden"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">img</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"preview"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">alt</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"preview"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"mx-auto max-h-64 rounded-lg shadow-md"</span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">    &lt;!-- Results --&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"result"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"hidden space-y-3"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">p</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"scoreText"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"text-center text-lg font-medium"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">p</span><span style="color: #808080">&gt;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      &lt;!-- Progress bar --&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"w-full bg-gray-200 rounded-full h-4"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"scoreBar"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"h-4 rounded-full transition-all duration-500"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">style</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"width:0%"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">p</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"varianceText"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"text-center text-sm text-gray-500"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">p</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">script</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"module"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    import </span><span style="color: #569CD6">{</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">blurMeter</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">}</span><span style="color: #D4D4D4"> from './js/blur-meter.js';</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">    const uploader      = document.getElementById('uploader');</span></span>
<span class="line"><span style="color: #D4D4D4">    const preview       = document.getElementById('preview');</span></span>
<span class="line"><span style="color: #D4D4D4">    const previewWrap   = document.getElementById('previewWrapper');</span></span>
<span class="line"><span style="color: #D4D4D4">    const scoreText     = document.getElementById('scoreText');</span></span>
<span class="line"><span style="color: #D4D4D4">    const varianceText  = document.getElementById('varianceText');</span></span>
<span class="line"><span style="color: #D4D4D4">    const scoreBar      = document.getElementById('scoreBar');</span></span>
<span class="line"><span style="color: #D4D4D4">    const resultBlock   = document.getElementById('result');</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">    const scoreToColor = score =&gt; </span><span style="color: #569CD6">{</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">t</span><span style="color: #D4D4D4"> = (</span><span style="color: #9CDCFE">score</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">) / </span><span style="color: #B5CEA8">9</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">r</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Math</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">220</span><span style="color: #D4D4D4"> + (</span><span style="color: #B5CEA8">22</span><span style="color: #D4D4D4">  - </span><span style="color: #B5CEA8">220</span><span style="color: #D4D4D4">) * </span><span style="color: #9CDCFE">t</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">g</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Math</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">( </span><span style="color: #B5CEA8">38</span><span style="color: #D4D4D4"> + (</span><span style="color: #B5CEA8">163</span><span style="color: #D4D4D4"> -  </span><span style="color: #B5CEA8">38</span><span style="color: #D4D4D4">) * </span><span style="color: #9CDCFE">t</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">b</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">Math</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">round</span><span style="color: #D4D4D4">( </span><span style="color: #B5CEA8">38</span><span style="color: #D4D4D4"> + ( </span><span style="color: #B5CEA8">74</span><span style="color: #D4D4D4"> -  </span><span style="color: #B5CEA8">38</span><span style="color: #D4D4D4">) * </span><span style="color: #9CDCFE">t</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">return</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">`rgb(</span><span style="color: #569CD6">${</span><span style="color: #9CDCFE">r</span><span style="color: #569CD6">}</span><span style="color: #CE9178">,</span><span style="color: #569CD6">${</span><span style="color: #9CDCFE">g</span><span style="color: #569CD6">}</span><span style="color: #CE9178">,</span><span style="color: #569CD6">${</span><span style="color: #9CDCFE">b</span><span style="color: #569CD6">}</span><span style="color: #CE9178">)`</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">}</span><span style="color: #D4D4D4">;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">    uploader.addEventListener('change', async e =&gt; </span><span style="color: #569CD6">{</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">file</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">e</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">target</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">files</span><span style="color: #D4D4D4">[</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">];</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #DCDCAA">if</span><span style="color: #D4D4D4"> (!</span><span style="color: #9CDCFE">file</span><span style="color: #D4D4D4">) </span><span style="color: #9CDCFE">return</span><span style="color: #D4D4D4">;</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">url</span><span style="color: #D4D4D4"> = </span><span style="color: #4FC1FF">URL</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">createObjectURL</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">file</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">preview</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">src</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">url</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">previewWrap</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">classList</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">remove</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'hidden'</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Promise</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">res</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">preview</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">onload</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">res</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> { </span><span style="color: #9CDCFE">score</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">variance</span><span style="color: #D4D4D4"> } = </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">blurMeter</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">preview</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">scoreText</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">textContent</span><span style="color: #D4D4D4">    = </span><span style="color: #CE9178">`Sharpness Score: </span><span style="color: #569CD6">${</span><span style="color: #9CDCFE">score</span><span style="color: #569CD6">}</span><span style="color: #CE9178">/10`</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">varianceText</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">textContent</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">`Laplacian variance: </span><span style="color: #569CD6">${</span><span style="color: #9CDCFE">variance</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">toFixed</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)</span><span style="color: #569CD6">}</span><span style="color: #CE9178">`</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">const</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">percent</span><span style="color: #D4D4D4">            = ((</span><span style="color: #9CDCFE">score</span><span style="color: #D4D4D4"> - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">) / </span><span style="color: #B5CEA8">9</span><span style="color: #D4D4D4">) * </span><span style="color: #B5CEA8">100</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">scoreBar</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">style</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">width</span><span style="color: #D4D4D4">     = </span><span style="color: #9CDCFE">percent</span><span style="color: #D4D4D4"> + </span><span style="color: #CE9178">'%'</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">scoreBar</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">style</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">backgroundColor</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">scoreToColor</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">score</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">resultBlock</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">classList</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">remove</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'hidden'</span><span style="color: #D4D4D4">);</span></span>
<span class="line" />
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #4FC1FF">URL</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">revokeObjectURL</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">url</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">}</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">script</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">body</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">html</span><span style="color: #808080">&gt;</span></span></code></pre></div>

<h2 class="wp-block-heading">Functional testing</h2>

<p>We tested the function on three different types of image&#8230;</p>

<h3 class="wp-block-heading">Completely out of focus</h3>

<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="550" height="692" src="https://renor.it/wp-content/uploads/2025/06/image-2.webp" alt="" class="wp-image-858" srcset="https://renor.it/wp-content/uploads/2025/06/image-2.webp 550w, https://renor.it/wp-content/uploads/2025/06/image-2-238x300.webp 238w" sizes="auto, (max-width: 550px) 100vw, 550px" /></figure>

<h3 class="wp-block-heading">Moderately blurred</h3>

<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="551" height="690" src="https://renor.it/wp-content/uploads/2025/06/image-3.webp" alt="" class="wp-image-860" srcset="https://renor.it/wp-content/uploads/2025/06/image-3.webp 551w, https://renor.it/wp-content/uploads/2025/06/image-3-240x300.webp 240w" sizes="auto, (max-width: 551px) 100vw, 551px" /></figure>

<h3 class="wp-block-heading">Sharp</h3>

<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="559" height="692" src="https://renor.it/wp-content/uploads/2025/06/image-4.webp" alt="" class="wp-image-862" srcset="https://renor.it/wp-content/uploads/2025/06/image-4.webp 559w, https://renor.it/wp-content/uploads/2025/06/image-4-242x300.webp 242w" sizes="auto, (max-width: 559px) 100vw, 559px" /></figure>

<h2 class="wp-block-heading">Conclusion</h2>

<p>The Laplacian variance proves to be a simple but extremely powerful and effective tool for assessing the sharpness of an image in real-time client-side contexts. Its strength lies in its computational speed, absence of external dependencies and consistency with human visual perception.   </p>

<p>In our use case, applied to the CeliachIA App, this metric allowed us to anticipate quality control directly on the user&#8217;s device, avoiding unnecessary costs of cloud invocations when images are not suitable for OCR analysis.  </p>

<p>The pipeline built with JavaScript and Canvas API, coupled with a simple Web interface developed with Tailwind, is a concredo example of how mathematical concepts and engineering tools can come together in a robust, cost-effective, and user-friendly solution.  </p>

<p>Ultimately, having an automated sharpness scoring system is not just a technical quirk, but an essential component of ensuring quality, efficiency, and sustainability in modern image analysis pipelines.  </p>

<p>You can download this tool from my GitHub account at the link: <a href="https://github.com/thesimon82/Laplacian-Blur-Detector/">https://github.com/thesimon82/Laplacian-Blur-Detector/</a></p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/evaluation-of-the-level-of-blur-by-laplacian-variance/">Evaluation of the level of Blur by Laplacian Variance</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Peace is better than war (No f@@@ing shit!)</title>
		<link>https://renor.it/en/blog/technology-society-future/peace-is-better-than-war-no-fing-shit/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Tue, 10 Jun 2025 21:48:53 +0000</pubDate>
				<category><![CDATA[Technology, Society & Future]]></category>
		<category><![CDATA[access to credit]]></category>
		<category><![CDATA[brain drain]]></category>
		<category><![CDATA[bureaucracy]]></category>
		<category><![CDATA[catchphrases]]></category>
		<category><![CDATA[corporate realities]]></category>
		<category><![CDATA[corporate storytelling]]></category>
		<category><![CDATA[digital populism]]></category>
		<category><![CDATA[digital transformation]]></category>
		<category><![CDATA[digitization 4.0]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[insecurity]]></category>
		<category><![CDATA[irony]]></category>
		<category><![CDATA[Italian economy]]></category>
		<category><![CDATA[labor market]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[marketing guru]]></category>
		<category><![CDATA[meritocracy]]></category>
		<category><![CDATA[neuroHR]]></category>
		<category><![CDATA[professional satire]]></category>
		<category><![CDATA[SME]]></category>
		<category><![CDATA[social rhetoric]]></category>
		<category><![CDATA[tax]]></category>
		<category><![CDATA[uncomfortable opinions]]></category>
		<category><![CDATA[viral posts]]></category>
		<category><![CDATA[work in Italy]]></category>
		<guid isPermaLink="false">https://renor.it/peace-is-better-than-war-no-fing-shit/</guid>

					<description><![CDATA[<p>I am seriously considering deleting myself from LinkedIn or, at the very least, taking a longer break than usual. After all, I use these socials mainly to share some new projects, but I am certainly not a frequent visitor. You will probably say to yourselves, “Okay, bye! To the people?” and, indeed, how can I [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/technology-society-future/peace-is-better-than-war-no-fing-shit/">Peace is better than war (No f@@@ing shit!)</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p id="ember700">I am seriously considering deleting myself from LinkedIn or, at the very least, taking a longer break than usual. After all, I use these socials mainly to share some new projects, but I am certainly not a frequent visitor. </p>

<p id="ember701">You will probably say to yourselves, “Okay, bye! To the people?” and, indeed, how can I blame you? It&#8217;s not like I&#8217;m the Ferragni! ????</p>

<p id="ember702">However, I still want to entertain you for a few minutes with some thoughts that perhaps some of you will share.</p>

<p id="ember703">I have the feeling that I am witnessing a kind of “politics spilled over” into the work environment. I give an example: I follow some people with lofty and ridiculous titles on the tone of <em><strong>“NeuroHR Evangelist of Agile Emotional Empowerment and Quantum Team Alignment politically (in)correct.</strong></em>” since I joined. They will undoubtedly be good people, however I find their posts to be extremely “populist” (a term that, unfortunately, is used and abused by everyone but is fitting here), and downright trite. This is a truly “politically incorrect” statement. Once you reach a certain threshold of followers, it seems to me that you end up posting any platitude, to cite a few examples, “A world without war is a better world” or “A nice picnic in the countryside is better done on a sunny day than under hail.” All embellished with a catchy image and a vectorized signature like the one I put in the featured image of this article (to satirize of course).   </p>

<p id="ember704">Not to mention the so-called marketing “Gurus” who have discovered the hot-water secret to becoming millionaires but, STRONGLY, instead of enjoying their fortune on an indefinite vacation to the Fiji Islands, they seem to spend their lives in front of their computers “nagging” anyone who has written in their profile “CEO” or “Founder” to turn their company into SpaceX in no time and with two liras; how selfless!</p>

<p id="ember705">It feels like a fish market.</p>

<p id="ember706">I wonder if these people from the “lapidary” posts have ever visited the corporate realities that generate 80 percent of the national GDP or if their world stops at companies like Google, Meta and other multinationals with billion-dollar turnovers that can easily stuff their mouths with Welfare, bonuses, stress-free work environments, health insurance that covers the dentist for them and family, etc. etc.  </p>

<p id="ember706">No gentlemen, it is too easy to talk about work values when you are reasoning about companies with turnovers of billions of euros&#8230;. I am talking about <strong>small and medium-sized enterprises (SMEs)</strong>, which account for <strong>99%</strong> of businesses in Italy (so this is the norm, it is not Google, it is not Amazon, it is not SpaceX), employ about 78% of the private workforce and contribute 65% of the total value added. If we also consider microenterprises, it comes close to 80% of GDP, as I mentioned earlier.    <br />Italy remains standing and can sit at the G7 table thanks to this entrepreneurial fabric, the so-called “hard core.”</p>

<p id="ember707">When I read phrases from these characters such as “With the good ones we work better,” I am puzzled: is there really anyone who has totally lost their senses that they can disagree with statements of this tenor? I would say no, which is why I consider such content to be lapalissian and populist. But, having ended this parenthesis of thought worthy of Gianni Rodari&#8217;s best fairy tales, let us return to reality&#8230;.  </p>

<p id="ember708">The <strong>majority</strong> of Italian businesses are SMEs, the very ones that pay their taxes all, all the time and to the last penny (at least the majority), and those that do not pay them, do so because they cannot pay them not because of fraudulent attitudes! <em>“Either I pay the state to throw them out with electoral marquees or I pay my employees,”</em> and this is how entrepreneurs who have fallen on dark times, risk having their movable and immovable property seized&#8230;. In order not to let his employees go without bread and avoid firing them.   </p>

<p id="ember709">Closing this parenthesis. Precariousness reigns in Italy, which is not imposed by employers, but by the state. It could not be otherwise: a company, in order to give 1,600 euros of salary to an employee, must spend almost 3,000 euros.  </p>

<p id="ember710">In all of this, the majority of entrepreneurs have to struggle with unbounded bureaucracy, with complex and slow procedures that hold back both hiring and investment, forcing the same companies to devote a lot of effort to administrative management.</p>

<p id="ember711">Employees who, with what little the company can give, under the pressures of the IRS, cannot make ends meet, and live their lives (not only work) with loads of stress and uncertainty in the future.</p>

<p id="ember712">Difficulties in accessing credit, both for employees and companies. Especially for SMEs, getting adequate financing to develop growth or R&amp;D projects is a drama, because they have no access to any kind of credit. </p>

<p id="ember713">On the fiscal side, in addition to the very high tax burden (among the highest in Europe), the lack of medium- and long-term certainty makes it difficult to plan and schedule investments.</p>

<p id="ember714">At the contractual level, the Italian labor market is characterized by constraints that, while protecting workers, can discourage business growth, especially in a context of economic uncertainty such as the one Italy has been experiencing since the late 1990s after joining the eurozone.</p>

<p id="ember715">Many SMEs struggle to keep up with digital transformation, thus losing competitiveness in increasingly globalized markets. This is due to the fact that although there are funds for digitization 4.0, accessing them requires labyrinthine bureaucratic procedures and biblical time frames. </p>

<p id="ember716">Geographically, then, there is a clear north-south divide concerning infrastructure and services, resulting in a decrease in development opportunities that hinder an equitable distribution of jobs and investment.</p>

<p id="ember717">Responding to: “with the good ones you work better.” The good ones rightly want to be paid properly. Otherwise the door to France and Germany, if not America and Canada are wide open. We produce talent in universities for other nations to produce. I too would like a talent to work with me, but with my turnover and the inordinate amount of taxes I pay I could not have given him more than 1,500 euros a month and not 4,000 net a month as he deserves. Obviously, I have avoided making a fool of myself!     </p>

<p id="ember718">In conclusion, before sharing pre-packaged reflections and catch phrases on social media, it would perhaps be better to immerse ourselves more in the Italian business reality, made up of so many small businesses and true heroes who, despite a thousand difficulties, support this state unworthy of their sacrifice and the sacrifice of millions of workers who have to work to earn wages that are among the lowest in Europe.</p>

<p id="ember719">Personally, I believe that debate on LinkedIn can be stimulating, as long as real problems are addressed and, perhaps, concrete solutions are proposed and not basing arguments on catch phrases such as “Peace is better than war”&#8230; No f@@@ing shit! Do you understand what a breakthrough! </p>
<p>L'articolo <a href="https://renor.it/en/blog/technology-society-future/peace-is-better-than-war-no-fing-shit/">Peace is better than war (No f@@@ing shit!)</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>“It takes AI!” &#8211; When an if() would suffice.</title>
		<link>https://renor.it/en/blog/artificial-intelligence-algorithms/it-takes-ai-when-an-if-would-suffice/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Mon, 09 Jun 2025 18:14:25 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence & Algorithms]]></category>
		<category><![CDATA[AI costs]]></category>
		<category><![CDATA[AI washing]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[backend development]]></category>
		<category><![CDATA[buzzword]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[design sobriety]]></category>
		<category><![CDATA[deterministic algorithms]]></category>
		<category><![CDATA[efficient scheduling]]></category>
		<category><![CDATA[emerging technologies]]></category>
		<category><![CDATA[engineering common sense]]></category>
		<category><![CDATA[fashion technology]]></category>
		<category><![CDATA[GPT]]></category>
		<category><![CDATA[if statement]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[neural networks]]></category>
		<category><![CDATA[overengineering]]></category>
		<category><![CDATA[PDF automation]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software engineering ethics]]></category>
		<category><![CDATA[startup tech]]></category>
		<category><![CDATA[technical solutions]]></category>
		<category><![CDATA[Technology innovation]]></category>
		<guid isPermaLink="false">https://renor.it/it-takes-ai-when-an-if-would-suffice/</guid>

					<description><![CDATA[<p>The era of AI washing Artificial intelligence is, without a shadow of a doubt, one of the most important technological developments and “discoveries” of our time. I use the term “breakthroughs” in quotation marks because in fact, the theory behind AI dates all the way back to 1956, the year of the famous Dartmouth conference [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/it-takes-ai-when-an-if-would-suffice/">“It takes AI!” &#8211; When an if() would suffice.</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">The era of AI washing</h2>

<p>Artificial intelligence is, without a shadow of a doubt, one of the most important technological developments and “discoveries” of our time. I use the term “breakthroughs” in quotation marks because in fact, the theory behind AI dates all the way back to 1956, the year of the famous Dartmouth conference that sanctioned its official birth.   <br />Yet only in recent years has AI burst into the consumer and managerial universe, becoming a magic word good for every context: marketing, products, investor slides, company reports, etc.  </p>

<p>The point is, if yesterday the fashion was the iPhone, today the fashion is artificial intelligence. Everyone wants to insert it everywhere, even where there is no need to integrate it. Sometimes, in fact, it is not only useless: it is less efficient, more fragile and more expensive to maintain than a classical finite-state algorithm. But it matters little: the important thing is to say that AI is there.   </p>

<p>To better explain what I mean, I want to start with a glaring and absolutely real example.  </p>

<p><strong>AI? No, just a while is enough: the case of the intelligent PDF </strong></p>

<p>A short time ago for a staffing company we have as a client, I was asked to develop something to help them send all the CUs. Speaking of thousands of employees you can imagine the time it would have taken from the poor administrative workers to manually unpack a PDF containing all the CUs of all the employees, and send them one by one manually.   </p>

<p>Let us then imagine that we have a textual PDF, containing thousands of Single Certifications, of each employee. Thousands of multiple documents from consecutive users. Each user has his CU that can have 8, 10, 12 pages and we want to divide it into as many PDFs as there are employees.    </p>

<p>What would a developer do?<br />First it would open the file to be split, analyze it, and notice that the first page of each user&#8217;s CU contains the tax code in the header. Good: there is a pattern! <br />What do you think then?</p>

<p><em>“Great! I write a script with a while that loops each page of the document starting from the first to the last, inside the loop I insert a regex that looks for a tax code, I validate it to make sure that what it fished for me is indeed a tax code and if the validation is successful, I mark that page as the start of a new CU of the employee. Continuing to process the other pages, as soon as I find another one, I save the whole previous block in a new PDF and send it as an attachment to an email extracting the employee&#8217;s data from the DB using as a search parameter just the tax code that I have in my nice variable and continue like that to the end.”  </em></p>

<p>Elegant solution. Linear. Readable. Reliable and above all very fast!   <br />No AI. Only structured logic, deterministic programming, and pattern analysis.   </p>

<p>Yet they wanted AI: “But can&#8217;t we use AI to automatically identify where each document starts?”</p>

<p>Of course you can use AI, but using AI to figure out from which page to which page a CU starts and ends is like equipping yourself with a laser cannon to kill an ant. Also, AI has very long inference times, compared to the deterministic algorithm that processes huge masses of data in seconds. </p>

<h2 class="wp-block-heading">But what about the costs?</h2>

<p>Of course! There are also costs! <br />Processing a document with thousands of employee CUs and tens of thousands of pages in addition to being time-consuming has costs that can be anything but insignificant. Depending on the model, one could spend even more than 500 euros to process tens of thousands of PDF pages.   </p>

<h2 class="wp-block-heading">Determinism vs. AI: two approaches compared </h2>

<p>Once it is clear that in our PDF example the simplest and most effective solution is deterministic, it is worth reflecting more generally on when it makes sense to use a logical, predictable approach and when it may make sense to introduce an artificial intelligence layer.  </p>

<h3 class="wp-block-heading">The deterministic approach</h3>

<p><strong>Logical, transparent, traceable</strong></p>

<p>A deterministic algorithm is composed of explicit rules and predictable behavior. For every known input, the output is guaranteed and replicable. It does not learn, but does exactly what you tell it to do.    </p>

<p>In the case of our PDF, the structure is clear because we have the fixed pattern of the tax code, variability is practically zero, and the target is logically definable. In these cases the deterministic approach has enormous advantages: it has a lot of computational efficiency and can therefore run successfully even on devices with minimal resources. It is reliable, easily testable, and can be debugged immediately. The whole flow is understandable even by a team not experienced in Machine Learning. And that is why going beyond this solution <strong>because we want AI</strong> is not only unwarranted but also counterproductive.      </p>

<h3 class="wp-block-heading">The AI-driven approach</h3>

<p><strong>Flexible but poorly predictable, expensive, and not always justifiable.  </strong></p>

<p>When we talk about AI we often mean systems capable of learning from examples (machine learning), generalizing patterns even in not perfectly defined contexts, handling ambiguity and noise in data. All of this is useful if and only if the data do not follow rigid patterns or patterns not known a priori, the context is chaotic, e.g., OCR on photos taken from smartphones that have unpredictable variability in quality, or lastly, explicit logic fails because the edge cases are infinite or otherwise unpredictable.   </p>

<p>In our PDF example, there is no ambiguity, no noise: using a neural network to identify the tax code is wasteful, both technically and economically.  </p>

<p>All this, however, does not stop certain companies, driven more by fashion than engineering, from coming up with solutions like, &#8220;let&#8217;s train an NLP model to recognize headers or let&#8217;s use GPT to segment documents, or let&#8217;s use a supervised classifier to figure out whether a document is the beginning or not&#8230; all to&#8230; <strong>Do what a preg_match()</strong> solves in one line of code.  </p>

<p>Let us get our feet back on the ground and remember that AI for when impressive is only a tool. There is no such thing or at any rate, at least for a developer, there should be no war between deterministic approach and AI. They are both tools&#8230; But engineering logic teaches us to choose <strong>the simplest, most effective, and most justified tool for the problem it needs to solve</strong>. AI makes sense where determinism does not reach: computer vision on fuzzy images, speech recognition, predictions based on complex time series, deep semantic analysis. But where there is a rule, a predictable structure, a valid logic, AI is not only useless: it is noise, complication and cost.       </p>

<h2 class="wp-block-heading">Intelligence is not artificial, it is by design  </h2>

<p>Artificial intelligence is an extraordinary tool, but like all powerful tools, it must be wielded judiciously. It is not a magic wand to wave over every problem, nor is it a key to slip into pitches to impress investors.   </p>

<p>There is a fundamental difference between <strong>doing innovation</strong> and <strong>pretending innovation</strong>. Today, too many solutions are thought of starting with the tool and not the problem.   <br />The result is over-engineered systems that are expensive, fragile, often also unresponsive and ultimately useless.  </p>

<p>Excuse me so much, but if you go into a company to solve problems for it and make it technologically efficient, the first thing you do is what? See where you can apply Artificial Intelligence? Or understand where the data comes from, how it moves, study how the company works, identify machinic processes that can be automated, and then propose solutions based on the problems found?  </p>

<p>I would say with my eyes closed the second one!</p>

<p>In the real world, good engineering is that which solves the problem in the simplest, most elegant and sustainable way possible. Even if it doesn&#8217;t make the news. Even if it doesn&#8217;t say AI-powered.  </p>

<p>The future of computing will not be dominated by those who stick neural models everywhere, but by those who know how to choose when they really need to. By those who have the courage to say, <em>“No, an if() is enough here.”</em> </p>

<p>Perhaps it is from this technical sobriety that a new idea of competence can be reborn: one that is measured not in buzzwords but in design clarity, efficiency, and accountability.  </p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/it-takes-ai-when-an-if-would-suffice/">“It takes AI!” &#8211; When an if() would suffice.</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Italy &#8211; Country that does not reward those who can do but those who stand out</title>
		<link>https://renor.it/en/blog/technology-society-future/italy-country-that-does-not-reward-those-who-can-do-but-those-who-stand-out/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Sun, 08 Jun 2025 21:11:19 +0000</pubDate>
				<category><![CDATA[Technology, Society & Future]]></category>
		<category><![CDATA[brain drain]]></category>
		<category><![CDATA[engineers]]></category>
		<category><![CDATA[expertise]]></category>
		<category><![CDATA[future of Italy]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[interdisciplinarity]]></category>
		<category><![CDATA[invisible talent]]></category>
		<category><![CDATA[Italian culture]]></category>
		<category><![CDATA[Italian media]]></category>
		<category><![CDATA[meritocracy]]></category>
		<category><![CDATA[personal branding]]></category>
		<category><![CDATA[personnel selection]]></category>
		<category><![CDATA[silent talent]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[tech ecosystem]]></category>
		<category><![CDATA[technical professionals]]></category>
		<category><![CDATA[university system]]></category>
		<category><![CDATA[visibility]]></category>
		<category><![CDATA[work culture]]></category>
		<guid isPermaLink="false">https://renor.it/italy-country-that-does-not-reward-those-who-can-do-but-those-who-stand-out/</guid>

					<description><![CDATA[<p>Over the years I have had the opportunity to meet extraordinary professionals: engineers who write elegant code, entrepreneurs who create scalable solutions, musicians who have played in the most important concert halls and theaters around the world; brilliant minds that no one in Italy seems to know. Why don&#8217;t we find them on the front [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/technology-society-future/italy-country-that-does-not-reward-those-who-can-do-but-those-who-stand-out/">Italy &#8211; Country that does not reward those who can do but those who stand out</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Over the years I have had the opportunity to meet extraordinary professionals: engineers who write elegant code, entrepreneurs who create scalable solutions, musicians who have played in the most important concert halls and theaters around the world; brilliant minds that no one in Italy seems to know.</p>

<p>Why don&#8217;t we find them on the front pages of newspapers? Why aren&#8217;t they invited to speak at TEDx, go on TV, fill feeds on LinkedIn? </p>

<p>I am not writing this article to express complaints but to analyze an all-Italian paradox: <strong>the best talents are often invisible</strong>. And through no fault of their own!</p>

<p>If we don&#8217;t learn to recognize, value and support truly competent profiles, we will never have a robust tech ecosystem. We will continue to reward those who talk instead of those who build. Mine is not a matter of envy or personal exclusion. It is a cultural, structural and media problem. And as such, it needs to be addressed with the right clarity.      </p>

<h2 class="wp-block-heading">The paradox of invisible talent</h2>

<h3 class="wp-block-heading">The case of interdisciplinary profiles</h3>

<p>The first major Italian paradox concerns interdisciplinary profiles: people who possess high-level skills in multiple fields, often considered distant from each other, and who manage not only to integrate them, but to create new value precisely from their contamination.  <br />In an ideal world, these figures should be highly sought after. To some extent they are but not here in Italy. Here, those who master both semiotics and artificial intelligence are looked upon with distrust.    <br />As if knowing “too much” is a fault, a sign of dissipation or, even worse, presumption.  </p>

<p>The typical statement when looking at a multidisciplinary profile is always the same: <em>“Those who do too many things do neither well!”</em></p>

<p>I wonder whether such drivel finds motivation in envy or in the deep though unconscious consciousness of mediocrity of the person uttering it? What do you know about how much time that person has taken away from amusements, outings, social life to devote himself professionally to more cultural spheres? What do you know about his abilities, his natural talent, his intelligence? How can you assume that he “failed” if you never even talked to him?   </p>

<p>In fact, the interdisciplinary profile is often the only one that can deal with complex contemporary problems. Because the real world is not zoned. A health application requires knowledge of medicine, psychology, engineering, UX, and law. An AI system may have to integrate semantics, cloud computing, language models, data management, and GDPR regulations. And who better to design truly effective solutions than a professional who has crossed multiple domains?    </p>

<p>The problem is that Italy continues to think in watertight compartments, as if we were still in the culture of the professional register, the “title,” the single specialization. The university system itself tends to build vertical, hyper-specialized figures in one language, one branch, one tool. <br />Companies, for their part, look for “hybridized figures” only <strong>after</strong> the problem has exploded, but know neither how to recognize nor value them when they knock on the door. And the media, unable to categorize them, ignore them altogether.    </p>

<p>The result? <strong>Those who excel in multiple areas remain on the margins</strong>, crushed by a system that prefers labeling to intelligence, the reassuring specialist to the cross-cutting innovator. He or she is considered “atypical,” “difficult to place,” and thus, at worst, <strong>not placed at all</strong>. </p>

<p>Yet in the history of innovation, real change has always come from hybrid minds: Leonardo da Vinci was engineer and painter, Alan Turing was mathematician and philosopher, Steve Jobs was technician and humanist, Jaron Lanier is computer scientist and musician. None of them would have a place in Italy today, in a context that demands “to be something alone,” and to make them within a LinkedIn box.   </p>

<p>Interdisciplinary talent is not only rare: <strong>it is systematically excluded</strong> from Italian public discourse. Not because it does not count, but because it <strong>does not fit into any known pattern</strong>, and the pattern here is worth more than the substance.   </p>

<p>For this reason, <strong>many of these talents act in silence</strong>, build extraordinary things without publicity, create innovative products without fanfare. Some emigrate to countries that can value them for what they are and what they deserve to represent in a meritocratic and healthy society. Others shut down. Still others, the most tenacious, build their own ecosystem around them. But all, inevitably, <strong>pay the price of a system that cannot see beyond its own nose</strong>.      </p>

<p>If we want Italy to truly become an innovative country, we must start here: <strong>stop being afraid of complexities</strong>, and learn to value those who inhabit it naturally.  </p>

<h3 class="wp-block-heading">Strong technically, humble communicatively</h3>

<p>Another category of invisible talent, perhaps the most numerous and silent, is that of <strong>professionals who are strong technically but humble in communication.</strong> People who <strong>know how to do</strong> impeccably but do not say so. They don&#8217;t do personal branding, they don&#8217;t have time or desire to record two YouTube videos every day or chase LinkedIn trends with motivational phrases or <em>Master Coach</em> pseudo-inspirations, and you want to know why? Because they would rather spend their time producing and creating something useful for the world instead of spending that time producing bar chatter.     </p>

<p>These profiles don&#8217;t <strong>sell</strong> themselves, they don&#8217;t showcase themselves, and because of this they are often <strong>bypassed by less competent but better at telling their stories.</strong> It is a well-known but still too little discussed phenomenon: in public perception, those who communicate well are worth more, even if they produce less real value.   </p>

<p>The equation is really a form of mental perversion: <em>“If you don&#8217;t expose yourself, maybe you have nothing to say.”</em></p>

<p>Totally wrong! Because those who <strong>really</strong> have <strong>something to say</strong> often do not need to say it. He just does it. He builds it. He lets it work. Those with a passion for engineering, mathematics, physics, computer science, live in an ecosystem of debugging, precision, effort, attention to detail. His priority is not to build a narrative, but to build systems. His voice is his code. His contribution is in the GitHub repository, in the cloud infrastructure, in the script that automated a process for 30000 users and that no one sees&#8230; But that so many are using.           </p>

<p>Yet these people do not <strong>emerge</strong>, are not rewarded, and often are not even sought out. In selection processes, those with 30,000 followers are seen as “influential,” those who publish daily are perceived as “active,” those who are present everywhere as “dynamic.” But the programmer who quietly optimized a semantic search engine, or who containerized an entire infrastructure with surgical precision, <strong>receives no public recognition</strong>. Because he has not sold out.     </p>

<p>Italian culture, in this, is still deeply tied to the idea that <strong>visibility coincides with value</strong>. In such a calibrated context, those who <strong>are humble are read as weak</strong>, while those who are <strong>loud</strong> <strong>are mistaken for authoritative</strong>. </p>

<p>But authority, the real thing, is something else. It is the ability to solve problems without theatrics. It is the consistency between what is said and what is delivered. It is respect for complexity, for data, for work ethic.     </p>

<p>Paradoxically, in many Italian corporate environments, <strong>hard skills are taken for granted</strong>. One looks for the “spark,” the “feeling,” the “good presentation.” And so one ends up discarding extraordinary engineers simply because they do not tell the story well. Or worse, you force these same professionals to simulate storytelling that <strong>does not belong to their character</strong>, turning them into a caricature.     </p>

<p>This has two devastating consequences:  </p>

<ol class="wp-block-list">
<li>On the one hand, <strong>companies lose real talent</strong> by hiring those who appear instead of those who know.  </li>



<li>On the other, <strong>the most valuable technicians are retiring</strong>, challenged by a world that demands them perform in form but not in substance.  </li>
</ol>

<p>If we really want to evolve as an economic and cultural system, we need to <strong>totally rethink the relationship between expertise and communication</strong>. This is not to demonize personal marketing, which indeed can be useful and legitimate, but to stop using it as the only yardstick when it is the thing that should matter least. We need to start giving a voice to those who can do, even if they do not have a voice, because behind every product that works, every service that does not break down, every algorithm that improves the lives of thousands of people, there is almost always someone working in silence who deserves to be heard instead.    </p>

<h2 class="wp-block-heading">The 7 reasons why real talent in Italy remains invisible</h2>

<p>After describing the types of invisible talent, it comes naturally to ask: <strong>why do these figures not emerge in Italy?</strong><br />It is not a matter of chance or bad luck. It is a whole system: social, economic and cultural, which tends to neutralize genuine merit, especially when it does not conform to dominant models.   </p>

<p>I have identified 7 main reasons&#8230;</p>

<h3 class="wp-block-heading">1. The culture of appearance has replaced that of content</h3>

<p>In Italy, form too often matters more than substance. We reward those who communicate best, not those who have the most expertise. A catchy pitch, a well-written profile, a CV written by a copywriter can be worth more than years of experience in the field. The result? Those who work hard and communicate little are systematically outperformed by those who “know how to sell themselves” but then in the field are unable to get anything done.      <br /><br /><em>If you don&#8217;t talk about yourself, no one will talk about you. But those who do well often have more to do than waste time self-promoting. </em></p>

<h3 class="wp-block-heading">2. Hyperspecialization is rewarded, cross-sectional view is suspect</h3>

<p>Our educational and professional system trains vertical specialists, to be pigeonholed into specific roles, and those who are more gifted cannot be seen as someone who has succeeded on more fronts. Those who can multi-task are viewed with distrust: “but so what are you really?”   </p>

<p>In other countries around the world, someone who integrates different skills is called an <strong>innovator</strong> or <strong>system thinker</strong>. In Italy he is a “confuso.”   </p>

<p><em>Hybrid talent is not valued because it cannot be labeled. But therein lies its strength, and those who have to evaluate it often lack skills to seize the opportunity.   </em></p>

<h3 class="wp-block-heading">3. Meritocracy? Just a system for filling one&#8217;s mouth and throwing populist phrases around </h3>

<p>Many selections (of personnel, calls for applications, awards) are driven by personal relationships, seniority or membership in circles. Those who really have value, but know no one, <strong>stay out of the dynamics that matter</strong>. <br />The skill itself is never enough. You need the contact, the push, the recommendation. And those who do not seek shortcuts often remain in the shadows.     </p>

<p><em>Talent that is not connected risks not even being seen.</em></p>

<h3 class="wp-block-heading">4. The media system is culturally unprepared for monto tech</h3>

<p>Generalist journalists can&#8217;t tell the difference between an open source library and a token strartup. They invite those who “speak well,” not those who implement complex solutions.   <br />The stories that make headlines are not those of the engineer who has made something that impacts the well-being of the world, but those of the 20-year-old who says he “founded a startup on blockchain” but does not even have a working draft product in hand yet.  </p>

<p><em>Technical language is filtered through the media as “boring” or “difficult,” then ignored.  </em></p>

<h3 class="wp-block-heading">5. Innovation is still seen as the exception, not the rule</h3>

<p>In many Italian contexts, real innovation is scary. Automating processes, making efficiency transparent, eliminating bureaucracy means <strong>threatening privileges</strong>, reducing margins, breaking balances. Those who propose effective solutions are perceived as “dangerous,” and often boycotted by those who live off rents or inefficiencies.    </p>

<p><em>Talent simplifying complexity, in a system built on complexity, is a political problem.</em></p>

<h3 class="wp-block-heading">6. Silent success does not make headlines</h3>

<p>Those who make careers without being noticed, without sponsorship, without media exposure, are not told. He is not interested. Italy loves extreme narratives: either the “false self-portrayed genius” to be covered or the “loser” to be pitied. The figure of the serious, competent, ethical and reserved professional does not fit the public narrative.     </p>

<p><em>Those who work well but quietly are not narrated in Italy. And what is not narrated, does not exist. </em></p>

<h3 class="wp-block-heading">7. There is no structured supply chain to intercept and enhance authentic talent</h3>

<p>In the absence of true technical incubators, serious cultural scouting, and disinterested mentorship, talents must <strong>create their own opportunity, visibility, and path.</strong> </p>

<p>Those who are brilliant but lack communication or networking tools <strong>stay out of the flow.</strong> In other countries there are accelerators, grants, bridging universities. In Italy, often only chance or personal resilience ultimately make the difference.    </p>

<p><em>Talent unaccompanied by strategic relationships today has a very low survival rate.  </em></p>

<p><strong>In summary</strong></p>

<p>The problem is not that Italy lacks talent; the problem is that we do not have a system capable of identifying them, listening to them, involving them, rewarding them and giving them the public space they deserve. The result is a paradox: we have extraordinary people who produce real value, but no one knows them ending up investing their time and extraordinary mental energy in other countries of the world producing wealth. Meanwhile, in Italy, visibility, recognition, funding and media attention end up in the hands of those who tell it best, not those who build wealth, because we are just a people of chattering charlatans.    </p>

<p>If we continue like this, we will lose the best we have.  </p>

<p></p>

<h2 class="wp-block-heading">What happens in other countries: where quiet talent is recognized.</h2>

<p>The invisibility of technical and interdisciplinary talent is not a universal condition, thank God! In many countries with more mature digital ecosystems, there are supply chains, tools, and a culture that allow even the quietest, most secretive or atypical profiles to emerge, be heard, funded, valued, and exposed in the media.   </p>

<h3 class="wp-block-heading">United States of America: systemic scouting and outcome culture</h3>

<p>In the U.S., the entire innovation ecosystem-from universities to VC funds-is built to ferret out those who can do, even if they can&#8217;t talk.  </p>

<p>Universities like MIT, Stanford, Berkley monitor ideas, not likes. If a student develops an interesting and scalable solution, they connect him or her with incubators, advisors, and potential investors.   </p>

<p>Venture capital funds do not rely on how many videos the founder posted on YouTube and how many likes he or she received; they look at prototypes, metrics, and technical scalability. It is very common for an introverted CTO to become a co-founder of a successful startup because he or she is <strong>good at what it takes</strong>.   </p>

<p>Grants and fellowships exist for innovators who work quietly: you don&#8217;t need a fanbase, you just need a well-constructed and documented idea.  </p>

<p>Basically there where in Italy you would say “you have to know someone,” in the U.S. there is an active meritocratic principle: “if you build it and it works, someone will notice” (if you build something and it works, someone will notice).  </p>

<h3 class="wp-block-heading">Germany: enhancement of engineering expertise</h3>

<p>In Germany, the concept of Fachkompetenz (specific technical competence) is culturally central. People are not judged by their visibility but by the quality of their work.   </p>

<p>German companies reward medium- to long-term technical figures, even if they are not very visible, as long as they demonstrate methodological rigor and implementation skills.  </p>

<p>Growth pathways are designed for those who deliver value, not for those who tell it well in meetings. The dual education system (university + corporate experience) also allows non-academic profiles to emerge, as long as they are competent.   <br />A software engineer or embedded designer who writes little but designs well has a career in Germany. In Italy, often not. </p>

<h3 class="wp-block-heading">The Netherlands and Northern Europe: culture of transparency and inclusion of merit</h3>

<p>In the Netherlands, Sweden, and Finland, transparency and meritocratic inclusion are central to talent selection and development.  </p>

<p>Public and private incubation and startup support systems are often open-call, with technical and unbiased evaluation, not relational. Companies are structured to foster collaboration among atypical figures, not to force them within predefined roles.   </p>

<p>Universities connect students and companies through hands-on projects, facilitating the emergence of those who really build. In such contexts, talent is not a communication issue: it is an objective fact to be intercepted and nurtured.   </p>

<h3 class="wp-block-heading">What about in Italy?</h3>

<p>In Italy, on the contrary, universities seldom dialogue with the business world in a practical and profound way. Investment funds tend to look for “charismatic” figures, with a ready-made pitch and a good public image. Companies do not know how to integrate atypical profiles: those who do not fit the formats are excluded.    </p>

<p>The problem is not that Italy does not have talent; it does. The problem is that it does not have cultural, structural and media tools to identify them, listen to them, help them grow.   </p>

<p>In more advanced countries, quiet talent is a resource to be cultivated. In Italy, it is an anomaly to be ignored. And that is why it too often goes away.    </p>

<h2 class="wp-block-heading">The consequences of this silence</h2>

<p>Ignoring real talent is not just an ethical failing. It is a <strong>SUICIDE STRATEGY</strong>, especially in an economy increasingly based on knowledge, &#8216;innovation and adaptability. When a country does not value those who can do, it not only loses human capital, it condemns itself to stagnation, to chasing instead of leading.    </p>

<p>Those who have vision, method, competence and constructive spirit do not wait indefinitely. After years of frustration, he chooses to leave. And he does so quietly without proclamations.    </p>

<p>The brain drain that we talk so much about is not only quantitative, but qualitative: the best, most pliant, most ethical, most determined profiles leave. The damage is twofold: we lose value and strengthen competition.   <br />Every invisible talent that goes away is a startup that will not be born, a solution that will not be developed, um young person who will lose a mentor.  </p>

<p>When selecting based on visibility or cultural alignment, companies end up surrounding themselves with reassuring but not transformative figures. The result is an organization that works “enough,” but does not grow, innovate, or change. And that remains vulnerable. Companies without real talent are companies that stay up only until a crisis comes along or a serious competitor that has talent and innovates.     </p>

<p>If capital follows visibility and not substance, the entire investment ecosystem gets drugged. Projects with great storytelling but little real impact are funded, and solid, useful, well-designed but “unsexy” solutions are ignored because they are poorly presented and undressed. The result is a distorted marketplace where those who can sell win, not those who can do.    </p>

<p>Every euro wasted on a fluff startup is one euro less to a concrete project that could have changed things.  </p>

<p>A system that exalts stage gurus, LinkedIn influencers who do nothing but post boorish phrases with a nice signature “silhouetted” with Illustrator tracing, serial trainers with no real track record, do not generate technical culture but only bar talk that serves no purpose.  </p>

<p>Those who study, those who want to build something, those who dream of doing real business find no concrete references, and often give up or fall in line with the winning model: visibility before real skills.  </p>

<p>In this way, excluded talent is not only injured, it becomes challenged, and those who lose confidence stop proposing, teaching and leading. A perverse spiral is created: the more silent talent is ignored, the less others will have the courage to emerge. You lower the general level and feed a system that first well-worn mediocrity.    </p>

<p>We are a country with enormous intellectual capital: excellent universities, a strong technical culture, widespread creativity, digital artisans of the highest caliber. But we don&#8217;t know how to transform this heritage into a modern ecosystem, because those who can do are left on the sidelines. The result is an Italy that never innovates and always ends up chasing, and while others increase the pace we will always continue to lag behind.    </p>

<p>The disappearing talent is a collective loss, it is a missed opportunity for everyone. For a business that could have grown, for a school that could have trained better, for the country that could have begun to reverse its withering trend. Losing talent today means having no future tomorrow. To whom do we leave the Italian productive fabric? To the TikToker that does live while playing Playstation?    </p>

<h2 class="wp-block-heading">What we can do: five ways to enhance real talent</h2>

<p>So far we have denounced a system but it is not enough, viable alternatives must be proposed&#8230;.</p>

<p>Anyone who works passionately in the world of innovation, whether an entrepreneur, developer, lecturer or manager, can help reverse this trend.  </p>

<h3 class="wp-block-heading">1. Create independent maps of silent talents</h3>

<p>We need a public and meritocratic mapping tool that collects projects, open-source contributions, and real solutions developed by Italian professionals, even and especially if they are not famous. An Italian GitHub with filters for impact, originality, complexity. An archive that brings out those who really work, and not just those who communicate. In other words, a radar is needed!   </p>

<h3 class="wp-block-heading">2. Recognize those who build value, not those who make bar talk</h3>

<p>The media, awards, incubators, and universities need to review the criteria by which they select stories to tell. We need to start rewarding those who have created something that works, field-tested algorithms, solid digital infrastructure. Personal branding is fine, but it can no longer be the main yardstick for selection. A working project is worth more than 1,000 videos with barroom chatter; let&#8217;s acknowledge it publicly and give Caesar his due.     </p>

<h3 class="wp-block-heading">3. Foster models of ethical mentorship, not co-optation</h3>

<p>The best must become mentors. Those who have built real value must help other talent grow. But an ethical model is needed, where recognition is based on merit, not personal connection.    <br />Incubators, foundations, cmaere of commerce, can start open and transparent technical mentorship networks. The light should be shone on real talent.   </p>

<h3 class="wp-block-heading">4. Incorporating ethics and multidisciplinarity into educational pathways</h3>

<p>Schools and universities must start teaching not just notions, but bridges between disciplines. A designer of the future cannot fail to know the fundamentals of ethics, AI, and inclusive design. Doing so trains generations capable of hybridizing, innovating, choosing, and not just executing.    </p>

<h3 class="wp-block-heading">5. Changing the cultural narrative of excellence</h3>

<p>Change must be narrative. We need to tell stories of quiet talent, not just financial climbs and million-dollar exits. We need a new imaginary where value does not coincide with exposure, but with competence, method and responsibility. It is time to say, publicly and forcefully, that Italy has talent, but no one is listening.     </p>

<h2 class="wp-block-heading">When silence is no longer a mistake but a condemnation</h2>

<p>We talked about talent, invisibility, systems that don&#8217;t work. We proposed solutions, listed best practices, suggested possible directions&#8230; </p>

<p>But the stark truth is that <strong>in Italy, this will probably never happen</strong>.</p>

<p>Not for lack of ideas. Not because of a shortage of talent. But because of an even more entrenched fact: <strong>the majority does not want it.</strong>  </p>

<p>Italy is a country where priorities are reversed, where mediocrity is passively accepted as the norm. Where careers are made not by what you know, but by who you know. Where competence is viewed with suspicion and fear, ethics as an obstacle, culture as a useless fad.    </p>

<p>A country where people <strong>do not vote for change</strong>, but take to the streets for a game, where influencers who sell hooey are financed and technicians who solve real problems are ignored. Where corruption is not the exception, but the accepted operating model for entire production and institutional chains.   </p>

<p>Italy today is not a system that has gone in the wrong direction; it is a system that <strong>does not want to change</strong>. And when a system does not want to change, change comes sooner or later anyway, but not from within; it comes a   <strong>Collapse. From a crisis. From a radical destruction.    </strong></p>

<p>Perhaps then, only when there will be nothing left to protect, no privileges left to defend, no rents left to maintain, <strong>will someone</strong> start <strong>building again</strong> and we will start clinging to the talents, the only ones who have real skills to be able to measure up to such a complex reconstruction. And they will do so, as usual, not to be seen, but because there will be no one else left who is willing to do so, and perhaps, from that pile of ashes, <strong>a country</strong> will finally arise <strong>that recognizes its best talents</strong>. Not out of convenience, but out of necessity&#8230;.  </p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/technology-society-future/italy-country-that-does-not-reward-those-who-can-do-but-those-who-stand-out/">Italy &#8211; Country that does not reward those who can do but those who stand out</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Digital marketing: how to distinguish the method from the hoax</title>
		<link>https://renor.it/en/blog/marketing-business-digital/digital-marketing-for-engineers-data-driven-strategies/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Sun, 08 Jun 2025 09:57:56 +0000</pubDate>
				<category><![CDATA[Marketing, Business & Digital]]></category>
		<category><![CDATA[A/B testing]]></category>
		<category><![CDATA[advertising campaigns]]></category>
		<category><![CDATA[artificial intelligence marketing]]></category>
		<category><![CDATA[B2B marketing]]></category>
		<category><![CDATA[conversion funnel]]></category>
		<category><![CDATA[data analysis]]></category>
		<category><![CDATA[data-driven marketing]]></category>
		<category><![CDATA[digital marketing]]></category>
		<category><![CDATA[digital scams]]></category>
		<category><![CDATA[digital strategies]]></category>
		<category><![CDATA[engineers and marketing]]></category>
		<category><![CDATA[Facebook campaigns]]></category>
		<category><![CDATA[fake marketing experts]]></category>
		<category><![CDATA[Google Ads campaigns]]></category>
		<category><![CDATA[KPI tracking]]></category>
		<category><![CDATA[lead generation]]></category>
		<category><![CDATA[marketing automation]]></category>
		<category><![CDATA[marketing consulting]]></category>
		<category><![CDATA[marketing engineering approach]]></category>
		<category><![CDATA[marketing experiences]]></category>
		<category><![CDATA[marketing for SMEs]]></category>
		<category><![CDATA[marketing guru]]></category>
		<category><![CDATA[ROI marketing]]></category>
		<category><![CDATA[serious marketing]]></category>
		<category><![CDATA[user profiling]]></category>
		<guid isPermaLink="false">https://renor.it/digital-marketing-for-engineers-data-driven-strategies/</guid>

					<description><![CDATA[<p>For professional reasons, I&#8217;ve had to approach the world of Digital Marketing, although I do not, I admit, consider it an area that particularly excites me from a technical point of view. The real satisfaction, in this area, lies in the concrete verification that a methodically thought out, designed and implemented strategy really works and [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/marketing-business-digital/digital-marketing-for-engineers-data-driven-strategies/">Digital marketing: how to distinguish the method from the hoax</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>For professional reasons, I&#8217;ve had to approach the world of Digital Marketing, although I do not, I admit, consider it an area that particularly excites me from a technical point of view. The real satisfaction, in this area, lies in the concrete verification that a methodically thought out, designed and implemented strategy really works and generates tangible results.  </p>

<p>From an engineering point of view, the operational activity often consists of relatively ordinary operations: integration of third-party APIs, collection and recording of data in a database, and subsequent processing. Nothing particularly challenging or innovative for those accustomed to designing complex software architectures or distributed systems.   </p>

<p>However, it is important to clearly distinguish those who work seriously in Digital Marketing from those who improvise themselves as “experts” or “gurus.” We can identify at least <strong>three categories of practitioners</strong> who populate the environment today, especially on platforms such as LinkedIn&#8230; </p>

<h2 class="wp-block-heading">The serious and competent professionals</h2>

<p>They are data-driven practitioners who are able to combine creativity and analytical rigor. They use advanced tracking tools, implement customized strategies, constantly test solutions through A/B testing and measure each activity based on concrete KPIs. To date, many of them also skillfully integrate AI. Their work is based on a method, not on false sailor promises.   </p>

<h2 class="wp-block-heading">The smoke sellers</h2>

<p>Self-proclaimed experts, often with pompous titles invented through neologisms such as <em>Master Coach Marketing Strategist</em>or similar, present content devoid of any substance. They offer free webinars in which they propose a “magic method” applicable indiscriminately to those who sell fruit as to those who develop software or manage complex B2B consulting.   </p>

<p>These figures exploit persuasive techniques (attacking only with those who do not even have a clue what digital marketing really is), aggressive sales funnels with emails sent daily and sometimes multiple times in the same day, without providing any real metrics or verifiable documentation.  </p>

<h2 class="wp-block-heading">How to navigate if you are not an expert in the field?</h2>

<p>If you are considering adopting digital marketing strategies and are not in the business, or at any rate have never heard of them in depth, I recommend some best practices.  </p>

<ul class="wp-block-list">
<li>First always check references, ask for documented success stories and real clients from whom you can go and ask for feedback.  </li>



<li>Always ask for a customized proposal and be wary of pre-packaged solutions; by necessity, the marketing strategy of the carpet salesman who has the store under your house cannot be the same as that of a doctor&#8217;s office.  </li>



<li>Assess listening skills because a good consultant will ask you many questions before giving you answers. No one before they know thoroughly what you are about will be able to tell you a marketing strategy to undertake.   </li>



<li>Always analyze the data! Always ask for performance indicators, timelines, estimated costs and expected results. Especially expected results, there is no way you can give them with a reliable margin of prediction (5% &#8211; 10%) even before you have published a test campaign. Theoretical data are so much affected by error that they lose all statistical significance. For example, a statement such as “<em>I will bring you 5 leads per day with a 50% margin of error</em>” implies such a wide confidence interval (2.5 to 7.5) that the prediction is almost unusable. In statistical terms, a relative error of 50% indicates a <strong>very high variance</strong> from the expected value, greatly reducing the significance of the estimate. It is like saying that the probability of rain tomorrow is 50%: such information provides no decision-making advantage over pure chance.. So it is equally likely to be sunny     <br /></li>
</ul>

<p></p>

<p>This last point deserves a separate paragraph&#8230;.  </p>

<ul class="wp-block-list">
<li>Use verification tools; even the use of artificial intelligence to do a “deep search” on the consultant or agency can be useful to protect yourself by asking whether testimonials are self-referenced or given by companies that have been clients. We are all capable of painting ourselves as infallible monsters and vertical professionals, but words must always be backed up by actions.   </li>
</ul>

<p>Despite all these checks and balances, the results may not necessarily come, because at the end of it all ROI also depends on the product or service you are selling. If it has no grip on the market because the market is not interested there is little you can do. </p>

<h2 class="wp-block-heading">A personal experience</h2>

<p>Years ago I attended, through the company I worked for, a conference organized by a well-known marketing agency. The (ticketed) event turned out to be little more than a promotional moment for the agency itself.   </p>

<p>Small business owners took turns on stage to testify about their achievements: in some cases, “successes” quantified as 3,000 euros in monthly sales. With all possible respect for the work and vision of other entrepreneurs, it is very difficult to consider these figures an achievement for a business to brag about.   </p>

<p>The lack of real training content left me rather perplexed and reinforced my belief that, in marketing, as in other fields, we need to be able to distinguish between professionalism and self-referential storytelling.  </p>

<h2 class="wp-block-heading">What comes to question?</h2>

<p>I am continually inundated with LinkedIn requests from people who introduce themselves, even before I have answered them a banal “good morning,” promising resounding results when they don&#8217;t even know who I am, they don&#8217;t know my company and what it does in the field, and they often present me, in addition to marketing, with services in the IT field that I also offer: a hallmark of the fact that they have applied a simple copy and paste of a message to which they have probably changed only the name of the recipient, having completely glossed over verifying what my credentials and my work are. It&#8217;s basically like walking into a pork store and trying to sell the owner a pound of bologna. </p>

<p>Honestly today I don&#8217;t spend any more time responding to these “charlatans,” but in times past I used to have fun with them by saying, <br /><em>“Okay, if you are so sure you are bringing me all these clients by painting yourself as a Master Coach Marketing Strategist, then let&#8217;s say I pay you on results achieved. If you are certain that you have this foolproof method, then it shouldn&#8217;t be a problem for you if I pay you on results achieved.”</em></p>

<p>Obviously the message is clearly provocative, but I am of the opinion that to absurd question one replies with an absurd answer; and of course everything deflates immediately.</p>

<p>At this point one wonders? Is it possible that people do not understand what digital marketing is? I mean. The term itself suggests it: take traditional marketing made up of flyers, brochures, and digitize it with search and advertising campaigns. Could you ever give reliance to someone who prints and distributes flyers and promises to increase your sales tenfold without knowing what you are in the business of and how many flyers you intend to print and distribute? Then bearing in mind the fact that closing the lead then also depends on your ability to convert them with a serious and credible presentation of the product or service you are selling.    </p>

<h2 class="wp-block-heading">Let&#8217;s have clarity!</h2>

<p>In digital marketing, there are different types of campaigns that can be implemented, but they all basically fall into two macro-categories:</p>

<ul class="wp-block-list">
<li>Research campaigns</li>



<li>Advertising campaigns</li>
</ul>

<p>Search campaigns are part of that branch called “Direct Marketing.” Your site or landing page appears on search engines as a sponsored result the moment a user searches for one of the keywords you have used to define your marketing campaign.   </p>

<p>Advertising campaigns, on the other hand, are part of that branch called “Indirect Marketing.” In this case, there is no interest on the part of a user in searching for a product or service online. This type of campaign can be seen as the digitization of leafleting. How many times have you happened to go to Facebook or LinkedIn and see sponsored posts selling products or services?   </p>

<p>Certainly digital marketing has undeniable advantages:  </p>

<ul class="wp-block-list">
<li>Today, most people search for information on the Internet with their smartphones</li>



<li>Of these, most regularly use social</li>
</ul>

<p>Big brands like Google and Facebook invest in data. They store any interaction you have made with the page to create a virtual profile of you. If you&#8217;re googling or even if you&#8217;re talking about animals, it&#8217;s very likely that you&#8217;ll find personalized ads about pet gadgets, pet food.    </p>

<p>Big brands know you perhaps better than you know yourself, and this information is gold for those who have to do a marketing campaign because they can profile it to all the users who have those specific interests. You couldn&#8217;t do that with leafleting.  </p>

<p>In digital marketing, you can also sector by geographic location, but more importantly, the result depends heavily on the budget you decide to invest.  </p>

<p>Distributing 10,000 leaflets has a different coverage and response than distributing a million, and underlying this difference is a different economic investment.  </p>

<p>This is why I keep recommending that you be wary of those who come with a ready-made <em>“magic solution”</em> without even knowing who you are.  </p>

<p>But let us come to the central point of this article&#8230;.  </p>

<h2 class="wp-block-heading">Why are engineers at an advantage?</h2>

<p>You will have realized that the proper channeling of a marketing campaign requires an approach geared toward reading and understanding data.  </p>

<p>Well, those with a high technical-information training start from an advantageous position for several reasons:  </p>

<ul class="wp-block-list">
<li>An engineer is used to thinking in terms of models, hypotheses and testing. This modus operandi fits perfectly with data-driven marketing, where every action must be able to be measured, tested and optimized over time.   </li>



<li>Where a traditional marketer needs the support of an engineer to integrate a tracking pixel, set up an API call or create a conversion script, an engineer can do it himself, reducing time, cost and margin for error.  </li>



<li>Knowledge of databases, languages such as Python, or data analysis tools (BigQuery, Data Studio, Grafana, etc.) make it possible to build custom pipelines for campaign analysis, optimize funnels, monitor real-time performance, and trigger automated alerts. In addition, artificial intelligence today can automatically place corrections based on the analyzed data. For example, it is possible to use meta APIs to automatically adjust the “pitch” of certain campaigns to make them perform better.    </li>



<li>An engineer knows how to properly size the environment in which landing pages, CRMs; lead scoring or email automation systems run, and this is a really crucial aspect when running high-traffic campaigns. The risk otherwise is to work with an undersized system that burns leads because it cannot serve all incoming requests.   </li>



<li>Optimizing budgets and resources is a priority shared by those who design systems in engineering and those who manage digital campaigns: A/B testing, cost allocation, ROI performance, all require the same logic of efficiency and control.  </li>



<li>An engineer knows how to integrate artificial intelligence-based chatbots that enable 24/7 natural language conversations with all the people who want more information about the product in real time, without latency.</li>



<li>While many marketers rely completely on prepackaged platforms, the engineer can build taylor-made tools that are perfectly tailored to the needs of the business, avoiding constraints and hidden costs.  </li>
</ul>

<h2 class="wp-block-heading">Conclusion</h2>

<p>In the age in which we live, where information and data are the real wealth but where true expertise is rare, distinguishing those who market seriously from those who build illusions is everyone&#8217;s responsibility: entrepreneurs, technicians, consultants and industry professionals.  </p>

<p>Digital marketing is not a magic formula, nor is it a set of tools to “turn on and forget.” Rather, it is an ever-evolving ecosystem that requires rigor, study, adaptability and a solid technical foundation. In this context, the contribution of an engineering profile can be instrumental in turning insight into strategy, strategy into process, and process into concrete and measurable results.    </p>

<p>My advice is very simple: before relying on the first guy who comes along and promises resounding results, ask questions, analyze the numbers and check the facts, because the first red flag is hidden right behind his promise. And if you feel uneasy about evaluating digital proposals or offerings, confront those with a technical background: it may save you time, resources and, most importantly, disillusionment.   </p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/marketing-business-digital/digital-marketing-for-engineers-data-driven-strategies/">Digital marketing: how to distinguish the method from the hoax</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sexy according to algorithm: the new aesthetic created by those who watch us</title>
		<link>https://renor.it/en/blog/artificial-intelligence-algorithms/sexy-according-to-algorithm-the-new-aesthetic-created-by-those-who-watch-us/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Fri, 06 Jun 2025 13:07:40 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence & Algorithms]]></category>
		<category><![CDATA[aesthetic models]]></category>
		<category><![CDATA[aesthetics]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI image]]></category>
		<category><![CDATA[AI prompt]]></category>
		<category><![CDATA[AI-generated models]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[attraction]]></category>
		<category><![CDATA[beauty]]></category>
		<category><![CDATA[collective imagination]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[Deep Learning]]></category>
		<category><![CDATA[desire]]></category>
		<category><![CDATA[digital aesthetics]]></category>
		<category><![CDATA[digital pgotography]]></category>
		<category><![CDATA[femininity]]></category>
		<category><![CDATA[generative art]]></category>
		<category><![CDATA[Monica Bellucci]]></category>
		<category><![CDATA[neural networks]]></category>
		<category><![CDATA[objectivity]]></category>
		<category><![CDATA[sex appeal]]></category>
		<category><![CDATA[sexy]]></category>
		<category><![CDATA[society and beauty]]></category>
		<category><![CDATA[subjectivity]]></category>
		<category><![CDATA[symmetry]]></category>
		<category><![CDATA[visual culture]]></category>
		<category><![CDATA[woman generated by AI]]></category>
		<guid isPermaLink="false">https://renor.it/sexy-according-to-algorithm-the-new-aesthetic-created-by-those-who-watch-us/</guid>

					<description><![CDATA[<p>This woman does not exist. Yet you can&#8217;t stop looking at her. This will be a non-technical article for those who are approaching or want to know more about artificial intelligence. Within a few years, AI has learned to generate images of women that are so realistic, seductive and perfectly composed that they can be [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/sexy-according-to-algorithm-the-new-aesthetic-created-by-those-who-watch-us/">Sexy according to algorithm: the new aesthetic created by those who watch us</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">This woman does not exist. Yet you can&#8217;t stop looking at her.   </h2>

<p>This will be a non-technical article for those who are approaching or want to know more about artificial intelligence. Within a few years, AI has learned to generate images of women that are so realistic, seductive and perfectly composed that they can be mistaken for real models. But how does a machine, devoid of emotions, desires or sensory experience, <em>understand</em> what it means to “be sexy” to the point of actually generating an image that evokes this status?  </p>

<h2 class="wp-block-heading">The answer is in the data</h2>

<p>AI does not wish to &#8230; It calculates; and to do so, it has seen millions of images, from Renaissance portraits to selfies on Instagram, from early Playboy covers to fashion photographs. Every curve, every pose, every look, has been broken down into vectors, metrics, weights and statistical correlations. When you ask the AI to create a photo of a sexy woman, the algorithm doesn&#8217;t invent anything, it merely reassembles the global average desire.     </p>

<p>The picture we get is therefore an average of traits, physical proportions, breast size, makeup, etc. that fall within the average desire of people in the world.  </p>

<p>This obviously raises a philological issue&#8230;</p>

<h2 class="wp-block-heading">Who decides what is sexy and what is not?</h2>

<p><em>“<strong>Beauty is subjective</strong>,”</em> how many of you have never heard this phrase? It is said so many times that it is now considered to be self-evident, true no matter what.   </p>

<p>I disagree! Because if beauty were truly subjective, then we would also have to accept the idea that a person universally recognized as beautiful could be called ugly. But no. There are limits, even to subjectivity.   </p>

<p>We take our Monica Bellucci at the height of her beauty.</p>

<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="674" height="1000" src="https://renor.it/wp-content/uploads/2025/06/image.webp" alt="Monica Bellucci" class="wp-image-725" style="aspect-ratio:16/9;object-fit:contain" srcset="https://renor.it/wp-content/uploads/2025/06/image.webp 674w, https://renor.it/wp-content/uploads/2025/06/image-202x300.webp 202w" sizes="auto, (max-width: 674px) 100vw, 674px" /></figure>

<p>If beauty were subjective this would mean that there would have to be someone in the world capable of believing that Bellucci could be given the appellation “Ugly.”  </p>

<p>I understand that there may be people who, whether out of personal preference or dislike, may <strong>prefer</strong> other types of beauty. There are those who may prefer a blonde, there are those who may prefer smaller or even larger breasts, but to call Bellucci as “Ugly” may only be a sign of envy (if pronounced by females) or dislike (if pronounced by males) but in reality both know that Monica Bellucci is anything but ugly.   </p>

<p>By this reasoning I derive that the subjectivity of aesthetics exists with certain limitations. We brought the example of Bellucci, but we could have talked about Angelina Jolie, Cindy Crawford, Naomi Campbell, Charlize Theron, as for other male aesthetic reference points such as Gabriel Garko, Paul Newman, Alain Delon, Henry Cavill, etc. etc. True aesthetics is in my opinion something objective: the “beautiful” is beautiful by definition.   </p>

<p>Then there is also a statistical reason&#8230;. If 99% of the world&#8217;s population identifies aesthetic sense in a person, then that person can be said to retain objective <strong>aesthetic characteristics</strong>.   </p>

<h2 class="wp-block-heading">Beauty according to AI</h2>

<p>Who, then, decides what is sexy when it is a machine watching us that creates it? We are the ones who decide it. We are the ones who educate the algorithm, and the AI merely returns a mirror to us: it shows us the traits of what is statistically considered sexiest by most of the world. An AI-generated woman is a collective portrait of our unconscious taste.     </p>

<p>Beauty, they used to say, is in the eye of the beholder. But today those eyes are digital and learn fast! </p>

<p>Sexy According to Algorithm is a journey into a new aesthetic: made of prompts, neural networks, and desires that we can no longer distinguish from reality.  </p>

<p>How about you? Do you really think beauty is subjective? Or has artificial intelligence revealed something we don&#8217;t want to admit?  </p>

<p>Because this woman does not exist, but she still seduces us.</p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/sexy-according-to-algorithm-the-new-aesthetic-created-by-those-who-watch-us/">Sexy according to algorithm: the new aesthetic created by those who watch us</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The projects we like</title>
		<link>https://renor.it/en/blog/marketing-business-digital/the-projects-we-like/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Wed, 04 Jun 2025 21:36:48 +0000</pubDate>
				<category><![CDATA[Marketing, Business & Digital]]></category>
		<category><![CDATA[cold chain]]></category>
		<category><![CDATA[cold rooms]]></category>
		<category><![CDATA[compute module 4]]></category>
		<category><![CDATA[CPU temperature]]></category>
		<category><![CDATA[dissipation calculation]]></category>
		<category><![CDATA[electronic condensate]]></category>
		<category><![CDATA[electronic laboratory]]></category>
		<category><![CDATA[electronic stress test]]></category>
		<category><![CDATA[electronics and cold]]></category>
		<category><![CDATA[embedded device development]]></category>
		<category><![CDATA[engineering projects]]></category>
		<category><![CDATA[extreme environments]]></category>
		<category><![CDATA[hardware design]]></category>
		<category><![CDATA[heat dissipation]]></category>
		<category><![CDATA[humidity sensor]]></category>
		<category><![CDATA[industrial electronics]]></category>
		<category><![CDATA[insulating gel]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[moisture protection]]></category>
		<category><![CDATA[passive heat sink]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[refrigerated trucks]]></category>
		<category><![CDATA[robust design]]></category>
		<category><![CDATA[temperature monitoring]]></category>
		<category><![CDATA[thermal insulation]]></category>
		<category><![CDATA[thermal tests]]></category>
		<guid isPermaLink="false">https://renor.it/the-projects-we-like/</guid>

					<description><![CDATA[<p>For one of our clients, we are developing a device to be installed inside cold rooms and refrigerated trucks, with the task of constantly monitoring temperature and humidity to ensure that the cold chain is maintained. A project that, on paper, might seem quite simple: a microcontroller, a sensor to detect temperature and humidity, is [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/marketing-business-digital/the-projects-we-like/">The projects we like</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>For one of our clients, we are developing a device to be installed inside cold rooms and refrigerated trucks, with the task of constantly monitoring temperature and humidity to ensure that the cold chain is maintained.  </p>

<p>A project that, on paper, might seem quite simple: a microcontroller, a sensor to detect temperature and humidity, is a Python script that sends data to the cloud at regular intervals.<br/>Perfect no? Not really! If we implemented it that way, it would be very short-lived. As they say. It would last <em>“from Christmas to Boxing Day.”</em>    </p>

<p>Why? The reason is quickly stated: electronics and humidity have never gotten along well, and in industrial cold rooms temperatures can easily drop below -20°C. Quite a chill in short&#8230;  </p>

<h2 class="wp-block-heading">First-impact solutions?</h2>

<p>The first concrete action was to search the market for hardware components designed specifically for hostile environments, capable of operating over a particularly wide thermal range.  </p>

<p>One of the most interesting options is the Compute Module 4 Extended Temperature version, recently introduced by the Raspberry Foundation. This module is certified to operate in a range from -40°C up to +85°C.<br/>When the upper threshold is exceeded, an automatic clock reduction mechanism kicks in, which is useful for containing the thermal rise and keeping the system stable, but sacrificing processing speed.   </p>

<h2 class="wp-block-heading">Problem already solved then?</h2>

<p>In part, yes, we have addressed and solved the issue of temperature, but that of humidity still remains open. To protect electronics effectively from condensation, seepage, and external agents, one more measure is needed. </p>

<p>The solution adopted is to immerse the entire circuitry in an electrical insulating gel, more specifically a low-viscosity two-component polyurethane gel designed to seal and protect junction boxes, connectors and PCBs from water, moisture, dust and other critical environmental factors.  </p>

<p>At first glance, it seems like an ultimate solution: just buy the right two-component, apply it, and the moisture problem would seem to be solved.<br/>But even here, the reality is quite different&#8230;</p>

<h2 class="wp-block-heading">Solved one problem, another problem arises again</h2>

<p>The moment we solved the problem of humidity, the problem of thermal management came up again in a new guise.  </p>

<p>That&#8217;s right, because the insulating gel, in addition to shielding from moisture, is also an excellent thermal insulator. This means that once the electronics are immersed in the gel, heat exchange with the outside becomes extremely inefficient.   </p>

<p>Even if the device is in a -20°C environment, the CPU temperature still tends to rise rapidly because the heat generated cannot dissipate effectively.  </p>

<p>To prevent the system from overheating and thermal throttling, an additional engineering element must be introduced.  </p>

<h2 class="wp-block-heading">The passive heat sink</h2>

<p>To effectively solve the problem of thermal dissipation within the insulating gel, it is necessary to integrate a specially designed passive heat sink.  </p>

<p>This heatsink should be mounted directly in contact with the SoC, coupled by thermal conductive paste to ensure optimal heat transfer; partially immersed in the gel, but with a surface in direct contact with the external environment, so as to promote heat transfer to the cold air of the cold room.  </p>

<p>This solution allows us to transfer the heat generated by the SoC outward, bypassing the insulating effect of the gel. But before proceeding, it is essential to ask ourselves some key engineering questions, which are essential to properly size the system:   </p>

<ul class="wp-block-list">
<li>At what temperature do we wish to maintain the SoC during operation? The goal is to avoid both condensation (which occurs at too low a temperature) and exceeding the critical threshold of 85°C, which would activate thermal throttling.   </li>



<li>What should be the contact surface area between heatsink and CPU to ensure effective heat transfer without dropping too much in temperature? This value depends on the thermal power generated, the material used for the heatsink, and the temperature difference between the SoC and the external environment.   </li>



<li>How much power does the SoC of a Compute Module 4 actually dissipate under full load? Based on our tests, the thermal dissipation at full load is about 6 watts. This figure is critical for correctly calculating the heatsink area needed to keep the system within the desired thermal limits.    </li>
</ul>

<p>Only after accurately answering these questions can we move on to the next step: the actual thermal calculation, which will allow us to correctly size the dissipating interface and ensure the stability of the device even under extreme environmental conditions.  </p>

<h2 class="wp-block-heading">Sizing of the surface in contact with the SoC</h2>

<p>Although the <strong>Compute Module 4 Extended Temperature (CM4ET)</strong> is certified to operate in a range as low as <strong>-40 °C (-40 °F</strong>), it is advisable to prevent the <strong>die</strong> from operating at excessively low temperatures during full load to avert the risk of <strong>condensation forming</strong> in the immediate vicinity of the electronics.</p>

<p>When the CM4ET is under full load, it dissipates approximately <strong>6 watts</strong> of thermal power. This heat must be transferred from the SoC die to the external environment, namely the cold air in the cold room. </p>

<p>But beware: balance is also needed here.</p>

<ul class="wp-block-list">
<li>If the <strong>heat sink</strong> is <strong>too efficient</strong>, there is a risk of the die dropping below <strong>-20 °C</strong>, which should be avoided to prevent localized condensation phenomena.</li>



<li>On the other hand, if the <strong>heatsink is insufficient</strong>, that is, the heat produced by the CPU is more than the heatsink can dissipate, the temperature will rise gradually until it reaches <strong>85 °C</strong>, the threshold above which <strong>thermal throttling</strong> comes into play.</li>
</ul>

<p>Therefore, the goal is to keep the SoC in a safe and stable thermal range. A <strong>target temperature of about -5 °C</strong> is reasonable, considering that the outdoor environment can be as low as <strong>-22 °C.</strong> </p>

<p>To achieve this balance, we must correctly size the <strong>contact surface of the heat sink</strong>. The analysis is based on stationary heat conduction, modeled by the following equation: </p>

<p><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-1f2248a50cb345dc4cb9b11b95cbf3cc_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#81;&#32;&#61;&#32;&#102;&#114;&#97;&#99;&#123;&#107;&#32;&#99;&#100;&#111;&#116;&#32;&#65;&#32;&#99;&#100;&#111;&#116;&#32;&#68;&#101;&#108;&#116;&#97;&#32;&#84;&#125;&#123;&#76;&#125;" title="Rendered by QuickLaTeX.com" height="17" width="230" style="vertical-align: -4px;"/></p>

<p>Where:</p>

<ul class="wp-block-list">
<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-2c758bec4c272382411b95fc0e7ee250_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#81;" title="Rendered by QuickLaTeX.com" height="16" width="14" style="vertical-align: -4px;"/> is the heat output transferred (in watts),</li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-3422b6bb5c160593658b7c39425d9880_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#107;" title="Rendered by QuickLaTeX.com" height="12" width="9" style="vertical-align: 0px;"/> is the thermal conductivity of the material (in W/m-K),</li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-25b206f25506e6d6f46be832f7119ffa_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#65;" title="Rendered by QuickLaTeX.com" height="13" width="13" style="vertical-align: 0px;"/> is the cross-sectional area (in m²),</li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-66a9f474fc3c52efdfb0ba6a70199ee8_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#76;" title="Rendered by QuickLaTeX.com" height="12" width="12" style="vertical-align: 0px;"/> is the thickness of the material (in m),</li>



<li>Delta <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-fc46abf24efaab3b9fcd32b7224bd392_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#32;&#84;" title="Rendered by QuickLaTeX.com" height="12" width="13" style="vertical-align: 0px;"/> is the temperature difference between the two sides (in K).</li>
</ul>

<p>Solving the equation for area A:</p>

<p><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-75f67fc1cdefe9bc536b8d5e5810a479_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#65;&#32;&#61;&#32;&#102;&#114;&#97;&#99;&#123;&#80;&#32;&#99;&#100;&#111;&#116;&#32;&#76;&#125;&#123;&#107;&#32;&#99;&#100;&#111;&#116;&#32;&#68;&#101;&#108;&#116;&#97;&#32;&#84;&#125;" title="Rendered by QuickLaTeX.com" height="17" width="230" style="vertical-align: -4px;"/></p>

<p>This formula allows us to calculate the<strong>minimum area required</strong> so that, when dissipating power <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-650eb7688af6737ac325425b5c9a5982_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#80;" title="Rendered by QuickLaTeX.com" height="12" width="14" style="vertical-align: 0px;"/>, the temperature difference between the die and the environment is equal to Delta <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-af4c2983bdcb73f4dad29945e64b32cd_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#32;&#84;&#46;" title="Rendered by QuickLaTeX.com" height="12" width="16" style="vertical-align: 0px;"/></p>

<p>Entering known values:</p>

<ul class="wp-block-list">
<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-8f9d0df112260e98ffa0fdfb87dfe3a2_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#80;&#32;&#61;&#32;&#54;&#44;&#87;" title="Rendered by QuickLaTeX.com" height="16" width="73" style="vertical-align: -4px;"/></li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-3f2d8ddf38e2b39170edb810a14890d5_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#76;&#32;&#61;&#32;&#48;&#123;&#44;&#125;&#48;&#48;&#54;&#55;&#53;&#44;&#109;" title="Rendered by QuickLaTeX.com" height="17" width="117" style="vertical-align: -4px;"/></li>



<li><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-8541038fa8fd44f183ece115e6b03e7e_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#107;&#32;&#61;&#32;&#50;&#48;&#53;&#44;&#87;&#47;&#109;&#45;&#75;" title="Rendered by QuickLaTeX.com" height="19" width="147" style="vertical-align: -5px;"/> (conductivity of pure aluminum)</li>



<li>Delta <img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-387821227ba45277df41bd1e1aab195b_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#32;&#84;&#32;&#61;&#32;&#49;&#55;&#44;&#75;" title="Rendered by QuickLaTeX.com" height="17" width="78" style="vertical-align: -4px;"/> (i.e., -5 °C to -22 °C)</li>
</ul>

<p>we get:</p>

<p><img loading="lazy" decoding="async" src="https://renor.it/wp-content/ql-cache/quicklatex.com-e8dfed052321f15a59ad850620d1355d_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="&#65;&#32;&#61;&#32;&#102;&#114;&#97;&#99;&#123;&#54;&#32;&#99;&#100;&#111;&#116;&#32;&#48;&#123;&#44;&#125;&#48;&#48;&#54;&#55;&#53;&#125;&#123;&#50;&#48;&#53;&#32;&#99;&#100;&#111;&#116;&#32;&#49;&#55;&#125;&#32;&#61;&#32;&#49;&#123;&#44;&#125;&#49;&#54;&#50;&#32;&#99;&#100;&#111;&#116;&#32;&#49;&#48;&#94;&#123;&#45;&#53;&#125;&#99;&#100;&#111;&#116;&#123;&#109;&#125;&#94;&#50;&#32;&#61;&#32;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#49;&#49;&#123;&#44;&#125;&#54;&#50;&#44;&#109;&#109;&#94;&#50;&#125;" title="Rendered by QuickLaTeX.com" height="41" width="582" style="vertical-align: -4px;"/></p>

<p>This is the <strong>theoretical minimum surface area</strong> of the heatsink in direct contact with the SoC required to keep the temperature within the desired limits.</p>

<p>Of course, this value is ideal and calculated under perfectly static conditions; in practice, <strong>it is advisable to consider a margin of safety</strong>, both due to mechanical tolerances and the effect of intermediate layers (such as insulating gel or plastic interfaces).</p>

<h2 class="wp-block-heading">Realization of the 3D model of the heatsink</h2>

<p>Due to contractual constraints with the client, it is not possible to show pictures or diagrams of the project. However, I can provide some useful information on the final sizing.   </p>

<p>At the end of the modeling and manufacturing process, the useful contact area of the heatsink was about 13 mm². A value slightly higher than the calculated theoretical minimum, docuted to mechanical limitations related to CNC fabrication.   </p>

<p>However, this area is within an acceptable margin, sufficient to prevent the temperature of the SoC from falling too far below the desired values, thus preventing condensation.  </p>

<p>To further optimize heat transfer, the heatsink was placed at the bottom of the enclosure, with most of its surface area below the plastic of the enclosure. In practice, only a small part is in direct contact with the cold air of the cold room being separated from it by a 2-mm layer of plastic.   </p>

<p>It should always be remembered then that there is a substantial difference between theoretical calculations and actual behavior in operation: the former serve to give a solid design basis, but it is only with direct experimentation that the actual reliability of the solution is verified. In our case, within the expected margins, the design proved effective.   </p>

<h2 class="wp-block-heading">Test</h2>

<p>To validate the design, I performed a home experimental test, placing the entire device inside the home freezer, set to the lowest available temperature. Unfortunately, it was not possible to reach the -22°C of the industrial cells but only -17°C, but the test still provided very useful data to evaluate the thermal behavior under real conditions.   </p>

<p>The text was structured over a duration of 60 minutes, with sampling every second and after idle stabilization.  <br/>During the test we monitored:</p>

<ul class="wp-block-list">
<li>The temperature of the SoC</li>



<li>The temperature inside the enclosure via an I2C sensor.</li>



<li>The temperature on the external surface of the heatsink, measured by a thermocouple placed between the heatsink and the enclosure plastic.  </li>
</ul>

<p>After about 30 minutes, all temperatures had already stabilized.  </p>

<p>During idle, the maximum CPU temperature reached 12.5°C. At this point, once stabilization was noted, I started the stress test and ran the stopwatch for the next 60 minutes.   </p>

<p>At the end of the test under load, the measured values were as follows:  </p>

<ul class="wp-block-list">
<li>Maximum CPU temperature: 38.7°C</li>



<li>Temperature inside the enclosure: -1.3°C</li>



<li>Temperature on the external surface of the exchanger: -11.4°C</li>
</ul>

<figure class="wp-block-image"><img decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe46OuitIfCuSBnthk_5aCCCSvHsf6rDIB3HpNv4cWcYKOhkyWRb-Qp6NqvYV_p_yV6zLkfxHUp2IRrjB-_RTZFUaKFXpBxoJWgqAL5VAbSgOUXTf_W1XSjkGGl1zCy3EtRJd-LIQ?key=kyUELbgsfh6G37D0pACCEA" alt=""/></figure>

<h2 class="wp-block-heading">Conclusion</h2>

<p>The data obtained confirm that the CPU operates within a safe thermal range, the operating temperature does not fall below critical levels for condensation, the electronics are protected even under extreme environmental conditions, and the system proves stable and balanced with effective passive thermal dissipation management. Thus, the chosen configuration is suitable for continuous operation, even in harsh refrigerated environments, without risk of failure, condensation, or thermal throttling.   </p>

<p>These are the projects that we are really passionate about. The ones that force you to think, to challenge yourself, to look for solutions outside the box. Projects that can&#8217;t be solved with an imported library or a standard sensor, but require ingenuity, experimentation, and multidisciplinarity spanning electronics, physics, thermodynamics, and mechanical design.    </p>

<p>It is precisely these challenges that leave you, each time, with a richer technical and cultural background that ends up coming in handy in the most unexpected contexts.  <br/>And in the end, when everything works as it should, the satisfaction is double!</p>
<p>L'articolo <a href="https://renor.it/en/blog/marketing-business-digital/the-projects-we-like/">The projects we like</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The AI that knows everything about you</title>
		<link>https://renor.it/en/blog/artificial-intelligence-algorithms/the-ai-that-knows-everything-about-you/</link>
		
		<dc:creator><![CDATA[Simone Renzi]]></dc:creator>
		<pubDate>Fri, 30 May 2025 15:29:36 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence & Algorithms]]></category>
		<category><![CDATA[AI investigation]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Automated research]]></category>
		<category><![CDATA[Behavioral analysis]]></category>
		<category><![CDATA[Business scouting]]></category>
		<category><![CDATA[Candidate evaluation]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[deep search]]></category>
		<category><![CDATA[Enneatype]]></category>
		<category><![CDATA[Future of work]]></category>
		<category><![CDATA[generative AI]]></category>
		<category><![CDATA[GPT-4]]></category>
		<category><![CDATA[HR tools]]></category>
		<category><![CDATA[MBTI]]></category>
		<category><![CDATA[online reputation]]></category>
		<category><![CDATA[openAI]]></category>
		<category><![CDATA[profiling AI]]></category>
		<category><![CDATA[prompt engineering]]></category>
		<category><![CDATA[Self-analysis]]></category>
		<category><![CDATA[Staff selection]]></category>
		<category><![CDATA[Tools for recruiters]]></category>
		<guid isPermaLink="false">https://renor.it/the-ai-that-knows-everything-about-you/</guid>

					<description><![CDATA[<p>Today we discover how artificial intelligence can, through a “Deep Search”, return in just a few minutes a complete, structured, and professional overview of anyone — including skills, career, online presence, strengths, and weaknesses — in an automated way and without having to spend hours on manual research. Introduction Until recently, obtaining a detailed profile [&#8230;]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/the-ai-that-knows-everything-about-you/">The AI that knows everything about you</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Today we discover how artificial intelligence can, through a “Deep Search”, return in just a few minutes a complete, structured, and professional overview of anyone — including skills, career, online presence, strengths, and weaknesses — in an automated way and without having to spend hours on manual research. </p>

<h2 class="wp-block-heading">Introduction</h2>

<p>Until recently, obtaining a detailed profile of a person — whether a potential partner, candidate, investor, or competitor — required hours of research across LinkedIn, Google, articles, résumés, social networks, corporate databases, and more. Today, thanks to Generative Artificial Intelligence and in particular the “Deep Search” feature available in ChatGPT and other platforms, this process can be automated in a surprisingly effective way. </p>

<p>This article explains step by step how this technology works, what advantages it offers compared to traditional research methods, which precautions to take to obtain useful results, and how to integrate it into your workflows that, as of now (May 2025), cannot yet be fully automated.</p>

<h2 class="wp-block-heading">What is Deep Search</h2>

<p>Deep Search is a set of prompt engineering and contextualization techniques that allows ChatGPT to generate a detailed and multidimensional analysis of a subject (person, company, or any other search entity), producing a structured response that includes, in the case of individuals for example, biographical, behavioral, psychological, professional, and communicative aspects. </p>

<p>For example, starting from a prompt like: </p>

<p><em>&#8220;Analyse Mario Rossi (mariorossi.com)&#8221;</em></p>

<p>It can return: a summary of the professional profile, strengths and weaknesses, the MBTI (Myers-Briggs Type Indicator), the psychological enneatype, decision-making style, a SWOT analysis, the predominant communication tone, a pitch to present to investors, and an estimate of perceived online reputation. </p>

<p>All of this is generated based on information available in the model’s training data, inferences drawn from common behavioral patterns, and internal coherence with the initial prompt. </p>

<p>It is evident that an analysis of this kind is only possible when there is online material available for the artificial intelligence to draw from. In any case, this activity does not constitute a violation of the individual’s privacy, precisely because it is based exclusively on publicly available data already accessible on the web.  </p>

<h3 class="wp-block-heading">Difference Between a Simple Prompt and Contextual Deep Search</h3>

<p>In the world of generative artificial intelligence, not all prompts are created equal. A simple prompt is a direct request, often formulated in a single sentence, that produces an instant but generally superficial response. In contrast, <strong>contextual Deep Search</strong> represents a far more refined and powerful approach: it is based on a guided, layered conversation in which the user gradually builds context, steering the AI toward a deep and coherent analysis. It’s like the difference between asking, “Who is Mario Rossi?” and requesting, “Build a professional and psychological profile of Mario Rossi, CEO in the fintech sector, analyzing strengths, weaknesses, decision-making style, and communication impact.”<br/>The latter approach, which can be activated by enabling the appropriate switch, is what we refer to as Deep Search. It doesn’t just list facts — it interprets, connects, and deduces, offering a complex synthesis that blends biography, personality traits, and developmental potential. It’s the closest thing to a well-conducted imaginary interview, performed with method and intelligence.      </p>

<h3 class="wp-block-heading">The Concept of Inference from Partial Data</h3>

<p>One of the most fascinating aspects of next-generation artificial intelligence is its ability to infer complex information even from minimal or incomplete data. This process, known as <strong>inference from partial data</strong>, is based on the model’s capacity to recognize recurring patterns within vast sets of knowledge acquired during training. In other words, the AI doesn’t need to “know everything” to reconstruct a plausible picture: a few clues — a name, a role, a company — are enough to trigger a deductive mechanism capable of generating a coherent and structured representation of the person or context being examined. This is not imagination, but plausibility built upon statistical logic and probabilistic relationships between pieces of information.    </p>

<p>This makes artificial intelligence not just a consultative tool, but a cognitive synthesizer capable of simulating deep knowledge even when the starting point is highly fragmented. </p>

<h3 class="wp-block-heading">How ChatGPT Combines Known Sources, Patterns, and Deductive Logic</h3>

<p>Let’s begin by noting that, unlike traditional prompts which rely solely on information stored within the model, ChatGPT’s Deep Search function leverages an incredibly powerful additional component: real-time web browsing. When Deep Search is activated, the AI accesses the internet directly through Bing, searching for up-to-date and relevant sources in order to build a response based not only on statistical inference, but also on current data, official statements, social media profiles, news articles, and authoritative sources. This allows it to constantly update and refine the profile being analyzed, by combining known sources, recurring patterns, and deductive logic. The result is a deeply contextualized representation, merging the immediacy of generative intelligence with the accuracy of real-time web-based documentation, maintaining a balance between deduction and verification. It is this synergy between AI and intelligent web crawling that makes Deep Search an unprecedented tool for gathering strategic insights about people, companies, or phenomena in real time.     </p>

<h2 class="wp-block-heading">In What Contexts Can an AI-Generated Profile Be Useful?</h2>

<p>Artificial Intelligence has no emotions and simply provides objective analyses based on the information it finds online. Among the contexts in which it can prove useful are:  </p>

<h3 class="wp-block-heading">When we use it on a personal level</h3>

<p>Deep Search analysis can prove extremely valuable on a personal level. Asking artificial intelligence for a neutral and contextualized evaluation of your own profile allows you to observe yourself from an external, objective perspective, free from emotional bias. This form of assisted self-reflection can help bring to light strengths that are often underestimated, but more importantly, it can clearly identify areas for improvement, dysfunctional behaviors, or limiting patterns that may hinder personal or professional growth. It’s like holding up a mirror to yourself — but with the analytical objectivity of a tool that doesn’t judge: it observes, processes, and offers constructive insights.    </p>

<p>Of course, one must be prepared to receive criticism as well — feedback that may highlight underappreciated aspects or even vulnerabilities we tend to overlook. Ultimately, it’s important to understand that an analysis conducted by a system unaffected by emotional ties does not deliver a judgment, but rather offers something that can be useful for our personal growth. It requires clarity of mind, openness, and a healthy sense of self-criticism.  </p>

<h3 class="wp-block-heading">When Used in the Intermediate Phase of Job Interviews</h3>

<p>In the selection process for engineering roles, where recruiting is structured into multiple phases, the introduction of Deep Search can serve as a valuable tool during the intermediate stage. After the résumé screening and the initial interview, and before the technical assessment, it is possible to insert a phase of in-depth analysis powered by artificial intelligence. At this point, the recruiter can provide ChatGPT with the information gathered during the previous interview (such as responses given, observed behaviors, or preliminary impressions), enriching it with real-time web research. The model is then able to deliver a neutral, contextual, and well-reasoned evaluation of the candidate, highlighting the consistency between their online presence and personal communication, potential soft skills not explicitly stated, relational style, and cultural compatibility with the company. This approach does not replace human judgment, but rather complements it with an objective analytical lens, supporting more informed and well-rounded decision-making.     </p>

<h3 class="wp-block-heading">When We Want to Use It in Investigative, Legal, or Academic Applications</h3>

<p>In addition to its use in personal, HR, and commercial contexts, the Deep Search function also finds valuable applications in investigative, legal, and academic settings. In the investigative field, it can be employed to build preliminary profiles of subjects of interest, reconstructing connections, past activities, digital traces, and publicly documented behaviors — all without accessing confidential archives or infringing on privacy. In the legal domain, it can assist lawyers or technical consultants in the contextual gathering of public information on opposing parties, witnesses, experts, or companies involved in proceedings, providing a concise yet structured overview that helps shape defense or negotiation strategies. On the academic side, Deep Search proves useful for quickly analyzing the profiles of authors, scholars, or researchers, generating basic bibliographic overviews or comparing theoretical approaches across different schools of thought. Naturally, in all these cases, it is essential to remember that the AI merely reprocesses publicly accessible information, delivering plausible and structured interpretations — but not certified or legally admissible evidence. It is a tool for support and orientation, not a substitute for official sources.      </p>

<h2 class="wp-block-heading">Can I ask for more?</h2>

<p>Absolutely yes — once the search has been carried out, it is possible to request any other type of information that can be inferred from the completed deep search. </p>

<p>For example: <em>“Provide me with a SWOT analysis of Mario Rossi.”.</em> </p>

<p>The model will then elaborate strengths, weaknesses, opportunities, and threats in relation to the professional context, current position, and declared or inferred skills. But it doesn’t stop there: you can go further by requesting a leadership style assessment, a behavioral interview simulation, a pitch to present to potential investors, or even a cultural compatibility analysis with a specific company.  </p>

<p>This makes Deep Search not just an informational tool, but a strategic dialogue environment, where each piece of information becomes the starting point for a new inference, a new perspective, a new use case — fully customizable according to the objectives of the user. </p>

<h2 class="wp-block-heading">Conclusions</h2>

<p>The introduction of Deep Search in AI interactions represents a significant leap forward in the everyday use of generative models. It is no longer about receiving simple answers to isolated questions, but rather about obtaining truly structured analyses, based on a combination of real-time web research, deductive inference, and cognitive modeling. Whether it’s for personnel selection, business scouting, investigative insights, self-analysis, or academic support, Deep Search allows us to save time, increase depth, and broaden the perspective through which we understand individuals and contexts. Like any powerful tool, it requires conscious and responsible use, fully aligned with current ethical and legal frameworks. But for those who know how to ask the right questions — and have the courage to hear even the most uncomfortable answers — AI can become an extraordinary ally in understanding both the world and oneself.    </p>

<p>[starbox]</p>
<p>L'articolo <a href="https://renor.it/en/blog/artificial-intelligence-algorithms/the-ai-that-knows-everything-about-you/">The AI that knows everything about you</a> proviene da <a href="https://renor.it/en/">RENOR &amp; Partners S.r.l.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
