6 Commits

Author SHA1 Message Date
KS Jannette
c6b07ccb56 fix minor css issue on stickies 2026-08-01 04:50:40 -04:00
KS Jannette
8e79e78006 hotfix 2026-08-01 04:41:31 -04:00
19d4a82c90 Merge pull request 'Re-aligned heuristic, updated readme, added code comment' (#3) from BUG-cohesion-scoreUI-display into master
Reviewed-on: #3
2026-08-01 08:13:29 +00:00
edeadd547a Update README.md 2026-08-01 08:11:10 +00:00
3b707a150b Update README.md 2026-08-01 08:08:34 +00:00
c2d40fa409 Update README.md 2026-08-01 08:08:19 +00:00
3 changed files with 71 additions and 64 deletions

View File

@@ -1,4 +1,4 @@
# kongruity # kongruity: Signal from noise
“...All those moments will be lost in time, like tears in rain.” “...All those moments will be lost in time, like tears in rain.”
@@ -16,7 +16,7 @@ At the same time, Voyage AI's voyage-3 model (`backend/services/embedding.servic
Once the LLM returns, kongruity scores that grouping (`backend/services/validation.service.js`) using an established silhouette coefficient, with cosine distance rather than Euclidean as the proximity metric. Once the LLM returns, kongruity scores that grouping (`backend/services/validation.service.js`) using an established silhouette coefficient, with cosine distance rather than Euclidean as the proximity metric.
For each note, it weighs the average distance to the other notes in its own cluster against the average distance to the notes in the nearest neighboring cluster. Averaged across every note, this yields a single cohesion score in the range [−1, 1], displayed at the top of the results. For each note, it weighs the average distance to the other notes in its own cluster against the average distance to the notes in the nearest neighboring cluster. Averaged across every note, this yields a single numeric cohesion score, displayed at the top of the results, along with plaintext: Strong, Moderate, Weak, Poor.
This yields an empirical groundedness evaluation. One model proposes the grouping; an independent model evaluates grouping accuracy. This yields an empirical groundedness evaluation. One model proposes the grouping; an independent model evaluates grouping accuracy.

View File

@@ -87,7 +87,7 @@ const Stickies = () => {
dragIndex.current = null; dragIndex.current = null;
setDragOverIndex(null); setDragOverIndex(null);
}; };
console.log(score?.toFixed(2))
return ( return (
<div className="stickies-container"> <div className="stickies-container">
<Button onClick={handleCluster} isLoading={isPending} label="Group Stickies By Topic" /> <Button onClick={handleCluster} isLoading={isPending} label="Group Stickies By Topic" />
@@ -95,7 +95,7 @@ const Stickies = () => {
<div className="clusters-container"> <div className="clusters-container">
{score != null && ( {score != null && (
<div className="cohesion-score"> <div className="cohesion-score">
Cluster cohesion: <strong>{score.toFixed(2)}</strong> — {scoreLabel(score)} Cluster cohesion: <strong>{scoreLabel(score)}</strong>
</div> </div>
)} )}
{rankedClusters.map((group, index) => ( {rankedClusters.map((group, index) => (

View File

@@ -40,10 +40,12 @@
} }
.cluster-header { .cluster-header {
position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
gap: 12px; gap: 12px;
margin-bottom: 16px; margin-bottom: 16px;
min-height: 32px;
} }
.cluster-rank { .cluster-rank {
@@ -69,13 +71,18 @@
} }
.cluster-label { .cluster-label {
position: absolute;
left: 50%;
transform: translateX(-50%);
max-width: 50%;
margin: 0; margin: 0;
font-size: 1.2em; font-size: 1.2em;
font-weight: 600; font-weight: 600;
flex: 1; pointer-events: none;
} }
.cluster-drag-handle { .cluster-drag-handle {
margin-left: auto;
font-size: 1.4em; font-size: 1.4em;
color: #6dd6f4; color: #6dd6f4;
opacity: 0.4; opacity: 0.4;