<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://sixdegreesapp.com/blog/</id>
  <title>Six Degrees blog</title>
  <subtitle>How Six Degrees works, and why.</subtitle>
  <link rel="self" href="https://sixdegreesapp.com/blog/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://sixdegreesapp.com/blog/"/>
  <updated>2026-09-29T00:00:00Z</updated>
  <author><name>Blake Burford</name><uri>https://blakeburford.com/</uri></author>
  <icon>https://sixdegreesapp.com/img/icon.svg</icon>
  <entry>
    <id>https://sixdegreesapp.com/blog/galaxy-physics-lab/</id>
    <title>Inside the Galaxy physics lab, and the replay of your network growing</title>
    <link rel="alternate" type="text/html" href="https://sixdegreesapp.com/blog/galaxy-physics-lab/"/>
    <published>2026-09-29T00:00:00Z</published>
    <updated>2026-09-29T00:00:00Z</updated>
    <summary>The Galaxy is a force simulation. The physics lab hands you its controls: what each slider does, the Clusters preset, colour by, find, and a replay of your network by the day you connected that you can save as a video.</summary>
    <content type="html">&lt;p&gt;The Galaxy is the first thing Six Degrees shows you: you in the middle, your connections on rings around you, the ones who can open the most doors closest in. It&apos;s drawn by a &lt;strong&gt;force simulation&lt;/strong&gt;, the same idea behind graph views in tools like Obsidian: every dot pushes the others away, lines pull connected dots together, and the picture settles where the forces balance.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;physics lab&lt;/strong&gt; hands you the controls. It&apos;s experimental, and it lives in the Galaxy&apos;s Filters panel: tick &lt;em&gt;Physics lab&lt;/em&gt; to open it.&lt;/p&gt;
&lt;h3 id=&quot;the-forces&quot;&gt;The forces&lt;/h3&gt;
&lt;p&gt;Five sliders set how the Galaxy lays itself out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gravity&lt;/strong&gt; (0 to 3): a pull in towards you. At 0, nothing draws the network to the centre but its own lines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rings&lt;/strong&gt; (0 to 5×): how hard each tier holds its ring. At the default, S sits nearest and D furthest out. At &lt;strong&gt;0 the rings let go&lt;/strong&gt;, and the Galaxy finds its own shape.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Push&lt;/strong&gt; (0 to 300): how hard dots push each other apart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull&lt;/strong&gt; (0 to 15×): how hard each person pulls the people who came through them, the circle a scan found behind them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distance&lt;/strong&gt; (0.05 to 6×): how far out those people sit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two more set the look: &lt;strong&gt;dot size&lt;/strong&gt; and &lt;strong&gt;line thickness&lt;/strong&gt;. Dots can be sized by power score or by how many people hang off them, and names can show for the S tier and catalysts only, or for all your connections. A &lt;em&gt;Names&lt;/em&gt; switch in Filters turns them off altogether.&lt;/p&gt;
&lt;p&gt;Everything moves the Galaxy in place, and &lt;strong&gt;Reset&lt;/strong&gt; puts today&apos;s layout back.&lt;/p&gt;
&lt;h3 id=&quot;clusters&quot;&gt;Clusters&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Clusters&lt;/strong&gt; preset is the fastest way to see the lab do something: it lets the rings go (rings 0), adds a little gravity (0.25), more push (25), a strong pull (2.5) and a short distance (0.35), and sizes dots by how many hang off them. Each connection gathers their own circle round them, and your network turns from rings into neighbourhoods.&lt;/p&gt;
&lt;p&gt;Hovering a dot lights up its &lt;strong&gt;branch&lt;/strong&gt;: everyone behind it, and the chain back to you. The rest dims.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/app/lab-clusters.jpg&quot; alt=&quot;The physics lab beside the Galaxy, laid out as clusters and coloured by company, in the sample network&quot; loading=&quot;lazy&quot;&gt;&lt;figcaption&gt;Clusters, coloured by company, on the invented sample network.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;colour-find-and-names&quot;&gt;Colour, find and names&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Colour by&lt;/strong&gt; repaints the Galaxy four ways, each with a legend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tier&lt;/strong&gt;, the default, from S to D;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Degree&lt;/strong&gt;: your connections, the people they know, and anyone further out;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Company&lt;/strong&gt;: the eight most common companies in view, and everyone else in grey;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warmth&lt;/strong&gt;: from the experimental Social tab, how recently you&apos;ve been in touch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Find&lt;/strong&gt; takes a name, a company or a role from two letters. Everyone who matches lights up and the rest dim; Enter flies to the best match and opens their card.&lt;/p&gt;
&lt;h3 id=&quot;the-replay&quot;&gt;The replay&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Replay&lt;/strong&gt; plays your network growing. Each connection appears on the day you connected, and their circle arrives with them. There&apos;s a time slider, a length of 5 seconds, 15 (the default), 30 or a minute, and &lt;em&gt;Loop&lt;/em&gt;. If you&apos;ve used the Social tab, your job starts are marked along the timeline in gold and your posts in blue, and the job you were at shows as the replay passes each date.&lt;/p&gt;
&lt;p&gt;The replay needs &amp;quot;connected on&amp;quot; dates, which come from a scan or from LinkedIn&apos;s own export. The invented sample network has none, so there&apos;s nothing to replay until you bring your own network in.&lt;/p&gt;
&lt;h3 id=&quot;saving-it&quot;&gt;Saving it&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Save a picture&lt;/strong&gt; makes a PNG of the Galaxy at twice its size on screen, with its legend.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Record the replay&lt;/strong&gt; saves it as a video: MP4 (H.264) where your computer&apos;s window supports it, otherwise WebM, at 12 frames a second. The button only appears where the window can record.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Saved layouts&lt;/strong&gt; keep a set of slider settings under a name, so a layout you like is one click away.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beside &lt;em&gt;Save a picture&lt;/em&gt;, the lab reminds you that it shows real names, so check it before you post it. Nothing leaves your computer unless you share the file yourself.&lt;/p&gt;
&lt;h3 id=&quot;why-a-physics-lab&quot;&gt;Why a physics lab?&lt;/h3&gt;
&lt;p&gt;Because rings are a good first picture and a poor only picture. Letting the rings go shows who gathers people around them. Colouring by company shows where your network clusters. And the replay shows something no list can: how your network grew, and which chapters of your working life it came from.&lt;/p&gt;
&lt;p&gt;The layout code is in &lt;a href=&quot;https://github.com/blakeb056/six-degrees/blob/main/lib/galaxy-lab.js&quot;&gt;lib/galaxy-lab.js&lt;/a&gt;, with its tests.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://sixdegreesapp.com/blog/local-first/</id>
    <title>Local-first: why Six Degrees has no account, no server and no telemetry</title>
    <link rel="alternate" type="text/html" href="https://sixdegreesapp.com/blog/local-first/"/>
    <published>2026-09-29T00:00:00Z</published>
    <updated>2026-09-29T00:00:00Z</updated>
    <summary>Six Degrees keeps your network in one folder on your own computer. What that means in practice, what the app contacts and when, and the protections that come with running on localhost.</summary>
    <content type="html">&lt;p&gt;A map of your network is a map of other people: their names, their jobs, who they know. That&apos;s a good reason not to send it anywhere. So Six Degrees doesn&apos;t. There&apos;s no account to create, no server that holds your data, and no telemetry. The app, and everything it knows, runs on your own computer.&lt;/p&gt;
&lt;p&gt;This post explains what that means in practice, and where the edges are.&lt;/p&gt;
&lt;h3 id=&quot;one-folder&quot;&gt;One folder&lt;/h3&gt;
&lt;p&gt;Everything Six Degrees knows about your network lives in one hidden folder in your home folder, &lt;code&gt;.six-degrees&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the network itself, in a single SQLite database file;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;backups/&lt;/code&gt;, copies of that database from before each new version first opened it, and before any import;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;avatars/&lt;/code&gt;, the profile photos a scan saved;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chrome-profile/&lt;/code&gt;, the scanner&apos;s signed-in Chrome, if you scan;&lt;/li&gt;
&lt;li&gt;small files for the scanner&apos;s budget, cooldown and progress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Settings → Your data&lt;/strong&gt; shows where the folder is, what each part takes up, and the backups in it. Delete the folder and Six Degrees knows nothing. A LinkedIn CSV you import isn&apos;t added to it at all: it&apos;s held in the app window&apos;s own storage, for as long as the window is open.&lt;/p&gt;
&lt;h3 id=&quot;what-the-app-contacts-and-when&quot;&gt;What the app contacts, and when&lt;/h3&gt;
&lt;p&gt;Nothing goes online by itself. The app contacts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;, only while you scan. Each profile photo is saved on your computer as the scan reads it, and the app shows photos only from there, so browsing your network never contacts LinkedIn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;, only when you click &lt;em&gt;Check for updates&lt;/em&gt;, to read the newest version number, and in the Mac app when you then click &lt;em&gt;Install and restart&lt;/em&gt;, to download it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PyPI and GitHub&lt;/strong&gt;, only without the Mac app (with &lt;code&gt;npx six-degrees&lt;/code&gt; or from source), once, when you click &lt;em&gt;Set up the scanner&lt;/em&gt;: for the scanner&apos;s Python packages and, if your computer has no Python it can use, a private copy of Python. Every file is checked against a checksum built into Six Degrees.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One experimental feature runs on a timer, and only if you turn it on: the Social tab&apos;s &lt;strong&gt;daily messages sync&lt;/strong&gt; opens LinkedIn once a day, in the daytime, while the app is open. It&apos;s off until you tick it.&lt;/p&gt;
&lt;p&gt;There is no telemetry, no analytics and no crash reporting. The web framework the app is built on has anonymous usage statistics of its own; they&apos;re switched off. And the app never checks for updates on its own.&lt;/p&gt;
&lt;h3 id=&quot;local-and-locked-to-your-computer&quot;&gt;Local, and locked to your computer&lt;/h3&gt;
&lt;p&gt;The app is a small web server that listens only on your own computer, at &lt;code&gt;127.0.0.1&lt;/code&gt;, and opens in a window (or your browser, on Linux). Running on localhost brings its own risks, and the app guards against them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Other websites can&apos;t drive it.&lt;/strong&gt; Any web page you visit can try to send requests to a local server. Six Degrees refuses writes whose browser headers say they came from another site, including another port on your own computer, and answers requests addressed to any other hostname with an error, which blocks a trick called DNS rebinding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If it&apos;s ever exposed, the dangerous routes lock.&lt;/strong&gt; The ten routes that delete, replace or export your data, start the scanner or update the app need an &lt;code&gt;ADMIN_TOKEN&lt;/code&gt; whenever the server is bound to any address other than your own computer. Unset, they refuse every caller.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The full threat model is in &lt;a href=&quot;https://github.com/blakeb056/six-degrees/blob/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;moving-it-yourself&quot;&gt;Moving it yourself&lt;/h3&gt;
&lt;p&gt;Because there&apos;s no account, there&apos;s no sync. To take your network to another computer, &lt;strong&gt;Settings → Your data → Save a copy of my network&lt;/strong&gt; makes one file that you move yourself. It&apos;s built from an allow-list: your network, your settings, the scanner&apos;s progress and its LinkedIn budget, and photos if you want them. Your LinkedIn sign-in never goes in.&lt;/p&gt;
&lt;p&gt;The other computer treats the file as untrusted. It checks the database&apos;s integrity and its structure, and each file&apos;s SHA-256, before anything changes, and applies it the next time the app starts. What was there before goes into &lt;code&gt;backups/&lt;/code&gt; and is never deleted automatically.&lt;/p&gt;
&lt;h3 id=&quot;updates-you-can-check&quot;&gt;Updates you can check&lt;/h3&gt;
&lt;p&gt;When the Mac app updates itself, it checks the download against the release&apos;s published &lt;code&gt;SHA256SUMS&lt;/code&gt; file and verifies its code signature, bundle and version before putting it in place. If the new version won&apos;t open, the old one is put back. The one-line Terminal install does the same checksum check. The app is signed ad hoc, not with a paid Apple certificate yet, so this proves the download is intact, not who made it; a signed and notarised Mac app is &lt;a href=&quot;/roadmap/&quot;&gt;on the roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;open-so-you-can-check&quot;&gt;Open, so you can check&lt;/h3&gt;
&lt;p&gt;None of this has to be taken on trust. Six Degrees is open source under the MIT licence, and every line described here is on &lt;a href=&quot;https://github.com/blakeb056/six-degrees&quot;&gt;GitHub&lt;/a&gt;, with tests. That&apos;s the other half of local-first: a tool that reads your network should be one you can inspect.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/app/your-data.jpg&quot; alt=&quot;Settings, Your data: the network, profile photos, backups and the LinkedIn sign-in, all in one folder&quot; loading=&quot;lazy&quot;&gt;&lt;figcaption&gt;Settings → Your data.&lt;/figcaption&gt;&lt;/figure&gt;</content>
  </entry>
  <entry>
    <id>https://sixdegreesapp.com/blog/scanning-slowly/</id>
    <title>Scanning slowly and safely: pacing, budgets and the honest risk</title>
    <link rel="alternate" type="text/html" href="https://sixdegreesapp.com/blog/scanning-slowly/"/>
    <published>2026-09-29T00:00:00Z</published>
    <updated>2026-09-29T00:00:00Z</updated>
    <summary>How the optional Six Degrees scanner paces itself, the daily and monthly budgets it keeps to, why it stops at the first push-back, and what the risk to your LinkedIn account really is.</summary>
    <content type="html">&lt;p&gt;Six Degrees can show you who your connections know, but only if it can read their connection lists. LinkedIn&apos;s own data export doesn&apos;t include them: it lists the people you&apos;re connected to, and nobody else. So the app has an optional &lt;strong&gt;scanner&lt;/strong&gt; that reads them from LinkedIn, in a Chrome window you sign into yourself.&lt;/p&gt;
&lt;p&gt;This post is about how that scanner behaves, and why. Start with the part that matters most.&lt;/p&gt;
&lt;h3 id=&quot;the-risk-in-plain-words&quot;&gt;The risk, in plain words&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;Automating LinkedIn may break its User Agreement, and LinkedIn can restrict accounts that do it. The scanner reads slowly, keeps to a budget and stops at the first push-back, but the risk is yours.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Accounts have been restricted for this, and no amount of pacing makes the risk zero. That&apos;s why scanning is &lt;strong&gt;optional&lt;/strong&gt;, and why the two other ways in carry no risk at all:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The sample network&lt;/strong&gt;: 150 invented connections and the 598 people they know, built into the app, for trying every view.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn&apos;s own export&lt;/strong&gt;: &lt;em&gt;Settings &amp;amp; Privacy → Data privacy → Get a copy of your data → Connections&lt;/em&gt;. It&apos;s read on your computer and shows the people you know, though not who they know.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you do scan, everything below is there to keep it slow, visible and easy to stop.&lt;/p&gt;
&lt;h3 id=&quot;you-sign-in-not-the-app&quot;&gt;You sign in, not the app&lt;/h3&gt;
&lt;p&gt;The scanner drives your own installed Google Chrome, with a profile of its own that the app keeps in its data folder. You sign into LinkedIn in that window yourself, once. The app never asks for, sees or stores your password. That signed-in profile is the one thing in the data folder that grants access to your account, so the app never puts it into a copy of your network, and the docs ask you never to sync or share it.&lt;/p&gt;
&lt;h3 id=&quot;a-budget-not-a-race&quot;&gt;A budget, not a race&lt;/h3&gt;
&lt;p&gt;Every page of someone&apos;s connections is a LinkedIn search, and every circle scan opens their profile once. The scanner counts both, against limits you set on the Scan page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Searches&lt;/strong&gt;: 50 a day and 250 a month by default. The month follows LinkedIn&apos;s own, from midnight Pacific time on the 1st.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile views&lt;/strong&gt;: 50 a day by default, and &lt;strong&gt;at least 60 seconds between any two&lt;/strong&gt;, even across separate scans. There&apos;s no &amp;quot;no limit&amp;quot; choice.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When a budget is used, a scan saves what it read and stops. The next one carries on from the same page. Picking more than 100 searches a day, or no monthly cap, makes the page &lt;strong&gt;ask first&lt;/strong&gt;, and a note stays under the budget, with a button back to 50 and 250, for as long as it&apos;s that high.&lt;/p&gt;
&lt;h3 id=&quot;slow-on-purpose&quot;&gt;Slow on purpose&lt;/h3&gt;
&lt;p&gt;Between the budgets, the pacing is deliberately unhurried:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;20 seconds&lt;/strong&gt; before each page of results, and &lt;strong&gt;a minute more&lt;/strong&gt; after every 10 pages;&lt;/li&gt;
&lt;li&gt;about &lt;strong&gt;two minutes&lt;/strong&gt; between one person&apos;s circle and the next;&lt;/li&gt;
&lt;li&gt;so a long list can take &lt;strong&gt;around 55 minutes&lt;/strong&gt; for one person.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The waits are fixed. They&apos;re never randomised to look like a person: the scanner doesn&apos;t pretend to be anything it isn&apos;t. It reads each list to the end by default (or 10, 25 or 50 pages if you choose), saves every 10 pages, and a read that stops carries on from the same page next time. A &lt;strong&gt;Paused&lt;/strong&gt; list on the Scan page shows every circle with more to read, with &lt;em&gt;Resume&lt;/em&gt; beside each.&lt;/p&gt;
&lt;h3 id=&quot;it-stops-at-the-first-push-back&quot;&gt;It stops at the first push-back&lt;/h3&gt;
&lt;p&gt;The scanner reads what&apos;s on the page, and it stops the moment LinkedIn pushes back: a page that won&apos;t open, an unusual-activity warning, restricted viewing, the search limit, a security check or a sign-in wall. It saves what it had read, and keeps a copy of what the page said in the data folder, so you can see exactly what happened.&lt;/p&gt;
&lt;p&gt;Then a &lt;strong&gt;cooldown lock&lt;/strong&gt; blocks anything that searches, for a day, or until the 1st for the monthly limit. The Scan page shows when it lifts, and you can lift it early if you choose.&lt;/p&gt;
&lt;p&gt;And a scanner that can&apos;t read its page says so. It never reports &amp;quot;you have no connections&amp;quot; because a page failed to load.&lt;/p&gt;
&lt;h3 id=&quot;always-visible&quot;&gt;Always visible&lt;/h3&gt;
&lt;p&gt;While a scan runs, a &lt;strong&gt;status bar&lt;/strong&gt; sits under the tabs on every page: what&apos;s running and for whom, how far it&apos;s got, today&apos;s searches against your daily budget (green, then amber past 60%, red past 90%), what it&apos;s doing right now (for example, the wait before the next profile), and &lt;strong&gt;Stop&lt;/strong&gt;. Stop saves what was read.&lt;/p&gt;
&lt;h3 id=&quot;the-experimental-parts&quot;&gt;The experimental parts&lt;/h3&gt;
&lt;p&gt;Two newer options are marked experimental on the Scan page, and off by default:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;All-day pacing (Auto-Bridge)&lt;/strong&gt;, with an &lt;strong&gt;Auto scan&lt;/strong&gt; button once it&apos;s ticked. Up to 10 pages in a sitting, then a &lt;strong&gt;45-minute rest&lt;/strong&gt;; searches only between &lt;strong&gt;09:00 and 19:00&lt;/strong&gt; on your computer&apos;s clock; and at the daily budget it waits for the budget to free up instead of stopping. A monthly limit or a cooldown still stops it. It hasn&apos;t yet been tried on a live account, which is why it&apos;s labelled the way it is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hide the Chrome window while scanning.&lt;/strong&gt; Scans run without a window popping up; the status bar and Stop still work, and signing in always opens the window. The Scan page spells out the risks beside the box: a hidden Chrome is easier for LinkedIn to tell apart from a person, so it may make a warning or restriction more likely, and if LinkedIn asks you to prove it&apos;s you, you won&apos;t see it, so the scan stops instead of waiting. It changes nothing about pacing or budgets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;why-go-to-this-trouble&quot;&gt;Why go to this trouble?&lt;/h3&gt;
&lt;p&gt;Because the people your connections know are the most useful part of your network, and the one part no official export contains. The scanner exists to get that part, for your own use, on your own computer, as gently as possible, with the risk said out loud rather than buried.&lt;/p&gt;
&lt;p&gt;The full details, down to what each page of the scanner reads, are in &lt;a href=&quot;https://github.com/blakeb056/six-degrees/blob/main/docs/SCRAPING.md&quot;&gt;docs/SCRAPING.md&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/app/scan-budget.jpg&quot; alt=&quot;The Scan page&apos;s budget: searches today and this month, and profile views today&quot; loading=&quot;lazy&quot;&gt;&lt;figcaption&gt;The budget, on the Scan page.&lt;/figcaption&gt;&lt;/figure&gt;</content>
  </entry>
  <entry>
    <id>https://sixdegreesapp.com/blog/who-can-introduce-you/</id>
    <title>Who can introduce you? How Six Degrees ranks your way in</title>
    <link rel="alternate" type="text/html" href="https://sixdegreesapp.com/blog/who-can-introduce-you/"/>
    <published>2026-09-29T00:00:00Z</published>
    <updated>2026-09-29T00:00:00Z</updated>
    <summary>How Six Degrees ranks everyone two steps away, counts every way in, and finds the people only one of your connections can reach, with the formulas, and the invented sample network as the example.</summary>
    <content type="html">&lt;p&gt;The question Six Degrees is built to answer is simple: &lt;strong&gt;who can introduce me?&lt;/strong&gt; Not &amp;quot;who do I know&amp;quot;, which a list of connections already tells you, but who your connections know, and which of them is the way to each person.&lt;/p&gt;
&lt;p&gt;This post walks through how the app works that out: how it ranks the people two steps away, how it counts the ways in to each of them, and how it finds the people only one of your connections can reach. Every example comes from the sample network that ships with the app: 150 invented connections and the 598 invented people they know.&lt;/p&gt;
&lt;h3 id=&quot;two-steps-away&quot;&gt;Two steps away&lt;/h3&gt;
&lt;p&gt;Your 1st degree is the people you know. Your 2nd degree is the people &lt;em&gt;they&lt;/em&gt; know and you don&apos;t. Six Degrees gets the 2nd degree from circle scans: when it reads one of your connection&apos;s own connections, each person on that list becomes someone you can reach through them.&lt;/p&gt;
&lt;p&gt;A person can turn up in more than one circle. In the sample, the 14 scanned circles hold 723 rows, but only 598 different people, because some people are known by two or three of your connections. That difference is the whole point of the next section.&lt;/p&gt;
&lt;h3 id=&quot;ways-in&quot;&gt;Ways in&lt;/h3&gt;
&lt;p&gt;For each person two steps away, a &lt;strong&gt;way in&lt;/strong&gt; is one of your connections whose scanned circle contains them. The app matches people by their profile address (ignoring any query or trailing slash), so the same person found in three circles counts once, with three ways in.&lt;/p&gt;
&lt;p&gt;In the sample network:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;503&lt;/strong&gt; of the 598 people have exactly one way in;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;65&lt;/strong&gt; have two;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30&lt;/strong&gt; have three.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So 84% of the sample&apos;s 2nd degree hangs on a single connection each. Real networks vary, but the pattern is common: most of the people you can reach, you can reach one way.&lt;/p&gt;
&lt;h3 id=&quot;separation-the-ranked-list&quot;&gt;Separation: the ranked list&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Separation&lt;/strong&gt; view in Degrees lists everyone two steps away. It ranks them by their own score first, the same power score every card shows (worked out from their title and their company), and then by how many ways in they have. Ties on both share a rank, shown as &amp;quot;#8=&amp;quot;, so no one is ranked above someone identical by accident.&lt;/p&gt;
&lt;p&gt;Each row says who can introduce you, and how many others could. A &lt;em&gt;Ways in&lt;/em&gt; sort flips the order to &amp;quot;most ways in first&amp;quot;, which is the list to work from when you want the warmest route rather than the most senior person.&lt;/p&gt;
&lt;p&gt;Beside each person&apos;s tier sits their &lt;strong&gt;rarity&lt;/strong&gt;: how many mutual connections lead to them. It uses LinkedIn&apos;s own mutual count when a scan saved one, and the number of ways in otherwise, in five bands: &lt;em&gt;only way in&lt;/em&gt; (1), &lt;em&gt;rare&lt;/em&gt; (2 to 3), &lt;em&gt;uncommon&lt;/em&gt; (4 to 10), &lt;em&gt;common&lt;/em&gt; (11 to 30) and &lt;em&gt;warm&lt;/em&gt; (31 or more). Rarity never changes anyone&apos;s score; it just tells you how easy they are to reach.&lt;/p&gt;
&lt;h3 id=&quot;who-only-they-can-reach&quot;&gt;Who only they can reach&lt;/h3&gt;
&lt;p&gt;Now turn it around. Instead of asking &amp;quot;how do I reach this person?&amp;quot;, ask &amp;quot;what would I lose if I lost touch with this connection?&amp;quot;&lt;/p&gt;
&lt;p&gt;For each of your connections with a scanned circle, Six Degrees counts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;total&lt;/strong&gt;: everyone in their circle who isn&apos;t already your connection;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;only&lt;/strong&gt;: the people in their circle &lt;em&gt;no other connection of yours reaches&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;reach&lt;/strong&gt;: their share of everyone, where a person with &lt;em&gt;k&lt;/em&gt; ways in counts 1 ÷ &lt;em&gt;k&lt;/em&gt; to each of those &lt;em&gt;k&lt;/em&gt; connections.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the sample, the connection with the largest exclusive reach is Bodhi Pereira, a managing director at an invented company called Northwind Labs. Their circle holds 69 people, and &lt;strong&gt;51 of them, 74%, are reachable only through Bodhi&lt;/strong&gt;. The card says it plainly: &lt;em&gt;only through Bodhi&lt;/em&gt;. &lt;em&gt;Show them&lt;/em&gt; opens Separation filtered to exactly those 51.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;reach&lt;/em&gt; number has a name in network research: it&apos;s &lt;strong&gt;ego betweenness&lt;/strong&gt; (Everett and Borgatti, 2005). On a network shaped like this one, you in the middle, your connections around you and their circles beyond them, it gives the same answer as Brandes&apos; betweenness centrality, in one pass over the data. The app ranks your connections by it: the &lt;em&gt;rank&lt;/em&gt; on a card&apos;s Insights panel is by reach, not the plain &amp;quot;only&amp;quot; count.&lt;/p&gt;
&lt;h3 id=&quot;opening-the-same-doors&quot;&gt;Opening the same doors&lt;/h3&gt;
&lt;p&gt;Two connections can reach mostly the same people. A card shows which of your other connections overlaps theirs most, measured as the share of either circle that both reach (the Jaccard index: both ÷ (their total + the other&apos;s total − both)). It only says so when the overlap is real: &lt;strong&gt;15% or more, and at least 3 people in common&lt;/strong&gt;. &amp;quot;Opens the same doors as…&amp;quot; is a hint that one introduction may do the job of two.&lt;/p&gt;
&lt;h3 id=&quot;network-health&quot;&gt;Network health&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Scores&lt;/strong&gt; tab puts it together for your whole network:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reached two or more ways&lt;/strong&gt;: of everyone you reach through a circle, the share with more than one way in. It&apos;s 1 minus (the sum of every connection&apos;s &lt;em&gt;only&lt;/em&gt;, divided by the sum of every connection&apos;s &lt;em&gt;reach&lt;/em&gt;). In the sample it&apos;s &lt;strong&gt;16%&lt;/strong&gt;. Higher is safer: lose touch with one connection and those people are still reachable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effective reach&lt;/strong&gt;: Ronald Burt&apos;s &lt;em&gt;effective size&lt;/em&gt; of your own network, N − 2t ÷ N, where N is your connections and t the ties between them that circle scans have kept. It discounts connections who all know each other. The sample has no ties between its connections, so its effective reach is simply its 150.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your five connections who reach the most people no one else does&lt;/strong&gt;, each with &lt;em&gt;Explore&lt;/em&gt; to open their circle.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With fewer than five circles scanned, it says the numbers are an early estimate. And it never shows a percentile against other people: there&apos;s no one else&apos;s data to compare with, and that&apos;s by design.&lt;/p&gt;
&lt;h3 id=&quot;what-the-numbers-are-not&quot;&gt;What the numbers are not&lt;/h3&gt;
&lt;p&gt;A score in Six Degrees estimates &lt;strong&gt;network position&lt;/strong&gt;, not what anyone is worth as a person. The model is open, in &lt;a href=&quot;https://github.com/blakeb056/six-degrees/blob/main/lib/scoring.js&quot;&gt;lib/scoring.js&lt;/a&gt;, and the brokerage counts are in &lt;a href=&quot;https://github.com/blakeb056/six-degrees/blob/main/lib/brokerage.js&quot;&gt;lib/brokerage.js&lt;/a&gt;, with tests beside them. If a number looks wrong to you, the working is there to check.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/app/separation.jpg&quot; alt=&quot;Degrees, Separation: everyone two steps away in the sample network, ranked, with who can introduce you&quot; loading=&quot;lazy&quot;&gt;&lt;figcaption&gt;Separation, on the invented sample network.&lt;/figcaption&gt;&lt;/figure&gt;</content>
  </entry>
</feed>
