Repository navigation
Sangam 0.1.0
What's Changed
- Per-environment DB config, external Postgres support, migration runner by @siddhant3030 in #32
- Vercel deploy readiness: build fix, preview-safe CORS, deployment guide by @siddhant3030 in #33
- New files by @siddhant3030 in #50
- docs: make CLAUDE.md usable for a cold start by @siddhant3030 in #51
- Restructure backend and frontend for scale by @siddhant3030 in #52
- Feat/langfuse detailed tracing by @siddhant3030 in #53
- Safe text-to-SQL agent: the model writes the query, the database refuses the rest by @siddhant3030 in #54
- The v3 data model, as ten additive migrations by @siddhant3030 in #57
- Sangam Import: discover, match and import funder data by @siddhant3030 in #58
- docs: feature plans (prototype v1, data model v3) and data platform architecture spec for review by @vinod-rajasekaran in #55
- feat(frontend): add shadcn/ui and a new home page by @apekshagangurde in #60
- Supabase Google sign-in by @apekshagangurde in #64
- fix(dev): stop the frontend container serving stale node_modules by @vinod-rajasekaran in #63
- Read Supabase auth vars from the root .env by @apekshagangurde in #68
- fix(dev): install frontend deps when the manifests change, not on a flag by @siddhant3030 in #69
- chore(deploy): add the workflow that will deploy on a merge to master by @siddhant3030 in #71
- chore(deploy): deploy only on a merge to master by @siddhant3030 in #72
- chore(deploy): name the Vercel projects instead of passing opaque ids by @siddhant3030 in #76
- fix(backend): lock pypdf, which production was missing by @siddhant3030 in #77
- docs: rewrite the README as the project's front door by @siddhant3030 in #78
- perf(frontend): charge only /ask and /import for the chat runtime by @siddhant3030 in #79
- Document storage: an archive for what we fetch, a vault for what orgs upload by @siddhant3030 in #61
- Sangam Import: the agent architecture, and the funder/NGO split it carries by @siddhant3030 in #82
- feat(ingest): say exactly what we want pulled, produced and written by @siddhant3030 in #84
- feat(ingest): push org data the way funder data goes by @siddhant3030 in #85
- feat(frontend): Phase 1 — a public Ask preview, one navbar everywhere, a tighter design system by @vinod-rajasekaran in #86
- docs(plan): the UI roadmap after Phase 1 by @vinod-rajasekaran in #87
- feat(ingest): a standing home for funder eligibility, and the calls it attaches to by @siddhant3030 in #89
- feat(ask): one trace, one task, and a source for every row by @siddhant3030 in #91
- docs(features-plans): authorization plan — roles and RLS by @vinod-rajasekaran in #74
- feat(auth): Supabase sign-in, requests run as the caller, table grants and RLS by @apekshagangurde in #92
- feat(settings): settings page, /api/me, and org member management for admins and staff by @apekshagangurde in #97
- feat(taxonomy): theme taxonomy in tags, cross-references in tag_links by @siddhant3030 in #98
- docs(plan): funder model consolidation, spend domains, staff-only CSR sources by @vinod-rajasekaran in #99
- feat(taxonomy): Environment and Others domains, and no Draft labels by @siddhant3030 in #101
- feat(funders): consolidate nine funder tables into five (plan B) by @siddhant3030 in #103
- feat(import): staff-only source workbooks — private bucket, read_source_rows, staff-last lock by @siddhant3030 in #105
- ci(deploy): deploy only when run by hand, never on a merge to master by @siddhant3030 in #106
- docs(design): Sangam Design System v2, and keep it in step with every UI PR by @vinod-rajasekaran in #107
- fix(import): use the shared corner tokens instead of inline 8/10px by @vinod-rajasekaran in #108
- fix(import): check staff figures against their cell; one rule for money units by @vinod-rajasekaran in #113
- docs(plan): CSO model consolidation, evidence tiers, registry access and prior research by @vinod-rajasekaran in #102
- feat(cso): M1 — CSO facts get a home and an evidence tier (0033) by @siddhant3030 in #109
- feat(cso): M2 — grant money lives only in funder_activity (0034) by @siddhant3030 in #110
- feat(import): M3 — staff registry checks and the credential skill by @siddhant3030 in #111
- feat(import): M4 — path-scoped aggregators, pinned prior research, private-address egress block by @siddhant3030 in #112
- feat(import): pick staff workbooks from Storage, confirmed by staff (HITL) by @siddhant3030 in #117
- docs(plan): Import updates what is clearly the same, asks about the rest by @siddhant3030 in #119
- feat(import): update what is clearly the same, ask about the rest (M1 backend) by @siddhant3030 in #120
- fix(ask): collapsible "Recent chats"; sidebar styles move to classes by @vinod-rajasekaran in #122
- feat(ask): Use Cases in the sidebar, a question-first new chat, Lucide icons by @vinod-rajasekaran in #124
- feat(ask): reopening a past chat shows its messages, from any browser (#123) by @siddhant3030 in #125
- feat(import): coverage report with a chart, confirm every write, stop and start over by @siddhant3030 in #127
- Guided Import: Start → Working → Review → Done, and its own page by @siddhant3030 in #130
- Import: pin the safeguards from the security review by @siddhant3030 in #131
- Model tiers: Opus reasons, Sonnet researches, Haiku formats by @siddhant3030 in #133
- Import: fallbacks, a reading budget, escalation on a failed save, a rubric and cheaper summaries by @siddhant3030 in #134
- Import for every role (A): private sources stay out of briefs; tools can see the caller by @siddhant3030 in #136
- Import for every role, step B: open Import by role by @siddhant3030 in #137
- Import for every role, step C: read an organisation's Doc Vault before the web by @siddhant3030 in #138
- Import D: who saved what, and staff undo and delete by @siddhant3030 in #139
- Import: choose where Sangam reads from, before anything is read by @siddhant3030 in #141
- Sangam Scout: Import as one chat thread, and staff can read any org's Doc Vault by @siddhant3030 in #144
- docs: design system sync for Sangam Scout by @siddhant3030 in #146
- perf(deploy): run both Vercel functions in Mumbai (bom1), beside Supabase — 1/6 by @siddhant3030 in #148
- feat(ask): funder matching under match-v1 — compare_fit scores an org against funders in one call by @siddhant3030 in #100
- feat(match): staff, stewards and org admins run and save a funder match by @siddhant3030 in #142
- feat(match): the Funder Match page, with Rerun match by @siddhant3030 in #150
- feat(ui): one list pattern for list pages by @siddhant3030 in #151
- feat(match): Funder Match on the list pattern (prototype v40) by @siddhant3030 in #152
- feat(proposals): the Proposals screens and steps 1–2, kept in the browser by @siddhant3030 in #153
- perf(frontend): start independent backend calls together — profiles, settings, import by @siddhant3030 in #155
- feat(tracing): Langfuse SDK v4, traced to best practice by @siddhant3030 in #156
- fix(import): let Import runs last 30 minutes, and drop re-sent tool results by @siddhant3030 in #157
- fix(import): tell the supervisor what was ticked, and accept three saves it refused by @siddhant3030 in #158
- Places: match districts against the LGD list instead of creating them by @vinod-rajasekaran in #160
- Funder Match v2: compare the theme taxonomy; themes for Environment and Others by @vinod-rajasekaran in #161
- Import writes taxonomy tags on programmes, orgs and funders by @vinod-rajasekaran in #162
- Import tagging: implementation plan and staging smoke test by @vinod-rajasekaran in #163
- Taxonomy page: say a theme is the fallback tag by @vinod-rajasekaran in #164
- Import: Scout review fixes, short save refusals, previews that write nothing by @siddhant3030 in #165
- fix(import): save_research accepts what researchers really send by @siddhant3030 in #166
- Plan: slimmer AG-UI events, then drop CopilotKit by @siddhant3030 in #167
- fix(import): the research rubric grades instead of erroring by @siddhant3030 in #170
- fix(registry): long theme tags wrap inside the card by @siddhant3030 in #175
- perf(backend): build the agents on the first chat turn, not at boot by @siddhant3030 in #178
- perf: one backend call per registry profile page by @siddhant3030 in #179
- perf: signed-out reads from Next's data cache; a cron keeps one backend warm by @siddhant3030 in #180
- db: one read policy on users and org_members, three FK indexes, a lock timeout on the proposal note by @siddhant3030 in #181
- perf(import): the Import page's panels in one call by @siddhant3030 in #183
- feat(registry): read a funder's research brief in the app by @siddhant3030 in #186
- Media & Signals: news pipeline and its agentic layer (#173 + #187) by @siddhant3030 in #188
- No read limits: Scout's pages, model calls and PDFs, and Ask's fetch_url by @siddhant3030 in #191
- Research brief: one record from every run, with full programmes by @siddhant3030 in #192
- Import M1: the pull skills are the researcher's contract by @siddhant3030 in #194
- Import M2: the brief is the record, and every run merges into it by @siddhant3030 in #195
- Import M3: promote from the brief, and drop nothing by @siddhant3030 in #196
- Import M4: every source a fact cites is a typed, linked document by @siddhant3030 in #197
- Docs: an architecture wiki agents can read instead of the code (OpenWiki + ARCHITECTURE + CHANGELOG) by @siddhant3030 in #201
- Registry: profiles and the list, rebuilt from the catalog to the prototype by @vinod-rajasekaran in #202
- docs(design-sync): deleting works from the owner's login by @vinod-rajasekaran in #203
- Wiki: openwiki_search and openwiki_read in Claude Code by @siddhant3030 in #204
- Scout: visible and usable only by staff and stewards by @apekshagangurde in #207
- Ask Sangam's SQL runs as the signed-in user, so RLS applies by @apekshagangurde in #182
- fix(agent): each agent route declares its access (stack 1/11, on #182) by @siddhant3030 in #210
- fix(frontend): key signed-out cached reads per deploy by @siddhant3030 in #209
- fix(chat): only a thread's owner may post a turn in it (stack 2/11) by @siddhant3030 in #213
- Proposals and RFP Watch: Coming soon until Saturday by @siddhant3030 in #218
- docs(plan): Proposal Copilot by @siddhant3030 in #208
- Proposal Copilot M1: proposals live on the server, shared by the org by @siddhant3030 in #211
- Proposal Copilot M2: the agent, each editor's own chat in the side panel by @siddhant3030 in #214
- Sangam Pitch M3a: facts and asking by @siddhant3030 in #215
- Sangam Pitch M3b: the readers and step 2 by @siddhant3030 in #216
- Proposal Copilot M4: writing section by section by @siddhant3030 in #217
- Proposal Copilot M5: review before sending by @siddhant3030 in #219
- feat(proposals): M6, finish: checked polish, the Word file and versions by @siddhant3030 in #221
- feat(proposals): M7, Sangam Pitch suggests better wording by @siddhant3030 in #226
- feat(proposals): M8, write in place by @siddhant3030 in #229
- feat(ask): Proposals are on for everyone by @siddhant3030 in #230
- fix(deps): clear Dependabot alerts and review dependencies on every PR by @siddhant3030 in #233
- feat(home): phone nav menu, one-card agent steps, hero copy by @vinod-rajasekaran in #236
- ci: backend and frontend checks, integration tests, coverage ratchet by @siddhant3030 in #234
- feat(registry): rows show domains and who they serve; lenses move to the profile by @vinod-rajasekaran in #242
- docs(features): Ask efficiency plan (Draft v2) by @siddhant3030 in #238
- feat(evals): Ask efficiency M1, evals measure cost and run as a Langfuse experiment by @siddhant3030 in #239
- feat(ask): Ask efficiency M2, one compare_fit call and a cache that holds by @siddhant3030 in #240
- feat(agents): langchain 1.4.6, deepagents 0.7.28, and a tool-error backstop by @siddhant3030 in #256
- feat(evals): Import canaries fail on tool-call budgets by @siddhant3030 in #257
- feat(ask): Ask efficiency M4, fetch_url removed and tool text cleaned up by @siddhant3030 in #259
- feat(ask): limits in code, a fallback model and a cheap summarizer by @siddhant3030 in #260
- RFP Watch plan: open calls that fit an NGO by @siddhant3030 in #220
- RFP Watch M1: a one-time pull of funders' open calls by @siddhant3030 in #228
- feat(rfp-watch): M2, match calls to orgs by domain and serve the feed by @siddhant3030 in #231
- feat(rfp-watch): M3, the RFP Watch screen by @siddhant3030 in #232
- feat(rfp-watch): M4, Scout runs the open-calls pull by @siddhant3030 in #246
- feat(ask): Ask efficiency M3, fewer and leaner SQL calls by @siddhant3030 in #261
- fix(pitch): a run with nothing new to answer ends quietly (Ask efficiency M5) by @siddhant3030 in #262
- feat(pitch): public research reader in step 2 by @siddhant3030 in #263
- fix(egress): trust the emSign intermediate censusindia.gov.in fails to send by @siddhant3030 in #265
- chore: MIT license, and backend and frontend coverage in the README by @siddhant3030 in #267
- docs: README rewrite, community files and screenshots (#268–#270 onto master) by @siddhant3030 in #272
- fix(frontend): Back returns to the previous screen by @siddhant3030 in #273
New Contributors
- @vinod-rajasekaran made their first contribution in #55
- @apekshagangurde made their first contribution in #60
Full Changelog: https://github.com/project-tech4dev/sangam/commits/v0.1.0