Circle of Trust
- Igor Alcantara
- 5 hours ago
- 22 min read

Jack Byrnes takes Greg Focker into his study and explains the rules. He is retired CIA, he grows orchids, and he has just met the man who wants to marry his daughter. Greg is sweating. Jack is not.
"With the knowledge you've been given, you are now on the inside of what I like to call the Byrnes family circle of trust. I keep nothing from you, you keep nothing from me, and round and round we go."
It is a joke about a controlling father who owns a polygraph machine. It is also, accidentally, the most accurate description of how people actually decide what to watch on a Tuesday night. Nobody polls fourteen million strangers. You text one person. You text the one person whose taste has earned the right to cost you two hours.
I spent the last weeks building software around that idea. It is called Cosign, the entire premise is that the circle is the algorithm, and the name is a pun that only makes sense for English speakers.

The algorithm has never met you
Here is the logic that runs the modern internet: people who liked X also liked Y.
It is a good sentence. It built Netflix, Spotify, and most of Amazon. At least initially. It works by finding thousands of people whose behavior looks statistically similar to yours and averaging what they consumed. Collaborative filtering with clustering, if you want the textbook name. The math is elegant and the results are, most of the time, fine.
But notice what it is actually doing. It is finding strangers who resemble you in the narrow dimension the platform can measure, then handing you the average of their appetites. It does not know that you hate voiceover narration. It does not know that you will watch anything with a heist in it and forgive every flaw. It does not know that your friend Ana recommended a book two years ago that changed how you think, and that this earned her a permanent credit line with you.
It also has an incentive problem. The platform that recommends to you owns the catalog it is recommending from. Your friend does not get paid when you finish the show.
These systems are complex and they are based on the content. In "people who like X also like Y", the center of mass, the X and Y, are movies, shows, games, books. They are not you nor people you know or trust.
So I flipped this premise. Cosign has no "people like you." It has your people. Somebody you know recommends a movie, a show, a book, or a game. You add it. You watch it. You come back and tell the truth: you cosign it, you pass, or you gave up halfway through. That verdict is the whole engine's food supply. The center of gravity are people, not content.
I did not set out to build a product. I started this as a study project for a specialization I am taking in Agentic AI Frameworks at Carnegie Mellon University, mostly as an excuse to build something end to end instead of reading about it. Then people started using it. Then they suggested improvements, changes in the logic, and it consumed my evenings and weekends.
The core was never the app or the adaptive interface or the multi-language support or the fact that I connect to 13 different APIs to make it all work, that Agentic run every night to fill our, update or fix information and to adjust the taste parameters. The core and the goal were always the Engine. Officially, the Cosign Engine, but you can also call it "The Taste Engine".

The interesting part was never the app. The interesting part is that the moment you make trust the unit of measurement, you have to answer a question that collaborative filtering gets to avoid: how do you know whose taste is worth listening to, when you only have a handful of data points about each person?
That question turned out to have a beautiful answer, and the answer is older than the light bulb.
The three out of three problem
Say you have two friends.
Ana has recommended you fifty things over several years. You agreed with her on forty of them. That is eighty percent.
Bruno joined last month. He has recommended you three things. You loved all three. That is one hundred percent.
Rank them.
The naive engine ranks Bruno first, because one hundred is bigger than eighty. Every person reading this knows that is wrong. Ana is obviously the better recommender. Bruno is a guy who got lucky three times, and everyone has met that guy. The problem is that the arithmetic does not know it is wrong, and if I ship that arithmetic, I spend the feature's credibility on day one and never get it back.
This is not a niche edge case. In a friend group, thin evidence is the normal condition. A well-established pair might share opinions on twenty titles. A new pair shares three. There is no world in which I get millions of rows, and the law of large numbers rescues me. The data is thin, permanently, by design.
So, I needed a way to say: yes, Bruno is three for three, and I still do not believe him yet.

Four movies that never existed
The fix is a technique called Bayesian shrinkage, and the way I explain it to non-statisticians is this. By the way, this is just how I started building the statistical base for the Engine. I added several elements to this method to make my Cosign unique. I won't tell you all, but let's go back to how all started.
In a Bayesian shrinkage, the very first raw version of the Cosign Engine, every pair of people on started with four movies they never watched.
Two of those imaginary movies, they agreed about. Two, they disagreed about. Nobody saw them. They do not exist. They sit in the ledger anyway, as counterweight, and every real opinion has to accumulate on top of them.
That is the whole trick. Here it is as arithmetic:
score = (agreements + 2) / (total + 4)Run Bruno through it. Three for three becomes (3 + 2) / (3 + 4), which is 5/7, or 0.714.
Run Ana through it. Forty of fifty becomes (40 + 2) / (50 + 4), which is 42/54, or 0.778.
Ana wins. The inversion is gone, and it cost one line of code.
What makes this satisfying is that the imaginary movies are not a hack. They are a Beta(2,2) prior, and the formula is the posterior mean of a Beta-Binomial model, which is textbook conjugate Bayesian inference. The number 4 is the prior's effective sample size. When I say "four imaginary titles," I am not reaching for a metaphor. That is literally what the parameter means.
There is a second way to read the same formula that makes the behavior obvious:
score = w × (observed rate) + (1 − w) × 0.5where w = n / (n + 4).
In other words, the score is a sliding blend between what you actually observed and a shrug. The blend depends on how much evidence exists:
Titles of Evidence | Weight on Reality | Weight on the Shrug |
1 | 0.20 | 0.80 |
3 | 0.43 | 0.57 |
4 | 0.50 | 0.50 |
10 | 0.71 | 0.29 |
50 | 0.93 | 0.07 |
1000 | 0.996 | 0.004 |
At four titles, evidence and skepticism are exactly tied. After that, reality takes over. The skepticism never fully disappears, it just stops mattering, which is a nice property for a system where somebody might one day have a thousand data points with their spouse.
The consequence I like most is at the edges. Ten for ten scores 0.857. Zero for ten scores 0.143. The app is structurally incapable of telling you that someone is a perfect match, or a total disaster. The posterior mean of a Beta distribution never touches the boundaries.
I find that correct in a way that goes beyond the math. No human being is a flawless predictor of another human being. Any system that tells you otherwise is flattering you.

Not all evidence weighs the same
A friend agreeing with you is not one thing. It is four things, and they are not equally convincing.
The strongest signal is what I call an outcome. Ana recommends a film. You add it. You watch the whole thing. You come back and cosign it. That full chain measures the only thing that actually matters, which is not whether Ana has good taste in the abstract, but whether Ana recommends well to you. It counts triple.
Below that is an endorsement. Ana recommends something you had already seen, and you react to say you agreed. Real evidence, but weaker. You did not act on her advice, you just happened to have arrived at the same place. Counts double.
At the bottom sit two signals that count single. A co-recommendation is when you both independently recommended the same title without either of you reacting to the other, which is parallel taste rather than a response. And an onboarding overlap is when you both rated the same title during the calibration questionnaire everyone answers when they join.
That last one is the weakest evidence in the system, and it is also the only reason the system works at all in the first few months. More on that shortly.
Everything is computed separately per category. Movies, shows, books, games. Blending them into one number would destroy the most useful thing the app knows about your friends, which is that someone's book recommendations can be extraordinary while their taste in games is actively hostile to your wellbeing. I have friends like this. You probably do too. My fellow Qlik MVP, Mark Costa is a great example. When he recommends me a game, I usually like it. When we recommend each other a show, rarely (he hated Dark, and I gave up on Game of Thrones). A single score would average that into a meaningless middle.
The rule I had to break
Here is the part of the build I think about most, because it is where a good idea lost a fight with reality.
The original design said a score should not appear until a pair shared at least eight data points, and at least two of them had to be outcomes. That rule is better. It insists the number measures actual recommendation performance rather than coincidental overlap. I wrote it down early and felt clever.
Then I shipped it, and almost nobody ever got a score.
Think about what an outcome requires. Somebody has to recommend something. Somebody else has to add it. They have to actually finish it, which in a world of eleven open streaming tabs is a real achievement. Then they have to come back and report. Two of those, plus six more data points, before the feature does anything at all.
For most pairs, the answer was permanently "still learning."
So I relaxed it. The shipped rule is three data points of any origin. Outcomes still carry triple weight when they exist, they are just no longer mandatory. The purity of the metric got traded for the metric existing.
That trade sounds like a compromise and it is, but there is a principle underneath it worth saying out loud, because it applies far beyond my little app:
A better estimator you never get to compute is worth less than a cruder one you do.
I have watched teams lose entire quarters to this. The perfect attribution model that needs data nobody collects. The forecast that requires a clean hierarchy the business will never maintain. The measure that is technically correct and structurally unusable. Statistical rigor that cannot survive contact with your actual data is not rigor, it is decoration.
I will admit the relaxed rule has a cost. Three onboarding ratings, all agreeing, produce 0.714, which is enough to display. That is a fairly confident label sitting on top of three answers to a questionnaire. The shrinkage narrows how wild that first score can be, but it does not make three data points into knowledge. I decided a slightly overconfident score that appears beats a perfect score that never does. Reasonable people can disagree with me.
Three words instead of a number
The engine produces a number between 0 and 1. The app almost never shows it.
Instead there are three phrases:
Below 0.4, "rarely lands for you." Between 0.4 and 0.7, "sometimes lands for you." Above 0.7, "usually lands for you." Below the evidence threshold, no score at all, just "still learning." Actually, those numbers (0.4, 0.7) and just initial measures for people with a network of friends that is just starting to be built. Every night, as you add more friends and your all give your veridict on titles, these are adjusted by the Engine.
"Ana's book picks usually land for you" reads better than "Ana: 82%." It also lies less.
There is a statistical argument hiding inside that design choice. A percentage implies precision the estimate does not have. At these sample sizes, 82% and 79% are the same number wearing different hats, but a reader will absolutely treat that gap as a ranking and start making decisions with it. Three coarse buckets are roughly the resolution the evidence honestly supports.
The raw counts are still there if you tap. You and Ana have agreed on twelve of fifteen titles. You see the evidence, the engine keeps the estimate. Nobody is hiding anything, I am just refusing to dress up a rough guess in decimal places.
I should be upfront about one limitation of that scale, since it affects how you should read those words. People mostly recommend things they enjoyed, and mostly enjoy things their friends recommend. Positive verdicts dominate. Which means two people picked entirely at random will agree a surprising amount of the time by pure luck, and the useful range of the scale gets squeezed into the upper end. "Sometimes lands for you" is closer to "average human" than the phrase suggests. Correcting for that properly what one of the most challenging things I have dome in this project.

How to measure the obvious
There is a fix. I think it is the most elegant thing in the whole system, which is exactly why I am only going to tell you most of it.
Start with why strangers agree so often. The reason is neither mysterious nor interesting. Two boring forces do all the work. Some people cosign nearly everything they touch, and some titles are close to universally loved. Neither fact tells you anything whatsoever about whether two particular people have compatible taste. They are noise in a very convincing costume.
So do not correct the score afterward. Remove the noise first, then score whatever survives.
Give every person a number for how generous they are. Give every title a number for how widely it lands. Together those two numbers predict what any given person probably said about any given title, knowing nothing else about either of them. The prediction is deliberately dull. Dullness is its entire job. What matters is the gap between what the prediction expected and what the person actually did.
That gap is the part of a verdict that belongs to the person rather than to the crowd. Everyone loved that film and so did you tells me nothing. Everyone loved that film and you walked out after twenty minutes tells me a great deal.
Two people whose gaps move together have compatible taste. Two people whose gaps have nothing to do with each other do not, however many titles they both happened to enjoy.
And here is the part that made me put the pen down for a minute and lost 2 nights of sleep (really). Score those gaps the way this system scores everything else: measure the angle between them. It is still a Cosign. The name still holds. The only thing that changed is where I put the origin, and moving the origin is the whole fix. Strangers collapse to zero, which is where they always belonged, and the full width of the scale comes back for the people who actually earned a place on it.
I have run it on simulated data. Two people with nothing in common score 0.006. Their raw agreement rate, on that same data, is sixty three percent. Sixty three percent is comfortably inside "sometimes lands for you." Zero is the truth.
I know what the model is, I know how it is fitted, and I know precisely which part of it breaks first. Someone who cosigns absolutely everything has no gaps left to measure and therefore carries no information at all, which is a rigorous way of stating something you already suspected about at least one of your friends.
That is as much as I am writing down.
The bubble problem, and the neighbors
Now the objection you have probably been forming for several paragraphs.
If my recommendations only ever come from my friends, and my friends are people who are already like me, I have not escaped the algorithmic bubble. That is a problem with most social networks. I have built a smaller, cozier, artisanal bubble with better lighting. Truman Burbank still lives inside a set, even if the set is charming and everyone in it knows his name.
This is the real risk of trust-based systems, and I do not think you can design it away entirely. But you can build a leak. On purpose.
Cosign scores people you are not connected to. Friends of friends, and, in a discovery feed, people you have never met at all. What I did not want was a second, separate notion of "match" living alongside the first, because two definitions of the same word is how systems start lying to their users.
So, the implementation is a small piece of misdirection. The engine fabricates a friendship that does not exist. It invents an edge between you and the stranger, runs the exact same signal extraction, and applies the exact same formula. One definition of match, applied to a pretend relationship. Like a what-if simulation of a friendship between two real people.
Most of the Taste Match is calculated based on you and your friends. Each person has their own network. When you see "3 people cosign this", it is not in the whole system, it is just in your circle. However, your friends also have friends. To avoid you being stuck in a bubble, some of the similar taste in the neighbor networks leaks and influences your network anonymously. Privacy intact and you free of the bubble. Remember how you watch one "true crime" in a streaming platform and all you see is true crime being recommended? Well, not here.

Now, you might ask: why is it called Cosign?
Cosine, cosign
In your first login, the platform selects random titles and you answer how you feel about those. It is like an onboarding interview. The calibration questionnaire turns every member into a vector. One coordinate per calibration title, plus one where they liked it, minus one where they did not. A person becomes an arrow pointing somewhere in taste space.
Once people are arrows, similarity stops being a metaphor and becomes an angle. Two people aimed the same direction have a narrow angle between them. Two people aimed at opposite corners of the room have a wide one. The standard way to measure that angle is cosine similarity, the cosine of the angle between two vectors, and it behaves exactly the way the word suggests. Cosine of zero degrees is 1, perfect alignment. Cosine of ninety degrees is 0, no relationship whatsoever. Cosine of one hundred eighty degrees is minus one, which describes a friend whose recommendations you should simply invert and then follow religiously. I have one of those. He is more useful than most.
When the coordinates are all plus one and minus one, the cosine similarity between two people collapses to something almost embarrassingly simple:
cosine similarity = 2 × (agreement rate) − 1Which brings us to the pun.

Cosine is the function that measures how closely two directions agree. Cosign is what you do when you put your name beside somebody else's and vouch for them, and it is the word the app uses for the verdict that says yes, this was worth your time. Same sound. Two halves of one idea. The mathematics of alignment and the social act of vouching, sharing a pronunciation, which felt like a decent joke when I registered cosign.page domain.

The logo makes the same argument without words. Two rings, overlapping. Two circles of trust, each one complete and closed on its own, sharing a lens of territory in the middle. That lens is the entire product. It is the set of titles you and one other person have both formed an opinion about, and every number in this article is computed from nothing but that overlap. Geometers call the shape a vesica piscis. Set theory calls it an intersection. I call it the evidence, and there is no third circle in the picture, because there is no platform standing between the two of you deciding what you are allowed to see.
The bar for a stranger
The bar for a stranger is higher. Five shared titles minimum instead of three, no per-category split because there is nowhere near enough data to divide four ways, and a hard gate at 0.7.
Watch what the shrinkage does to that gate:
Shared Titles | Agreements needed to reach common taste |
5 | 5 of 5 |
6 | 5 of 6 |
10 | 8 of 10 |
20 | 15 of 20 |
Without shrinkage, four out of five is eighty percent and sails right through. With it, a five-title stranger has to be perfect. The four imaginary movies are doing real gatekeeping work here, standing at the door of your discovery feed turning away everyone whose apparent affinity is an artifact of a tiny sample. At most eight strangers surface at a time.
When several of these matched strangers have all recommended the same title, their scores combine through a rule called noisy-OR: one minus the product of the misses. The reading is intuitive. If each score is roughly "the chance this person's taste means you will like it," then the combination is "the chance at least one of them is right." Corroboration counts. Three people vouching outranks one.
It assumes those three people are independent, which in a small community they are absolutely not. They see the same feed and talk to each other. So, the combined number runs optimistic. Since it only ever orders a short row of suggestions rather than making a claim to your face, I can live with that.
There is one more thing happening here, and it is the mechanism that actually pops the bubble rather than just poking it. I explained briefly before.
Influence does not stop at your friends. It travels the graph, and it fades as it goes. Signal from a friend arrives at full strength. Signal from a friend of a friend arrives attenuated. Signal from three hops out arrives as barely more than a suggestion that something exists. The engine implements that decay with a random walk over the friendship network, which I will explain properly in a couple of sections.
The tuning knob on that decay is the single most consequential number in the product, and I want to be honest that it is a values decision wearing a parameter's clothing. Turn the decay up and Cosign becomes a sealed room where only your six closest friends can reach you. Turn it down and the distant network drowns out the people who actually know you, which is just Netflix with extra steps and worse infrastructure. Everything interesting lives between those two failure modes, and there is no formula that tells you where. You pick, you watch what happens, you adjust.
The point of all of it: your circle stays your circle, but the walls are permeable. Taste from neighboring circles seeps through, weakened by distance and filtered through exactly the same standard of evidence your own friends are held to. The bubble gets a window. Small one, but it opens.

What the privacy model forbids the math from doing
I want to be precise about something, because it shaped the engineering more than any performance concern did.
What I built is a ranked list of whose taste is worth listening to, computed over people who know each other in real life. That is fascinating as data and radioactive as a social object. Design it as though a leak would end a friendship, because it would.
So, the math is not allowed to do certain things.
Scores are directional and private. The record is keyed as your view of your friend, and the reverse direction is never exposed to anyone. You see how well Ana's picks land for you. You will never see how well yours land for her. This is enforced at the database's row level security layer, not in the interface, because interfaces are one bug away from betraying you.
There are no leaderboards. Not best recommender, not percentile, not any comparison between two friends shown to a third party. The moment that list exists in a shareable form, somebody screenshots it.
Recommenders only ever see positive framing. "Four friends added this, three cosigned it." Never a hit rate. Never who passed on your recommendation and never came back.
And across the stranger gap, only aggregates travel. The score and a count leave the server. Individual verdicts never do. A stranger's recommended title can enter your feed. Their name and their note cannot.
Every one of those constraints removed a feature that would otherwise have been obvious to build. That is what a real privacy model costs, and if it costs you nothing you probably do not have one.
The engine sleeps, then wakes up smarter
Nothing recalculates the instant you tap a button.
Every night, a scheduled job wakes up, reads the entire graph, rebuilds every pair score from scratch, and writes the results back. You go to bed, the engine does its thinking, and the app you open in the morning knows slightly more about your friends than the one you closed.
The interesting part of that job is not the rebuilding. It is that the engine re-examines its own assumptions before it starts. It literally learns.
Remember the four imaginary movies. I told you the prior sits at 0.5, two agreements and two disagreements, a polite shrug. That was true on day one, when I had no idea what a typical pair of friends looks like and picking anything else would have been making things up. It is not true anymore.
Now the nightly job fits the prior to the population. It takes the distribution of agreement rates across every pair on the platform and estimates the Beta distribution that best describes it, then uses that as the starting point for every new pair. This is called empirical Bayes, and the name is almost self-explanatory: instead of asserting what two strangers probably look like, you measure what two strangers actually look like, and you assert that.
The consequence is the thing I find most satisfying about the whole system. Every new person who joins and answers the calibration questionnaire makes the estimate for every other pair slightly better, including pairs they will never meet, in circles they will never see. Statisticians call this borrowing strength. The community is a single shared observation about how human taste tends to overlap, and each pair gets to lean on it while their own evidence is thin. A brand new friendship starts out inheriting everything the platform has learned about friendship in general, then gradually earns the right to be judged on its own record.
That is what I mean when I say the engine gets smarter as the network grows. Nothing is being trained. No weights are moving, but it learns and parameters adjust. The population is simply a better description of the population than my guess was, and every night the engine goes and asks it.
Real time recomputation was on the table and I rejected it. It is expensive, it is complicated, and nothing about this problem is urgent. Taste does not change between lunch and dinner. I have also grown fond of the daily rhythm. The system is not twitching at your every tap. It sleeps on it, like a person would.
The honest engineering note: that nightly job loads everything into memory and rebuilds everything. It is order-of-the-entire-universe. At friend-group scale that is completely fine and the simplicity is worth real money in maintenance I do not have to do. It will not survive serious growth, and I know exactly which line will break first when that day comes.
So what is it, then?
Let me be precise about the category, because people keep guessing wrong in both directions.
It is not machine learning. There is no training run, no gradient descent, no embedding, no neural anything. Nobody's GPU got warm. Nothing in the system ever learns a representation of you, which is the specific thing I was trying to avoid building.
The four imaginary movies were the front door. There are more rooms.
What runs is a hierarchical Bayesian model over a social graph, that was highly customized by me. Four layers, each doing exactly one job.
Layer one is measurement. Reduce every relationship to a stream of binary agreements, per pair, per category (so far: movies, shows, books, and games). Because those agreements are plus one and minus one on a shared calibration basis, this layer is computing a cosine similarity. What comes out is an angle between two people, expressed as a rate.
Layer two is estimation. Take that rate and refuse to believe it. This is the shrinkage: a Beta-Binomial conjugate model, also heavily customized by me, whose posterior mean blends the observed rate against a prior, weighted by the prior's effective sample size. Because the four evidence origins carry different weights, the raw weight sum overstates how much independent information is actually present, so the effective sample size gets corrected before it enters the denominator. The classical tool for that is Kish's formula (below), the sum of the weights squared over the sum of the squared weights, which is a compact way of saying that eight opinions where one of them counts triple are worth rather less than eight opinions that each count once. Skip that correction and the estimator quietly starts flattering whoever shouts loudest. Committees have the same bug.
(Σw)² / Σw²Layer three is propagation, and this is the layer the article has been circling for ten minutes. A score between you and a direct friend is a local measurement. To let neighboring circles influence yours without dissolving into a global average, the engine runs a random walk with restart over the friendship graph, which is the same machinery underneath personalized PageRank. Picture a rumor about taste starting at you and wandering the network. At every step it either moves to a neighbor or teleports straight back home, and the damping factor decides how far it usually gets before it snaps back. Each hop it survives multiplies its strength by 0.15. A friend reaches you whole. A friend of a friend reaches you at fifteen percent. One more hop out and it arrives at a little over two percent, which is present, faint, and roughly the weight I would give a stranger's opinion at a party. A rumor, not a verdict.
Layer four is combination. When several sources point at the same title, their scores merge through a noisy-OR, one minus the product of the misses, which reads as the probability that at least one of them was right about you.
Four layers. The whole thing is a few hundred lines. Every constant lives in two small pure modules with unit tests attached, because I built it fully expecting the formula to be wrong and wanting it to be cheap to change when I find out how.
Here is the part I want to defend. Almost none of this is new. Bayes died in 1761. Kish published his correction in 1965. The random walk is older than the web it eventually got used to rank. None of it is fashionable, and all of it is legible, which is a feature I would not trade for accuracy at nearly any exchange rate. When Cosign gets something wrong I can trace exactly why, point at the line, and decide whether to change it.
Try that with a matrix factorization. Try explaining to your friend why the neural network thinks she will enjoy a Danish crime series. You cannot, and neither can the people who built it, and somewhere in the last decade we all quietly agreed to stop finding that strange.
I can explain the entire engine to someone over a beer. It takes about the length of the beer. At least the part that I will tell you without giving up the real secret, but that is part of my intellectual property.
Round and round we go
Jack Byrnes was wrong about most things, starting with the polygraph in the basement.
He was right about the circle. It is real, membership in it is earned rather than assigned, and it means something specific about whose word you will actually act on. The joke lands because we all recognize the instinct. We just do not usually admit it is running our decisions for us.
Building Cosign taught me you can make that instinct measurable without making it cold. Four imaginary movies keep the new guy honest. Triple weight on outcomes pays off the friend who put something great in front of you and was right about it. And a privacy model that will never tell you where you rank in somebody else's list keeps the whole thing from becoming a scoreboard that ruins a dinner party.
The algorithm has never met you. It has read your file, which is a different thing, and it has quietly decided your file is enough.
Your friends have met you. A few of them, on very specific subjects, are extraordinary at knowing what will land. All my math does is work out which ones, on which subjects, without embarrassing anybody in the process.
So, my question for you. Tonight, when you go looking for something to watch, whose word are you going to take? And when did you last check whether that person had earned it?
You are either in the circle, or you are out. I just built the part that keeps score.
If you're curious and want to join, check this link here. Once there, invite your friends and start building your network.
May the Engine be with you.
Author: Igor Alcantara
Note: This article was written by a human. AI was used for the illustrations and grammar/spelling check.




Comments